mirror of
https://github.com/nodemailer/wildduck.git
synced 2024-12-28 11:14:46 +08:00
6891 lines
260 KiB
YAML
6891 lines
260 KiB
YAML
openapi: 3.0.0
|
|
info:
|
|
title: WildDuck API
|
|
description: WildDuck API docs
|
|
version: 1.0.0
|
|
contact:
|
|
url: 'https://github.com/nodemailer/wildduck'
|
|
|
|
servers:
|
|
- url: 'https://api.wildduck.email'
|
|
|
|
tags:
|
|
- name: Addresses
|
|
- name: ApplicationPasswords
|
|
- name: Archive
|
|
description: Archive includes all deleted messages. Once messages are old enough then these are permanenetly deleted from the archive as well. Until then you can restore the deleted messages.
|
|
- name: Audit
|
|
description: 'Auditing allows to monitor an email account. All existing, deleted and new emails are copied to the auditing system. See also https://github.com/nodemailer/wildduck-audit-manager'
|
|
- name: Authentication
|
|
- name: Autoreplies
|
|
- name: Certs
|
|
description: WildDuck allows to register TLS certificates to be used with SNI connections. These certificates are used by IMAP, POP3, API and SMTP servers when a SNI capable client establishes a TLS connection. This does not apply for MX servers.
|
|
- name: DKIM
|
|
description: Whenever an email is sent WildDuck checks if there is a DKIM key registered for the domain name of the sender address and uses it to sign the message.
|
|
- name: DomainAccess
|
|
description: Add sender domain names to allowlist (messages are all accepted) or blocklist (messages are sent to Spam folder)
|
|
- name: DomainAliases
|
|
- name: Filters
|
|
- name: Mailboxes
|
|
- name: Messages
|
|
- name: Settings
|
|
- name: Storage
|
|
description: Storage allows easier attachment handling when composing Draft messages. Instead of uploading the attachmnent with every draft update, you store the attachment to the Storage and then link stored file for the Draft.
|
|
- name: Submission
|
|
- name: TwoFactorAuth
|
|
- name: Users
|
|
- name: Webhooks
|
|
|
|
paths:
|
|
'/addresses/forwarded/{address}':
|
|
delete:
|
|
tags:
|
|
- Addresses
|
|
summary: Delete a forwarded Address
|
|
operationId: deleteForwardedAddress
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/SuccessResponse'
|
|
get:
|
|
tags:
|
|
- Addresses
|
|
summary: Request forwarded Addresses information
|
|
operationId: getForwardedAddress
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/GetForwardedAddressResponse'
|
|
put:
|
|
tags:
|
|
- Addresses
|
|
summary: Update forwarded Address information
|
|
operationId: updateForwardedAddress
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/UpdateForwardedAddressRequest'
|
|
required: true
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/SuccessResponse'
|
|
parameters:
|
|
- name: address
|
|
in: path
|
|
description: ID of the Address
|
|
schema:
|
|
type: string
|
|
required: true
|
|
'/users/{user}/addresses/{address}':
|
|
delete:
|
|
tags:
|
|
- Addresses
|
|
summary: Delete an Address
|
|
operationId: deleteUserAddress
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/SuccessResponse'
|
|
get:
|
|
tags:
|
|
- Addresses
|
|
summary: Request Addresses information
|
|
operationId: getUserAddress
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/GetUserAddressResponse'
|
|
put:
|
|
tags:
|
|
- Addresses
|
|
summary: Update Address information
|
|
operationId: updateUserAddress
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/UpdateUserAddressRequest'
|
|
required: true
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/SuccessResponse'
|
|
parameters:
|
|
- name: user
|
|
in: path
|
|
description: ID of the User
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: address
|
|
in: path
|
|
description: ID of the Address
|
|
required: true
|
|
schema:
|
|
type: string
|
|
'/addresses/resolve/{address}':
|
|
get:
|
|
tags:
|
|
- Addresses
|
|
summary: Get Address info
|
|
operationId: resolveAddress
|
|
parameters:
|
|
- name: allowWildcard
|
|
in: query
|
|
description: If true then resolves also wildcard addresses
|
|
schema:
|
|
type: boolean
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ResolveAddressResponse'
|
|
parameters:
|
|
- name: address
|
|
in: path
|
|
description: ID of the Address or e-mail address string
|
|
required: true
|
|
schema:
|
|
type: string
|
|
/addresses:
|
|
get:
|
|
tags:
|
|
- Addresses
|
|
summary: List registered Addresses
|
|
operationId: getAddresses
|
|
parameters:
|
|
- name: query
|
|
in: query
|
|
description: Partial match of an address
|
|
schema:
|
|
type: string
|
|
- name: forward
|
|
in: query
|
|
description: Partial match of a forward email address or URL
|
|
schema:
|
|
type: string
|
|
- name: tags
|
|
in: query
|
|
description: Comma separated list of tags. The Address must have at least one to be set
|
|
schema:
|
|
type: string
|
|
- name: requiredTags
|
|
in: query
|
|
description: Comma separated list of tags. The Address must have all listed tags to be set
|
|
schema:
|
|
type: string
|
|
- name: metaData
|
|
in: query
|
|
description: 'If true, then includes metaData in the response'
|
|
schema:
|
|
type: boolean
|
|
- name: internalData
|
|
in: query
|
|
description: 'If true, then includes internalData in the response. Not shown for user-role tokens.'
|
|
schema:
|
|
type: boolean
|
|
- name: limit
|
|
in: query
|
|
description: How many records to return
|
|
schema:
|
|
type: number
|
|
- name: page
|
|
in: query
|
|
description: 'Current page number. Informational only, page numbers start from 1'
|
|
schema:
|
|
type: number
|
|
- name: next
|
|
in: query
|
|
description: 'Cursor value for next page, retrieved from nextCursor response value'
|
|
schema:
|
|
type: string
|
|
- name: previous
|
|
in: query
|
|
description: 'Cursor value for previous page, retrieved from previousCursor response value'
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/GetAddressesResponse'
|
|
'/users/{user}/addresses':
|
|
get:
|
|
tags:
|
|
- Addresses
|
|
summary: List registered Addresses for a User
|
|
operationId: getUserAddresses
|
|
parameters:
|
|
- name: metaData
|
|
in: query
|
|
description: 'If true, then includes metaData in the response'
|
|
schema:
|
|
type: boolean
|
|
- name: internalData
|
|
in: query
|
|
description: 'If true, then includes internalData in the response. Not shown for user-role tokens.'
|
|
schema:
|
|
type: boolean
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/GetUserAddressesResponse'
|
|
post:
|
|
tags:
|
|
- Addresses
|
|
summary: Create new Address
|
|
description: 'Add a new email address for a User. Addresses can contain unicode characters. Dots in usernames are normalized so no need to create both "firstlast@example.com" and "first.last@example.com" Special addresses `*@example.com`, `*suffix@example.com` and `username@*` catches all emails to these domains or users without a registered destination (requires allowWildcard argument)'
|
|
operationId: createUserAddress
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/CreateUserAddressRequest'
|
|
required: true
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/CreateUserAddressResponse'
|
|
parameters:
|
|
- name: user
|
|
in: path
|
|
description: ID of the User
|
|
required: true
|
|
schema:
|
|
type: string
|
|
'/users/{user}/addressregister':
|
|
get:
|
|
tags:
|
|
- Addresses
|
|
summary: List addresses from communication register
|
|
description: 'Lists addresses from email headers. Includes addresses both from sent and received messages. Sorted by last usage.'
|
|
operationId: getUserAddressregister
|
|
parameters:
|
|
- name: user
|
|
in: path
|
|
description: ID of the User
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: 507f1f77bcf86cd799439011
|
|
- name: query
|
|
in: query
|
|
description: Prefix of an address or a name
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: john
|
|
- name: limit
|
|
in: query
|
|
description: How many records to return
|
|
schema:
|
|
type: number
|
|
example: 25
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/GetUserAddressesregisterResponse'
|
|
/addresses/forwarded:
|
|
post:
|
|
tags:
|
|
- Addresses
|
|
summary: Create new forwarded Address
|
|
description: Add a new forwarded email address. Addresses can contain unicode characters. Dots in usernames are normalized so no need to create both "firstlast@example.com" and "first.last@example.com" Special addresses `*@example.com` and `username@*` catches all emails to these domains or users without a registered destination (requires allowWildcard argument)
|
|
operationId: createForwardedAddress
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/CreateForwardedAddressRequest'
|
|
required: true
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/CreateForwardedAddressResponse'
|
|
/addresses/renameDomain:
|
|
put:
|
|
tags:
|
|
- Addresses
|
|
summary: Rename domain in addresses
|
|
description: 'Renames domain names for addresses, DKIM keys and Domain Aliases'
|
|
operationId: renameDomain
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/RenameDomainRequest'
|
|
required: true
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/SuccessResponse'
|
|
'/users/{user}/asps/{asp}':
|
|
delete:
|
|
tags:
|
|
- ApplicationPasswords
|
|
summary: Delete an Application Password
|
|
operationId: deleteASP
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/SuccessResponse'
|
|
get:
|
|
tags:
|
|
- ApplicationPasswords
|
|
summary: Request ASP information
|
|
operationId: getASP
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/GetASPResponse'
|
|
parameters:
|
|
- name: user
|
|
in: path
|
|
description: ID of the User
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: asp
|
|
in: path
|
|
description: ID of the Application Password
|
|
required: true
|
|
schema:
|
|
type: string
|
|
'/users/{user}/asps':
|
|
get:
|
|
tags:
|
|
- ApplicationPasswords
|
|
summary: List Application Passwords
|
|
operationId: getASPs
|
|
parameters:
|
|
- name: showAll
|
|
in: query
|
|
description: If not true then skips entries with a TTL set
|
|
schema:
|
|
type: boolean
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/GetASPsResponse'
|
|
post:
|
|
tags:
|
|
- ApplicationPasswords
|
|
summary: Create new Application Password
|
|
operationId: createASP
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/CreateASPRequest'
|
|
required: true
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/CreateASPResponse'
|
|
parameters:
|
|
- name: user
|
|
in: path
|
|
description: ID of the User
|
|
required: true
|
|
schema:
|
|
type: string
|
|
'/users/{user}/archived/messages':
|
|
get:
|
|
tags:
|
|
- Archive
|
|
summary: List archived messages
|
|
description: Archive contains all recently deleted messages besides Drafts etc.
|
|
operationId: getArchivedMessages
|
|
parameters:
|
|
- name: limit
|
|
in: query
|
|
description: How many records to return
|
|
schema:
|
|
type: number
|
|
- name: page
|
|
in: query
|
|
description: 'Current page number. Informational only, page numbers start from 1'
|
|
schema:
|
|
type: number
|
|
- name: order
|
|
in: query
|
|
description: Ordering of the records by insert date
|
|
schema:
|
|
$ref: '#/components/schemas/Order'
|
|
- name: next
|
|
in: query
|
|
description: 'Cursor value for next page, retrieved from nextCursor response value'
|
|
schema:
|
|
type: string
|
|
- name: previous
|
|
in: query
|
|
description: 'Cursor value for previous page, retrieved from previousCursor response value'
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/GetArchivedMessagesResponse'
|
|
parameters:
|
|
- name: user
|
|
in: path
|
|
description: ID of the User
|
|
required: true
|
|
schema:
|
|
type: string
|
|
'/users/{user}/archived/messages/{message}/restore':
|
|
post:
|
|
tags:
|
|
- Archive
|
|
summary: Restore archived Message
|
|
description: 'Restores a single archived message by moving it back to the mailbox it was deleted from or to provided target mailbox. If target mailbox does not exist, then the message is moved to INBOX.'
|
|
operationId: restoreMessage
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/RestoreMessageRequest'
|
|
required: false
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/RestoreMessageResponse'
|
|
parameters:
|
|
- name: user
|
|
in: path
|
|
description: ID of the User
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: message
|
|
in: path
|
|
description: Message ID
|
|
required: true
|
|
schema:
|
|
type: number
|
|
'/users/{user}/archived/restore':
|
|
post:
|
|
tags:
|
|
- Archive
|
|
summary: Restore archived messages
|
|
description: 'Initiates a restore task to move archived messages of a date range back to the mailboxes the messages were deleted from. If target mailbox does not exist, then the messages are moved to INBOX.'
|
|
operationId: restoreMessages
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/RestoreMessagesRequest'
|
|
required: true
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/SuccessResponse'
|
|
parameters:
|
|
- name: user
|
|
in: path
|
|
description: ID of the User
|
|
required: true
|
|
schema:
|
|
type: string
|
|
'/audit/{audit}':
|
|
get:
|
|
tags:
|
|
- Audit
|
|
summary: Request Audit Info
|
|
description: This method returns information about stored audit
|
|
operationId: getAudit
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/GetAuditResponse'
|
|
parameters:
|
|
- name: audit
|
|
in: path
|
|
description: ID of the Audit
|
|
required: true
|
|
schema:
|
|
type: string
|
|
'/audit/{audit}/export.mbox':
|
|
get:
|
|
tags:
|
|
- Audit
|
|
summary: Export Audited Emails
|
|
description: This method returns a mailbox file that contains all audited emails
|
|
operationId: getAuditEmails
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
parameters:
|
|
- name: audit
|
|
in: path
|
|
description: ID of the Audit
|
|
required: true
|
|
schema:
|
|
type: string
|
|
/audit:
|
|
post:
|
|
tags:
|
|
- Audit
|
|
summary: Create new audit
|
|
description: Initiates a message audit
|
|
operationId: createAudit
|
|
requestBody:
|
|
description: Initiates a message audit
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/CreateAuditRequest'
|
|
required: true
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/CreateAuditResponse'
|
|
/authenticate:
|
|
delete:
|
|
tags:
|
|
- Authentication
|
|
summary: Invalidate authentication token
|
|
description: This method invalidates currently used authentication token. If token is not provided then nothing happens
|
|
operationId: invalidateAccessToken
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/SuccessResponse'
|
|
post:
|
|
tags:
|
|
- Authentication
|
|
summary: Authenticate a User
|
|
operationId: authenticate
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/AuthenticateRequest'
|
|
required: true
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/AuthenticateResponse'
|
|
'/users/{user}/authlog':
|
|
get:
|
|
tags:
|
|
- Authentication
|
|
summary: List authentication Events
|
|
operationId: getAuthlog
|
|
parameters:
|
|
- name: action
|
|
in: query
|
|
description: Limit listing only to values with specific action value
|
|
schema:
|
|
type: string
|
|
- name: filterIp
|
|
in: query
|
|
description: Limit listing only to values with specific IP address
|
|
schema:
|
|
type: string
|
|
- name: limit
|
|
in: query
|
|
description: How many records to return
|
|
schema:
|
|
type: number
|
|
- name: page
|
|
in: query
|
|
description: 'Current page number. Informational only, page numbers start from 1'
|
|
schema:
|
|
type: number
|
|
- name: next
|
|
in: query
|
|
description: 'Cursor value for next page, retrieved from nextCursor response value'
|
|
schema:
|
|
type: string
|
|
- name: previous
|
|
in: query
|
|
description: 'Cursor value for previous page, retrieved from previousCursor response value'
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/GetAuthlogResponse'
|
|
parameters:
|
|
- name: user
|
|
in: path
|
|
description: ID of the User
|
|
required: true
|
|
schema:
|
|
type: string
|
|
'/users/{user}/authlog/{event}':
|
|
get:
|
|
tags:
|
|
- Authentication
|
|
summary: Request Event information
|
|
operationId: getAuthlogEvent
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/GetAuthlogEventResponse'
|
|
parameters:
|
|
- name: user
|
|
in: path
|
|
description: ID of the User
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: event
|
|
in: path
|
|
description: ID of the Event
|
|
required: true
|
|
schema:
|
|
type: string
|
|
'/users/{user}/autoreply':
|
|
delete:
|
|
tags:
|
|
- Autoreplies
|
|
summary: Delete Autoreply information
|
|
operationId: deleteAutoreply
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/SuccessResponse'
|
|
get:
|
|
tags:
|
|
- Autoreplies
|
|
summary: Request Autoreply information
|
|
operationId: getAutoreply
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/GetAutoreplyResponse'
|
|
put:
|
|
tags:
|
|
- Autoreplies
|
|
summary: Update Autoreply information
|
|
operationId: updateAutoreply
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/UpdateAutoreplyRequest'
|
|
required: true
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/SuccessResponse'
|
|
parameters:
|
|
- name: user
|
|
in: path
|
|
description: ID of the User
|
|
required: true
|
|
schema:
|
|
type: string
|
|
|
|
'/dkim/{dkim}':
|
|
delete:
|
|
tags:
|
|
- DKIM
|
|
summary: Delete a DKIM key
|
|
operationId: deleteDkimKey
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/SuccessResponse'
|
|
get:
|
|
tags:
|
|
- DKIM
|
|
summary: Request DKIM information
|
|
operationId: getDkimKey
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/GetDkimKeyResponse'
|
|
parameters:
|
|
- name: dkim
|
|
in: path
|
|
description: ID of the DKIM
|
|
required: true
|
|
schema:
|
|
type: string
|
|
/dkim:
|
|
get:
|
|
tags:
|
|
- DKIM
|
|
summary: List registered DKIM keys
|
|
operationId: getDkimKeys
|
|
parameters:
|
|
- name: query
|
|
in: query
|
|
description: Partial match of a Domain name
|
|
schema:
|
|
type: string
|
|
- name: limit
|
|
in: query
|
|
description: How many records to return
|
|
schema:
|
|
type: number
|
|
- name: page
|
|
in: query
|
|
description: 'Current page number. Informational only, page numbers start from 1'
|
|
schema:
|
|
type: number
|
|
- name: next
|
|
in: query
|
|
description: 'Cursor value for next page, retrieved from nextCursor response value'
|
|
schema:
|
|
type: string
|
|
- name: previous
|
|
in: query
|
|
description: 'Cursor value for previous page, retrieved from previousCursor response value'
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/GetDkimKeysResponse'
|
|
post:
|
|
tags:
|
|
- DKIM
|
|
summary: Create or update DKIM key for domain
|
|
description: Add a new DKIM key for a Domain or update existing one. There can be single DKIM key registered for each domain name.
|
|
operationId: updateDkimKey
|
|
requestBody:
|
|
description: Add a new DKIM key for a Domain or update existing one. There can be single DKIM key registered for each domain name.
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/UpdateDkimKeyRequest'
|
|
required: true
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/UpdateDkimKeyResponse'
|
|
'/dkim/resolve/{domain}':
|
|
get:
|
|
tags:
|
|
- DKIM
|
|
summary: Resolve ID for a DKIM domain
|
|
operationId: resolveDkim
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ResolveIdResponse'
|
|
parameters:
|
|
- name: domain
|
|
in: path
|
|
description: DKIM domain
|
|
required: true
|
|
schema:
|
|
type: string
|
|
|
|
'/certs/{cert}':
|
|
delete:
|
|
tags:
|
|
- Certs
|
|
summary: Delete a TLS certificate
|
|
operationId: deleteTlsCert
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/SuccessResponse'
|
|
get:
|
|
tags:
|
|
- Certs
|
|
summary: Request TLS certificate information
|
|
operationId: getTLSCerticate
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/GetTLSCertResult'
|
|
parameters:
|
|
- name: cert
|
|
in: path
|
|
description: ID of the TLS certificate
|
|
required: true
|
|
schema:
|
|
type: string
|
|
/certs:
|
|
get:
|
|
tags:
|
|
- Certs
|
|
summary: List registered TLS certificates
|
|
operationId: getTLSCerticates
|
|
parameters:
|
|
- name: query
|
|
in: query
|
|
description: Partial match of a server name
|
|
schema:
|
|
type: string
|
|
example: example.com
|
|
- name: altNames
|
|
in: query
|
|
description: Match `query` value against SAN as well (including wildcard names)
|
|
schema:
|
|
type: boolean
|
|
example: true
|
|
default: false
|
|
- name: limit
|
|
in: query
|
|
description: How many records to return
|
|
schema:
|
|
type: number
|
|
- name: page
|
|
in: query
|
|
description: 'Current page number. Informational only, page numbers start from 1'
|
|
schema:
|
|
type: number
|
|
- name: next
|
|
in: query
|
|
description: 'Cursor value for next page, retrieved from nextCursor response value'
|
|
schema:
|
|
type: string
|
|
example: 'eyIkb2lkIjoiNWRmMWZkMmQ3NzkyNTExOGI2MDdjNjg0In0'
|
|
- name: previous
|
|
in: query
|
|
description: 'Cursor value for previous page, retrieved from previousCursor response value'
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/GetTLSCertsResponse'
|
|
post:
|
|
tags:
|
|
- Certs
|
|
summary: Create or update TLS certificate for server name
|
|
description: >
|
|
Add a new TLS certificate for a server name or update existing one. You can add a single certificate for each server name but SAN names are supported as well.
|
|
For example you can add a sertificate for "mydomain.com" that includes "\*.mydomain.com" in SAN and the same certificate would be used for requests that do not have it's own server name registered but match the SAN value.
|
|
|
|
> NB! you must ensure yourself that the `servername` value is actually listed in certificate's common name or SAN as WildDuck is going to use this certificate regardless.
|
|
operationId: updateTLSCertificate
|
|
requestBody:
|
|
description: Add a new TLS certificate for a server name or update existing one
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/UpdateTLSCertRequest'
|
|
required: true
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/UpdateTLSCertResponse'
|
|
|
|
'/certs/resolve/{servername}':
|
|
get:
|
|
tags:
|
|
- Certs
|
|
summary: Resolve ID for a server name
|
|
operationId: resolveTLSCertificate
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ResolveIdResponse'
|
|
parameters:
|
|
- name: servername
|
|
in: path
|
|
description: Server name
|
|
required: true
|
|
schema:
|
|
type: string
|
|
|
|
'/domainaccess/{domain}':
|
|
delete:
|
|
tags:
|
|
- DomainAccess
|
|
summary: Delete a Domain from listing
|
|
operationId: deleteDomainListing
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/SuccessResponse'
|
|
parameters:
|
|
- name: domain
|
|
in: path
|
|
description: Listed domains unique ID
|
|
required: true
|
|
schema:
|
|
type: string
|
|
'/domainaccess/{tag}/allow':
|
|
get:
|
|
tags:
|
|
- DomainAccess
|
|
summary: List allowlisted domains
|
|
operationId: getAllowedDomain
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/GetAllowedDomainResponse'
|
|
post:
|
|
tags:
|
|
- DomainAccess
|
|
summary: Add domain to allowlist
|
|
description: If an email is sent from a domain that is listed in the allowlist then it is never marked as spam. Lists apply for tagged users.
|
|
operationId: createAllowedDomain
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/CreateAllowedDomainRequest'
|
|
required: true
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/CreateAllowedDomainResponse'
|
|
parameters:
|
|
- name: tag
|
|
in: path
|
|
description: Tag to look for
|
|
required: true
|
|
schema:
|
|
type: string
|
|
'/domainaccess/{tag}/block':
|
|
get:
|
|
tags:
|
|
- DomainAccess
|
|
summary: List blocklisted domains
|
|
operationId: getBlockedDomain
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/GetBlockedDomainResponse'
|
|
post:
|
|
tags:
|
|
- DomainAccess
|
|
summary: Add domain to blocklist
|
|
description: If an email is sent from a domain that is listed in the blocklist then it is always marked as spam. Lists apply for tagged users.
|
|
operationId: createBlockedDomain
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/CreateBlockedDomainRequest'
|
|
required: true
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/CreateBlockedDomainResponse'
|
|
parameters:
|
|
- name: tag
|
|
in: path
|
|
description: Tag to look for
|
|
required: true
|
|
schema:
|
|
type: string
|
|
'/domainaliases/{alias}':
|
|
delete:
|
|
tags:
|
|
- DomainAliases
|
|
summary: Delete an Alias
|
|
operationId: deleteDomainAlias
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/SuccessResponse'
|
|
get:
|
|
tags:
|
|
- DomainAliases
|
|
summary: Request Alias information
|
|
operationId: getDomainAlias
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/GetDomainAliasResponse'
|
|
parameters:
|
|
- name: alias
|
|
in: path
|
|
description: ID of the Alias
|
|
required: true
|
|
schema:
|
|
type: string
|
|
/domainaliases:
|
|
get:
|
|
tags:
|
|
- DomainAliases
|
|
summary: List registered Domain Aliases
|
|
operationId: getDomainAliases
|
|
parameters:
|
|
- name: query
|
|
in: query
|
|
description: Partial match of a Domain Alias or Domain name
|
|
schema:
|
|
type: string
|
|
- name: limit
|
|
in: query
|
|
description: How many records to return
|
|
schema:
|
|
type: number
|
|
- name: page
|
|
in: query
|
|
description: 'Current page number. Informational only, page numbers start from 1'
|
|
schema:
|
|
type: number
|
|
- name: next
|
|
in: query
|
|
description: 'Cursor value for next page, retrieved from nextCursor response value'
|
|
schema:
|
|
type: string
|
|
- name: previous
|
|
in: query
|
|
description: 'Cursor value for previous page, retrieved from previousCursor response value'
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/GetDomainAliasesResponse'
|
|
post:
|
|
tags:
|
|
- DomainAliases
|
|
summary: Create new Domain Alias
|
|
description: Add a new Alias for a Domain. This allows to accept mail on username@domain and username@alias
|
|
operationId: createDomainAlias
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/CreateDomainAliasRequest'
|
|
required: true
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/CreateDomainAliasResponse'
|
|
'/domainaliases/resolve/{alias}':
|
|
get:
|
|
tags:
|
|
- DomainAliases
|
|
summary: Resolve ID for a domain aias
|
|
operationId: resolveDomainAlias
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ResolveIdResponse'
|
|
parameters:
|
|
- name: alias
|
|
in: path
|
|
description: Alias domain
|
|
required: true
|
|
schema:
|
|
type: string
|
|
'/users/{user}/filters/{filter}':
|
|
delete:
|
|
tags:
|
|
- Filters
|
|
summary: Delete a Filter
|
|
operationId: deleteFilter
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/SuccessResponse'
|
|
get:
|
|
tags:
|
|
- Filters
|
|
summary: Request Filter information
|
|
operationId: getFilter
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/GetFilterResponse'
|
|
put:
|
|
tags:
|
|
- Filters
|
|
summary: Update Filter information
|
|
description: 'This method updates Filter data. To unset a value, use empty strings'
|
|
operationId: updateFilter
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/UpdateFilterRequest'
|
|
required: true
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/UpdateFilterResponse'
|
|
parameters:
|
|
- name: user
|
|
in: path
|
|
description: Users unique ID
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: filter
|
|
in: path
|
|
description: Filters unique ID
|
|
required: true
|
|
schema:
|
|
type: string
|
|
|
|
/filters:
|
|
get:
|
|
tags:
|
|
- Filters
|
|
summary: List all Filters
|
|
operationId: getAllFilters
|
|
parameters:
|
|
- name: forward
|
|
in: query
|
|
description: Partial match of a forward email address or URL
|
|
schema:
|
|
type: string
|
|
- name: limit
|
|
in: query
|
|
description: How many records to return
|
|
schema:
|
|
type: number
|
|
- name: page
|
|
in: query
|
|
description: 'Current page number. Informational only, page numbers start from 1'
|
|
schema:
|
|
type: number
|
|
- name: next
|
|
in: query
|
|
description: 'Cursor value for next page, retrieved from nextCursor response value'
|
|
schema:
|
|
type: number
|
|
- name: previous
|
|
in: query
|
|
description: 'Cursor value for previous page, retrieved from previousCursor response value'
|
|
schema:
|
|
type: number
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/GetAllFiltersResponse'
|
|
|
|
'/users/{user}/filters':
|
|
get:
|
|
tags:
|
|
- Filters
|
|
summary: List Filters for a User
|
|
operationId: getFilters
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/GetFiltersResponse'
|
|
post:
|
|
tags:
|
|
- Filters
|
|
summary: Create new Filter
|
|
operationId: createFilter
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/CreateFilterRequest'
|
|
required: true
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/UpdateFilterResponse'
|
|
parameters:
|
|
- name: user
|
|
in: path
|
|
description: Users unique ID
|
|
required: true
|
|
schema:
|
|
type: string
|
|
'/users/{user}/mailboxes/{mailbox}':
|
|
delete:
|
|
tags:
|
|
- Mailboxes
|
|
summary: Delete a Mailbox
|
|
operationId: deleteMailbox
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/SuccessResponse'
|
|
get:
|
|
tags:
|
|
- Mailboxes
|
|
summary: Request Mailbox information
|
|
operationId: getMailbox
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/GetMailboxResponse'
|
|
put:
|
|
tags:
|
|
- Mailboxes
|
|
summary: Update Mailbox information
|
|
operationId: updateMailbox
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/UpdateMailboxRequest'
|
|
required: true
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/SuccessResponse'
|
|
parameters:
|
|
- name: user
|
|
in: path
|
|
description: Users unique ID
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: mailbox
|
|
in: path
|
|
description: Mailbox unique ID. Special use folders and INBOX can not be deleted
|
|
required: true
|
|
schema:
|
|
type: string
|
|
'/users/{user}/mailboxes':
|
|
get:
|
|
tags:
|
|
- Mailboxes
|
|
summary: List Mailboxes for a User
|
|
operationId: getMailboxes
|
|
parameters:
|
|
- name: specialUse
|
|
in: query
|
|
description: Should the response include only folders with specialUse flag set.
|
|
schema:
|
|
type: boolean
|
|
- name: showHidden
|
|
in: query
|
|
description: Hidden folders are not included in the listing by default.
|
|
schema:
|
|
type: boolean
|
|
- name: counters
|
|
in: query
|
|
description: Should the response include counters (total + unseen). Counters come with some overhead.
|
|
schema:
|
|
type: boolean
|
|
- name: sizes
|
|
in: query
|
|
description: Should the response include mailbox size in bytes. Size numbers come with a lot of overhead as an aggregated query is ran.
|
|
schema:
|
|
type: boolean
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/GetMailboxesResponse'
|
|
post:
|
|
tags:
|
|
- Mailboxes
|
|
summary: Create new Mailbox
|
|
operationId: createMailbox
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/CreateMailboxRequest'
|
|
required: true
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/CreateMailboxResponse'
|
|
parameters:
|
|
- name: user
|
|
in: path
|
|
description: Users unique ID
|
|
required: true
|
|
schema:
|
|
type: string
|
|
'/users/{user}/mailboxes/{mailbox}/messages/{message}':
|
|
delete:
|
|
tags:
|
|
- Messages
|
|
summary: Delete a Message
|
|
operationId: deleteMessage
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/SuccessResponse'
|
|
get:
|
|
tags:
|
|
- Messages
|
|
summary: Request Message information
|
|
operationId: getMessage
|
|
parameters:
|
|
- name: markAsSeen
|
|
in: query
|
|
description: If true then marks message as seen
|
|
schema:
|
|
type: boolean
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/GetMessageResponse'
|
|
parameters:
|
|
- name: user
|
|
in: path
|
|
description: ID of the User
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: mailbox
|
|
in: path
|
|
description: ID of the Mailbox
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: message
|
|
in: path
|
|
description: Message ID
|
|
required: true
|
|
schema:
|
|
type: number
|
|
'/users/{user}/mailboxes/{mailbox}/messages':
|
|
delete:
|
|
tags:
|
|
- Messages
|
|
summary: Delete all Messages from a Mailbox
|
|
operationId: deleteMessagesInMailbox
|
|
parameters:
|
|
- name: async
|
|
in: query
|
|
description: Schedule deletion task
|
|
schema:
|
|
type: boolean
|
|
default: false
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/DeleteMessagesInMailboxResponse'
|
|
get:
|
|
tags:
|
|
- Messages
|
|
summary: List messages in a Mailbox
|
|
operationId: getMessages
|
|
parameters:
|
|
- name: unseen
|
|
in: query
|
|
description: 'If true, then returns only unseen messages'
|
|
schema:
|
|
type: boolean
|
|
- name: metaData
|
|
in: query
|
|
description: 'If true, then includes metaData in the response'
|
|
schema:
|
|
type: boolean
|
|
- name: threadCounters
|
|
in: query
|
|
description: 'If true, then includes threadMessageCount in the response. Counters come with some overhead'
|
|
schema:
|
|
type: boolean
|
|
- name: limit
|
|
in: query
|
|
description: How many records to return
|
|
schema:
|
|
type: number
|
|
- name: page
|
|
in: query
|
|
description: 'Current page number. Informational only, page numbers start from 1'
|
|
schema:
|
|
type: number
|
|
- name: order
|
|
in: query
|
|
description: Ordering of the records by insert date
|
|
schema:
|
|
$ref: '#/components/schemas/Order'
|
|
- name: next
|
|
in: query
|
|
description: 'Cursor value for next page, retrieved from nextCursor response value'
|
|
schema:
|
|
type: string
|
|
- name: previous
|
|
in: query
|
|
description: 'Cursor value for previous page, retrieved from previousCursor response value'
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/GetMessagesResponse'
|
|
put:
|
|
tags:
|
|
- Messages
|
|
summary: Update Message information
|
|
description: This method updates message flags and also allows to move messages to a different mailbox
|
|
operationId: updateMessage
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/UpdateMessageRequest'
|
|
required: true
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/UpdateMessageResponse'
|
|
post:
|
|
tags:
|
|
- Messages
|
|
summary: Upload Message
|
|
description: 'This method allows to upload either an RFC822 formatted message or a message structure to a mailbox. Raw message is stored unmodified, no headers are added or removed. If you want to generate the uploaded message from structured data fields, then do not use the raw property.'
|
|
operationId: uploadMessage
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/UploadMessageRequest'
|
|
required: true
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/UploadMessageResponse'
|
|
parameters:
|
|
- name: user
|
|
in: path
|
|
description: ID of the User
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: mailbox
|
|
in: path
|
|
description: ID of the Mailbox
|
|
required: true
|
|
schema:
|
|
type: string
|
|
'/users/{user}/mailboxes/{mailbox}/messages/{message}/forward':
|
|
post:
|
|
tags:
|
|
- Messages
|
|
summary: Forward stored Message
|
|
description: This method allows either to re-forward a message to an original forward target or forward it to some other address. This is useful if a user had forwarding turned on but the message was not delivered so you can try again. Forwarding does not modify the original message.
|
|
operationId: forwardStoredMessage
|
|
requestBody:
|
|
description: This method allows either to re-forward a message to an original forward target or forward it to some other address. This is useful if a user had forwarding turned on but the message was not delivered so you can try again. Forwarding does not modify the original message.
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ForwardStoredMessageRequest'
|
|
required: true
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ForwardStoredMessageResponse'
|
|
parameters:
|
|
- name: user
|
|
in: path
|
|
description: ID of the User
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: mailbox
|
|
in: path
|
|
description: ID of the Mailbox
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: message
|
|
in: path
|
|
description: Message ID
|
|
required: true
|
|
schema:
|
|
type: number
|
|
'/users/{user}/mailboxes/{mailbox}/messages/{message}/attachments/{attachment}':
|
|
get:
|
|
tags:
|
|
- Messages
|
|
summary: Download Attachment
|
|
description: This method returns attachment file contents in binary form
|
|
operationId: getMessageAttachment
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/octet-stream:
|
|
schema:
|
|
type: string
|
|
description: Success
|
|
format: binary
|
|
parameters:
|
|
- name: user
|
|
in: path
|
|
description: ID of the User
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: mailbox
|
|
in: path
|
|
description: ID of the Mailbox
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: message
|
|
in: path
|
|
description: ID of the Message
|
|
required: true
|
|
schema:
|
|
type: number
|
|
- name: attachment
|
|
in: path
|
|
description: ID of the Attachment
|
|
required: true
|
|
schema:
|
|
type: string
|
|
'/users/{user}/mailboxes/{mailbox}/messages/{message}/message.eml':
|
|
get:
|
|
tags:
|
|
- Messages
|
|
summary: Get Message source
|
|
description: This method returns the full RFC822 formatted source of the stored message
|
|
operationId: getMessageSource
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
text/plain:
|
|
schema:
|
|
type: object
|
|
description: Success
|
|
parameters:
|
|
- name: user
|
|
in: path
|
|
description: ID of the User
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: mailbox
|
|
in: path
|
|
description: ID of the Mailbox
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: message
|
|
in: path
|
|
description: ID of the Message
|
|
required: true
|
|
schema:
|
|
type: number
|
|
'/users/{user}/outbound/{queueId}':
|
|
delete:
|
|
tags:
|
|
- Messages
|
|
summary: Delete an Outbound Message
|
|
description: You can delete outbound emails that are still in queue. Queue ID can be found from the `outbound` property of a stored email.
|
|
operationId: deleteOutboundMessage
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/SuccessResponse'
|
|
parameters:
|
|
- name: user
|
|
in: path
|
|
description: ID of the User
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: queueId
|
|
in: path
|
|
description: Outbound queue ID of the message
|
|
required: true
|
|
schema:
|
|
type: string
|
|
|
|
'/users/{user}/search':
|
|
get:
|
|
tags:
|
|
- Messages
|
|
summary: Search for messages
|
|
operationId: searchMessages
|
|
description: This method allows searching for matching messages.
|
|
parameters:
|
|
- name: mailbox
|
|
in: query
|
|
description: ID of the Mailbox
|
|
schema:
|
|
type: string
|
|
- name: thread
|
|
in: query
|
|
description: Thread ID
|
|
schema:
|
|
type: string
|
|
- name: query
|
|
in: query
|
|
description: 'Search string, uses MongoDB fulltext index. Covers data from mesage body and also common headers like from, to, subject etc.'
|
|
schema:
|
|
type: string
|
|
- name: datestart
|
|
in: query
|
|
description: Datestring for the earliest message storing time
|
|
schema:
|
|
type: string
|
|
format: date-time
|
|
- name: dateend
|
|
in: query
|
|
description: Datestring for the latest message storing time
|
|
schema:
|
|
type: string
|
|
format: date-time
|
|
- name: from
|
|
in: query
|
|
description: 'Partial match for the From: header line'
|
|
schema:
|
|
type: string
|
|
- name: to
|
|
in: query
|
|
description: 'Partial match for the To: and Cc: header lines'
|
|
schema:
|
|
type: string
|
|
- name: subject
|
|
in: query
|
|
description: 'Partial match for the Subject: header line'
|
|
schema:
|
|
type: string
|
|
- name: attachments
|
|
in: query
|
|
description: 'If true, then matches only messages with attachments'
|
|
schema:
|
|
type: boolean
|
|
- name: flagged
|
|
in: query
|
|
description: 'If true, then matches only messages with \Flagged flags'
|
|
schema:
|
|
type: boolean
|
|
- name: unseen
|
|
in: query
|
|
description: 'If true, then matches only messages without \Seen flags'
|
|
schema:
|
|
type: boolean
|
|
- name: searchable
|
|
in: query
|
|
description: 'If true, then matches messages not in Junk or Trash'
|
|
schema:
|
|
type: boolean
|
|
- name: or.query
|
|
in: query
|
|
description: 'Search string, uses MongoDB fulltext index. Covers data from mesage body and also common headers like from, to, subject etc.'
|
|
schema:
|
|
type: string
|
|
- name: or.from
|
|
in: query
|
|
description: 'Partial match for the From: header line'
|
|
schema:
|
|
type: string
|
|
- name: or.to
|
|
in: query
|
|
description: 'Partial match for the To: and Cc: header lines'
|
|
schema:
|
|
type: string
|
|
- name: or.subject
|
|
in: query
|
|
description: 'Partial match for the Subject: header line'
|
|
schema:
|
|
type: string
|
|
- name: minSize
|
|
in: query
|
|
description: Minimal message size in bytes
|
|
schema:
|
|
type: number
|
|
- name: maxSize
|
|
in: query
|
|
description: Maximal message size in bytes
|
|
schema:
|
|
type: number
|
|
- name: threadCounters
|
|
in: query
|
|
description: 'If true, then includes threadMessageCount in the response. Counters come with some overhead'
|
|
schema:
|
|
type: boolean
|
|
- name: limit
|
|
in: query
|
|
description: How many records to return
|
|
schema:
|
|
type: number
|
|
- name: page
|
|
in: query
|
|
description: 'Current page number. Informational only, page numbers start from 1'
|
|
schema:
|
|
type: number
|
|
- name: next
|
|
in: query
|
|
description: 'Cursor value for next page, retrieved from nextCursor response value'
|
|
schema:
|
|
type: string
|
|
- name: previous
|
|
in: query
|
|
description: 'Cursor value for previous page, retrieved from previousCursor response value'
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/SearchMessagesResponse'
|
|
|
|
post:
|
|
tags:
|
|
- Messages
|
|
summary: Search and update messages
|
|
operationId: searchApplyMessages
|
|
description: This method allows applying an action to all matching messages. This is an async method so that it will return immediately. Actual modifications are run in the background.
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
mailbox:
|
|
description: ID of the Mailbox
|
|
type: string
|
|
thread:
|
|
description: Thread ID
|
|
type: string
|
|
query:
|
|
description: 'Search string, uses MongoDB fulltext index. Covers data from mesage body and also common headers like from, to, subject etc.'
|
|
type: string
|
|
datestart:
|
|
description: Datestring for the earliest message storing time
|
|
type: string
|
|
format: date-time
|
|
dateend:
|
|
description: Datestring for the latest message storing time
|
|
type: string
|
|
format: date-time
|
|
from:
|
|
description: 'Partial match for the From: header line'
|
|
type: string
|
|
to:
|
|
in: query
|
|
description: 'Partial match for the To: and Cc: header lines'
|
|
type: string
|
|
subject:
|
|
description: 'Partial match for the Subject: header line'
|
|
type: string
|
|
attachments:
|
|
description: 'If true, then matches only messages with attachments'
|
|
type: boolean
|
|
flagged:
|
|
description: 'If true, then matches only messages with \Flagged flags'
|
|
type: boolean
|
|
unseen:
|
|
description: 'If true, then matches only messages without \Seen flags'
|
|
type: boolean
|
|
searchable:
|
|
description: 'If true, then matches messages not in Junk or Trash'
|
|
type: boolean
|
|
or:
|
|
type: object
|
|
description: 'At least onOne of the included terms must match'
|
|
properties:
|
|
query:
|
|
description: 'Search string, uses MongoDB fulltext index. Covers data from mesage body and also common headers like from, to, subject etc.'
|
|
type: string
|
|
from:
|
|
description: 'Partial match for the From: header line'
|
|
type: string
|
|
to:
|
|
description: 'Partial match for the To: and Cc: header lines'
|
|
type: string
|
|
subject:
|
|
description: 'Partial match for the Subject: header line'
|
|
type: string
|
|
minSize:
|
|
description: Minimal message size in bytes
|
|
type: number
|
|
maxSize:
|
|
description: Maximal message size in bytes
|
|
type: number
|
|
action:
|
|
type: object
|
|
description: 'Define actions to take with matching messages'
|
|
properties:
|
|
moveTo:
|
|
type: string
|
|
description: ID of the target Mailbox if you want to move messages
|
|
seen:
|
|
type: boolean
|
|
description: State of the \Seen flag
|
|
flagged:
|
|
type: boolean
|
|
description: State of the \Flagged flag
|
|
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
description: Indicates if the action succeeded or not
|
|
scheduled:
|
|
type: string
|
|
description: ID of the scheduled operation
|
|
|
|
parameters:
|
|
- name: user
|
|
in: path
|
|
description: ID of the User
|
|
required: true
|
|
schema:
|
|
type: string
|
|
'/users/{user}/mailboxes/{mailbox}/messages/{message}/submit':
|
|
post:
|
|
tags:
|
|
- Messages
|
|
summary: Submit Draft for delivery
|
|
description: This method allows to submit a draft message for delivery. Draft is moved to Sent mail folder.
|
|
operationId: submitStoredMessage
|
|
requestBody:
|
|
description: This method allows to submit a draft message for delivery. Draft is moved to Sent mail folder.
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/SubmitStoredMessageRequest'
|
|
required: true
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/SubmitStoredMessageResponse'
|
|
parameters:
|
|
- name: user
|
|
in: path
|
|
description: ID of the User
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: mailbox
|
|
in: path
|
|
description: ID of the Mailbox
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: message
|
|
in: path
|
|
description: Message ID
|
|
required: true
|
|
schema:
|
|
type: number
|
|
'/users/{user}/storage/{file}':
|
|
delete:
|
|
tags:
|
|
- Storage
|
|
summary: Delete a File
|
|
operationId: deleteFile
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/SuccessResponse'
|
|
get:
|
|
tags:
|
|
- Storage
|
|
summary: Download File
|
|
description: This method returns stored file contents in binary form
|
|
operationId: getFile
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/octet-stream:
|
|
schema:
|
|
type: string
|
|
description: Success
|
|
format: binary
|
|
parameters:
|
|
- name: user
|
|
in: path
|
|
description: ID of the User
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: file
|
|
in: path
|
|
description: ID of the File
|
|
required: true
|
|
schema:
|
|
type: string
|
|
'/users/{user}/storage':
|
|
get:
|
|
tags:
|
|
- Storage
|
|
summary: List stored files
|
|
operationId: getFiles
|
|
parameters:
|
|
- name: query
|
|
in: query
|
|
description: Partial match of a filename
|
|
schema:
|
|
type: string
|
|
- name: limit
|
|
in: query
|
|
description: How many records to return
|
|
schema:
|
|
type: number
|
|
- name: page
|
|
in: query
|
|
description: 'Current page number. Informational only, page numbers start from 1'
|
|
schema:
|
|
type: number
|
|
- name: next
|
|
in: query
|
|
description: 'Cursor value for next page, retrieved from nextCursor response value'
|
|
schema:
|
|
type: string
|
|
- name: previous
|
|
in: query
|
|
description: 'Cursor value for previous page, retrieved from previousCursor response value'
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/GetFilesResponse'
|
|
post:
|
|
tags:
|
|
- Storage
|
|
summary: Upload File
|
|
description: This method allows to upload an attachment to be linked from a draft
|
|
operationId: uploadFile
|
|
requestBody:
|
|
content:
|
|
multipart/form-data:
|
|
encoding: {}
|
|
schema:
|
|
required:
|
|
- content
|
|
type: object
|
|
properties:
|
|
filename:
|
|
type: string
|
|
description: Name of the file
|
|
contentType:
|
|
type: string
|
|
description: MIME type of the file. Is detected from the file name by default
|
|
encoding:
|
|
type: string
|
|
description: Encoding of the file content. Useful if you want to upload the file in base64 encoded format. Valid options "base64", "hex", "utf8"
|
|
content:
|
|
type: string
|
|
format: binary
|
|
required: false
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/UploadFileResponse'
|
|
parameters:
|
|
- name: user
|
|
in: path
|
|
description: ID of the User
|
|
required: true
|
|
schema:
|
|
type: string
|
|
'/users/{user}/submit':
|
|
post:
|
|
tags:
|
|
- Submission
|
|
summary: Submit a Message for Delivery
|
|
description: Use this method to send emails from a user account
|
|
operationId: submitMessage
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/SubmitMessageRequest'
|
|
required: true
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/SubmitMessageResponse'
|
|
parameters:
|
|
- name: user
|
|
in: path
|
|
description: Users unique ID
|
|
required: true
|
|
schema:
|
|
type: string
|
|
'/users/{user}/2fa/totp/check':
|
|
post:
|
|
tags:
|
|
- TwoFactorAuth
|
|
summary: Validate TOTP Token
|
|
description: This method checks if a TOTP token provided by a User is valid for authentication
|
|
operationId: checkTotp2FA
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/CheckTotp2FARequest'
|
|
required: true
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/SuccessResponse'
|
|
parameters:
|
|
- name: user
|
|
in: path
|
|
description: ID of the User
|
|
required: true
|
|
schema:
|
|
type: string
|
|
'/users/{user}/2fa':
|
|
delete:
|
|
tags:
|
|
- TwoFactorAuth
|
|
summary: Disable 2FA
|
|
description: This method disables all 2FA mechanisms a user might have set up
|
|
operationId: disable2FA
|
|
parameters:
|
|
- name: sess
|
|
in: query
|
|
description: Session identifier for the logs
|
|
schema:
|
|
type: string
|
|
- name: ip
|
|
in: query
|
|
description: IP address for the logs
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/SuccessResponse'
|
|
parameters:
|
|
- name: user
|
|
in: path
|
|
description: ID of the User
|
|
required: true
|
|
schema:
|
|
type: string
|
|
'/users/{user}/2fa/custom':
|
|
delete:
|
|
tags:
|
|
- TwoFactorAuth
|
|
summary: Disable custom 2FA for a user
|
|
description: 'This method disables custom 2FA. If it was the only 2FA set up, then account password for IMAP/POP3/SMTP gets enabled again'
|
|
operationId: disableCustom2FA
|
|
parameters:
|
|
- name: sess
|
|
in: query
|
|
description: Session identifier for the logs
|
|
schema:
|
|
type: string
|
|
- name: ip
|
|
in: query
|
|
description: IP address for the logs
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/SuccessResponse'
|
|
put:
|
|
tags:
|
|
- TwoFactorAuth
|
|
summary: Enable custom 2FA for a user
|
|
description: This method disables account password for IMAP/POP3/SMTP
|
|
operationId: enableCustom2FA
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/EnableCustom2FARequest'
|
|
required: false
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/SuccessResponse'
|
|
parameters:
|
|
- name: user
|
|
in: path
|
|
description: ID of the User
|
|
required: true
|
|
schema:
|
|
type: string
|
|
'/users/{user}/2fa/totp':
|
|
delete:
|
|
tags:
|
|
- TwoFactorAuth
|
|
summary: Disable TOTP auth
|
|
description: This method disables TOTP for a user. Does not affect other 2FA mechanisms a user might have set up
|
|
operationId: disableTotp2FA
|
|
parameters:
|
|
- name: sess
|
|
in: query
|
|
description: Session identifier for the logs
|
|
schema:
|
|
type: string
|
|
- name: ip
|
|
in: query
|
|
description: IP address for the logs
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/SuccessResponse'
|
|
parameters:
|
|
- name: user
|
|
in: path
|
|
description: ID of the User
|
|
required: true
|
|
schema:
|
|
type: string
|
|
'/users/{user}/2fa/totp/enable':
|
|
post:
|
|
tags:
|
|
- TwoFactorAuth
|
|
summary: Enable TOTP seed
|
|
description: This method enables TOTP for a user by verifying the seed value generated from 2fa/totp/setup
|
|
operationId: enableTotp2FA
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/EnableTotp2FARequest'
|
|
required: true
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/SuccessResponse'
|
|
parameters:
|
|
- name: user
|
|
in: path
|
|
description: ID of the User
|
|
required: true
|
|
schema:
|
|
type: string
|
|
'/users/{user}/2fa/totp/setup':
|
|
post:
|
|
tags:
|
|
- TwoFactorAuth
|
|
summary: Generate TOTP seed
|
|
description: This method generates TOTP seed and QR code for 2FA. User needs to verify the seed value using 2fa/totp/enable endpoint
|
|
operationId: setupTotp2FA
|
|
requestBody:
|
|
description: This method generates TOTP seed and QR code for 2FA. User needs to verify the seed value using 2fa/totp/enable endpoint
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/SetupTotp2FARequest'
|
|
required: true
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/SetupTotp2FAResponse'
|
|
parameters:
|
|
- name: user
|
|
in: path
|
|
description: ID of the User
|
|
required: true
|
|
schema:
|
|
type: string
|
|
'/users/{id}':
|
|
delete:
|
|
tags:
|
|
- Users
|
|
summary: Delete a User
|
|
description: 'This method deletes user and address entries from DB and schedules a background task to delete messages. You can call this method several times even if the user has already been deleted, in case there are still some pending messages.'
|
|
operationId: deleteUser
|
|
parameters:
|
|
- name: deleteAfter
|
|
description: Delete user entry from registry but keep all user data until provided date. User account is fully recoverable up to that date.
|
|
in: query
|
|
schema:
|
|
type: string
|
|
format: date-time
|
|
- name: sess
|
|
in: query
|
|
description: Session identifier for the logs
|
|
schema:
|
|
type: string
|
|
- name: ip
|
|
in: query
|
|
description: IP address for the logs
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/SuccessResponse'
|
|
get:
|
|
tags:
|
|
- Users
|
|
summary: Request User information
|
|
operationId: getUser
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/GetUserResponse'
|
|
put:
|
|
tags:
|
|
- Users
|
|
summary: Update User information
|
|
operationId: updateUser
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/UpdateUserRequest'
|
|
required: true
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/SuccessResponse'
|
|
parameters:
|
|
- name: id
|
|
in: path
|
|
description: Users unique ID.
|
|
required: true
|
|
schema:
|
|
type: string
|
|
'/users/{id}/updates':
|
|
get:
|
|
tags:
|
|
- Users
|
|
summary: Open change stream
|
|
description: This api call returns an EventSource response. Listen on this stream to get notifications about changes in messages and mailboxes. Returned events are JSON encoded strings
|
|
operationId: getUpdates
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
text/event-stream:
|
|
schema:
|
|
type: string
|
|
description: Success
|
|
parameters:
|
|
- name: id
|
|
in: path
|
|
description: Users unique ID.
|
|
required: true
|
|
schema:
|
|
type: string
|
|
'/users/resolve/{username}':
|
|
get:
|
|
tags:
|
|
- Users
|
|
summary: Resolve ID for a username
|
|
operationId: resolveUser
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ResolveIdResponse'
|
|
parameters:
|
|
- name: username
|
|
in: path
|
|
description: 'Username of the User. Alphanumeric value. Must start with a letter, dots are allowed but informational only ("user.name" is the same as "username")'
|
|
required: true
|
|
schema:
|
|
type: string
|
|
|
|
'/users/{id}/restore':
|
|
get:
|
|
tags:
|
|
- Users
|
|
summary: Return recovery info for a deleted user
|
|
operationId: restoreUserInfo
|
|
parameters:
|
|
- name: sess
|
|
in: query
|
|
description: Session identifier for the logs
|
|
schema:
|
|
type: string
|
|
- name: ip
|
|
in: query
|
|
description: IP address for the logs
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/RecoverInfoResponse'
|
|
post:
|
|
tags:
|
|
- Users
|
|
summary: Cancel user deletion task
|
|
description: 'Use this endpoint to cancel a timed deletion task scheduled by `DELETE /user/{id}`. If user data is not yet deleted then the account is fully recovered, except any email addresses that might have been already recycled'
|
|
operationId: restoreUser
|
|
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/UserRestoreRequest'
|
|
required: true
|
|
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/SuccessResponse'
|
|
parameters:
|
|
- name: id
|
|
in: path
|
|
description: Users unique ID.
|
|
required: true
|
|
schema:
|
|
type: string
|
|
/users:
|
|
get:
|
|
tags:
|
|
- Users
|
|
summary: List registered Users
|
|
operationId: getUsers
|
|
parameters:
|
|
- name: query
|
|
in: query
|
|
description: Partial match of username or default email address
|
|
schema:
|
|
type: string
|
|
- name: forward
|
|
in: query
|
|
description: Partial match of a forward email address or URL
|
|
schema:
|
|
type: string
|
|
- name: tags
|
|
in: query
|
|
description: Comma separated list of tags. The User must have at least one to be set
|
|
schema:
|
|
type: string
|
|
- name: requiredTags
|
|
in: query
|
|
description: Comma separated list of tags. The User must have all listed tags to be set
|
|
schema:
|
|
type: string
|
|
- name: metaData
|
|
in: query
|
|
description: 'If true, then includes metaData in the response'
|
|
schema:
|
|
type: boolean
|
|
- name: internalData
|
|
in: query
|
|
description: 'If true, then includes internalData in the response. Not shown for user-role tokens.'
|
|
schema:
|
|
type: boolean
|
|
- name: limit
|
|
in: query
|
|
description: How many records to return
|
|
schema:
|
|
type: number
|
|
- name: page
|
|
in: query
|
|
description: 'Current page number. Informational only, page numbers start from 1'
|
|
schema:
|
|
type: number
|
|
- name: next
|
|
in: query
|
|
description: 'Cursor value for next page, retrieved from nextCursor response value'
|
|
schema:
|
|
type: string
|
|
- name: previous
|
|
in: query
|
|
description: 'Cursor value for previous page, retrieved from previousCursor response value'
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/GetUsersResponse'
|
|
post:
|
|
tags:
|
|
- Users
|
|
summary: Create new user
|
|
operationId: createUser
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/CreateUserRequest'
|
|
required: true
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/CreateUserResponse'
|
|
'/users/{user}/quota/reset':
|
|
post:
|
|
tags:
|
|
- Users
|
|
summary: Recalculate User quota
|
|
description: 'This method recalculates quota usage for a User. Normally not needed, only use it if quota numbers are way off. This method is not transactional, so if the user is currently receiving new messages then the resulting value is not exact.'
|
|
operationId: recalculateQuota
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/RecalculateQuotaResponse'
|
|
parameters:
|
|
- name: user
|
|
in: path
|
|
description: Users unique ID.
|
|
required: true
|
|
schema:
|
|
type: string
|
|
/quota/reset:
|
|
post:
|
|
tags:
|
|
- Users
|
|
summary: Recalculate Quota for all Users
|
|
description: 'This method recalculates quota usage for all Users. Normally not needed, only use it if quota numbers are way off. This method is not transactional, so if the user is currently receiving new messages then the resulting value is not exact.'
|
|
operationId: recalculateQuotaAllUsers
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/SuccessResponse'
|
|
'/users/{id}/logout':
|
|
put:
|
|
tags:
|
|
- Users
|
|
summary: Log out User
|
|
description: This method logs out all user sessions in IMAP
|
|
operationId: logoutUser
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/LogoutUserRequest'
|
|
required: true
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/SuccessResponse'
|
|
parameters:
|
|
- name: id
|
|
in: path
|
|
description: Users unique ID.
|
|
required: true
|
|
schema:
|
|
type: string
|
|
'/users/{id}/password/reset':
|
|
post:
|
|
tags:
|
|
- Users
|
|
summary: Reset password for a User
|
|
description: This method generates a new temporary password for a User. Additionally it removes all two-factor authentication settings
|
|
operationId: resetUserPassword
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ResetUserPasswordRequest'
|
|
required: false
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ResetUserPasswordResponse'
|
|
parameters:
|
|
- name: id
|
|
in: path
|
|
description: Users unique ID.
|
|
required: true
|
|
schema:
|
|
type: string
|
|
|
|
'/webhooks/{webhook}':
|
|
delete:
|
|
tags:
|
|
- Webhooks
|
|
summary: Delete a webhook
|
|
operationId: deleteWebhook
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/SuccessResponse'
|
|
parameters:
|
|
- name: webhook
|
|
in: path
|
|
description: ID of the Webhook
|
|
required: true
|
|
schema:
|
|
type: string
|
|
/webhooks:
|
|
get:
|
|
tags:
|
|
- Webhooks
|
|
summary: List registered Webhooks
|
|
operationId: getWebhooks
|
|
parameters:
|
|
- name: type
|
|
in: query
|
|
description: 'Prefix or exact match. Prefix match must end with ".*", eg "channel.*". Use "*" for all types'
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: user
|
|
in: query
|
|
description: User ID
|
|
schema:
|
|
type: string
|
|
- name: limit
|
|
in: query
|
|
description: How many records to return
|
|
schema:
|
|
type: number
|
|
- name: page
|
|
in: query
|
|
description: 'Current page number. Informational only, page numbers start from 1'
|
|
schema:
|
|
type: number
|
|
- name: next
|
|
in: query
|
|
description: 'Cursor value for next page, retrieved from nextCursor response value'
|
|
schema:
|
|
type: string
|
|
- name: previous
|
|
in: query
|
|
description: 'Cursor value for previous page, retrieved from previousCursor response value'
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/GetWebhooksResponse'
|
|
post:
|
|
tags:
|
|
- Webhooks
|
|
summary: Create new Webhook
|
|
description: Create new webhook
|
|
operationId: createWebhook
|
|
requestBody:
|
|
description: Create new webhook
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/CreateWebhookRequest'
|
|
required: true
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/CreateWebhookResponse'
|
|
|
|
'/settings/{setting}':
|
|
get:
|
|
tags:
|
|
- Settings
|
|
summary: Get Setting value
|
|
operationId: getSetting
|
|
parameters:
|
|
- name: sess
|
|
in: query
|
|
description: Session identifier for the logs
|
|
schema:
|
|
type: string
|
|
- name: ip
|
|
in: query
|
|
description: IP address for the logs
|
|
schema:
|
|
type: string
|
|
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/GetSettingResponse'
|
|
|
|
post:
|
|
tags:
|
|
- Settings
|
|
summary: Create or Update Setting
|
|
description: Create a new or update an existing setting
|
|
operationId: createSetting
|
|
requestBody:
|
|
description: Create or Update Setting
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/CreateSettingRequest'
|
|
required: true
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/CreateSettingResponse'
|
|
|
|
delete:
|
|
tags:
|
|
- Settings
|
|
summary: Delete a setting
|
|
operationId: deleteSetting
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/SuccessResponse'
|
|
|
|
parameters:
|
|
- name: setting
|
|
in: path
|
|
description: Key of the Setting
|
|
required: true
|
|
schema:
|
|
type: string
|
|
|
|
/settings:
|
|
get:
|
|
tags:
|
|
- Settings
|
|
summary: List registered Settings
|
|
operationId: getSettings
|
|
parameters:
|
|
- name: filter
|
|
in: query
|
|
description: 'Optional partial match of the Setting key'
|
|
schema:
|
|
type: string
|
|
- name: sess
|
|
in: query
|
|
description: Session identifier for the logs
|
|
schema:
|
|
type: string
|
|
- name: ip
|
|
in: query
|
|
description: IP address for the logs
|
|
schema:
|
|
type: string
|
|
|
|
responses:
|
|
'200':
|
|
description: Success
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/GetSettingsResponse'
|
|
|
|
components:
|
|
schemas:
|
|
AddressLimits:
|
|
required:
|
|
- forwards
|
|
type: object
|
|
properties:
|
|
forwards:
|
|
$ref: '#/components/schemas/Forwards'
|
|
description: Account limits and usage
|
|
AutoreplyInfo:
|
|
required:
|
|
- status
|
|
- name
|
|
- subject
|
|
- text
|
|
- html
|
|
type: object
|
|
properties:
|
|
status:
|
|
type: boolean
|
|
description: 'If true, then autoreply is enabled for this address'
|
|
name:
|
|
type: string
|
|
description: 'Name that is used for the From: header in autoreply message'
|
|
subject:
|
|
type: string
|
|
description: Autoreply subject line
|
|
text:
|
|
type: string
|
|
description: Autoreply plaintext content
|
|
html:
|
|
type: string
|
|
description: Autoreply HTML content
|
|
description: Autoreply information
|
|
Autoreply:
|
|
type: object
|
|
properties:
|
|
status:
|
|
type: boolean
|
|
description: 'If true, then autoreply is enabled for this address'
|
|
start:
|
|
type: string
|
|
format: date-time
|
|
description: Either a date string or boolean false to disable start time checks
|
|
end:
|
|
type: string
|
|
format: date-time
|
|
description: Either a date string or boolean false to disable end time checks
|
|
name:
|
|
type: string
|
|
description: 'Name that is used for the From: header in autoreply message'
|
|
subject:
|
|
type: string
|
|
description: Autoreply subject line
|
|
text:
|
|
type: string
|
|
description: Autoreply plaintext content
|
|
html:
|
|
type: string
|
|
description: Autoreply HTML content
|
|
description: Autoreply information
|
|
LastUse:
|
|
required:
|
|
- time
|
|
- event
|
|
type: object
|
|
properties:
|
|
time:
|
|
type: string
|
|
description: Datestring of last use or false if password has not been used
|
|
format: date-time
|
|
event:
|
|
type: string
|
|
description: Event ID of the security log for the last authentication
|
|
description: Information about last use
|
|
ContentType:
|
|
required:
|
|
- value
|
|
- params
|
|
type: object
|
|
properties:
|
|
value:
|
|
type: string
|
|
description: 'MIME type of the message, eg. "multipart/mixed"'
|
|
params:
|
|
type: object
|
|
description: An object with Content-Type params as key-value pairs
|
|
description: Parsed Content-Type header. Usually needed to identify encrypted messages and such
|
|
DnsTxt:
|
|
required:
|
|
- name
|
|
- value
|
|
type: object
|
|
properties:
|
|
name:
|
|
type: string
|
|
description: Is the domain name of TXT
|
|
value:
|
|
type: string
|
|
description: Is the value of TXT
|
|
description: Value for DNS TXT entry
|
|
Query:
|
|
type: object
|
|
properties:
|
|
from:
|
|
type: string
|
|
description: 'Partial match for the From: header (case insensitive)'
|
|
to:
|
|
type: string
|
|
description: 'Partial match for the To:/Cc: headers (case insensitive)'
|
|
subject:
|
|
type: string
|
|
description: 'Partial match for the Subject: header (case insensitive)'
|
|
listId:
|
|
type: string
|
|
description: 'Partial match for the List-ID: header (case insensitive)'
|
|
text:
|
|
type: string
|
|
description: Fulltext search against message text
|
|
ha:
|
|
type: boolean
|
|
description: Does a message have to have an attachment or not
|
|
size:
|
|
type: number
|
|
description: 'Message size in bytes. If the value is a positive number then message needs to be larger, if negative then message needs to be smaller than abs(size) value'
|
|
description: Rules that a message must match
|
|
Action:
|
|
type: object
|
|
properties:
|
|
seen:
|
|
type: boolean
|
|
description: If true then mark matching messages as Seen
|
|
flag:
|
|
type: boolean
|
|
description: If true then mark matching messages as Flagged
|
|
delete:
|
|
type: boolean
|
|
description: If true then do not store matching messages
|
|
spam:
|
|
type: boolean
|
|
description: If true then store matching messags to Junk Mail folder
|
|
mailbox:
|
|
type: string
|
|
description: Mailbox ID to store matching messages to
|
|
targets:
|
|
type: array
|
|
items:
|
|
type: string
|
|
description: 'An array of forwarding targets. The value could either be an email address or a relay url to next MX server ("smtp://mx2.zone.eu:25") or an URL where mail contents are POSTed to'
|
|
description: Action to take with a matching message
|
|
SpecialUse:
|
|
enum:
|
|
- \Drafts
|
|
- \Junk
|
|
- \Sent
|
|
- \Trash
|
|
type: string
|
|
description: 'Either special use identifier or null. One of \Drafts, \Junk, \Sent or \Trash'
|
|
Envelope:
|
|
required:
|
|
- from
|
|
- rcpt
|
|
type: object
|
|
properties:
|
|
from:
|
|
type: string
|
|
description: Address from MAIL FROM
|
|
rcpt:
|
|
$ref: '#/components/schemas/Rcpt'
|
|
description: SMTP envelope (if available)
|
|
Rcpt:
|
|
required:
|
|
- value
|
|
- formatted
|
|
type: object
|
|
properties:
|
|
value:
|
|
type: string
|
|
description: RCPT TO address as provided by SMTP client
|
|
formatted:
|
|
type: string
|
|
description: Normalized RCPT address
|
|
description: Array of addresses from RCPT TO (should have just one normally)
|
|
Address:
|
|
required:
|
|
- name
|
|
- address
|
|
type: object
|
|
properties:
|
|
name:
|
|
type: string
|
|
description: Name of the sender/recipient
|
|
address:
|
|
type: string
|
|
description: Address of the sender/recipient
|
|
AddressOptionalName:
|
|
required:
|
|
- address
|
|
type: object
|
|
properties:
|
|
name:
|
|
type: string
|
|
description: Name of the sender
|
|
address:
|
|
type: string
|
|
description: Address of the sender
|
|
List:
|
|
required:
|
|
- id
|
|
- unsubscribe
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
description: Value from List-ID header
|
|
unsubscribe:
|
|
type: string
|
|
description: Value from List-Unsubscribe header
|
|
description: If set then this message is from a mailing list
|
|
|
|
Outbound:
|
|
required:
|
|
- queueId
|
|
- entries
|
|
type: object
|
|
properties:
|
|
queueId:
|
|
type: string
|
|
description: Queue ID
|
|
entries:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/OutboundQueueEntry'
|
|
description: Queued recipients
|
|
OutboundQueueEntry:
|
|
required:
|
|
- seq
|
|
- recipient
|
|
type: object
|
|
properties:
|
|
seq:
|
|
type: string
|
|
description: Queue target ID
|
|
recipient:
|
|
type: string
|
|
description: Target recipient
|
|
sendingZone:
|
|
type: string
|
|
description: Zone ID in ZoneMTA
|
|
queued:
|
|
type: string
|
|
description: ISO Date of the expected delivery time
|
|
Attachments:
|
|
required:
|
|
- id
|
|
- filename
|
|
- contentType
|
|
- disposition
|
|
- transferEncoding
|
|
- related
|
|
- sizeKb
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
description: Attachment ID
|
|
hash:
|
|
type: string
|
|
description: SHA-256 hash of the contents of the attachment
|
|
filename:
|
|
type: string
|
|
description: Filename of the attachment
|
|
contentType:
|
|
type: string
|
|
description: MIME type
|
|
disposition:
|
|
type: string
|
|
description: Attachment disposition
|
|
transferEncoding:
|
|
type: string
|
|
description: Which transfer encoding was used (actual content when fetching attachments is not encoded)
|
|
related:
|
|
type: boolean
|
|
description: Was this attachment found from a multipart/related node. This usually means that this is an embedded image
|
|
sizeKb:
|
|
type: number
|
|
description: Approximate size of the attachment in kilobytes
|
|
description: List of attachments for this message
|
|
VerificationResults:
|
|
required:
|
|
- tls
|
|
- spf
|
|
- dkim
|
|
type: object
|
|
properties:
|
|
tls:
|
|
$ref: '#/components/schemas/Tls'
|
|
spf:
|
|
type: object
|
|
description: Domain name (either MFROM or HELO) of verified SPF or false if no SPF match was found
|
|
dkim:
|
|
type: object
|
|
description: Domain name of verified DKIM signature or false if no valid signature was found
|
|
description: 'Security verification info if message was received from MX. If this property is missing then do not automatically assume invalid TLS, SPF or DKIM.'
|
|
Tls:
|
|
required:
|
|
- name
|
|
- version
|
|
type: object
|
|
properties:
|
|
name:
|
|
type: object
|
|
description: 'Cipher name, eg "ECDHE-RSA-AES128-GCM-SHA256"'
|
|
version:
|
|
type: object
|
|
description: 'TLS version, eg "TLSv1/SSLv3"'
|
|
description: TLS information. Value is false if TLS was not used
|
|
Files:
|
|
required:
|
|
- id
|
|
- filename
|
|
- contentType
|
|
- size
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
description: File ID
|
|
filename:
|
|
type: string
|
|
description: Filename of the attached file
|
|
contentType:
|
|
type: string
|
|
description: MIME type
|
|
size:
|
|
type: number
|
|
description: MIME type
|
|
description: 'List of files added to this message as attachments. Applies to Drafts, normal messages do not have this property. Needed to prevent uploading the same attachment every time a draft is updated'
|
|
Header:
|
|
required:
|
|
- key
|
|
- value
|
|
type: object
|
|
properties:
|
|
key:
|
|
type: string
|
|
description: Header key ('X-Mailer')
|
|
value:
|
|
type: string
|
|
description: Header value ('My Awesome Mailing Service')
|
|
AttachmentsUpload:
|
|
required:
|
|
- content
|
|
type: object
|
|
properties:
|
|
content:
|
|
type: string
|
|
description: Base64 encoded attachment content
|
|
filename:
|
|
type: string
|
|
description: Attachment filename
|
|
contentType:
|
|
type: string
|
|
description: MIME type for the attachment file
|
|
cid:
|
|
type: string
|
|
description: Content-ID value if you want to reference to this attachment from HTML formatted message
|
|
ReferenceWithAttachments:
|
|
required:
|
|
- mailbox
|
|
- id
|
|
- action
|
|
- attachments
|
|
type: object
|
|
properties:
|
|
mailbox:
|
|
type: string
|
|
description: Mailbox ID
|
|
id:
|
|
type: number
|
|
description: Message ID in Mailbox
|
|
action:
|
|
type: string
|
|
description: 'Either reply, replyAll or forward'
|
|
attachments:
|
|
type: array
|
|
items:
|
|
type: string
|
|
description: "If true, then includes all attachments from the original message. If it is an array of attachment ID's includes attachments from the list"
|
|
description: Optional referenced email. If uploaded message is a reply draft and relevant fields are not provided then these are resolved from the message to be replied to
|
|
Message:
|
|
required:
|
|
- id
|
|
- mailbox
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: number
|
|
description: Message ID in mailbox
|
|
mailbox:
|
|
type: string
|
|
description: Mailbox ID the message was stored into
|
|
description: Message information
|
|
title: ''
|
|
Forwarded:
|
|
required:
|
|
- seq
|
|
- type
|
|
- value
|
|
type: object
|
|
properties:
|
|
seq:
|
|
type: string
|
|
description: Sequence ID
|
|
type:
|
|
type: string
|
|
description: Target type
|
|
value:
|
|
type: string
|
|
description: Target address
|
|
Reference:
|
|
required:
|
|
- mailbox
|
|
- id
|
|
- action
|
|
type: object
|
|
properties:
|
|
mailbox:
|
|
type: string
|
|
description: Mailbox ID
|
|
id:
|
|
type: number
|
|
description: Message ID in Mailbox
|
|
action:
|
|
type: string
|
|
description: 'Either reply, replyAll or forward'
|
|
description: Optional referenced email. If submitted message is a reply and relevant fields are not provided then these are resolved from the message to be replied to
|
|
EnvelopeUpload:
|
|
type: object
|
|
properties:
|
|
from:
|
|
$ref: '#/components/schemas/AddressOptionalName'
|
|
to:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/AddressOptionalName'
|
|
description: Recipients information
|
|
description: SMTP envelope. If not provided then resolved either from message headers or from referenced message
|
|
MessageWithQueueId:
|
|
required:
|
|
- mailbox
|
|
- id
|
|
- queueId
|
|
type: object
|
|
properties:
|
|
mailbox:
|
|
type: string
|
|
description: Mailbox ID the message was stored to
|
|
id:
|
|
type: number
|
|
description: Message ID in Mailbox
|
|
queueId:
|
|
type: string
|
|
description: Queue ID in MTA
|
|
description: Information about submitted Message
|
|
KeyInfo:
|
|
required:
|
|
- name
|
|
- address
|
|
- fingerprint
|
|
type: object
|
|
properties:
|
|
name:
|
|
type: string
|
|
description: Name listed in public key
|
|
address:
|
|
type: string
|
|
description: E-mail address listed in public key
|
|
fingerprint:
|
|
type: string
|
|
description: Fingerprint of the public key
|
|
description: Information about public key or false if key is not available
|
|
UserLimits:
|
|
required:
|
|
- quota
|
|
- recipients
|
|
- forwards
|
|
- received
|
|
- imapUpload
|
|
- imapDownload
|
|
- pop3Download
|
|
type: object
|
|
properties:
|
|
quota:
|
|
$ref: '#/components/schemas/Quota'
|
|
recipients:
|
|
$ref: '#/components/schemas/Recipients'
|
|
forwards:
|
|
$ref: '#/components/schemas/Forwards'
|
|
received:
|
|
$ref: '#/components/schemas/Received'
|
|
imapUpload:
|
|
$ref: '#/components/schemas/ImapUpload'
|
|
imapDownload:
|
|
$ref: '#/components/schemas/ImapDownload'
|
|
pop3Download:
|
|
$ref: '#/components/schemas/Pop3Download'
|
|
imapMaxConnections:
|
|
$ref: '#/components/schemas/ImapMaxConnections'
|
|
description: Account limits and usage
|
|
Quota:
|
|
required:
|
|
- allowed
|
|
- used
|
|
type: object
|
|
properties:
|
|
allowed:
|
|
type: number
|
|
description: Allowed quota of the user in bytes
|
|
used:
|
|
type: number
|
|
description: Space used in bytes
|
|
description: Quota usage limits
|
|
Recipients:
|
|
required:
|
|
- allowed
|
|
- used
|
|
- ttl
|
|
type: object
|
|
properties:
|
|
allowed:
|
|
type: number
|
|
description: How many messages per 24 hours can be sent
|
|
used:
|
|
type: number
|
|
description: How many messages are sent during current 24 hour period
|
|
ttl:
|
|
type: number
|
|
description: Time until the end of current 24 hour period
|
|
description: Sending quota
|
|
Forwards:
|
|
required:
|
|
- allowed
|
|
- used
|
|
- ttl
|
|
type: object
|
|
properties:
|
|
allowed:
|
|
type: number
|
|
description: How many messages per 24 hours can be forwarded
|
|
used:
|
|
type: number
|
|
description: How many messages are forwarded during current 24 hour period
|
|
ttl:
|
|
type: number
|
|
description: Time until the end of current 24 hour period
|
|
description: Forwarding quota
|
|
Received:
|
|
required:
|
|
- allowed
|
|
- used
|
|
- ttl
|
|
type: object
|
|
properties:
|
|
allowed:
|
|
type: number
|
|
description: How many messages per 1 hour can be received
|
|
used:
|
|
type: number
|
|
description: How many messages are received during current 1 hour period
|
|
ttl:
|
|
type: number
|
|
description: Time until the end of current 1 hour period
|
|
description: Receiving quota
|
|
ImapUpload:
|
|
required:
|
|
- allowed
|
|
- used
|
|
- ttl
|
|
type: object
|
|
properties:
|
|
allowed:
|
|
type: number
|
|
description: 'How many bytes per 24 hours can be uploaded via IMAP. Only message contents are counted, not protocol overhead.'
|
|
used:
|
|
type: number
|
|
description: How many bytes are uploaded during current 24 hour period
|
|
ttl:
|
|
type: number
|
|
description: Time until the end of current 24 hour period
|
|
description: IMAP upload quota
|
|
ImapDownload:
|
|
required:
|
|
- allowed
|
|
- used
|
|
- ttl
|
|
type: object
|
|
properties:
|
|
allowed:
|
|
type: number
|
|
description: 'How many bytes per 24 hours can be downloaded via IMAP. Only message contents are counted, not protocol overhead.'
|
|
used:
|
|
type: number
|
|
description: How many bytes are downloaded during current 24 hour period
|
|
ttl:
|
|
type: number
|
|
description: Time until the end of current 24 hour period
|
|
description: IMAP download quota
|
|
Pop3Download:
|
|
required:
|
|
- allowed
|
|
- used
|
|
- ttl
|
|
type: object
|
|
properties:
|
|
allowed:
|
|
type: number
|
|
description: 'How many bytes per 24 hours can be downloaded via POP3. Only message contents are counted, not protocol overhead.'
|
|
used:
|
|
type: number
|
|
description: How many bytes are downloaded during current 24 hour period
|
|
ttl:
|
|
type: number
|
|
description: Time until the end of current 24 hour period
|
|
description: POP3 download quota
|
|
ImapMaxConnections:
|
|
required:
|
|
- allowed
|
|
- used
|
|
type: object
|
|
properties:
|
|
allowed:
|
|
type: number
|
|
description: How many parallel IMAP connections are permitted
|
|
used:
|
|
type: number
|
|
description: How many parallel IMAP connections are currenlty in use
|
|
Mailboxes:
|
|
type: object
|
|
properties:
|
|
sent:
|
|
type: string
|
|
description: Path of Sent Mail folder
|
|
junk:
|
|
type: string
|
|
description: Path of spam folder
|
|
drafts:
|
|
type: string
|
|
description: Path of drafts folder
|
|
trash:
|
|
type: string
|
|
description: Path of trash folder
|
|
description: Optional names for special mailboxes
|
|
SuccessResponse:
|
|
required:
|
|
- success
|
|
type: object
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
description: Indicates successful response
|
|
UploadMessageRequest:
|
|
type: object
|
|
properties:
|
|
unseen:
|
|
type: boolean
|
|
description: Is the message unseen or not
|
|
draft:
|
|
type: boolean
|
|
description: Is the message a draft or not
|
|
flagged:
|
|
type: boolean
|
|
description: Is the message flagged or not
|
|
raw:
|
|
type: string
|
|
description: 'base64 encoded message source. Alternatively, you can provide this value as POST body by using message/rfc822 MIME type. If raw message is provided then it overrides any other mail configuration'
|
|
from:
|
|
$ref: '#/components/schemas/Address'
|
|
to:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/AddressOptionalName'
|
|
description: 'Addresses for the To: header'
|
|
cc:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/AddressOptionalName'
|
|
description: 'Addresses for the Cc: header'
|
|
bcc:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/AddressOptionalName'
|
|
description: 'Addresses for the Bcc: header'
|
|
subject:
|
|
type: string
|
|
description: Message subject. If not then resolved from Reference message
|
|
text:
|
|
type: string
|
|
description: Plaintext message
|
|
html:
|
|
type: string
|
|
description: HTML formatted message
|
|
headers:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/Header'
|
|
description: Custom headers for the message. If reference message is set then In-Reply-To and References headers are set automaticall y
|
|
files:
|
|
type: array
|
|
items:
|
|
type: string
|
|
description: Attachments as storage file IDs. NB! When retrieving message info then an array of objects is returned. When uploading a message then an array of IDs is used.
|
|
attachments:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/AttachmentsUpload'
|
|
description: Attachments for the message
|
|
metaData:
|
|
description: 'Optional metadata, must be an object or JSON formatted string'
|
|
oneOf:
|
|
- type: object
|
|
- type: string
|
|
reference:
|
|
$ref: '#/components/schemas/ReferenceWithAttachments'
|
|
replacePrevious:
|
|
type: object
|
|
description: If set, then deletes a previous message when storing the new one. Useful when uploading a new Draft message.
|
|
required:
|
|
- id
|
|
properties:
|
|
mailbox:
|
|
type: string
|
|
description: Mailbox ID. Defaults to the mailbox of the uploaded message.
|
|
id:
|
|
type: number
|
|
description: Message ID in Mailbox
|
|
sess:
|
|
type: string
|
|
description: Session identifier for the logs
|
|
ip:
|
|
type: string
|
|
description: IP address for the logs
|
|
ForwardStoredMessageRequest:
|
|
type: object
|
|
properties:
|
|
target:
|
|
type: number
|
|
description: Number of original forwarding target
|
|
addresses:
|
|
type: array
|
|
description: An array of additional forward targets
|
|
items:
|
|
type: string
|
|
UploadMessageResponse:
|
|
required:
|
|
- success
|
|
- message
|
|
type: object
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
description: Indicates successful response
|
|
message:
|
|
$ref: '#/components/schemas/Message'
|
|
previousDeleted:
|
|
type: boolean
|
|
description: Set if replacing a previous message was requested
|
|
ForwardStoredMessageResponse:
|
|
required:
|
|
- success
|
|
- queueId
|
|
- forwarded
|
|
type: object
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
description: Indicates successful response
|
|
queueId:
|
|
type: string
|
|
description: Message ID in outbound queue
|
|
forwarded:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/Forwarded'
|
|
description: Information about forwarding targets
|
|
UploadFileResponse:
|
|
required:
|
|
- success
|
|
- id
|
|
type: object
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
description: Indicates successful response
|
|
id:
|
|
type: object
|
|
description: File ID
|
|
GetForwardedAddressResponse:
|
|
required:
|
|
- success
|
|
- id
|
|
- address
|
|
- name
|
|
- targets
|
|
- limits
|
|
- autoreply
|
|
- created
|
|
- tags
|
|
- forwardedDisabled
|
|
type: object
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
description: Indicates successful response
|
|
id:
|
|
type: string
|
|
description: ID of the Address
|
|
address:
|
|
type: string
|
|
description: E-mail address string
|
|
name:
|
|
type: string
|
|
description: Identity name
|
|
targets:
|
|
type: array
|
|
items:
|
|
type: string
|
|
description: List of forwarding targets
|
|
limits:
|
|
$ref: '#/components/schemas/AddressLimits'
|
|
autoreply:
|
|
$ref: '#/components/schemas/AutoreplyInfo'
|
|
created:
|
|
type: string
|
|
description: Datestring of the time the address was created
|
|
format: date-time
|
|
tags:
|
|
type: array
|
|
items:
|
|
type: string
|
|
description: List of tags associated with the Address
|
|
forwardedDisabled:
|
|
type: boolean
|
|
description: If true then the forwarded address is disabled
|
|
GetUserAddressResponse:
|
|
required:
|
|
- success
|
|
- id
|
|
- name
|
|
- address
|
|
- tags
|
|
- main
|
|
- created
|
|
type: object
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
description: Indicates successful response
|
|
id:
|
|
type: string
|
|
description: ID of the Address
|
|
name:
|
|
type: string
|
|
description: Identity name
|
|
address:
|
|
type: string
|
|
description: E-mail address string
|
|
tags:
|
|
type: array
|
|
items:
|
|
type: string
|
|
description: List of tags associated with the Address
|
|
metaData:
|
|
type: object
|
|
description: Metadata object (if available)
|
|
internalData:
|
|
type: object
|
|
description: 'Internal metadata object (if available), not included for user-role requests'
|
|
main:
|
|
type: boolean
|
|
description: Indicates if this is the default address for the User
|
|
created:
|
|
type: string
|
|
description: Datestring of the time the address was created
|
|
format: date-time
|
|
ResolveAddressResponse:
|
|
required:
|
|
- success
|
|
- id
|
|
- address
|
|
- name
|
|
- user
|
|
- targets
|
|
- limits
|
|
- autoreply
|
|
- tags
|
|
- created
|
|
type: object
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
description: Indicates successful response
|
|
id:
|
|
type: string
|
|
description: ID of the Address
|
|
address:
|
|
type: string
|
|
description: E-mail address string
|
|
name:
|
|
type: string
|
|
description: Identity name
|
|
user:
|
|
type: string
|
|
description: ID of the user if the address belongs to a User
|
|
targets:
|
|
type: array
|
|
items:
|
|
type: string
|
|
description: List of forwarding targets if this is a Forwarded address
|
|
limits:
|
|
$ref: '#/components/schemas/AddressLimits'
|
|
autoreply:
|
|
$ref: '#/components/schemas/AutoreplyInfo'
|
|
tags:
|
|
type: array
|
|
items:
|
|
type: string
|
|
description: List of tags associated with the Address
|
|
created:
|
|
type: string
|
|
description: Datestring of the time the address was created
|
|
format: date-time
|
|
GetAddressesResponse:
|
|
required:
|
|
- success
|
|
- total
|
|
- page
|
|
- previousCursor
|
|
- nextCursor
|
|
- results
|
|
type: object
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
description: Indicates successful response
|
|
total:
|
|
type: number
|
|
description: How many results were found
|
|
page:
|
|
type: number
|
|
description: Current page number. Derived from page query argument
|
|
previousCursor:
|
|
type: string
|
|
description: Either a cursor string or false if there are not any previous results
|
|
nextCursor:
|
|
type: string
|
|
description: Either a cursor string or false if there are not any next results
|
|
results:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/GetAddressesResult'
|
|
description: Address listing
|
|
GetUserAddressesResponse:
|
|
required:
|
|
- success
|
|
- results
|
|
type: object
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
description: Indicates successful response
|
|
results:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/GetUserAddressesResult'
|
|
description: Address listing
|
|
CreateUserAddressResponse:
|
|
required:
|
|
- success
|
|
- id
|
|
type: object
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
description: Indicates successful response
|
|
id:
|
|
type: string
|
|
description: ID of the Address
|
|
GetUserAddressesregisterResponse:
|
|
required:
|
|
- success
|
|
- results
|
|
type: object
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
description: Indicates successful response
|
|
results:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/GetUserAddressesregisterResult'
|
|
description: Address listing
|
|
CreateForwardedAddressResponse:
|
|
required:
|
|
- success
|
|
- id
|
|
type: object
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
description: Indicates successful response
|
|
id:
|
|
type: string
|
|
description: ID of the Address
|
|
GetASPResponse:
|
|
required:
|
|
- success
|
|
- id
|
|
- description
|
|
- scopes
|
|
- lastUse
|
|
- created
|
|
type: object
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
description: Indicates successful response
|
|
id:
|
|
type: string
|
|
description: ID of the Application Password
|
|
description:
|
|
type: string
|
|
description: Description
|
|
scopes:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/AspScopes'
|
|
description: Allowed scopes for the Application Password
|
|
lastUse:
|
|
$ref: '#/components/schemas/LastUse'
|
|
created:
|
|
type: string
|
|
description: Datestring
|
|
format: date-time
|
|
GetASPsResponse:
|
|
required:
|
|
- success
|
|
- results
|
|
type: object
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
description: Indicates successful response
|
|
results:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/GetASPsResult'
|
|
description: Event listing
|
|
CreateASPResponse:
|
|
required:
|
|
- success
|
|
- id
|
|
- password
|
|
- mobileconfig
|
|
type: object
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
description: Indicates successful response
|
|
example: true
|
|
id:
|
|
type: string
|
|
description: ID of the Application Password
|
|
example: '60b91b5cc419d97445f8e57d'
|
|
password:
|
|
type: string
|
|
description: 'Application Specific Password. Generated password is whitespace agnostic, so it could be displayed to the client as "abcd efgh ijkl mnop" instead of "abcdefghijklmnop"'
|
|
example: 'aaaaaaaaaaaaaaaa'
|
|
mobileconfig:
|
|
type: string
|
|
description: Base64 encoded mobileconfig file. Generated profile file should be sent to the client with Content-Type value of application/x-apple-aspen-config.
|
|
GetArchivedMessagesResponse:
|
|
required:
|
|
- success
|
|
- total
|
|
- page
|
|
- previousCursor
|
|
- nextCursor
|
|
- results
|
|
type: object
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
description: Indicates successful response
|
|
total:
|
|
type: number
|
|
description: How many results were found
|
|
page:
|
|
type: number
|
|
description: Current page number. Derived from page query argument
|
|
previousCursor:
|
|
type: string
|
|
description: Either a cursor string or false if there are not any previous results
|
|
nextCursor:
|
|
type: string
|
|
description: Either a cursor string or false if there are not any next results
|
|
results:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/GetArchivedMessagesResult'
|
|
description: Message listing
|
|
RestoreMessageResponse:
|
|
required:
|
|
- success
|
|
- mailbox
|
|
- id
|
|
type: object
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
description: Indicates successful response
|
|
mailbox:
|
|
type: string
|
|
description: Maibox ID the message was moved to
|
|
id:
|
|
type: number
|
|
description: New ID for the Message
|
|
GetAuditResponse:
|
|
required:
|
|
- success
|
|
- user
|
|
- expires
|
|
type: object
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
description: Indicates successful response
|
|
user:
|
|
type: string
|
|
description: Users unique ID.
|
|
start:
|
|
type: string
|
|
description: Start time as ISO date
|
|
format: date-time
|
|
end:
|
|
type: string
|
|
description: End time as ISO date
|
|
format: date-time
|
|
expires:
|
|
type: string
|
|
description: Expiration date. Audit data is deleted after this date
|
|
format: date-time
|
|
CreateAuditResponse:
|
|
required:
|
|
- success
|
|
- id
|
|
type: object
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
description: Indicates successful response
|
|
id:
|
|
type: string
|
|
description: ID for the created Audit
|
|
AuthenticateResponse:
|
|
required:
|
|
- success
|
|
- id
|
|
- username
|
|
- scope
|
|
- require2fa
|
|
- requirePasswordChange
|
|
type: object
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
description: Indicates successful response
|
|
id:
|
|
type: string
|
|
description: ID of authenticated User
|
|
username:
|
|
type: string
|
|
description: Username of authenticated User
|
|
scope:
|
|
type: string
|
|
description: The scope this authentication is valid for
|
|
require2fa:
|
|
type: array
|
|
items:
|
|
type: string
|
|
description: List of enabled 2FA mechanisms
|
|
requirePasswordChange:
|
|
type: boolean
|
|
description: Indicates if account hassword has been reset and should be replaced
|
|
token:
|
|
type: string
|
|
description: If access token was requested then this is the value to use as access token when making API requests on behalf of logged in user.
|
|
GetAuthlogResponse:
|
|
required:
|
|
- success
|
|
- total
|
|
- page
|
|
- previousCursor
|
|
- nextCursor
|
|
- results
|
|
type: object
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
description: Indicates successful response
|
|
total:
|
|
type: number
|
|
description: How many results were found
|
|
page:
|
|
type: number
|
|
description: Current page number. Derived from page query argument
|
|
previousCursor:
|
|
type: string
|
|
description: Either a cursor string or false if there are not any previous results
|
|
nextCursor:
|
|
type: string
|
|
description: Either a cursor string or false if there are not any next results
|
|
results:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/GetAuthlogResult'
|
|
description: Event listing
|
|
GetAuthlogEventResponse:
|
|
required:
|
|
- success
|
|
- id
|
|
- action
|
|
- result
|
|
- created
|
|
type: object
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
description: Indicates successful response
|
|
id:
|
|
type: string
|
|
description: ID of the Event
|
|
action:
|
|
type: string
|
|
description: Action identifier
|
|
result:
|
|
type: string
|
|
description: Did the action succeed
|
|
sess:
|
|
type: string
|
|
description: Session identifier
|
|
ip:
|
|
type: string
|
|
description: IP address of the Event
|
|
created:
|
|
type: string
|
|
description: Datestring of the Event time
|
|
format: date-time
|
|
|
|
GetAutoreplyResponse:
|
|
type: object
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
description: Indicates successful response
|
|
status:
|
|
type: boolean
|
|
description: Is the autoreply enabled (true) or not (false)
|
|
name:
|
|
type: string
|
|
description: 'Name that is used for the From: header in autoreply message'
|
|
subject:
|
|
type: string
|
|
description: Subject line for the autoreply. If empty then uses subject of the original message
|
|
html:
|
|
type: string
|
|
description: HTML formatted content of the autoreply message
|
|
text:
|
|
type: string
|
|
description: Plaintext formatted content of the autoreply message
|
|
start:
|
|
type: string
|
|
description: Datestring of the start of the autoreply
|
|
format: date-time
|
|
end:
|
|
type: string
|
|
description: Datestring of the end of the autoreply
|
|
format: date-time
|
|
required:
|
|
- success
|
|
- status
|
|
- name
|
|
- subject
|
|
- html
|
|
- text
|
|
- start
|
|
- end
|
|
|
|
GetDkimKeyResponse:
|
|
required:
|
|
- success
|
|
- id
|
|
- domain
|
|
- selector
|
|
- description
|
|
- fingerprint
|
|
- publicKey
|
|
- dnsTxt
|
|
- created
|
|
type: object
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
description: Indicates successful response
|
|
id:
|
|
type: string
|
|
description: ID of the DKIM
|
|
domain:
|
|
type: string
|
|
description: The domain this DKIM key applies to
|
|
selector:
|
|
type: string
|
|
description: DKIM selector
|
|
description:
|
|
type: string
|
|
description: Key description
|
|
fingerprint:
|
|
type: string
|
|
description: Key fingerprint (SHA1)
|
|
publicKey:
|
|
type: string
|
|
description: 'Public key in DNS format (no prefix/suffix, single line)'
|
|
dnsTxt:
|
|
$ref: '#/components/schemas/DnsTxt'
|
|
created:
|
|
type: string
|
|
description: Datestring
|
|
format: date-time
|
|
|
|
GetDkimKeysResponse:
|
|
required:
|
|
- success
|
|
- total
|
|
- page
|
|
- previousCursor
|
|
- nextCursor
|
|
- results
|
|
type: object
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
description: Indicates successful response
|
|
total:
|
|
type: number
|
|
description: How many results were found
|
|
page:
|
|
type: number
|
|
description: Current page number. Derived from page query argument
|
|
previousCursor:
|
|
type: string
|
|
description: Either a cursor string or false if there are not any previous results
|
|
nextCursor:
|
|
type: string
|
|
description: Either a cursor string or false if there are not any next results
|
|
results:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/GetDkimKeysResult'
|
|
description: DKIM listing
|
|
|
|
GetTLSCertsResponse:
|
|
required:
|
|
- success
|
|
- total
|
|
- page
|
|
- previousCursor
|
|
- nextCursor
|
|
- results
|
|
type: object
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
description: Indicates successful response
|
|
total:
|
|
type: number
|
|
description: How many results were found
|
|
example: 541
|
|
page:
|
|
type: number
|
|
description: Current page number. Derived from page query argument
|
|
example: 1
|
|
previousCursor:
|
|
type: string
|
|
description: Either a cursor string or false if there are not any previous results
|
|
example: false
|
|
nextCursor:
|
|
type: string
|
|
description: Either a cursor string or false if there are not any next results
|
|
example: 'eyIkb2lkIjoiNWRmMWZkMmQ3NzkyNTExOGI2MDdjNjg0In0'
|
|
results:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/GetTLSCertResult'
|
|
description: Certificate listing
|
|
|
|
UpdateDkimKeyResponse:
|
|
required:
|
|
- success
|
|
- id
|
|
- domain
|
|
- selector
|
|
- description
|
|
- fingerprint
|
|
- publicKey
|
|
- dnsTxt
|
|
type: object
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
description: Indicates successful response
|
|
id:
|
|
type: string
|
|
description: ID of the DKIM
|
|
domain:
|
|
type: string
|
|
description: The domain this DKIM key applies to
|
|
selector:
|
|
type: string
|
|
description: DKIM selector
|
|
description:
|
|
type: string
|
|
description: Key description
|
|
fingerprint:
|
|
type: string
|
|
description: Key fingerprint (SHA1)
|
|
publicKey:
|
|
type: string
|
|
description: 'Public key in DNS format (no prefix/suffix, single line)'
|
|
dnsTxt:
|
|
$ref: '#/components/schemas/DnsTxt'
|
|
|
|
UpdateTLSCertResponse:
|
|
required:
|
|
- success
|
|
- id
|
|
- servername
|
|
- fingerprint
|
|
type: object
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
description: Indicates successful response
|
|
id:
|
|
type: string
|
|
description: ID of the certificate
|
|
example: '609d201236d1d936948f23b1'
|
|
servername:
|
|
type: string
|
|
description: The server name this certificate applies to
|
|
example: 'imap.example.com'
|
|
description:
|
|
type: string
|
|
description: Key description
|
|
example: 'Some notes about this certificate'
|
|
fingerprint:
|
|
type: string
|
|
description: Key fingerprint (SHA1)
|
|
example: '59:8b:ed:11:5b:4f:ce:b4:e5:1a:2f:35:b1:6f:7d:93:40:c8:2f:9c:38:3b:cd:f4:04:92:a1:0e:17:2c:3f:f3'
|
|
expires:
|
|
type: string
|
|
description: Certificate expiration time
|
|
example: '2021-06-26T21:55:55.000Z'
|
|
format: date-time
|
|
altNames:
|
|
type: array
|
|
description: SAN servernames listed in the certificate
|
|
items:
|
|
type: string
|
|
example: ['example.com', 'www.example.com']
|
|
|
|
ResolveIdResponse:
|
|
required:
|
|
- success
|
|
- id
|
|
type: object
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
description: Indicates successful response
|
|
example: true
|
|
id:
|
|
type: string
|
|
description: Unique ID (24 byte hex)
|
|
example: '609d201236d1d936948f23b1'
|
|
|
|
RecoverInfoResponse:
|
|
type: object
|
|
required:
|
|
- success
|
|
- user
|
|
- username
|
|
- storageUsed
|
|
- tags
|
|
- deleted
|
|
- recoverableAddresses
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
description: Indicates successful response
|
|
example: true
|
|
user:
|
|
type: string
|
|
description: ID of the deleted User
|
|
example: '609d201236d1d936948f23b1'
|
|
username:
|
|
type: string
|
|
description: Username of the User
|
|
example: andris
|
|
storageUsed:
|
|
type: number
|
|
description: Calculated quota usage for the user
|
|
example: 2423070
|
|
tags:
|
|
type: array
|
|
items:
|
|
type: string
|
|
description: List of tags associated with the User
|
|
example: ['domain:andrisreinman.com']
|
|
deleted:
|
|
type: string
|
|
description: Datestring of the time the user was deleted
|
|
format: date-time
|
|
recoverableAddresses:
|
|
type: array
|
|
items:
|
|
type: string
|
|
description: List of email addresses that can be restored
|
|
example: ['andris@andrisreinman.com']
|
|
|
|
GetAllowedDomainResponse:
|
|
required:
|
|
- success
|
|
- results
|
|
type: object
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
description: Indicates successful response
|
|
results:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/GetAllowedDomainResult'
|
|
description: Domain list
|
|
CreateAllowedDomainResponse:
|
|
required:
|
|
- success
|
|
- id
|
|
type: object
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
description: Indicates successful response
|
|
id:
|
|
type: string
|
|
description: ID for the created record
|
|
GetBlockedDomainResponse:
|
|
required:
|
|
- success
|
|
- results
|
|
type: object
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
description: Indicates successful response
|
|
results:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/GetBlockedDomainResult'
|
|
description: Domain list
|
|
CreateBlockedDomainResponse:
|
|
required:
|
|
- success
|
|
- id
|
|
type: object
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
description: Indicates successful response
|
|
id:
|
|
type: string
|
|
description: ID for the created record
|
|
GetDomainAliasResponse:
|
|
required:
|
|
- success
|
|
- id
|
|
- alias
|
|
- domain
|
|
- created
|
|
type: object
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
description: Indicates successful response
|
|
id:
|
|
type: string
|
|
description: ID of the Alias
|
|
alias:
|
|
type: string
|
|
description: Alias domain
|
|
domain:
|
|
type: string
|
|
description: Alias target
|
|
created:
|
|
type: string
|
|
description: Datestring of the time the alias was created
|
|
format: date-time
|
|
GetDomainAliasesResponse:
|
|
required:
|
|
- success
|
|
- total
|
|
- page
|
|
- previousCursor
|
|
- nextCursor
|
|
- results
|
|
type: object
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
description: Indicates successful response
|
|
total:
|
|
type: number
|
|
description: How many results were found
|
|
page:
|
|
type: number
|
|
description: Current page number. Derived from page query argument
|
|
previousCursor:
|
|
type: string
|
|
description: Either a cursor string or false if there are not any previous results
|
|
nextCursor:
|
|
type: string
|
|
description: Either a cursor string or false if there are not any next results
|
|
results:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/GetDomainAliasesResult'
|
|
description: Aliases listing
|
|
|
|
CreateDomainAliasResponse:
|
|
required:
|
|
- success
|
|
- id
|
|
type: object
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
description: Indicates successful response
|
|
id:
|
|
type: string
|
|
description: ID of the Domain Alias
|
|
|
|
GetFilterResponse:
|
|
required:
|
|
- success
|
|
- id
|
|
- name
|
|
- query
|
|
- action
|
|
- disabled
|
|
type: object
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
description: Indicates successful response
|
|
id:
|
|
type: string
|
|
description: ID for the Filter
|
|
name:
|
|
type: string
|
|
description: Name of the Filter
|
|
query:
|
|
$ref: '#/components/schemas/Query'
|
|
action:
|
|
$ref: '#/components/schemas/Action'
|
|
disabled:
|
|
type: boolean
|
|
description: 'If true, then this filter is ignored'
|
|
UpdateFilterResponse:
|
|
required:
|
|
- success
|
|
- id
|
|
type: object
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
description: Indicates successful response
|
|
id:
|
|
type: string
|
|
description: ID for the created Filter
|
|
GetAllFiltersResponse:
|
|
required:
|
|
- success
|
|
- total
|
|
- page
|
|
- previousCursor
|
|
- nextCursor
|
|
- results
|
|
type: object
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
description: Indicates successful response
|
|
total:
|
|
type: number
|
|
description: How many results were found
|
|
page:
|
|
type: number
|
|
description: Current page number. Derived from page query argument
|
|
previousCursor:
|
|
type: string
|
|
description: Either a cursor string or false if there are not any previous results
|
|
nextCursor:
|
|
type: string
|
|
description: Either a cursor string or false if there are not any next results
|
|
results:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/GetAllFiltersResult'
|
|
description: Address listing
|
|
GetFiltersResponse:
|
|
required:
|
|
- success
|
|
- results
|
|
type: object
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
description: Indicates successful response
|
|
results:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/GetFiltersResult'
|
|
description: Filter description
|
|
GetMailboxResponse:
|
|
required:
|
|
- success
|
|
- id
|
|
- name
|
|
- path
|
|
- specialUse
|
|
- modifyIndex
|
|
- subscribed
|
|
- hidden
|
|
- total
|
|
- unseen
|
|
type: object
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
description: Indicates successful response
|
|
id:
|
|
type: string
|
|
description: Mailbox ID
|
|
name:
|
|
type: string
|
|
description: Name for the mailbox (unicode string)
|
|
path:
|
|
type: string
|
|
description: 'Full path of the mailbox, folders are separated by slashes, ends with the mailbox name (unicode string)'
|
|
specialUse:
|
|
$ref: '#/components/schemas/SpecialUse'
|
|
modifyIndex:
|
|
type: number
|
|
description: Modification sequence number. Incremented on every change in the mailbox.
|
|
subscribed:
|
|
type: boolean
|
|
description: Mailbox subscription status. IMAP clients may unsubscribe from a folder.
|
|
hidden:
|
|
type: boolean
|
|
description: Is the folder hidden or not
|
|
total:
|
|
type: number
|
|
description: How many messages are stored in this mailbox
|
|
unseen:
|
|
type: number
|
|
description: How many unseen messages are stored in this mailbox
|
|
GetMailboxesResponse:
|
|
required:
|
|
- success
|
|
- results
|
|
type: object
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
description: Indicates successful response
|
|
results:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/GetMailboxesResult'
|
|
description: List of user mailboxes
|
|
CreateMailboxResponse:
|
|
required:
|
|
- success
|
|
- id
|
|
type: object
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
description: Indicates successful response
|
|
id:
|
|
type: string
|
|
description: Mailbox ID
|
|
GetMessageResponse:
|
|
required:
|
|
- success
|
|
- id
|
|
- mailbox
|
|
- user
|
|
- envelope
|
|
- thread
|
|
- from
|
|
- subject
|
|
- messageId
|
|
- date
|
|
- seen
|
|
- deleted
|
|
- flagged
|
|
- draft
|
|
- contentType
|
|
- metaData
|
|
type: object
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
description: Indicates successful response
|
|
id:
|
|
type: number
|
|
description: ID of the Message
|
|
mailbox:
|
|
type: string
|
|
description: ID of the Mailbox
|
|
user:
|
|
type: string
|
|
description: ID of the User
|
|
envelope:
|
|
$ref: '#/components/schemas/Envelope'
|
|
thread:
|
|
type: string
|
|
description: ID of the Thread
|
|
from:
|
|
$ref: '#/components/schemas/Address'
|
|
to:
|
|
$ref: '#/components/schemas/Address'
|
|
cc:
|
|
$ref: '#/components/schemas/Address'
|
|
bcc:
|
|
$ref: '#/components/schemas/Address'
|
|
subject:
|
|
type: string
|
|
description: Message subject
|
|
messageId:
|
|
type: string
|
|
description: Message-ID header
|
|
date:
|
|
type: string
|
|
description: Date string from header
|
|
format: date-time
|
|
idate:
|
|
type: string
|
|
description: Date string of receive time
|
|
format: date-time
|
|
list:
|
|
$ref: '#/components/schemas/List'
|
|
expires:
|
|
type: string
|
|
description: 'Datestring, if set then indicates the time after this message is automatically deleted'
|
|
seen:
|
|
type: boolean
|
|
description: Does this message have a \Seen flag
|
|
deleted:
|
|
type: boolean
|
|
description: Does this message have a \Deleted flag
|
|
flagged:
|
|
type: boolean
|
|
description: Does this message have a \Flagged flag
|
|
draft:
|
|
type: boolean
|
|
description: Does this message have a \Draft flag
|
|
html:
|
|
type: array
|
|
items:
|
|
type: string
|
|
description: 'An array of HTML string. Every array element is from a separate mime node, usually you would just join these to a single string'
|
|
text:
|
|
type: string
|
|
description: Plaintext content of the message
|
|
attachments:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/Attachments'
|
|
description: Attachments for the message
|
|
verificationResults:
|
|
$ref: '#/components/schemas/VerificationResults'
|
|
bimi:
|
|
type: object
|
|
description: BIMI logo info. If logo validation failed in any way, then this property is not set
|
|
properties:
|
|
certified:
|
|
type: boolean
|
|
description: If true, then this logo is from a VMC file
|
|
url:
|
|
type: string
|
|
description: URL of the resource the logo was retrieved from
|
|
image:
|
|
type: string
|
|
description: Data URL for the SVG image
|
|
contentType:
|
|
$ref: '#/components/schemas/ContentType'
|
|
metaData:
|
|
type: object
|
|
description: Custom metadata object set for this message
|
|
reference:
|
|
type: object
|
|
description: Referenced message info
|
|
files:
|
|
$ref: '#/components/schemas/Files'
|
|
outbound:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/Outbound'
|
|
description: Outbound queue entries
|
|
DeleteMessagesInMailboxResponse:
|
|
required:
|
|
- success
|
|
- deleted
|
|
type: object
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
description: Indicates successful response
|
|
deleted:
|
|
type: number
|
|
description: Indicates count of deleted messages
|
|
GetMessagesResponse:
|
|
required:
|
|
- success
|
|
- total
|
|
- page
|
|
- previousCursor
|
|
- nextCursor
|
|
- results
|
|
type: object
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
description: Indicates successful response
|
|
total:
|
|
type: number
|
|
description: How many results were found
|
|
page:
|
|
type: number
|
|
description: Current page number. Derived from page query argument
|
|
previousCursor:
|
|
type: string
|
|
description: Either a cursor string or false if there are not any previous results
|
|
nextCursor:
|
|
type: string
|
|
description: Either a cursor string or false if there are not any next results
|
|
results:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/GetMessagesResult'
|
|
description: Message listing
|
|
UpdateMessageResponse:
|
|
required:
|
|
- success
|
|
- id
|
|
- updated
|
|
type: object
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
description: Indicates successful response
|
|
id:
|
|
type: array
|
|
items:
|
|
type: object
|
|
description: If messages were moved then lists new ID values. Array entry is an array with first element pointing to old ID and second to new ID
|
|
updated:
|
|
type: number
|
|
description: 'If messages were not moved, then indicates the number of updated messages'
|
|
SearchMessagesResponse:
|
|
required:
|
|
- success
|
|
- total
|
|
- page
|
|
- previousCursor
|
|
- nextCursor
|
|
- results
|
|
type: object
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
description: Indicates successful response
|
|
total:
|
|
type: number
|
|
description: How many results were found
|
|
page:
|
|
type: number
|
|
description: Current page number. Derived from page query argument
|
|
previousCursor:
|
|
type: string
|
|
description: Either a cursor string or false if there are not any previous results
|
|
nextCursor:
|
|
type: string
|
|
description: Either a cursor string or false if there are not any next results
|
|
results:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/GetMessagesResult'
|
|
description: Message listing
|
|
SubmitStoredMessageResponse:
|
|
type: object
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
description: Indicates successful response
|
|
queueId:
|
|
type: string
|
|
description: Message ID in outbound queue
|
|
message:
|
|
$ref: '#/components/schemas/Message'
|
|
required:
|
|
- success
|
|
- queueId
|
|
GetFilesResponse:
|
|
required:
|
|
- success
|
|
- total
|
|
- page
|
|
- previousCursor
|
|
- nextCursor
|
|
- results
|
|
type: object
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
description: Indicates successful response
|
|
total:
|
|
type: number
|
|
description: How many results were found
|
|
page:
|
|
type: number
|
|
description: Current page number. Derived from page query argument
|
|
previousCursor:
|
|
type: string
|
|
description: Either a cursor string or false if there are not any previous results
|
|
nextCursor:
|
|
type: string
|
|
description: Either a cursor string or false if there are not any next results
|
|
results:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/GetFilesResult'
|
|
description: File listing
|
|
SubmitMessageResponse:
|
|
type: object
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
description: Indicates successful response
|
|
message:
|
|
$ref: '#/components/schemas/MessageWithQueueId'
|
|
required:
|
|
- success
|
|
- message
|
|
SetupTotp2FAResponse:
|
|
required:
|
|
- success
|
|
- seed
|
|
- qrcode
|
|
type: object
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
description: Indicates successful response
|
|
seed:
|
|
type: string
|
|
description: Generated TOTP seed value
|
|
qrcode:
|
|
type: string
|
|
description: Base64 encoded QR code
|
|
GetUserResponse:
|
|
required:
|
|
- success
|
|
- id
|
|
- username
|
|
- name
|
|
- address
|
|
- retention
|
|
- enabled2fa
|
|
- autoreply
|
|
- encryptMessages
|
|
- encryptForwarded
|
|
- pubKey
|
|
- keyInfo
|
|
- metaData
|
|
- internalData
|
|
- targets
|
|
- spamLevel
|
|
- limits
|
|
- tags
|
|
- disabledScopes
|
|
- hasPasswordSet
|
|
- activated
|
|
- disabled
|
|
- suspended
|
|
type: object
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
description: Indicates successful response
|
|
id:
|
|
type: string
|
|
description: Users unique ID (24 byte hex)
|
|
username:
|
|
type: string
|
|
description: Username of the User
|
|
name:
|
|
type: string
|
|
description: Name of the User
|
|
address:
|
|
type: string
|
|
description: Main email address of the User
|
|
retention:
|
|
type: number
|
|
description: Default retention time (in ms). false if not enabled
|
|
enabled2fa:
|
|
type: array
|
|
items:
|
|
type: string
|
|
description: List of enabled 2FA methods
|
|
autoreply:
|
|
type: boolean
|
|
description: Is autoreply enabled or not (start time may still be in the future or end time in the past)
|
|
encryptMessages:
|
|
type: boolean
|
|
description: If true then received messages are encrypted
|
|
encryptForwarded:
|
|
type: boolean
|
|
description: If true then forwarded messages are encrypted
|
|
pubKey:
|
|
type: string
|
|
description: Public PGP key for the User that is used for encryption
|
|
keyInfo:
|
|
$ref: '#/components/schemas/KeyInfo'
|
|
metaData:
|
|
type: object
|
|
description: Custom metadata object set for this user
|
|
internalData:
|
|
type: object
|
|
description: Custom interna metadata object set for this user. Not available for user-role tokens
|
|
targets:
|
|
type: array
|
|
items:
|
|
type: string
|
|
description: List of forwarding targets
|
|
spamLevel:
|
|
type: number
|
|
description: 'Relative scale for detecting spam. 0 means that everything is spam, 100 means that nothing is spam'
|
|
limits:
|
|
$ref: '#/components/schemas/UserLimits'
|
|
tags:
|
|
type: array
|
|
items:
|
|
type: string
|
|
description: List of tags associated with the User
|
|
fromWhitelist:
|
|
type: array
|
|
items:
|
|
type: string
|
|
description: A list of additional email addresses this user can send mail from. Wildcard is allowed.
|
|
disabledScopes:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/DisabledScopes'
|
|
description: Disabled scopes for this user
|
|
hasPasswordSet:
|
|
type: boolean
|
|
description: If true then the User has a password set and can authenticate
|
|
activated:
|
|
type: boolean
|
|
description: Is the account activated
|
|
disabled:
|
|
type: boolean
|
|
description: If true then the user can not authenticate or receive any new mail
|
|
suspended:
|
|
type: boolean
|
|
description: If true then the user can not authenticate
|
|
|
|
GetUsersResponse:
|
|
required:
|
|
- success
|
|
- total
|
|
- page
|
|
- previousCursor
|
|
- nextCursor
|
|
- results
|
|
type: object
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
description: Indicates successful response
|
|
total:
|
|
type: number
|
|
description: How many results were found
|
|
page:
|
|
type: number
|
|
description: Current page number. Derived from page query argument
|
|
previousCursor:
|
|
type: string
|
|
description: Either a cursor string or false if there are not any previous results
|
|
nextCursor:
|
|
type: string
|
|
description: Either a cursor string or false if there are not any next results
|
|
results:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/GetUsersResult'
|
|
description: User listing
|
|
CreateUserResponse:
|
|
required:
|
|
- success
|
|
- id
|
|
type: object
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
description: Indicates successful response
|
|
id:
|
|
type: string
|
|
description: ID for the created User
|
|
RecalculateQuotaResponse:
|
|
required:
|
|
- success
|
|
- storageUsed
|
|
type: object
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
description: Indicates successful response
|
|
storageUsed:
|
|
type: number
|
|
description: Calculated quota usage for the user
|
|
ResetUserPasswordResponse:
|
|
required:
|
|
- success
|
|
- password
|
|
type: object
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
description: Indicates successful response
|
|
password:
|
|
type: string
|
|
description: Temporary password
|
|
|
|
GetWebhooksResponse:
|
|
required:
|
|
- success
|
|
- total
|
|
- page
|
|
- previousCursor
|
|
- nextCursor
|
|
- results
|
|
type: object
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
description: Indicates successful response
|
|
total:
|
|
type: number
|
|
description: How many results were found
|
|
page:
|
|
type: number
|
|
description: Current page number. Derived from page query argument
|
|
previousCursor:
|
|
type: string
|
|
description: Either a cursor string or false if there are not any previous results
|
|
nextCursor:
|
|
type: string
|
|
description: Either a cursor string or false if there are not any next results
|
|
results:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/GetWebhooksResult'
|
|
description: Webhook listing
|
|
|
|
CreateWebhookResponse:
|
|
required:
|
|
- success
|
|
- id
|
|
type: object
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
description: Indicates successful response
|
|
id:
|
|
type: string
|
|
description: ID of the Webhook
|
|
|
|
GetSettingResponse:
|
|
required:
|
|
- success
|
|
- id
|
|
type: object
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
description: Indicates successful response
|
|
key:
|
|
type: string
|
|
description: Key of the Setting
|
|
value:
|
|
oneOf:
|
|
- type: string
|
|
- type: number
|
|
description: Setting value
|
|
|
|
GetSettingsResponse:
|
|
required:
|
|
- success
|
|
- settings
|
|
type: object
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
description: Indicates successful response
|
|
filter:
|
|
type: string
|
|
description: Partial match if requested
|
|
settings:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/GetSettingsResult'
|
|
description: Setting listing
|
|
|
|
CreateSettingResponse:
|
|
required:
|
|
- success
|
|
- id
|
|
type: object
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
description: Indicates successful response
|
|
key:
|
|
type: string
|
|
description: Key of the Setting
|
|
|
|
UpdateForwardedAddressRequest:
|
|
type: object
|
|
description: ''
|
|
properties:
|
|
address:
|
|
type: string
|
|
description: 'New address. Only affects normal addresses, special addresses that include * can not be changed'
|
|
name:
|
|
type: string
|
|
description: Identity name
|
|
targets:
|
|
type: array
|
|
description: 'An array of forwarding targets. The value could either be an email address or a relay url to next MX server ("smtp://mx2.zone.eu:25") or an URL where mail contents are POSTed to. If set then overwrites previous targets array'
|
|
items:
|
|
type: string
|
|
forwards:
|
|
type: number
|
|
description: Daily allowed forwarding count for this address
|
|
tags:
|
|
type: array
|
|
description: A list of tags associated with this address
|
|
items:
|
|
type: string
|
|
metaData:
|
|
description: 'Optional metadata, must be an object or JSON formatted string'
|
|
oneOf:
|
|
- type: object
|
|
- type: string
|
|
internalData:
|
|
description: 'Optional metadata for internal use, must be an object or JSON formatted string of an object. Not available for user-role tokens'
|
|
oneOf:
|
|
- type: object
|
|
- type: string
|
|
forwardedDisabled:
|
|
type: boolean
|
|
description: If true then disables forwarded address (stops forwarding messages)
|
|
autoreply:
|
|
$ref: '#/components/schemas/Autoreply'
|
|
UpdateUserAddressRequest:
|
|
type: object
|
|
properties:
|
|
name:
|
|
type: string
|
|
description: Identity name
|
|
address:
|
|
type: string
|
|
description: 'New address if you want to rename existing address. Only affects normal addresses, special addresses that include * can not be changed'
|
|
main:
|
|
type: boolean
|
|
description: Indicates if this is the default address for the User
|
|
metaData:
|
|
description: 'Optional metadata, must be an object or JSON formatted string'
|
|
oneOf:
|
|
- type: object
|
|
- type: string
|
|
internalData:
|
|
description: 'Optional metadata for internal use, must be an object or JSON formatted string of an object. Not available for user-role tokens'
|
|
oneOf:
|
|
- type: object
|
|
- type: string
|
|
tags:
|
|
type: array
|
|
description: A list of tags associated with this address
|
|
items:
|
|
type: string
|
|
required:
|
|
- main
|
|
CreateUserAddressRequest:
|
|
required:
|
|
- address
|
|
type: object
|
|
properties:
|
|
address:
|
|
type: string
|
|
description: E-mail Address
|
|
name:
|
|
type: string
|
|
description: Identity name
|
|
tags:
|
|
type: array
|
|
items:
|
|
type: string
|
|
description: A list of tags associated with this address
|
|
main:
|
|
type: boolean
|
|
description: Indicates if this is the default address for the User
|
|
allowWildcard:
|
|
type: boolean
|
|
description: 'If true then address value can be in the form of `*@example.com`, `*suffix@example.com` and `username@*`, otherwise using * is not allowed. Static suffix can be up to 32 characters long.'
|
|
metaData:
|
|
description: 'Optional metadata, must be an object or JSON formatted string'
|
|
oneOf:
|
|
- type: object
|
|
- type: string
|
|
internalData:
|
|
description: 'Optional metadata for internal use, must be an object or JSON formatted string of an object. Not available for user-role tokens'
|
|
oneOf:
|
|
- type: object
|
|
- type: string
|
|
CreateForwardedAddressRequest:
|
|
required:
|
|
- address
|
|
type: object
|
|
properties:
|
|
address:
|
|
type: string
|
|
description: E-mail Address
|
|
name:
|
|
type: string
|
|
description: Identity name
|
|
targets:
|
|
type: array
|
|
items:
|
|
type: string
|
|
description: 'An array of forwarding targets. The value could either be an email address or a relay url to next MX server ("smtp://mx2.zone.eu:25") or an URL where mail contents are POSTed to'
|
|
forwards:
|
|
type: number
|
|
description: Daily allowed forwarding count for this address
|
|
allowWildcard:
|
|
type: boolean
|
|
description: 'If true then address value can be in the form of `*@example.com`, otherwise using * is not allowed'
|
|
tags:
|
|
type: array
|
|
items:
|
|
type: string
|
|
description: A list of tags associated with this address
|
|
metaData:
|
|
description: 'Optional metadata, must be an object or JSON formatted string'
|
|
oneOf:
|
|
- type: object
|
|
- type: string
|
|
internalData:
|
|
description: 'Optional metadata for internal use, must be an object or JSON formatted string of an object. Not available for user-role tokens'
|
|
oneOf:
|
|
- type: object
|
|
- type: string
|
|
autoreply:
|
|
$ref: '#/components/schemas/Autoreply'
|
|
RenameDomainRequest:
|
|
required:
|
|
- oldDomain
|
|
- newDomain
|
|
type: object
|
|
properties:
|
|
oldDomain:
|
|
type: string
|
|
description: Old Domain Name
|
|
newDomain:
|
|
type: string
|
|
description: New Domain Name
|
|
CreateASPRequest:
|
|
required:
|
|
- description
|
|
- scopes
|
|
type: object
|
|
properties:
|
|
description:
|
|
type: string
|
|
description: Description
|
|
scopes:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/AspScopes'
|
|
description: List of scopes this Password applies to. Special scope "*" indicates that this password can be used for any scope except "master"
|
|
example: ['imap', 'smtp']
|
|
generateMobileconfig:
|
|
type: boolean
|
|
description: If true then result contains a mobileconfig formatted file with account config
|
|
example: true
|
|
address:
|
|
type: string
|
|
description: E-mail address to be used as the account address in mobileconfig file. Must be one of the listed identity addresses of the user. Defaults to the main address of the user
|
|
example: 'user@example.com'
|
|
password:
|
|
type: string
|
|
description: Optional pregenerated password. Must be 16 characters, latin letters only.
|
|
example: 'aaaaaaaaaaaaaaaa'
|
|
ttl:
|
|
type: number
|
|
description: 'TTL in seconds for this password. Every time password is used, TTL is reset to this value'
|
|
example: 3600000
|
|
sess:
|
|
type: string
|
|
description: Session identifier for the logs
|
|
ip:
|
|
type: string
|
|
description: IP address for the logs
|
|
example: '127.0.0.1'
|
|
RestoreMessageRequest:
|
|
type: object
|
|
properties:
|
|
mailbox:
|
|
type: string
|
|
description: ID of the target Mailbox. If not set then original mailbox is used.
|
|
RestoreMessagesRequest:
|
|
required:
|
|
- start
|
|
- end
|
|
type: object
|
|
properties:
|
|
start:
|
|
type: string
|
|
description: Datestring
|
|
format: date-time
|
|
end:
|
|
type: string
|
|
description: Datestring
|
|
format: date-time
|
|
CreateAuditRequest:
|
|
required:
|
|
- user
|
|
- expires
|
|
type: object
|
|
properties:
|
|
user:
|
|
type: string
|
|
description: Users unique ID.
|
|
start:
|
|
type: string
|
|
description: Start time as ISO date
|
|
format: date-time
|
|
end:
|
|
type: string
|
|
description: End time as ISO date
|
|
format: date-time
|
|
expires:
|
|
type: string
|
|
description: Expiration date. Audit data is deleted after this date
|
|
format: date-time
|
|
AuthenticateRequest:
|
|
required:
|
|
- username
|
|
- password
|
|
type: object
|
|
properties:
|
|
username:
|
|
type: string
|
|
description: Username or E-mail address
|
|
password:
|
|
type: string
|
|
description: Password
|
|
protocol:
|
|
type: string
|
|
description: Application identifier for security logs
|
|
scope:
|
|
type: string
|
|
description: 'Required scope. One of master, imap, smtp, pop3'
|
|
token:
|
|
type: boolean
|
|
description: If true then generates a temporary access token that is valid for this user. Only available if scope is "master". When using user tokens then you can replace user ID in URLs with "me".
|
|
sess:
|
|
type: string
|
|
description: Session identifier for the logs
|
|
ip:
|
|
type: string
|
|
description: IP address for the logs
|
|
title: ''
|
|
UpdateAutoreplyRequest:
|
|
type: object
|
|
properties:
|
|
status:
|
|
type: boolean
|
|
description: Is the autoreply enabled (true) or not (false)
|
|
name:
|
|
type: string
|
|
description: 'Name that is used for the From: header in autoreply message'
|
|
subject:
|
|
type: string
|
|
description: Subject line for the autoreply. If empty then uses subject of the original message
|
|
html:
|
|
type: string
|
|
description: HTML formatted content of the autoreply message
|
|
text:
|
|
type: string
|
|
description: Plaintext formatted content of the autoreply message
|
|
start:
|
|
type: string
|
|
description: Datestring of the start of the autoreply or boolean false to disable start checks
|
|
format: date-time
|
|
end:
|
|
type: string
|
|
description: Datestring of the end of the autoreply or boolean false to disable end checks
|
|
format: date-time
|
|
|
|
UpdateDkimKeyRequest:
|
|
required:
|
|
- domain
|
|
- selector
|
|
type: object
|
|
properties:
|
|
domain:
|
|
type: string
|
|
description: Domain name this DKIM key applies to. Use "*" as a special value that will be used for domains that do not have their own DKIM key set
|
|
selector:
|
|
type: string
|
|
description: Selector for the key
|
|
description:
|
|
type: string
|
|
description: Key description
|
|
privateKey:
|
|
type: string
|
|
description: 'Pem formatted DKIM private key. If not set then a new 2048 bit RSA key is generated, beware though that it can take several seconds to complete.'
|
|
|
|
UpdateTLSCertRequest:
|
|
required:
|
|
- servername
|
|
type: object
|
|
properties:
|
|
servername:
|
|
type: string
|
|
description: Server name this TLS certificate applies to
|
|
example: imap.example.com
|
|
acme:
|
|
type: boolean
|
|
description: If true then private key and certificate are managed automatically by ACME
|
|
example: false
|
|
privateKey:
|
|
type: string
|
|
description: PEM formatted TLS private key. Optional if certificate is managed by ACME
|
|
example: "-----BEGIN PRIVATE KEY-----\nMIIEvQIBADA..."
|
|
cert:
|
|
type: string
|
|
description: 'PEM formatted TLS certificate or a certificate bundle with concatenated certificate and CA chain. Optional if certificate is managed by ACME'
|
|
example: "-----BEGIN CERTIFICATE-----\nMIIDEDCCAfg..."
|
|
ca:
|
|
type: array
|
|
description: 'CA chain certificates. Not needed if `cert` value is a bundle'
|
|
items:
|
|
type: string
|
|
description: 'PEM formatted TLS certificate'
|
|
example: "-----BEGIN CERTIFICATE-----\nMIIDEDCCAfgs..."
|
|
description:
|
|
type: string
|
|
description: Certificate description
|
|
example: 'Some notes about this certificate'
|
|
|
|
CreateAllowedDomainRequest:
|
|
required:
|
|
- domain
|
|
type: object
|
|
properties:
|
|
domain:
|
|
type: string
|
|
description: Domain name to allowlist for users/addresses that include this tag
|
|
CreateBlockedDomainRequest:
|
|
required:
|
|
- domain
|
|
type: object
|
|
properties:
|
|
domain:
|
|
type: string
|
|
description: Domain name to blocklist for users/addresses that include this tag
|
|
CreateDomainAliasRequest:
|
|
required:
|
|
- alias
|
|
- domain
|
|
type: object
|
|
properties:
|
|
alias:
|
|
type: string
|
|
description: Domain Alias
|
|
domain:
|
|
type: string
|
|
description: Domain name this Alias applies to
|
|
UpdateFilterRequest:
|
|
type: object
|
|
properties:
|
|
name:
|
|
type: string
|
|
description: Name of the Filter
|
|
query:
|
|
$ref: '#/components/schemas/Query'
|
|
action:
|
|
$ref: '#/components/schemas/Action'
|
|
disabled:
|
|
type: boolean
|
|
description: If true then this filter is ignored
|
|
CreateFilterRequest:
|
|
required:
|
|
- query
|
|
- action
|
|
type: object
|
|
properties:
|
|
name:
|
|
type: string
|
|
description: Name of the Filter
|
|
query:
|
|
$ref: '#/components/schemas/Query'
|
|
action:
|
|
$ref: '#/components/schemas/Action'
|
|
disabled:
|
|
type: boolean
|
|
description: If true then this filter is ignored
|
|
UpdateMailboxRequest:
|
|
type: object
|
|
properties:
|
|
path:
|
|
type: string
|
|
description: 'Full path of the mailbox, use this to rename an existing Mailbox'
|
|
hidden:
|
|
type: boolean
|
|
description: Is the folder hidden or not. Hidden folders can not be opened in IMAP.
|
|
retention:
|
|
type: number
|
|
description: Retention policy for the Mailbox (in ms). Changing retention value only affects messages added to this folder after the change
|
|
subscribed:
|
|
type: boolean
|
|
description: Change Mailbox subscription state
|
|
CreateMailboxRequest:
|
|
required:
|
|
- path
|
|
type: object
|
|
properties:
|
|
path:
|
|
type: string
|
|
description: 'Full path of the mailbox, folders are separated by slashes, ends with the mailbox name (unicode string)'
|
|
hidden:
|
|
type: boolean
|
|
description: Is the folder hidden or not. Hidden folders can not be opened in IMAP.
|
|
retention:
|
|
type: number
|
|
description: Retention policy for the created Mailbox. Milliseconds after a message added to mailbox expires. Set to 0 to disable.
|
|
UpdateMessageRequest:
|
|
type: object
|
|
properties:
|
|
message:
|
|
type: string
|
|
description: 'Message ID values. Either comma separated numbers (1,2,3) or colon separated range (3:15), or a range from UID to end (3:*)'
|
|
moveTo:
|
|
type: string
|
|
description: ID of the target Mailbox if you want to move messages
|
|
seen:
|
|
type: boolean
|
|
description: State of the \Seen flag
|
|
flagged:
|
|
type: boolean
|
|
description: State of the \Flagged flag
|
|
draft:
|
|
type: boolean
|
|
description: State of the \Draft flag
|
|
expires:
|
|
type: string
|
|
description: Either expiration date or false to turn of autoexpiration
|
|
metaData:
|
|
description: 'Optional metadata, must be an object or JSON formatted string'
|
|
oneOf:
|
|
- type: object
|
|
- type: string
|
|
SubmitStoredMessageRequest:
|
|
type: object
|
|
properties:
|
|
deleteFiles:
|
|
type: boolean
|
|
description: If true then deletes attachment files listed in metaData.files array
|
|
sendTime:
|
|
type: string
|
|
description: Datestring for delivery if message should be sent some later time
|
|
format: date-time
|
|
SubmitMessageRequest:
|
|
required:
|
|
- subject
|
|
- text
|
|
- html
|
|
type: object
|
|
properties:
|
|
reference:
|
|
$ref: '#/components/schemas/Reference'
|
|
mailbox:
|
|
type: string
|
|
description: Mailbox ID where to upload the message. If not set then message is uploaded to Sent Mail folder.
|
|
uploadOnly:
|
|
type: boolean
|
|
description: If true then generated message is not added to the sending queue
|
|
isDraft:
|
|
type: boolean
|
|
description: If true then treats this message as draft (should be used with uploadOnly=true)
|
|
sendTime:
|
|
type: string
|
|
description: Datestring for delivery if message should be sent some later time
|
|
format: date-time
|
|
envelope:
|
|
$ref: '#/components/schemas/EnvelopeUpload'
|
|
from:
|
|
$ref: '#/components/schemas/Address'
|
|
to:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/AddressOptionalName'
|
|
description: 'Addresses for the To: header'
|
|
cc:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/AddressOptionalName'
|
|
description: 'Addresses for the Cc: header'
|
|
bcc:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/AddressOptionalName'
|
|
description: 'Addresses for the Bcc: header'
|
|
subject:
|
|
type: string
|
|
description: Message subject. If not then resolved from Reference message
|
|
text:
|
|
type: string
|
|
description: Plaintext message
|
|
html:
|
|
type: string
|
|
description: HTML formatted message
|
|
headers:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/Header'
|
|
description: Custom headers for the message. If reference message is set then In-Reply-To and References headers are set automatically
|
|
attachments:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/AttachmentsUpload'
|
|
description: Attachments for the message
|
|
meta:
|
|
type: object
|
|
description: Custom metainfo for the message
|
|
sess:
|
|
type: string
|
|
description: Session identifier for the logs
|
|
ip:
|
|
type: string
|
|
description: IP address for the logs
|
|
CheckTotp2FARequest:
|
|
required:
|
|
- token
|
|
type: object
|
|
properties:
|
|
token:
|
|
type: string
|
|
description: 6-digit number
|
|
sess:
|
|
type: string
|
|
description: Session identifier for the logs
|
|
ip:
|
|
type: string
|
|
description: IP address for the logs
|
|
EnableCustom2FARequest:
|
|
type: object
|
|
properties:
|
|
sess:
|
|
type: string
|
|
description: Session identifier for the logs
|
|
ip:
|
|
type: string
|
|
description: IP address for the logs
|
|
EnableTotp2FARequest:
|
|
required:
|
|
- token
|
|
type: object
|
|
properties:
|
|
token:
|
|
type: string
|
|
description: 6-digit number that matches seed value from 2fa/totp/setup
|
|
sess:
|
|
type: string
|
|
description: Session identifier for the logs
|
|
ip:
|
|
type: string
|
|
description: IP address for the logs
|
|
SetupTotp2FARequest:
|
|
type: object
|
|
properties:
|
|
label:
|
|
type: string
|
|
description: Label text for QR code (defaults to username)
|
|
issuer:
|
|
type: string
|
|
description: Description text for QR code (defaults to "WildDuck")
|
|
sess:
|
|
type: string
|
|
description: Session identifier for the logs
|
|
ip:
|
|
type: string
|
|
description: IP address for the logs
|
|
UpdateUserRequest:
|
|
type: object
|
|
properties:
|
|
name:
|
|
type: string
|
|
description: Name of the User
|
|
existingPassword:
|
|
type: string
|
|
description: If provided then validates against account password before applying any changes
|
|
password:
|
|
type: string
|
|
description: New password for the account. Set to boolean false to disable password usage for the master scope, Application Specific Passwords would still be allowed
|
|
hashedPassword:
|
|
type: boolean
|
|
description: 'If true then password is already hashed, so store as is. Supported hashes: pbkdf2, bcrypt ($2a, $2y, $2b), md5 ($1), sha512 ($6), sha256 ($5), argon2 ($argon2d, $argon2i, $argon2id). Stored hashes are rehashed to pbkdf2 on first successful password check.'
|
|
allowUnsafe:
|
|
type: boolean
|
|
description: 'If false then validates provided passwords against Have I Been Pwned API. Experimental, so validation is disabled by default but will be enabled automatically in some future version of WildDuck.'
|
|
tags:
|
|
type: array
|
|
items:
|
|
type: string
|
|
description: A list of tags associated with this user
|
|
retention:
|
|
type: number
|
|
description: Default retention time (in ms). Set to 0 to disable
|
|
uploadSentMessages:
|
|
type: boolean
|
|
description: 'If true then all messages sent through MSA are also uploaded to the Sent Mail folder. Might cause duplicates with some email clients, so disabled by default.'
|
|
encryptMessages:
|
|
type: boolean
|
|
description: If true then received messages are encrypted
|
|
encryptForwarded:
|
|
type: boolean
|
|
description: If true then forwarded messages are encrypted
|
|
pubKey:
|
|
type: string
|
|
description: Public PGP key for the User that is used for encryption. Use empty string to remove the key
|
|
metaData:
|
|
description: 'Optional metadata, must be an object or JSON formatted string'
|
|
oneOf:
|
|
- type: object
|
|
- type: string
|
|
internalData:
|
|
type: object
|
|
description: 'Optional internal metadata, must be an object or JSON formatted string of an object. Not available for user-role tokens'
|
|
language:
|
|
type: string
|
|
description: Language code for the User
|
|
targets:
|
|
type: array
|
|
items:
|
|
type: string
|
|
description: 'An array of forwarding targets. The value could either be an email address or a relay url to next MX server ("smtp://mx2.zone.eu:25") or an URL where mail contents are POSTed to'
|
|
spamLevel:
|
|
type: number
|
|
description: 'Relative scale for detecting spam. 0 means that everything is spam, 100 means that nothing is spam'
|
|
quota:
|
|
type: number
|
|
description: Allowed quota of the user in bytes
|
|
recipients:
|
|
type: number
|
|
description: How many messages per 24 hour can be sent
|
|
forwards:
|
|
type: number
|
|
description: How many messages per 24 hour can be forwarded
|
|
imapMaxUpload:
|
|
type: number
|
|
description: How many bytes can be uploaded via IMAP during 24 hour
|
|
imapMaxDownload:
|
|
type: number
|
|
description: How many bytes can be downloaded via IMAP during 24 hour
|
|
pop3MaxDownload:
|
|
type: number
|
|
description: How many bytes can be downloaded via POP3 during 24 hour
|
|
pop3MaxMessages:
|
|
type: number
|
|
description: How many latest messages to list in POP3 session
|
|
imapMaxConnections:
|
|
type: number
|
|
description: How many parallel IMAP connections are alowed
|
|
receivedMax:
|
|
type: number
|
|
description: How many messages can be received from MX during 60 seconds
|
|
disable2fa:
|
|
type: boolean
|
|
description: 'If true, then disables 2FA for this user'
|
|
disabledScopes:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/DisabledScopes'
|
|
description: 'List of scopes that are disabled for this user ("imap", "pop3", "smtp")'
|
|
disabled:
|
|
type: boolean
|
|
description: 'If true then disables user account (can not login, can not receive messages)'
|
|
fromWhitelist:
|
|
type: array
|
|
items:
|
|
type: string
|
|
description: A list of additional email addresses this user can send mail from. Wildcard is allowed.
|
|
suspended:
|
|
type: boolean
|
|
description: If true then disables authentication
|
|
sess:
|
|
type: string
|
|
description: Session identifier for the logs
|
|
ip:
|
|
type: string
|
|
description: IP address for the logs
|
|
CreateUserRequest:
|
|
required:
|
|
- username
|
|
- password
|
|
type: object
|
|
properties:
|
|
username:
|
|
type: string
|
|
description: Username of the User. Dots are allowed but informational only ("user.name" is the same as "username").
|
|
name:
|
|
type: string
|
|
description: Name of the User
|
|
password:
|
|
type: string
|
|
description: Password for the account. Set to boolean false to disable password usage for the master scope, Application Specific Passwords would still be allowed
|
|
hashedPassword:
|
|
type: boolean
|
|
description: 'If true then password is already hashed, so store as is. Supported hashes: pbkdf2, bcrypt ($2a, $2y, $2b), md5 ($1), sha512 ($6), sha256 ($5), argon2 ($argon2d, $argon2i, $argon2id). Stored hashes are rehashed to pbkdf2 on first successful password check.'
|
|
allowUnsafe:
|
|
type: boolean
|
|
description: 'If false then validates provided passwords against Have I Been Pwned API. Experimental, so validation is disabled by default but will be enabled automatically in some future version of WildDuck.'
|
|
address:
|
|
type: string
|
|
description: Default email address for the User (autogenerated if not set)
|
|
emptyAddress:
|
|
type: boolean
|
|
description: If true then do not autogenerate missing email address for the User. Only needed if you want to create a user account that does not have any email address associated
|
|
requirePasswordChange:
|
|
type: boolean
|
|
description: 'If true then requires the user to change password, useful if password for the account was autogenerated'
|
|
tags:
|
|
type: array
|
|
items:
|
|
type: string
|
|
description: A list of tags associated with this user
|
|
addTagsToAddress:
|
|
type: boolean
|
|
description: If true then autogenerated address gets the same tags as the user
|
|
retention:
|
|
type: number
|
|
description: Default retention time (in ms). Set to 0 to disable
|
|
uploadSentMessages:
|
|
type: boolean
|
|
description: 'If true then all messages sent through MSA are also uploaded to the Sent Mail folder. Might cause duplicates with some email clients, so disabled by default.'
|
|
encryptMessages:
|
|
type: boolean
|
|
description: If true then received messages are encrypted
|
|
encryptForwarded:
|
|
type: boolean
|
|
description: If true then forwarded messages are encrypted
|
|
pubKey:
|
|
type: string
|
|
description: Public PGP key for the User that is used for encryption. Use empty string to remove the key
|
|
metaData:
|
|
description: 'Optional metadata, must be an object or JSON formatted string'
|
|
oneOf:
|
|
- type: object
|
|
- type: string
|
|
internalData:
|
|
description: 'Optional metadata for internal use, must be an object or JSON formatted string of an object. Not available for user-role tokens'
|
|
oneOf:
|
|
- type: object
|
|
- type: string
|
|
language:
|
|
type: string
|
|
description: Language code for the User
|
|
targets:
|
|
type: array
|
|
items:
|
|
type: string
|
|
description: 'An array of forwarding targets. The value could either be an email address or a relay url to next MX server ("smtp://mx2.zone.eu:25") or an URL where mail contents are POSTed to'
|
|
spamLevel:
|
|
type: number
|
|
description: 'Relative scale for detecting spam. 0 means that everything is spam, 100 means that nothing is spam'
|
|
quota:
|
|
type: number
|
|
description: Allowed quota of the user in bytes
|
|
recipients:
|
|
type: number
|
|
description: How many messages per 24 hour can be sent
|
|
forwards:
|
|
type: number
|
|
description: How many messages per 24 hour can be forwarded
|
|
imapMaxUpload:
|
|
type: number
|
|
description: How many bytes can be uploaded via IMAP during 24 hour
|
|
imapMaxDownload:
|
|
type: number
|
|
description: How many bytes can be downloaded via IMAP during 24 hour
|
|
pop3MaxDownload:
|
|
type: number
|
|
description: How many bytes can be downloaded via POP3 during 24 hour
|
|
pop3MaxMessages:
|
|
type: number
|
|
description: How many latest messages to list in POP3 session
|
|
imapMaxConnections:
|
|
type: number
|
|
description: How many parallel IMAP connections are alowed
|
|
receivedMax:
|
|
type: number
|
|
description: How many messages can be received from MX during 60 seconds
|
|
mailboxes:
|
|
$ref: '#/components/schemas/Mailboxes'
|
|
disabledScopes:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/DisabledScopes'
|
|
description: 'List of scopes that are disabled for this user ("imap", "pop3", "smtp")'
|
|
fromWhitelist:
|
|
type: array
|
|
items:
|
|
type: string
|
|
description: A list of additional email addresses this user can send mail from. Wildcard is allowed.
|
|
sess:
|
|
type: string
|
|
description: Session identifier for the logs
|
|
ip:
|
|
type: string
|
|
description: IP address for the logs
|
|
|
|
LogoutUserRequest:
|
|
type: object
|
|
properties:
|
|
reason:
|
|
type: string
|
|
description: Message to be shown to connected IMAP client
|
|
|
|
UserRestoreRequest:
|
|
type: object
|
|
properties:
|
|
sess:
|
|
type: string
|
|
description: Session identifier for the logs
|
|
ip:
|
|
type: string
|
|
description: IP address for the logs
|
|
|
|
ResetUserPasswordRequest:
|
|
type: object
|
|
properties:
|
|
validAfter:
|
|
type: string
|
|
format: date-time
|
|
description: Allow using the generated password not earlier than provided time
|
|
sess:
|
|
type: string
|
|
description: Session identifier for the logs
|
|
ip:
|
|
type: string
|
|
description: IP address for the logs
|
|
CreateWebhookRequest:
|
|
required:
|
|
- type
|
|
- url
|
|
type: object
|
|
properties:
|
|
type:
|
|
type: array
|
|
items:
|
|
type: string
|
|
description: An array of event types to match. For prefix match use ".*" at the end (eg. "user.*") or "*" for all types
|
|
user:
|
|
type: string
|
|
description: User ID to match (only makes sense for user specific resources)
|
|
url:
|
|
type: string
|
|
description: URL to POST data to
|
|
|
|
CreateSettingRequest:
|
|
required:
|
|
- value
|
|
type: object
|
|
properties:
|
|
value:
|
|
oneOf:
|
|
- type: string
|
|
- type: number
|
|
description: Setting value
|
|
sess:
|
|
description: Session identifier for the logs
|
|
type: string
|
|
ip:
|
|
description: IP address for the logs
|
|
type: string
|
|
|
|
GetAddressesResult:
|
|
required:
|
|
- id
|
|
- name
|
|
- address
|
|
- user
|
|
- forwarded
|
|
- forwardedDisabled
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
description: ID of the Address
|
|
name:
|
|
type: string
|
|
description: Identity name
|
|
address:
|
|
type: string
|
|
description: E-mail address string
|
|
user:
|
|
type: string
|
|
description: User ID this address belongs to if this is a User address
|
|
forwarded:
|
|
type: boolean
|
|
description: If true then it is a forwarded address
|
|
forwardedDisabled:
|
|
type: boolean
|
|
description: If true then the forwarded address is disabled
|
|
target:
|
|
type: array
|
|
items:
|
|
type: string
|
|
description: List of forwarding targets
|
|
GetUserAddressesResult:
|
|
required:
|
|
- id
|
|
- name
|
|
- address
|
|
- main
|
|
- created
|
|
- tags
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
description: ID of the Address
|
|
name:
|
|
type: string
|
|
description: Identity name
|
|
address:
|
|
type: string
|
|
description: E-mail address string
|
|
main:
|
|
type: boolean
|
|
description: Indicates if this is the default address for the User
|
|
created:
|
|
type: string
|
|
description: Datestring of the time the address was created
|
|
format: date-time
|
|
tags:
|
|
type: array
|
|
items:
|
|
type: string
|
|
description: List of tags associated with the Address
|
|
metaData:
|
|
type: object
|
|
description: Metadata object (if available)
|
|
internalData:
|
|
type: object
|
|
description: 'Internal metadata object (if available), not included for user-role requests'
|
|
GetUserAddressesregisterResult:
|
|
required:
|
|
- id
|
|
- address
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
description: ID of the Address
|
|
example: 507f1f77bcf86cd799439011
|
|
name:
|
|
type: string
|
|
description: Name from address header
|
|
example: John Doe
|
|
address:
|
|
type: string
|
|
description: E-mail address string
|
|
example: john@example.com
|
|
GetASPsResult:
|
|
required:
|
|
- id
|
|
- description
|
|
- scopes
|
|
- lastUse
|
|
- created
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
description: ID of the Application Password
|
|
description:
|
|
type: string
|
|
description: Description
|
|
scopes:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/AspScopes'
|
|
description: Allowed scopes for the Application Password
|
|
lastUse:
|
|
$ref: '#/components/schemas/LastUse'
|
|
created:
|
|
type: string
|
|
description: Datestring
|
|
format: date-time
|
|
GetArchivedMessagesResult:
|
|
required:
|
|
- id
|
|
- mailbox
|
|
- thread
|
|
- from
|
|
- to
|
|
- cc
|
|
- bcc
|
|
- subject
|
|
- date
|
|
- intro
|
|
- attachments
|
|
- seen
|
|
- deleted
|
|
- flagged
|
|
- contentType
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
description: ID of the Message (24 byte hex)
|
|
mailbox:
|
|
type: string
|
|
description: ID of the Mailbox
|
|
thread:
|
|
type: string
|
|
description: ID of the Thread
|
|
from:
|
|
$ref: '#/components/schemas/Address'
|
|
to:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/Address'
|
|
description: 'Recipients in To: field'
|
|
cc:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/Address'
|
|
description: 'Recipients in Cc: field'
|
|
bcc:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/Address'
|
|
description: 'Recipients in Bcc: field. Usually only available for drafts'
|
|
subject:
|
|
type: string
|
|
description: Message subject
|
|
date:
|
|
type: string
|
|
description: Date string from header
|
|
format: date-time
|
|
idate:
|
|
type: string
|
|
description: Date string of receive time
|
|
format: date-time
|
|
intro:
|
|
type: string
|
|
description: First 128 bytes of the message
|
|
attachments:
|
|
type: boolean
|
|
description: Does the message have attachments
|
|
seen:
|
|
type: boolean
|
|
description: Is this message alread seen or not
|
|
deleted:
|
|
type: boolean
|
|
description: Does this message have a \Deleted flag (should not have as messages are automatically deleted once this flag is set)
|
|
flagged:
|
|
type: boolean
|
|
description: Does this message have a \Flagged flag
|
|
contentType:
|
|
$ref: '#/components/schemas/ContentType'
|
|
GetAuthlogResult:
|
|
required:
|
|
- id
|
|
- action
|
|
- result
|
|
- created
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
description: ID of the Event
|
|
action:
|
|
type: string
|
|
description: Action identifier
|
|
result:
|
|
type: string
|
|
description: Did the action succeed
|
|
sess:
|
|
type: string
|
|
description: Session identifier
|
|
ip:
|
|
type: string
|
|
description: IP address of the Event
|
|
created:
|
|
type: string
|
|
description: Datestring of the Event time
|
|
format: date-time
|
|
|
|
GetDkimKeysResult:
|
|
required:
|
|
- id
|
|
- domain
|
|
- selector
|
|
- description
|
|
- fingerprint
|
|
- created
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
description: ID of the DKIM
|
|
domain:
|
|
type: string
|
|
description: The domain this DKIM key applies to
|
|
selector:
|
|
type: string
|
|
description: DKIM selector
|
|
description:
|
|
type: string
|
|
description: Key description
|
|
fingerprint:
|
|
type: string
|
|
description: Key fingerprint (SHA1)
|
|
created:
|
|
type: string
|
|
description: Datestring
|
|
format: date-time
|
|
|
|
GetTLSCertResult:
|
|
required:
|
|
- id
|
|
- servername
|
|
- description
|
|
- fingerprint
|
|
- created
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
description: ID of the certificate
|
|
example: '609d201236d1d936948f23b1'
|
|
servername:
|
|
type: string
|
|
description: The server name this certificate applies to
|
|
example: 'imap.example.com'
|
|
acme:
|
|
type: boolean
|
|
description: If true then private key and certificate are managed automatically by ACME
|
|
example: false
|
|
description:
|
|
type: string
|
|
description: Key description
|
|
example: 'Some notes about this certificate'
|
|
fingerprint:
|
|
type: string
|
|
description: Key fingerprint (SHA1)
|
|
example: '59:8b:ed:11:5b:4f:ce:b4:e5:1a:2f:35:b1:6f:7d:93:40:c8:2f:9c:38:3b:cd:f4:04:92:a1:0e:17:2c:3f:f3'
|
|
created:
|
|
type: string
|
|
description: Datestring
|
|
format: date-time
|
|
example: '2021-05-13T20:06:46.179Z'
|
|
expires:
|
|
type: string
|
|
description: Certificate expiration time
|
|
example: '2021-06-26T21:55:55.000Z'
|
|
format: date-time
|
|
altNames:
|
|
type: array
|
|
description: SAN servernames listed in the certificate
|
|
items:
|
|
type: string
|
|
example: ['example.com', 'www.example.com']
|
|
|
|
GetAllowedDomainResult:
|
|
required:
|
|
- id
|
|
- domain
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
description: Entry ID
|
|
domain:
|
|
type: string
|
|
description: allowlisted domain name
|
|
GetBlockedDomainResult:
|
|
required:
|
|
- id
|
|
- domain
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
description: Entry ID
|
|
domain:
|
|
type: string
|
|
description: blocklisted domain name
|
|
GetDomainAliasesResult:
|
|
required:
|
|
- id
|
|
- alias
|
|
- domain
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
description: ID of the Domain Alias
|
|
alias:
|
|
type: string
|
|
description: Domain Alias
|
|
domain:
|
|
type: string
|
|
description: The domain this alias applies to
|
|
GetAllFiltersResult:
|
|
required:
|
|
- id
|
|
- user
|
|
- name
|
|
- created
|
|
- query
|
|
- action
|
|
- disabled
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
description: Filter ID
|
|
user:
|
|
type: string
|
|
description: User ID
|
|
name:
|
|
type: string
|
|
description: Name for the filter
|
|
created:
|
|
type: string
|
|
description: Datestring of the time the filter was created
|
|
format: date-time
|
|
query:
|
|
type: array
|
|
items:
|
|
type: array
|
|
items:
|
|
type: string
|
|
action:
|
|
type: array
|
|
items:
|
|
type: array
|
|
items:
|
|
type: string
|
|
disabled:
|
|
type: boolean
|
|
description: 'If true, then this filter is ignored'
|
|
targets:
|
|
type: array
|
|
items:
|
|
type: string
|
|
description: List of forwarding targets
|
|
|
|
GetFiltersResult:
|
|
required:
|
|
- id
|
|
- name
|
|
- created
|
|
- query
|
|
- action
|
|
- disabled
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
description: Filter ID
|
|
name:
|
|
type: string
|
|
description: Name for the filter
|
|
created:
|
|
type: string
|
|
description: Datestring of the time the filter was created
|
|
format: date-time
|
|
query:
|
|
type: array
|
|
items:
|
|
type: array
|
|
items:
|
|
type: string
|
|
action:
|
|
type: array
|
|
items:
|
|
type: array
|
|
items:
|
|
type: string
|
|
disabled:
|
|
type: boolean
|
|
description: 'If true, then this filter is ignored'
|
|
GetMailboxesResult:
|
|
required:
|
|
- id
|
|
- name
|
|
- path
|
|
- specialUse
|
|
- modifyIndex
|
|
- subscribed
|
|
- hidden
|
|
- total
|
|
- unseen
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
description: Mailbox ID
|
|
name:
|
|
type: string
|
|
description: Name for the mailbox (unicode string)
|
|
path:
|
|
type: string
|
|
description: 'Full path of the mailbox, folders are separated by slashes, ends with the mailbox name (unicode string)'
|
|
specialUse:
|
|
type: string
|
|
description: 'Either special use identifier or null. One of \Drafts, \Junk, \Sent or \Trash'
|
|
modifyIndex:
|
|
type: number
|
|
description: Modification sequence number. Incremented on every change in the mailbox.
|
|
subscribed:
|
|
type: boolean
|
|
description: Mailbox subscription status. IMAP clients may unsubscribe from a folder.
|
|
retention:
|
|
type: number
|
|
description: Default retention policy for this mailbox (in ms). If set then messages added to this maibox will be automatically deleted after retention time.
|
|
hidden:
|
|
type: boolean
|
|
description: Is the folder hidden or not
|
|
total:
|
|
type: number
|
|
description: How many messages are stored in this mailbox
|
|
unseen:
|
|
type: number
|
|
description: How many unseen messages are stored in this mailbox
|
|
GetMessagesResult:
|
|
required:
|
|
- id
|
|
- mailbox
|
|
- thread
|
|
- from
|
|
- to
|
|
- cc
|
|
- bcc
|
|
- subject
|
|
- date
|
|
- size
|
|
- intro
|
|
- attachments
|
|
- seen
|
|
- deleted
|
|
- flagged
|
|
- answered
|
|
- forwarded
|
|
- contentType
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: number
|
|
description: ID of the Message
|
|
mailbox:
|
|
type: string
|
|
description: ID of the Mailbox
|
|
thread:
|
|
type: string
|
|
description: ID of the Thread
|
|
threadMessageCount:
|
|
type: number
|
|
description: Amount of messages in the Thread. Included if threadCounters query argument was true
|
|
from:
|
|
$ref: '#/components/schemas/Address'
|
|
to:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/Address'
|
|
description: 'Recipients in To: field'
|
|
cc:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/Address'
|
|
description: 'Recipients in Cc: field'
|
|
bcc:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/Address'
|
|
description: 'Recipients in Bcc: field. Usually only available for drafts'
|
|
subject:
|
|
type: string
|
|
description: Message subject
|
|
date:
|
|
type: string
|
|
description: Date string from header
|
|
format: date-time
|
|
idate:
|
|
type: string
|
|
description: Date string of receive time
|
|
format: date-time
|
|
size:
|
|
type: number
|
|
description: Message size in bytes
|
|
intro:
|
|
type: string
|
|
description: First 128 bytes of the message
|
|
attachments:
|
|
type: boolean
|
|
description: Does the message have attachments
|
|
seen:
|
|
type: boolean
|
|
description: Is this message alread seen or not
|
|
deleted:
|
|
type: boolean
|
|
description: Does this message have a \Deleted flag (should not have as messages are automatically deleted once this flag is set)
|
|
flagged:
|
|
type: boolean
|
|
description: Does this message have a \Flagged flag
|
|
answered:
|
|
type: boolean
|
|
description: Does this message have a \Answered flag
|
|
forwarded:
|
|
type: boolean
|
|
description: Does this message have a $Forwarded flag
|
|
contentType:
|
|
$ref: '#/components/schemas/ContentType'
|
|
metaData:
|
|
type: object
|
|
description: Custom metadata value. Included if metaData query argument was true
|
|
GetFilesResult:
|
|
required:
|
|
- id
|
|
- filename
|
|
- contentType
|
|
- size
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
description: ID of the File
|
|
filename:
|
|
type: string
|
|
description: Filename
|
|
contentType:
|
|
type: string
|
|
description: Content-Type of the file
|
|
size:
|
|
type: number
|
|
description: File size
|
|
GetUsersResult:
|
|
required:
|
|
- id
|
|
- username
|
|
- name
|
|
- address
|
|
- tags
|
|
- targets
|
|
- enabled2fa
|
|
- autoreply
|
|
- encryptMessages
|
|
- encryptForwarded
|
|
- quota
|
|
- hasPasswordSet
|
|
- activated
|
|
- disabled
|
|
- suspended
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
description: Users unique ID (24 byte hex)
|
|
username:
|
|
type: string
|
|
description: Username of the User
|
|
name:
|
|
type: string
|
|
description: Name of the User
|
|
address:
|
|
type: string
|
|
description: Main email address of the User
|
|
tags:
|
|
type: array
|
|
items:
|
|
type: string
|
|
description: List of tags associated with the User'
|
|
targets:
|
|
type: array
|
|
items:
|
|
type: string
|
|
description: List of forwarding targets
|
|
enabled2fa:
|
|
type: array
|
|
items:
|
|
type: string
|
|
description: List of enabled 2FA methods
|
|
autoreply:
|
|
type: boolean
|
|
description: Is autoreply enabled or not (start time may still be in the future or end time in the past)
|
|
encryptMessages:
|
|
type: boolean
|
|
description: If true then received messages are encrypted
|
|
encryptForwarded:
|
|
type: boolean
|
|
description: If true then forwarded messages are encrypted
|
|
quota:
|
|
$ref: '#/components/schemas/Quota'
|
|
metaData:
|
|
type: object
|
|
description: Custom metadata value. Included if metaData query argument was true
|
|
internalData:
|
|
type: object
|
|
description: Custom metadata value for internal use. Included if internalData query argument was true and request was not made using user-role token
|
|
hasPasswordSet:
|
|
type: boolean
|
|
description: If true then the User has a password set and can authenticate
|
|
activated:
|
|
type: boolean
|
|
description: Is the account activated
|
|
disabled:
|
|
type: boolean
|
|
description: If true then the user can not authenticate or receive any new mail
|
|
suspended:
|
|
type: boolean
|
|
description: If true then the user can not authenticate
|
|
|
|
GetWebhooksResult:
|
|
required:
|
|
- id
|
|
- type
|
|
- user
|
|
- url
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
description: Webhooks unique ID (24 byte hex)
|
|
type:
|
|
type: array
|
|
items:
|
|
type: string
|
|
description: An array of event types this webhook matches
|
|
user:
|
|
type: string
|
|
description: User ID or null
|
|
url:
|
|
type: string
|
|
description: Webhook URL
|
|
AspScopes:
|
|
type: string
|
|
enum:
|
|
- imap
|
|
- pop3
|
|
- smtp
|
|
- '*'
|
|
DisabledScopes:
|
|
type: string
|
|
enum:
|
|
- imap
|
|
- pop3
|
|
- smtp
|
|
Order:
|
|
type: string
|
|
enum:
|
|
- asc
|
|
- desc
|
|
|
|
GetSettingsResult:
|
|
required:
|
|
- key
|
|
type: object
|
|
properties:
|
|
key:
|
|
type: string
|
|
description: Setting key
|
|
value:
|
|
oneOf:
|
|
- type: string
|
|
- type: number
|
|
description: Setting value
|
|
name:
|
|
type: string
|
|
description: Setting name
|
|
description:
|
|
type: string
|
|
description: Setting description
|
|
default:
|
|
oneOf:
|
|
- type: string
|
|
- type: number
|
|
description: Default value for this key
|
|
type:
|
|
type: string
|
|
description: Value subtype
|
|
custom:
|
|
type: boolean
|
|
description: If true then the value is set
|
|
|
|
securitySchemes:
|
|
AccessTokenAuth:
|
|
name: X-Access-Token
|
|
type: apiKey
|
|
in: header
|
|
description: |-
|
|
If authentication is enabled in the WildDuck configuration, you will need to supply an access token in the `X-Access-Token` header.
|
|
|
|
```json
|
|
{
|
|
"X-Access-Token": "59fc66a03e54454869460e45"
|
|
}
|
|
```
|
|
security:
|
|
- AccessTokenAuth: []
|