openapi: 3.1.0 info: description: >- mailcow is complete e-mailing solution with advanced antispam, antivirus, nice UI and API. In order to use this API you have to create a API key and add your IP address to the whitelist of allowed IPs this can be done by logging into the Mailcow UI using your admin account, then go to Configuration > Access > Edit administrator details > API. There you will find a collapsed API menu. There are two types of API keys - The read only key can only be used for all get endpoints - The read write key can be used for all endpoints title: mailcow API version: "1.0.0" servers: - url: / components: securitySchemes: ApiKeyAuth: type: apiKey in: header name: X-API-Key responses: Unauthorized: description: Unauthorized content: application/json: schema: type: object properties: type: type: string example: error msg: type: string example: authentication failed required: - type - msg security: - ApiKeyAuth: [] paths: /api/v1/add/alias: post: responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: - log: - mailbox - add - alias - active: "1" address: alias@domain.tld goto: destination@domain.tld - null msg: - alias_added - alias@domain.tld type: success schema: properties: log: description: contains request object items: {} type: array msg: items: {} type: array type: enum: - success - danger - error type: string type: object description: OK headers: {} tags: - Aliases description: >- You may create your own mailbox alias using this action. It takes a JSON object containing a domain informations. Only one `goto*` option can be used, for ex. if you want learn as spam, then send just `goto_spam = 1` in request body. operationId: Create alias requestBody: content: application/json: schema: example: active: "1" address: alias@domain.tld goto: destination@domain.tld properties: active: description: is alias active or not type: boolean address: description: 'alias address, for catchall use "@domain.tld"' type: string goto: description: "destination address, comma separated" type: string goto_ham: description: learn as ham type: boolean goto_null: description: silently ignore type: boolean goto_spam: description: learn as spam type: boolean sogo_visible: description: toggle visibility as selectable sender in SOGo type: boolean type: object summary: Create alias /api/v1/add/time_limited_alias: post: responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: - log: - mailbox - add - time_limited_alias - address: info@domain.tld domain: domain.tld - null msg: - mailbox_modified - info@domain.tld type: success schema: properties: log: description: contains request object items: {} type: array msg: items: {} type: array type: enum: - success - danger - error type: string type: object description: OK headers: {} tags: - Aliases description: >- You may create a time limited alias using this action. It takes a JSON object containing a domain and mailbox informations. Mailcow will generate a random alias. operationId: Create time limited alias requestBody: content: application/json: schema: example: username: info@domain.tld domain: domain.tld properties: username: description: 'the mailbox an alias should be created for' type: string domain: description: "the domain" type: string type: object summary: Create time limited alias /api/v1/add/app-passwd: post: responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: - log: - app_passwd - add - active: "1" username: info@domain.tld app_name: wordpress app_passwd: keyleudecticidechothistishownsan31 app_passwd2: keyleudecticidechothistishownsan31 protocols: - imap_access - dav_access - smtp_access - eas_access - pop3_access - sieve_access msg: app_passwd_added type: success schema: properties: log: description: contains request object items: {} type: array msg: items: {} type: array type: enum: - success - danger - error type: string type: object description: OK headers: {} tags: - App Passwords description: >- Using this endpoint you can create a new app password for a specific mailbox. operationId: Create App Password requestBody: content: application/json: schema: example: active: "1" username: info@domain.tld app_name: wordpress app_passwd: keyleudecticidechothistishownsan31 app_passwd2: keyleudecticidechothistishownsan31 protocols: - imap_access - dav_access - smtp_access - eas_access - pop3_access - sieve_access properties: active: description: is alias active or not type: boolean username: description: mailbox for which the app password should be created type: string app_name: description: name of your app password type: string app_passwd: description: your app password type: string app_passwd2: description: your app password type: string type: object summary: Create App Password /api/v1/add/bcc: post: responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: - log: - bcc - add - active: "1" bcc_dest: bcc@awesomecow.tld local_dest: mailcow.tld type: sender - null msg: bcc_saved type: success schema: properties: log: description: contains request object items: {} type: array msg: items: {} type: array type: enum: - success - danger - error type: string type: object description: OK headers: {} tags: - Address Rewriting description: >- Using this endpoint you can create a BCC map to forward all mails via a bcc for a given domain. operationId: Create BCC Map requestBody: content: application/json: schema: example: active: "1" bcc_dest: bcc@awesomecow.tld local_dest: mailcow.tld type: sender properties: active: description: 1 for a active user account 0 for a disabled user account type: number bcc_dest: description: the email address where all mails should be send to type: string local_dest: description: the domain which emails should be forwarded type: string type: description: the type of bcc map can be `sender` or `recipient` type: string type: object summary: Create BCC Map /api/v1/add/dkim: post: responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: - log: - dkim - add - dkim_selector: dkim domains: hanspeterlol.de key_size: "2048" msg: - dkim_added - hanspeterlol.de type: success schema: properties: log: description: contains request object items: {} type: array msg: items: {} type: array type: enum: - success - danger - error type: string type: object description: OK headers: {} tags: - DKIM description: Using this endpoint you can generate new DKIM keys. operationId: Generate DKIM Key requestBody: content: application/json: schema: example: dkim_selector: dkim domains: mailcow.tld key_size: "2048" properties: dkim_selector: description: the DKIM selector default dkim type: string domains: description: a list of domains for which a dkim key should be generated type: string key_size: description: the key size (1024 or 2048) type: number type: object summary: Generate DKIM Key /api/v1/add/dkim_duplicate: post: responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: - log: - dkim - duplicate - from_domain: mailcow.tld to_domain: awesomecow.tld msg: - dkim_duplicated - mailcow.tld - awesomecow.tld type: success schema: properties: log: description: contains request object items: {} type: array msg: items: {} type: array type: enum: - success - danger - error type: string type: object description: OK headers: {} tags: - DKIM description: Using this endpoint you can duplicate the DKIM Key of one domain. operationId: Duplicate DKIM Key requestBody: content: application/json: schema: example: from_domain: mailcow.tld to_domain: awesomecow.tld properties: fron_domain: description: the domain where the dkim key should be copied from type: string to_domain: description: the domain where the dkim key should be copied to type: string type: object summary: Duplicate DKIM Key /api/v1/add/domain: post: responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: - log: - ratelimit - edit - domain - object: domain.tld rl_frame: s rl_value: "10" msg: - rl_saved - domain.tld type: success - log: - mailbox - add - domain - active: "1" aliases: "400" restart_sogo: "1" backupmx: "0" defquota: "3072" description: some decsription domain: domain.tld mailboxes: "10" maxquota: "10240" quota: "10240" relay_all_recipients: "0" rl_frame: s rl_value: "10" tags: ["tag1", "tag2"] - null msg: - domain_added - domain.tld type: success schema: type: array items: type: object properties: log: description: contains request object items: {} type: array msg: items: {} type: array type: enum: - success - danger - error type: string description: OK headers: {} tags: - Domains description: >- You may create your own domain using this action. It takes a JSON object containing a domain informations. operationId: Create domain requestBody: content: application/json: schema: example: active: "1" aliases: "400" backupmx: "0" defquota: "3072" description: some decsription domain: domain.tld mailboxes: "10" maxquota: "10240" quota: "10240" relay_all_recipients: "0" rl_frame: s rl_value: "10" restart_sogo: "10" tags: ["tag1", "tag2"] properties: active: description: is domain active or not type: boolean aliases: description: limit count of aliases associated with this domain type: number backupmx: description: relay domain or not type: boolean defquota: description: predefined mailbox quota in `add mailbox` form type: number description: description: Description of domain type: string domain: description: Fully qualified domain name type: string gal: description: >- is domain global address list active or not, it enables shared contacts accross domain in SOGo webmail type: boolean mailboxes: description: limit count of mailboxes associated with this domain type: number maxquota: description: maximum quota per mailbox type: number quota: description: maximum quota for this domain (for all mailboxes in sum) type: number restart_sogo: description: restart SOGo to activate the domain in SOGo type: number relay_all_recipients: description: >- if not, them you have to create "dummy" mailbox for each address to relay type: boolean relay_unknown_only: description: Relay non-existing mailboxes only. Existing mailboxes will be delivered locally. type: boolean rl_frame: enum: - s - m - h - d type: string rl_value: description: rate limit value type: number tags: description: tags for this Domain type: array items: type: string type: object summary: Create domain /api/v1/add/domain-admin: post: responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: - log: - domain_admin - add - active: "1" domains: mailcow.tld password: "*" password2: "*" username: testadmin msg: - domain_admin_added - testadmin type: success schema: properties: log: description: contains request object items: {} type: array msg: items: {} type: array type: enum: - success - danger - error type: string type: object description: OK headers: {} tags: - Domain admin description: >- Using this endpoint you can create a new Domain Admin user. This user has full control over a domain, and can create new mailboxes and aliases. operationId: Create Domain Admin user requestBody: content: application/json: schema: example: active: "1" domains: mailcow.tld password: supersecurepw password2: supersecurepw username: testadmin properties: active: description: 1 for a active user account 0 for a disabled user account type: number domains: description: the domains the user should be a admin of type: string password: description: domain admin user password type: string password2: description: domain admin user password type: string username: description: the username for the admin user type: string type: object summary: Create Domain Admin user /api/v1/add/sso/domain-admin: post: responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: token: "591F6D-5C3DD2-7455CD-DAF1C1-AA4FCC" description: OK headers: { } tags: - Single Sign-On description: >- Using this endpoint you can issue a token for Domain Admin user. This token can be used for autologin Domain Admin user by using query_string var sso_token={token}. Token expiration time is 30s operationId: Issue Domain Admin SSO token requestBody: content: application/json: schema: example: username: testadmin properties: username: description: the username for the admin user type: object type: object summary: Issue Domain Admin SSO token /api/v1/edit/da-acl: post: responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: - type: success log: - acl - edit - testadmin - username: - testadmin da_acl: - syncjobs - quarantine - login_as - sogo_access - app_passwds - bcc_maps - pushover - filters - ratelimit - spam_policy - extend_sender_acl - unlimited_quota - protocol_access - smtp_ip_access - alias_domains - domain_desc msg: - acl_saved - testadmin schema: properties: log: description: contains request object items: {} type: array msg: items: {} type: array type: enum: - success - danger - error type: string type: object description: OK headers: {} tags: - Domain admin description: >- Using this endpoint you can edit the ACLs of a Domain Admin user. This user has full control over a domain, and can create new mailboxes and aliases. operationId: Edit Domain Admin ACL requestBody: content: application/json: schema: example: items: - testadmin attr: da_acl: - syncjobs - quarantine - login_as - sogo_access - app_passwds - bcc_maps - pushover - filters - ratelimit - spam_policy - extend_sender_acl - unlimited_quota - protocol_access - smtp_ip_access - alias_domains - domain_desc properties: items: description: contains the domain admin username you want to edit type: object attr: properties: da_acl: description: contains the list of acl names that are active for this user type: object type: object summary: Edit Domain Admin ACL /api/v1/edit/domain-admin: post: responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: - type: success log: - domain_admin - edit - username: testadmin active: ["0","1"] username_new: testadmin domains: ["domain.tld"] password: "*" password2: "*" msg: - domain_admin_modified - testadmin schema: properties: type: enum: - success - danger - error type: string log: description: contains request object items: {} type: array msg: items: {} type: array type: object description: OK headers: {} tags: - Domain admin description: >- Using this endpoint you can edit a existing Domain Admin user. This user has full control over a domain, and can create new mailboxes and aliases. operationId: Edit Domain Admin user requestBody: content: application/json: schema: example: items: - testadmin attr: active: - '0' - '1' username_new: testadmin domains: ["domain.tld"] password: supersecurepassword password2: supersecurepassword properties: attr: properties: active: description: is the domain admin active or not type: boolean username_new: description: the username of the domain admin, change this to change the username type: string domains: description: a list of all domains managed by this domain admin type: array items: type: string password: description: the new domain admin user password type: string password2: description: the new domain admin user password for confirmation type: string type: object items: description: contains the domain admin username you want to edit type: object summary: Edit Domain Admin user /api/v1/add/domain-policy: post: responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: - log: - policy - add - domain - domain: domain.tld object_from: "*@baddomain.tld" object_list: bl msg: - domain_modified - domain.tld type: success schema: properties: log: description: contains request object items: {} type: array msg: items: {} type: array type: enum: - success - danger - error type: string type: object description: OK headers: {} tags: - Domain antispam policies description: >- You may create your own domain policy using this action. It takes a JSON object containing a domain informations. operationId: Create domain policy requestBody: content: application/json: schema: example: domain: domain.tld object_from: "*@baddomain.tld" object_list: bl properties: domain: description: domain name to which policy is associated to type: string object_from: description: exact address or use wildcard to match whole domain type: string object_list: enum: - wl - bl type: string type: object summary: Create domain policy /api/v1/add/fwdhost: post: responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: - log: - fwdhost - add - filter_spam: "0" hostname: hosted.mailcow.de msg: - forwarding_host_added - "5.1.76.202, 2a00:f820:417::202" type: success schema: properties: log: description: contains request object items: {} type: array msg: items: {} type: array type: enum: - success - danger - error type: string type: object description: OK headers: {} tags: - Fordwarding Hosts description: >- Add a new Forwarding host to mailcow. You can chose to enable or disable spam filtering of incoming emails by specifing `filter_spam` 0 = inactive, 1 = active. operationId: Add Forward Host requestBody: content: application/json: schema: example: filter_spam: "0" hostname: hosted.mailcow.de properties: filter_spam: description: "1 to enable spam filter, 0 to disable spam filter" type: number hostname: description: contains the hostname you want to add type: string type: object summary: Add Forward Host /api/v1/add/mailbox: post: responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: - log: - mailbox - add - mailbox - active: "1" domain: domain.tld local_part: info name: Full name password: "*" password2: "*" quota: "3072" force_pw_update: "1" tls_enforce_in: "1" tls_enforce_out: "1" tags: ["tag1", "tag2"] - null msg: - mailbox_added - info@domain.tld type: success schema: properties: log: description: contains request object items: {} type: array msg: items: {} type: array type: enum: - success - danger - error type: string type: object description: OK headers: {} tags: - Mailboxes description: >- You may create your own mailbox using this action. It takes a JSON object containing a domain informations. operationId: Create mailbox requestBody: content: application/json: schema: example: active: "1" domain: domain.tld local_part: info name: Full name password: atedismonsin password2: atedismonsin quota: "3072" force_pw_update: "1" tls_enforce_in: "1" tls_enforce_out: "1" tags: ["tag1", "tag2"] properties: active: description: is mailbox active or not type: boolean domain: description: domain name type: string local_part: description: left part of email address type: string name: description: Full name of the mailbox user type: string password2: description: mailbox password for confirmation type: string password: description: mailbox password type: string quota: description: mailbox quota type: number force_pw_update: description: forces the user to update its password on first login type: boolean tls_enforce_in: description: force inbound email tls encryption type: boolean tls_enforce_out: description: force oubound tmail tls encryption type: boolean type: object summary: Create mailbox /api/v1/add/oauth2-client: post: responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: - log: - oauth2 - add - client - redirect_uri: "https://mailcow.tld" msg: Added client access type: success schema: properties: log: description: contains request object items: {} type: array msg: items: {} type: array type: enum: - success - danger - error type: string type: object description: OK headers: {} tags: - oAuth Clients description: Using this endpoint you can create a oAuth clients. operationId: Create oAuth Client requestBody: content: application/json: schema: example: redirect_uri: "https://mailcow.tld" properties: redirect_uri: description: the uri where you should be redirected after oAuth type: string type: object summary: Create oAuth Client /api/v1/add/recipient_map: post: responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: - log: - recipient_map - add - active: "1" recipient_map_new: target@mailcow.tld recipient_map_old: recipient@mailcow.tld - null msg: - recipient_map_entry_saved - recipient@mailcow.tld type: success schema: properties: log: description: contains request object items: {} type: array msg: items: {} type: array type: enum: - success - danger - error type: string type: object description: OK headers: {} tags: - Address Rewriting description: >- Using this endpoint you can create a recipient map to forward all mails from one email address to another. operationId: Create Recipient Map requestBody: content: application/json: schema: example: active: "1" recipient_map_new: target@mailcow.tld recipient_map_old: recipient@mailcow.tld properties: active: description: 1 for a active user account 0 for a disabled user account type: number recipient_map_new: description: the email address that should receive the forwarded emails type: string recipient_map_old: description: the email address which emails should be forwarded type: string type: object summary: Create Recipient Map /api/v1/add/relayhost: post: responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: - log: - relayhost - add - hostname: "mailcow.tld:25" password: supersecurepassword username: testuser msg: - relayhost_added - "" type: success schema: properties: log: description: contains request object items: {} type: array msg: items: {} type: array type: enum: - success - danger - error type: string type: object description: OK headers: {} tags: - Routing description: Using this endpoint you can create Sender-Dependent Transports. operationId: Create Sender-Dependent Transports requestBody: content: application/json: schema: example: hostname: "mailcow.tld:25" password: supersecurepassword username: testuser properties: hostname: description: the hostname of the smtp server with port type: string password: description: the password for the smtp user type: string username: description: the username used to authenticate type: string type: object summary: Create Sender-Dependent Transports /api/v1/add/resource: post: responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: - log: - mailbox - add - resource - active: "1" description: test domain: mailcow.tld kind: location multiple_bookings: "0" multiple_bookings_custom: "" multiple_bookings_select: "0" - null msg: - resource_added - mailcow.tld type: success schema: properties: log: description: contains request object items: {} type: array msg: items: {} type: array type: enum: - success - danger - error type: string type: object description: OK headers: {} tags: - Resources description: Using this endpoint you can create Resources. operationId: Create Resources requestBody: content: application/json: schema: example: active: "1" description: test domain: mailcow.tld kind: location multiple_bookings: "0" multiple_bookings_custom: "" multiple_bookings_select: "0" properties: active: description: 1 for a active transport map 0 for a disabled transport map type: number description: description: a description of the resource type: string domain: description: the domain for which the resource should be type: string kind: description: the kind of recouse enum: - location - group - thing type: string multiple_bookings: enum: - "-1" - "1" - custom type: string multiple_bookings_custom: description: always empty type: number multiple_bookings_select: enum: - "-1" - "1" - custom type: string type: object summary: Create Resources /api/v1/add/syncjob: post: responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: - log: - mailbox - add - syncjob - active: "1" automap: "1" custom_params: "" delete1: "0" delete2: "0" delete2duplicates: "1" enc1: SSL exclude: (?i)spam|(?i)junk host1: imap.server.tld maxage: "0" maxbytespersecond: "0" mins_interval: "20" password1: supersecret port1: 993 skipcrossduplicates: "0" subfolder2: External subscribeall: "1" timeout1: "600" timeout2: "600" user1: username username: mailbox@domain.tld - null msg: - mailbox_modified - mailbox@domain.tld type: success schema: properties: log: description: contains request object items: {} type: array msg: items: {} type: array type: enum: - success - danger - error type: string type: object description: OK headers: {} tags: - Sync jobs description: >- You can create new sync job using this action. It takes a JSON object containing a domain informations. operationId: Create sync job summary: Create sync job requestBody: content: application/json: schema: example: username: lisa@mailcow.tld host1: mail.mailcow.tld port1: "143" user1: demo@mailcow.tld password1: supersecretpw enc1: TLS mins_interval: "20" subfolder2: "/SyncIntoSubfolder" maxage: "0" maxbytespersecond: "0" timeout1: "600" timeout2: "600" exclude: "(?i)spam|(?i)junk" custom_params: "--dry" delete2duplicates: "1" delete1: "1" delete2: "0" automap: "1" skipcrossduplicates: "0" subscribeall: "0" active: "1" properties: parameters: description: your local mailcow mailbox type: string host1: description: the smtp server where mails should be synced from type: string port1: description: the smtp port of the target mail server type: string password: description: the password of the mailbox type: string enc1: description: the encryption method used to connect to the mailserver type: string mins_internal: description: the interval in which messages should be syned type: number subfolder2: description: sync into subfolder on destination (empty = do not use subfolder) type: string maxage: description: only sync messages up to this age in days type: number maxbytespersecond: description: max speed transfer limit for the sync type: number timeout1: description: timeout for connection to remote host type: number timeout2: description: timeout for connection to local host type: number exclude: description: exclude objects (regex) type: string custom_params: description: custom parameters type: string delete2duplicates: description: delete duplicates on destination (--delete2duplicates) type: boolean delete1: description: delete from source when completed (--delete1) type: boolean delete2: description: delete messages on destination that are not on source (--delete2) type: boolean automap: description: try to automap folders ("Sent items", "Sent" => "Sent" etc.) (--automap) type: boolean skipcrossduplicates: description: skip duplicate messages across folders (first come, first serve) (--skipcrossduplicates) type: boolean subscribeall: description: subscribe all folders (--subscribeall) type: boolean active: description: enables or disables the sync job type: boolean type: object /api/v1/add/tls-policy-map: post: responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: - log: - tls_policy_maps - add - parameters: "" active: "1" dest: mailcow.tld policy: encrypt - null msg: - tls_policy_map_entry_saved - mailcow.tld type: success schema: properties: log: description: contains request object items: {} type: array msg: items: {} type: array type: enum: - success - danger - error type: string type: object description: OK headers: {} tags: - Outgoing TLS Policy Map Overrides description: Using this endpoint you can create a TLS policy map override. operationId: Create TLS Policy Map requestBody: content: application/json: schema: example: parameters: "" active: "1" dest: mailcow.tld policy: encrypt properties: parameters: description: >- custom parameters you find out more about them [here](http://www.postfix.org/postconf.5.html#smtp_tls_policy_maps) type: string active: description: 1 for a active user account 0 for a disabled user account type: number dest: description: the target domain or email address type: string policy: description: the policy enum: - none - may - encrypt - dane - "'dane" - fingerprint - verify - secure type: string type: object summary: Create TLS Policy Map /api/v1/add/transport: post: responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: - log: - transport - add - active: "1" destination: example2.org nexthop: "host:25" password: supersecurepw username: testuser msg: - relayhost_added - "" type: success schema: properties: log: description: contains request object items: {} type: array msg: items: {} type: array type: enum: - success - danger - error type: string type: object description: OK headers: {} tags: - Routing description: Using this endpoint you can create Sender-Dependent Transports. operationId: Create Transport Maps requestBody: content: application/json: schema: example: active: "1" destination: example.org nexthop: "host:25" password: supersecurepw username: testuser properties: active: description: 1 for a active transport map 0 for a disabled transport map type: number destination: type: string nexthop: type: string password: description: the password for the smtp user type: string username: description: the username used to authenticate type: string type: object summary: Create Transport Maps /api/v1/delete/alias: post: responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: - log: - mailbox - delete - alias - id: - "6" - "9" - null msg: - alias_removed - alias@domain.tld type: success - log: - mailbox - delete - alias - id: - "6" - "9" - null msg: - alias_removed - alias2@domain.tld type: success schema: properties: log: description: contains request object items: {} type: array msg: items: {} type: array type: enum: - success - danger - error type: string type: object description: OK headers: {} tags: - Aliases description: You can delete one or more aliases. operationId: Delete alias requestBody: content: application/json: schema: items: example: "6" type: string type: array summary: Delete alias /api/v1/delete/app-passwd: post: responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: - log: - app_passwd - delete - id: - "2" msg: - app_passwd_removed - "2" type: success schema: properties: log: description: contains request object items: {} type: array msg: items: {} type: array type: enum: - success - danger - error type: string type: object description: OK headers: {} tags: - App Passwords description: Using this endpoint you can delete a single app password. operationId: Delete App Password requestBody: content: application/json: schema: example: - "1" properties: items: description: contains list of app passwords you want to delete type: object type: object summary: Delete App Password /api/v1/delete/bcc: post: responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: - log: - bcc - delete - id: - "4" - null msg: - bcc_deleted - "4" type: success schema: properties: log: description: contains request object items: {} type: array msg: items: {} type: array type: enum: - success - danger - error type: string type: object description: OK headers: {} tags: - Address Rewriting description: >- Using this endpoint you can delete a BCC map, for this you have to know its ID. You can get the ID using the GET method. operationId: Delete BCC Map requestBody: content: application/json: schema: example: - "3" properties: items: description: contains list of bcc maps you want to delete type: object type: object summary: Delete BCC Map /api/v1/delete/dkim: post: responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: - log: - dkim - delete - domains: - mailcow.tld msg: - dkim_removed - mailcow.tld type: success schema: properties: log: description: contains request object items: {} type: array msg: items: {} type: array type: enum: - success - danger - error type: string type: object description: OK headers: {} tags: - DKIM description: Using this endpoint a existing DKIM Key can be deleted operationId: Delete DKIM Key requestBody: content: application/json: schema: items: example: - mailcow.tld type: string type: array summary: Delete DKIM Key /api/v1/delete/domain: post: responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: - log: - mailbox - delete - domain - domain: - domain.tld - domain2.tld - null msg: - domain_removed - domain.tld type: success - log: - mailbox - delete - domain - domain: - domain.tld - domain2.tld - null msg: - domain_removed - domain2.tld type: success schema: type: array items: type: object properties: log: description: contains request object items: {} type: array msg: items: {} type: array type: enum: - success - danger - error type: string description: OK headers: {} tags: - Domains description: You can delete one or more domains. operationId: Delete domain requestBody: content: application/json: schema: type: object example: - domain.tld - domain2.tld properties: items: type: array items: type: string summary: Delete domain /api/v1/delete/domain-admin: post: responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: - log: - domain_admin - delete - username: - testadmin msg: - domain_admin_removed - testadmin type: success schema: properties: log: description: contains request object items: {} type: array msg: items: {} type: array type: enum: - success - danger - error type: string type: object description: OK headers: {} tags: - Domain admin description: Using this endpoint a existing Domain Admin user can be deleted. operationId: Delete Domain Admin requestBody: content: application/json: schema: example: - testadmin properties: items: description: contains list of usernames of the users you want to delete type: object type: object summary: Delete Domain Admin /api/v1/delete/domain-policy: post: responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: - log: - policy - delete - domain - prefid: - "1" - "2" msg: - item_deleted - "1" type: success - log: - policy - delete - domain - prefid: - "1" - "2" msg: - item_deleted - "2" type: success schema: properties: log: description: contains request object items: {} type: array msg: items: {} type: array type: enum: - success - danger - error type: string type: object description: OK headers: {} tags: - Domain antispam policies description: You can delete one o more domain policies. operationId: Delete domain policy requestBody: content: application/json: schema: example: - "1" - "2" properties: items: description: contains list of domain policys you want to delete type: object type: object summary: Delete domain policy /api/v1/delete/fwdhost: post: responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: - log: - fwdhost - delete - forwardinghost: - 5.1.76.202 - "2a00:f820:417::202" msg: - forwarding_host_removed - 5.1.76.202 type: success - log: - fwdhost - delete - forwardinghost: - 5.1.76.202 - "2a00:f820:417::202" msg: - forwarding_host_removed - "2a00:f820:417::202" type: success schema: properties: log: description: contains request object items: {} type: array msg: items: {} type: array type: enum: - success - danger - error type: string type: object description: OK headers: {} tags: - Fordwarding Hosts description: >- Using this endpoint you can delete a forwarding host, in order to do so you need to know the IP of the host. operationId: Delete Forward Host requestBody: content: application/json: schema: example: - 5.1.76.202 - "2a00:f820:417::202" properties: ip: description: contains the ip of the fowarding host you want to delete type: string type: object summary: Delete Forward Host /api/v1/delete/mailbox: post: responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: - log: - mailbox - delete - mailbox - username: - info@domain.tld - sales@domain.tld - null msg: - mailbox_removed - info@domain.tld type: success - log: - mailbox - delete - mailbox - username: - info@domain.tld - sales@domain.tld - null msg: - mailbox_removed - sales@domain.tld type: success schema: properties: log: description: contains request object items: {} type: array msg: items: {} type: array type: enum: - success - danger - error type: string type: object description: OK headers: {} tags: - Mailboxes description: You can delete one or more mailboxes. operationId: Delete mailbox requestBody: content: application/json: schema: example: - info@domain.tld - sales@domain.tld properties: items: description: contains list of mailboxes you want to delete type: object type: object summary: Delete mailbox /api/v1/delete/mailq: post: responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: msg: Task completed type: success description: OK headers: {} tags: - Queue Manager description: >- Using this API you can delete the current mail queue. This will delete all mails in it. This API uses the command: `postsuper -d` operationId: Delete Queue requestBody: content: application/json: schema: example: action: super_delete properties: action: description: use super_delete to delete the mail queue type: string type: object summary: Delete Queue /api/v1/delete/oauth2-client: post: responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: - log: - oauth2 - delete - client - id: - "1" msg: - items_deleted - "1" type: success schema: properties: log: description: contains request object items: {} type: array msg: items: {} type: array type: enum: - success - danger - error type: string type: object description: OK headers: {} tags: - oAuth Clients description: >- Using this endpoint you can delete a oAuth client, for this you have to know its ID. You can get the ID using the GET method. operationId: Delete oAuth Client requestBody: content: application/json: schema: example: - "3" properties: items: description: contains list of oAuth clients you want to delete type: object type: object summary: Delete oAuth Client /api/v1/delete/qitem: post: responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: - log: - quarantine - delete - id: - "33" msg: - item_deleted - "33" type: success schema: properties: log: description: contains request object items: {} type: array msg: items: {} type: array type: enum: - success - danger - error type: string type: object description: OK headers: {} tags: - Quarantine description: >- Using this endpoint you can delete a email from quarantine, for this you have to know its ID. You can get the ID using the GET method. operationId: Delete mails in Quarantine requestBody: content: application/json: schema: example: - "33" properties: items: description: contains list of emails you want to delete type: object type: object summary: Delete mails in Quarantine /api/v1/delete/recipient_map: post: responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: - log: - recipient_map - delete - id: - "1" - null msg: - recipient_map_entry_deleted - "1" type: success schema: properties: log: description: contains request object items: {} type: array msg: items: {} type: array type: enum: - success - danger - error type: string type: object description: OK headers: {} tags: - Address Rewriting description: >- Using this endpoint you can delete a recipient map, for this you have to know its ID. You can get the ID using the GET method. operationId: Delete Recipient Map requestBody: content: application/json: schema: example: - "1" properties: items: description: contains list of recipient maps you want to delete type: object type: object summary: Delete Recipient Map /api/v1/delete/relayhost: post: responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: - log: - relayhost - delete - id: - "1" msg: - relayhost_removed - "1" type: success schema: properties: log: description: contains request object items: {} type: array msg: items: {} type: array type: enum: - success - danger - error type: string type: object description: OK headers: {} tags: - Routing description: >- Using this endpoint you can delete a Sender-Dependent Transport, for this you have to know its ID. You can get the ID using the GET method. operationId: Delete Sender-Dependent Transports requestBody: content: application/json: schema: example: - "1" properties: items: description: >- contains list of Sender-Dependent Transport you want to delete type: object type: object summary: Delete Sender-Dependent Transports /api/v1/delete/resource: post: responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: - log: - mailbox - delete - resource - name: - test@mailcow.tld - null msg: - resource_removed - test@mailcow.tld type: success schema: properties: log: description: contains request object items: {} type: array msg: items: {} type: array type: enum: - success - danger - error type: string type: object description: OK headers: {} tags: - Resources description: >- Using this endpoint you can delete a Resources, for this you have to know its ID. You can get the ID using the GET method. operationId: Delete Resources requestBody: content: application/json: schema: example: - test@mailcow.tld properties: items: description: contains list of Resources you want to delete type: object type: object summary: Delete Resources /api/v1/delete/syncjob: post: responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: log: - entity - action - object msg: - message - entity name type: success schema: properties: log: description: contains request object items: {} type: array msg: items: {} type: array type: enum: - success - danger - error type: string type: object description: OK headers: {} tags: - Sync jobs description: You can delete one or more sync jobs. operationId: Delete sync job requestBody: content: application/json: schema: example: - "6" - "9" properties: items: description: contains list of aliases you want to delete type: object type: object summary: Delete sync job /api/v1/delete/tls-policy-map: post: responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: - log: - tls_policy_maps - delete - id: - "1" - null msg: - tls_policy_map_entry_deleted - "1" type: success schema: properties: log: description: contains request object items: {} type: array msg: items: {} type: array type: enum: - success - danger - error type: string type: object description: OK headers: {} tags: - Outgoing TLS Policy Map Overrides description: >- Using this endpoint you can delete a TLS Policy Map, for this you have to know its ID. You can get the ID using the GET method. operationId: Delete TLS Policy Map requestBody: content: application/json: schema: example: - "3" properties: items: description: contains list of tls policy maps you want to delete type: object type: object summary: Delete TLS Policy Map /api/v1/delete/transport: post: responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: - log: - transport - delete - id: - "1" msg: - relayhost_removed - "1" type: success schema: properties: log: description: contains request object items: {} type: array msg: items: {} type: array type: enum: - success - danger - error type: string type: object description: OK headers: {} tags: - Routing description: >- Using this endpoint you can delete a Transport Maps, for this you have to know its ID. You can get the ID using the GET method. operationId: Delete Transport Maps requestBody: content: application/json: schema: example: - "1" properties: items: description: contains list of transport maps you want to delete type: object type: object summary: Delete Transport Maps "/api/v1/delete/mailbox/tag/{mailbox}": post: parameters: - description: name of mailbox in: path name: mailbox example: info@domain.tld required: true schema: type: string responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: - log: - mailbox - delete - tags_mailbox - tags: - tag1 - tag2 mailbox: info@domain.tld - null msg: - mailbox_modified - info@domain.tld type: success schema: properties: log: description: contains request object items: {} type: array msg: items: {} type: array type: enum: - success - danger - error type: string type: object description: OK headers: {} tags: - Mailboxes description: You can delete one or more mailbox tags. operationId: Delete mailbox tags requestBody: content: application/json: schema: example: - tag1 - tag2 properties: items: description: contains list of mailboxes you want to delete type: object type: object summary: Delete mailbox tags "/api/v1/delete/domain/tag/{domain}": post: parameters: - description: name of domain in: path name: domain example: domain.tld required: true schema: type: string responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: - log: - mailbox - delete - tags_domain - tags: - tag1 - tag2 domain: domain.tld - null msg: - domain_modified - domain.tld type: success schema: properties: log: description: contains request object items: {} type: array msg: items: {} type: array type: enum: - success - danger - error type: string type: object description: OK headers: {} tags: - Domains description: You can delete one or more domain tags. operationId: Delete domain tags requestBody: content: application/json: schema: example: - tag1 - tag2 properties: items: description: contains list of domains you want to delete type: object type: object summary: Delete domain tags /api/v1/edit/alias: post: responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: - log: - mailbox - edit - alias - active: "1" address: alias@domain.tld goto: destination@domain.tld id: - "6" private_comment: private comment public_comment: public comment - null msg: - alias_modified - alias@domain.tld type: success schema: properties: log: description: contains request object items: {} type: array msg: items: {} type: array type: enum: - success - danger - error type: string type: object description: OK headers: {} tags: - Aliases description: >- You can update one or more aliases per request. You can also send just attributes you want to change operationId: Update alias requestBody: content: application/json: schema: example: attr: active: "1" address: alias@domain.tld goto: destination@domain.tld private_comment: private comment public_comment: public comment items: ["6"] properties: attr: properties: active: description: is alias active or not type: boolean address: description: 'alias address, for catchall use "@domain.tld"' type: string goto: description: "destination address, comma separated" type: string goto_ham: description: learn as ham type: boolean goto_null: description: silently ignore type: boolean goto_spam: description: learn as spam type: boolean private_comment: type: string public_comment: type: string sogo_visible: description: toggle visibility as selectable sender in SOGo type: boolean type: object items: description: contains list of aliases you want update type: object type: object summary: Update alias /api/v1/edit/domain: post: responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: schema: type: array items: type: object properties: log: type: array description: contains request object items: {} msg: type: array items: {} type: enum: - success - danger - error type: string description: OK headers: {} tags: - Domains description: >- You can update one or more domains per request. You can also send just attributes you want to change. Example: You can add domain names to items list and in attr object just include `"active": "0"` to deactivate domains. operationId: Update domain requestBody: content: application/json: schema: example: attr: active: "1" aliases: "400" backupmx: "1" defquota: "3072" description: domain description gal: "1" mailboxes: "10" maxquota: "10240" quota: "10240" relay_all_recipients: "0" relayhost: "2" tags: ["tag3", "tag4"] items: domain.tld properties: attr: properties: active: description: is domain active or not type: boolean aliases: description: limit count of aliases associated with this domain type: number backupmx: description: relay domain or not type: boolean defquota: description: predefined mailbox quota in `add mailbox` form type: number description: description: Description of domain type: string gal: description: >- is domain global address list active or not, it enables shared contacts accross domain in SOGo webmail type: boolean mailboxes: description: limit count of mailboxes associated with this domain type: number maxquota: description: maximum quota per mailbox type: number quota: description: maximum quota for this domain (for all mailboxes in sum) type: number relay_all_recipients: description: >- if not, them you have to create "dummy" mailbox for each address to relay type: boolean relay_unknown_only: description: Relay non-existing mailboxes only. Existing mailboxes will be delivered locally. type: boolean relayhost: description: id of relayhost type: number rl_frame: enum: - s - m - h - d type: string rl_value: description: rate limit value type: number tags: description: tags for this Domain type: array items: type: string type: object items: description: contains list of domain names you want update type: array items: type: string type: object summary: Update domain /api/v1/edit/fail2ban: post: responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: "*/*": schema: properties: log: description: contains request object items: {} type: array msg: items: {} type: array type: enum: - success - danger - error type: string type: object description: OK headers: {} tags: - Fail2Ban description: >- Using this endpoint you can edit the Fail2Ban config and black or whitelist new ips. operationId: Edit Fail2Ban requestBody: content: application/json: schema: example: attr: ban_time: "86400" ban_time_increment: "1" blacklist: "10.100.6.5/32,10.100.8.4/32" max_attempts: "5" max_ban_time: "86400" netban_ipv4: "24" netban_ipv6: "64" retry_window: "600" whitelist: mailcow.tld items: none properties: attr: description: array containing the fail2ban settings properties: backlist: description: the backlisted ips or hostnames separated by comma type: string ban_time: description: the time an ip should be banned type: number ban_time_increment: description: if the time of the ban should increase each time type: boolean max_attempts: description: the maximum numbe of wrong logins before a ip is banned type: number max_ban_time: description: the maximum time an ip should be banned type: number netban_ipv4: description: the networks mask to ban for ipv4 type: number netban_ipv6: description: the networks mask to ban for ipv6 type: number retry_window: description: >- the maximum time in which a ip as to login with false credentials to be banned type: number whitelist: description: whitelisted ips or hostnames sepereated by comma type: string type: object items: description: has to be none type: object summary: Edit Fail2Ban /api/v1/edit/mailbox: post: responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: - log: - mailbox - edit - mailbox - active: "1" force_pw_update: "0" name: Full name password: "*" password2: "*" quota: "3072" sender_acl: - default - info@domain2.tld - domain3.tld - "*" sogo_access: "1" username: - info@domain.tld tags: ["tag3", "tag4"] - null msg: - mailbox_modified - info@domain.tld type: success schema: properties: log: description: contains request object items: {} type: array msg: items: {} type: array type: enum: - success - danger - error type: string type: object description: OK headers: {} tags: - Mailboxes description: >- You can update one or more mailboxes per request. You can also send just attributes you want to change operationId: Update mailbox requestBody: content: application/json: schema: example: attr: active: "1" force_pw_update: "0" name: Full name password: "" password2: "" quota: "3072" sender_acl: - default - info@domain2.tld - domain3.tld - "*" sogo_access: "1" tags: ["tag3", "tag4"] items: - info@domain.tld properties: attr: properties: active: description: is mailbox active or not type: boolean force_pw_update: description: force user to change password on next login type: boolean name: description: Full name of the mailbox user type: string password2: description: new mailbox password for confirmation type: string password: description: new mailbox password type: string quota: description: mailbox quota type: number sender_acl: description: list of allowed send from addresses type: object sogo_access: description: is access to SOGo webmail active or not type: boolean type: object items: description: contains list of mailboxes you want update type: object type: object summary: Update mailbox /api/v1/edit/mailq: post: responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: msg: Task completed type: success description: OK headers: {} tags: - Queue Manager description: >- Using this API you can flush the current mail queue. This will try to deliver all mails currently in it. This API uses the command: `postqueue -f` operationId: Flush Queue requestBody: content: application/json: schema: example: action: flush properties: action: description: use flush to flush the mail queue type: string type: object summary: Flush Queue /api/v1/edit/pushover: post: responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: - log: - pushover - edit - active: "0" evaluate_x_prio: "0" key: 21e8918e1jksdjcpis712 only_x_prio: "0" sound: "pushover" senders: "" senders_regex: "" text: "" title: Mail token: 9023e2ohcwed27d1idu2 username: - info@domain.tld msg: pushover_settings_edited type: success schema: properties: log: description: contains request object items: {} type: array msg: items: {} type: array type: enum: - success - danger - error type: string type: object description: OK headers: {} tags: - Mailboxes description: >- Using this endpoint it is possible to update the pushover settings for mailboxes operationId: Update Pushover settings requestBody: content: application/json: schema: example: attr: active: "0" evaluate_x_prio: "0" key: 21e8918e1jksdjcpis712 only_x_prio: "0" sound: "pushover" senders: "" senders_regex: "" text: "" title: Mail token: 9023e2ohcwed27d1idu2 items: info@domain.tld properties: attr: properties: active: description: Enables pushover 1 disable pushover 0 type: number evaluate_x_prio: description: Send the Push with High priority type: number key: description: Pushover key type: string only_x_prio: description: Only send push for prio mails type: number sound: description: Set notification sound type: string senders: description: Only send push for emails from these senders type: string senders_regex: description: Regex to match senders for which a push will be send type: string text: description: Custom push noficiation text type: string title: description: Push title type: string token: description: Pushover token type: string type: object items: description: contains list of mailboxes you want to delete type: object type: object summary: Update Pushover settings /api/v1/edit/quarantine_notification: post: responses: "401": $ref: "#/components/responses/Unauthorized" "200": description: OK headers: {} tags: - Mailboxes description: You can update one or more mailboxes per request. operationId: Quarantine Notifications requestBody: content: application/json: schema: example: attr: quarantine_notification: hourly items: anyOf: - mailbox1@domain.tld - mailbox2@domain.tld properties: attr: properties: quarantine_notification: description: recurrence enum: - hourly - daily - weekly - never type: string type: object items: description: >- contains list of mailboxes you want set qurantine notifications type: object type: object summary: Quarantine Notifications /api/v1/edit/syncjob: post: responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: log: - entity - action - object msg: - message - entity name type: success schema: properties: log: description: contains request object items: {} type: array msg: items: {} type: array type: enum: - success - danger - error type: string type: object description: OK headers: {} tags: - Sync jobs description: >- You can update one or more sync jobs per request. You can also send just attributes you want to change. operationId: Update sync job requestBody: content: application/json: schema: example: attr: active: "1" automap: "1" custom_params: "" delete1: "0" delete2: "0" delete2duplicates: "1" enc1: SSL exclude: (?i)spam|(?i)junk host1: imap.server.tld maxage: "0" maxbytespersecond: "0" mins_interval: "20" password1: supersecret port1: "993" skipcrossduplicates: "0" subfolder2: External subscribeall: "1" timeout1: "600" timeout2: "600" user1: username items: "1" properties: attr: properties: active: description: Is sync job active type: boolean automap: description: >- Try to automap folders ("Sent items", "Sent" => "Sent" etc.) type: boolean custom_params: description: Custom parameters passed to imapsync command type: string delete1: description: Delete from source when completed type: boolean delete2: description: Delete messages on destination that are not on source type: boolean delete2duplicates: description: Delete duplicates on destination type: boolean enc1: description: Encryption enum: - TLS - SSL - PLAIN type: string exclude: description: Exclude objects (regex) type: string host1: description: Hostname type: string maxage: description: >- Maximum age of messages in days that will be polled from remote (0 = ignore age) type: number maxbytespersecond: description: Max. bytes per second (0 = unlimited) type: number mins_interval: description: Interval (min) type: number password1: description: Password type: string port1: description: Port type: string skipcrossduplicates: description: >- Skip duplicate messages across folders (first come, first serve) type: boolean subfolder2: description: >- Sync into subfolder on destination (empty = do not use subfolder) type: string subscribeall: description: Subscribe all folders type: boolean timeout1: description: Timeout for connection to remote host type: number timeout2: description: Timeout for connection to local host type: number user1: description: Username type: string type: object items: description: contains list of aliases you want update type: object type: object summary: Update sync job /api/v1/edit/user-acl: post: responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: - log: - acl - edit - user - user_acl: - spam_alias - tls_policy - spam_score - spam_policy - delimiter_action - syncjobs - eas_reset - quarantine - sogo_profile_reset - quarantine_attachments - quarantine_notification - app_passwds - pushover username: - info@domain.tld msg: - acl_saved - info@domain.tld type: success schema: properties: log: description: contains request object items: {} type: array msg: items: {} type: array type: enum: - success - danger - error type: string type: object description: OK headers: {} tags: - Mailboxes description: Using this endpoints its possible to update the ACL's for mailboxes operationId: Update mailbox ACL requestBody: content: application/json: schema: example: attr: user_acl: - spam_alias - tls_policy - spam_score - spam_policy - delimiter_action - syncjobs - eas_reset - quarantine - sogo_profile_reset - quarantine_attachments - quarantine_notification - app_passwds - pushover items: info@domain.tld properties: attr: properties: user_acl: description: contains a list of active user acls type: object type: object items: description: contains list of mailboxes you want to delete type: object type: object summary: Update mailbox ACL "/api/v1/get/alias/{id}": get: parameters: - description: id of entry you want to get example: all in: path name: id required: true schema: enum: - all - "1" - "2" - "5" - "10" type: string - description: e.g. api-key-string example: api-key-string in: header name: X-API-Key required: false schema: type: string responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: - active: "1" address: alias@domain.tld created: "2019-04-04 19:29:49" domain: domain.tld goto: destination@domain.tld id: 6 in_primary_domain: "" is_catch_all: 0 modified: null private_comment: null public_comment: null - active: "1" address: "@domain.tld" created: "2019-04-27 13:42:39" domain: domain.tld goto: destination@domain.tld id: 10 in_primary_domain: "" is_catch_all: 1 modified: null private_comment: null public_comment: null description: OK headers: {} tags: - Aliases description: You can list mailbox aliases existing in system. operationId: Get aliases summary: Get aliases "/api/v1/get/time_limited_aliases/{mailbox}": get: parameters: - description: mailbox you want to get aliasses from example: domain.tld in: path schema: type: string name: mailbox required: true - description: e.g. api-key-string example: api-key-string in: header name: X-API-Key required: false schema: type: string responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: - address: alias@domain.tld goto: destination@domain.tld validity: 1668251246 created: "2021-11-12 12:07:26" modified: null description: OK headers: {} tags: - Aliases description: You can list time limited mailbox aliases existing in system. operationId: Get time limited aliases summary: Get time limited aliases "/api/v1/get/app-passwd/all/{mailbox}": get: parameters: - description: mailbox of entry you want to get example: hello@mailcow.email in: path name: mailbox required: true schema: enum: - hello@mailcow.email type: string - description: e.g. api-key-string example: api-key-string in: header name: X-API-Key required: false schema: type: string responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: - active: "1" created: "2019-12-21 16:04:55" domain: mailcow.email id: 2 mailbox: hello@mailcow.email modified: null name: emclient description: OK headers: {} tags: - App Passwords description: >- Using this endpoint you can get all app passwords from a specific mailbox. operationId: Get App Password summary: Get App Password "/api/v1/get/bcc/{id}": get: parameters: - description: id of entry you want to get example: all in: path name: id required: true schema: enum: - all - "1" - "2" - "5" - "10" type: string - description: e.g. api-key-string example: api-key-string in: header name: X-API-Key required: false schema: type: string responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: - active: "1" bcc_dest: bcc@awesomecow.tld created: "2019-10-02 21:44:34" domain: mailcow.tld id: 3 local_dest: "@mailcow.tld" modified: null type: sender description: OK headers: {} tags: - Address Rewriting description: Using this endpoint you can get all BCC maps. operationId: Get BCC Map summary: Get BCC Map "/api/v1/get/dkim/{domain}": get: parameters: - description: name of domain in: path name: domain required: true schema: type: string - description: e.g. api-key-string example: api-key-string in: header name: X-API-Key required: false schema: type: string responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: dkim_selector: dkim dkim_txt: >- v=DKIM1;k=rsa;t=s;s=email;p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA21tUSjyasQy/hJmVjPnlRGfzx6TPhYj8mXY9DVOzSAE64Gddw/GnE/GcCR6WXNT23u9q4zPnz1IPoNt5kFOps8vg/iNqrcH++494noaZuYyFPPFnebkfryO4EvEyxC/c66qts+gnOUml+M8uv5WObBJld2gG12jLwFM0263J/N6J8LuUsaXOB2uCIfx8Nf4zjuJ6Ieez2uyHNK5dXjDLfKA4mTr+EEK6W6e34M4KN1liWM6r9Oy5S1FlLrD42VpURxxBZtBiEtaJPEKSQuk6GQz8ihu7W20Yr53tyCdaORu8dhxXVUWVf+GjuuMEdAmQCjYkarXdYCrt56Psw703kwIDAQAB length: "2048" privkey: "" pubkey: >- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA21tUSjyasQy/hJmVjPnlRGfzx6TPhYj8mXY9DVOzSAE64Gddw/GnE/GcCR6WXNT23u9q4zPnz1IPoNt5kFOps8vg/iNqrcH++494noaZuYyFPPFnebkfryO4EvEyxC/c66qts+gnOUml+M8uv5WObBJld2gG12jLwFM0263J/N6J8LuUsaXOB2uCIfx8Nf4zjuJ6Ieez2uyHNK5dXjDLfKA4mTr+EEK6W6e34M4KN1liWM6r9Oy5S1FlLrD42VpURxxBZtBiEtaJPEKSQuk6GQz8ihu7W20Yr53tyCdaORu8dhxXVUWVf+GjuuMEdAmQCjYkarXdYCrt56Psw703kwIDAQAB description: OK headers: {} tags: - DKIM description: >- Using this endpoint you can get the DKIM public key for a specific domain. operationId: Get DKIM Key summary: Get DKIM Key /api/v1/get/domain-admin/all: get: responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: - active: "1" created: "2019-10-02 10:29:41" selected_domains: - mailcow.tld tfa_active: "0" unselected_domains: - awesomemailcow.de - mailcowisgreat.de username: testadmin description: OK headers: {} tags: - Domain admin description: "" operationId: Get Domain Admins summary: Get Domain Admins "/api/v1/get/domain/{id}": get: parameters: - description: id of entry you want to get example: all in: path name: id required: true schema: enum: - all - mailcow.tld type: string - description: comma seperated list of tags to filter by example: "tag1,tag2" in: query name: tags required: false schema: type: string - description: e.g. api-key-string example: api-key-string in: header name: X-API-Key required: false schema: type: string responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: - active: "1" aliases_in_domain: 0 aliases_left: 400 backupmx: "0" bytes_total: "5076666944" def_new_mailbox_quota: 3221225472 def_quota_for_mbox: 3221225472 description: Some description domain_name: domain.tld gal: "0" max_new_mailbox_quota: 10737418240 max_num_aliases_for_domain: 400 max_num_mboxes_for_domain: 10 max_quota_for_domain: 10737418240 max_quota_for_mbox: 10737418240 mboxes_in_domain: 0 mboxes_left: 10 msgs_total: "172440" quota_used_in_domain: "0" relay_all_recipients: "0" relayhost: "0" rl: false tags: ["tag1", "tag2"] - active: "1" aliases_in_domain: 0 aliases_left: 400 backupmx: "1" bytes_total: "5076666944" def_new_mailbox_quota: 3221225472 def_quota_for_mbox: 3221225472 description: domain description domain_name: domain2.tld gal: "0" max_new_mailbox_quota: 10737418240 max_num_aliases_for_domain: 400 max_num_mboxes_for_domain: 10 max_quota_for_domain: 10737418240 max_quota_for_mbox: 10737418240 mboxes_in_domain: 0 mboxes_left: 10 msgs_total: "172440" quota_used_in_domain: "0" relay_all_recipients: "0" relayhost: "0" rl: false tags: ["tag3", "tag4"] description: OK headers: {} tags: - Domains description: You can list all domains existing in system. operationId: Get domains summary: Get domains /api/v1/get/fail2ban: get: responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: ban_time: 604800 ban_time_increment: 1 blacklist: |- 45.82.153.37/32 92.118.38.52/32 max_attempts: 1 max_ban_time: 604800 netban_ipv4: 32 netban_ipv6: 128 perm_bans: - 45.82.153.37/32 - 92.118.38.52/32 retry_window: 7200 whitelist: 1.1.1.1 description: OK headers: {} tags: - Fail2Ban description: Gets the current Fail2Ban configuration. operationId: Get Fail2Ban Config summary: Get Fail2Ban Config /api/v1/get/fwdhost/all: get: responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: - host: 5.1.76.202 keep_spam: "yes" source: hosted.mailcow.de - host: "2a00:f820:417::202" keep_spam: "yes" source: hosted.mailcow.de description: OK headers: {} tags: - Fordwarding Hosts description: You can list all Forwarding Hosts in your mailcow. operationId: Get Forwarding Hosts summary: Get Forwarding Hosts "/api/v1/get/logs/acme/{count}": get: parameters: - description: Number of logs to return in: path name: count required: true schema: type: number - description: e.g. api-key-string example: api-key-string in: header name: X-API-Key required: false schema: type: string responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: - message: >- Certificate validation done, neither changed nor due for renewal, sleeping for another day. time: "1569927728" description: OK headers: {} tags: - Logs description: >- This Api endpoint lists all ACME logs from issued Lets Enctypts certificates. Tip: You can limit how many logs you want to get by using `/` at the end of the api url. operationId: Get ACME logs summary: Get ACME logs "/api/v1/get/logs/api/{count}": get: parameters: - description: Number of logs to return in: path name: count required: true schema: type: number - description: e.g. api-key-string example: api-key-string in: header name: X-API-Key required: false schema: type: string responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: - data: "" method: GET remote: 1.1.1.1 time: 1569939001 uri: /api/v1/get/logs/api/2 description: OK headers: {} tags: - Logs description: >- This Api endpoint lists all Api logs. Tip: You can limit how many logs you want to get by using `/` at the end of the api url. operationId: Get Api logs summary: Get Api logs "/api/v1/get/logs/autodiscover/{count}": get: parameters: - description: Number of logs to return in: path name: count required: true schema: type: number - description: e.g. api-key-string example: api-key-string in: header name: X-API-Key required: false schema: type: string responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: - service: activesync time: 1569684212 ua: >- Microsoft Office/16.0 (Windows NT 6.2; MAPICPL 16.0.11328; Pro) user: awesome@mailcow.de description: OK headers: {} tags: - Logs description: >- This Api endpoint lists all Autodiscover logs. Tip: You can limit how many logs you want to get by using `/` at the end of the api url. operationId: Get Autodiscover logs summary: Get Autodiscover logs "/api/v1/get/logs/dovecot/{count}": get: parameters: - description: Number of logs to return in: path name: count required: true schema: type: number - description: e.g. api-key-string example: api-key-string in: header name: X-API-Key required: false schema: type: string responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: - message: >- managesieve-login: Disconnected (no auth attempts in 0 secs): user=<>, rip=172.22.1.3, lip=172.22.1.250 priority: info program: dovecot time: "1569938740" description: OK headers: {} tags: - Logs description: >- This Api endpoint lists all Dovecot logs. Tip: You can limit how many logs you want to get by using `/` at the end of the api url. operationId: Get Dovecot logs summary: Get Dovecot logs "/api/v1/get/logs/netfilter/{count}": get: parameters: - description: Number of logs to return in: path name: count required: true schema: type: number - description: e.g. api-key-string example: api-key-string in: header name: X-API-Key required: false schema: type: string responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: - message: "Whitelist was changed, it has 1 entries" priority: info time: 1569754911 - message: Add host/network 1.1.1.1/32 to blacklist priority: crit time: 1569754911 description: OK headers: {} tags: - Logs description: >- This Api endpoint lists all Netfilter logs. Tip: You can limit how many logs you want to get by using `/` at the end of the api url. operationId: Get Netfilter logs summary: Get Netfilter logs "/api/v1/get/logs/postfix/{count}": get: parameters: - description: Number of logs to return in: path name: count required: true schema: type: number - description: e.g. api-key-string example: api-key-string in: header name: X-API-Key required: false schema: type: string responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: - message: "EF1711500458: removed" priority: info program: postfix/qmgr time: "1569937433" description: OK headers: {} tags: - Logs description: >- This Api endpoint lists all Postfix logs. Tip: You can limit how many logs you want to get by using `/` at the end of the api url. operationId: Get Postfix logs summary: Get Postfix logs "/api/v1/get/logs/ratelimited/{count}": get: parameters: - description: Number of logs to return in: path name: count required: true schema: type: number - description: e.g. api-key-string example: api-key-string in: header name: X-API-Key required: false schema: type: string responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: - from: awesome@mailcow.email header_from: '"Awesome" ' header_subject: Mailcow is amazing ip: 172.22.1.248 message_id: 6a-5d892500-7-240abd80@90879116 qid: E3CF91500458 rcpt: hello@mailcow.email rl_hash: RLsdz3tuabozgd4oacbdh8kc78 rl_info: mailcow(RLsdz3tuabozgd4oacbdh8kc78) rl_name: mailcow time: 1569269003 user: awesome@mailcow.email description: OK headers: {} tags: - Logs description: >- This Api endpoint lists all Ratelimit logs. Tip: You can limit how many logs you want to get by using `/` at the end of the api url. operationId: Get Ratelimit logs summary: Get Ratelimit logs "/api/v1/get/logs/rspamd-history/{count}": get: parameters: - description: Number of logs to return in: path name: count required: true schema: type: number - description: e.g. api-key-string example: api-key-string in: header name: X-API-Key required: false schema: type: string responses: "401": $ref: "#/components/responses/Unauthorized" "200": description: OK headers: {} tags: - Logs description: >- This Api endpoint lists all Rspamd logs. Tip: You can limit how many logs you want to get by using `/` at the end of the api url. operationId: Get Rspamd logs summary: Get Rspamd logs "/api/v1/get/logs/sogo/{count}": get: parameters: - description: Number of logs to return in: path name: count required: true schema: type: number - description: e.g. api-key-string example: api-key-string in: header name: X-API-Key required: false schema: type: string responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: - message: >- [109]: mailcowdockerized_watchdog-mailcow_1.mailcowdockerized_mailcow-network "GET /SOGo.index/ HTTP/1.1" 200 2531/0 0.005 - - 0 priority: notice program: sogod time: "1569938874" description: OK headers: {} tags: - Logs description: >- This Api endpoint lists all SOGo logs. Tip: You can limit how many logs you want to get by using `/` at the end of the api url. operationId: Get SOGo logs summary: Get SOGo logs "/api/v1/get/logs/watchdog/{count}": get: parameters: - description: Number of logs to return in: path name: count required: true schema: type: number - description: e.g. api-key-string example: api-key-string in: header name: X-API-Key required: false schema: type: string responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: - hpdiff: "0" hpnow: "1" hptotal: "1" lvl: "100" service: Fail2ban time: "1569938958" - hpdiff: "0" hpnow: "5" hptotal: "5" lvl: "100" service: Rspamd time: "1569938956" description: OK headers: {} tags: - Logs description: >- This Api endpoint lists all Watchdog logs. Tip: You can limit how many logs you want to get by using `/` at the end of the api url. operationId: Get Watchdog logs summary: Get Watchdog logs "/api/v1/get/mailbox/{id}": get: parameters: - description: id of entry you want to get example: all in: path name: id required: true schema: enum: - all - user@domain.tld type: string - description: comma seperated list of tags to filter by example: "tag1,tag2" in: query name: tags required: false schema: type: string - description: e.g. api-key-string example: api-key-string in: header name: X-API-Key required: false schema: type: string responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: - active: "1" attributes: force_pw_update: "0" mailbox_format: "maildir:" quarantine_notification: never sogo_access: "1" tls_enforce_in: "0" tls_enforce_out: "0" domain: doman3.tld is_relayed: 0 local_part: info max_new_quota: 10737418240 messages: 0 name: Full name percent_class: success percent_in_use: 0 quota: 3221225472 quota_used: 0 rl: false spam_aliases: 0 username: info@doman3.tld tags: ["tag1", "tag2"] description: OK headers: {} tags: - Mailboxes description: You can list all mailboxes existing in system. operationId: Get mailboxes summary: Get mailboxes /api/v1/get/mailq/all: get: responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: - arrival_time: 1570091234 message_size: 1848 queue_id: B98C6260CA1 queue_name: incoming recipients: - recipient@awesomecow.tld sender: sender@mailcow.tld description: OK headers: {} tags: - Queue Manager description: Get the current mail queue and everything it contains. operationId: Get Queue summary: Get Queue "/api/v1/get/oauth2-client/{id}": get: parameters: - description: id of entry you want to get example: all in: path name: id required: true schema: enum: - all - "1" - "2" - "5" - "10" type: string - description: e.g. api-key-string example: api-key-string in: header name: X-API-Key required: false schema: type: string responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: - client_id: 17c76aaa88c0 client_secret: 73fc668a88147e32a31ff80c grant_types: null id: 1 redirect_uri: "https://mailcow.tld" scope: profile user_id: null description: OK headers: {} tags: - oAuth Clients description: Using this endpoint you can get all oAuth clients. operationId: Get oAuth Clients summary: Get oAuth Clients "/api/v1/get/policy_bl_domain/{domain}": get: parameters: - description: name of domain in: path name: domain required: true schema: type: string - description: e.g. api-key-string example: api-key-string in: header name: X-API-Key required: false schema: type: string responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: - object: domain.tld prefid: 2 value: "*@baddomain.tld" description: OK headers: {} tags: - Domain antispam policies description: You can list all blacklist policies per domain. operationId: List blacklist domain policy summary: List blacklist domain policy "/api/v1/get/policy_wl_domain/{domain}": get: parameters: - description: name of domain in: path name: domain required: true schema: type: string - description: e.g. api-key-string example: api-key-string in: header name: X-API-Key required: false schema: type: string responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: - object: domain.tld prefid: 1 value: "*@gooddomain.tld" description: OK headers: {} tags: - Domain antispam policies description: You can list all whitelist policies per domain. operationId: List whitelist domain policy summary: List whitelist domain policy /api/v1/get/quarantine/all: get: responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: created: 1572688831 id: 33 notified: 1 qid: 8224615004C1 rcpt: admin@domain.tld score: 15.48 sender: bounces@send.domain.tld subject: mailcow is awesome virus_flag: 0 description: OK headers: {} tags: - Quarantine description: Get all mails that are currently in Quarantine. operationId: Get mails in Quarantine summary: Get mails in Quarantine "/api/v1/get/recipient_map/{id}": get: parameters: - description: id of entry you want to get example: all in: path name: id required: true schema: enum: - all - "1" - "2" - "5" - "10" type: string - description: e.g. api-key-string example: api-key-string in: header name: X-API-Key required: false schema: type: string responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: - active: "1" created: "2019-10-02 22:06:29" id: 3 modified: null recipient_map_new: target@mailcow.tld recipient_map_old: recipient@mailcow.tld description: OK headers: {} tags: - Address Rewriting description: Using this endpoint you can get all recipient maps. operationId: Get Recipient Map summary: Get Recipient Map "/api/v1/get/relayhost/{id}": get: parameters: - description: id of entry you want to get example: all in: path name: id required: true schema: enum: - all - "1" - "2" - "5" - "10" type: string - description: e.g. api-key-string example: api-key-string in: header name: X-API-Key required: false schema: type: string responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: - active: "1" hostname: "mailcow.tld:25" id: 1 password: supersecurepassword password_short: tes... used_by_domains: "" username: testuser description: OK headers: {} tags: - Routing description: Using this endpoint you can get all Sender-Dependent Transports. operationId: Get Sender-Dependent Transports summary: Get Sender-Dependent Transports /api/v1/get/resource/all: get: responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: - active: "1" description: test domain: mailcow.tld kind: location local_part: test multiple_bookings: 0 name: test@mailcow.tld description: OK headers: {} tags: - Resources description: Using this endpoint you can get all Resources. operationId: Get Resources summary: Get Resources "/api/v1/get/rl-mbox/{mailbox}": get: parameters: - description: name of mailbox or all in: path name: mailbox required: true schema: type: string - description: e.g. api-key-string example: api-key-string in: header name: X-API-Key required: false schema: type: string responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: - frame: s mailbox: leon@mailcow.tld value: "5" - frame: s mailbox: lisa@mailcow.tld value: "3" description: OK headers: {} tags: - Ratelimits description: >- Using this endpoint you can get the ratelimits for a certain mailbox. You can use all for all mailboxes. operationId: Get mailbox ratelimits summary: Get mailbox ratelimits "/api/v1/get/rl-domain/{domain}": get: parameters: - description: name of domain or all in: path name: domain required: true schema: type: string - description: e.g. api-key-string example: api-key-string in: header name: X-API-Key required: false schema: type: string responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: - frame: s domain: domain.tld value: "5" - frame: s mailbox: domain2.tld value: "3" description: OK headers: {} tags: - Ratelimits description: >- Using this endpoint you can get the ratelimits for a certain domains. You can use all for all domain. operationId: Get domain ratelimits summary: Get domain ratelimits /api/v1/edit/rl-mbox/: post: responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: - type: success log: - ratelimit - edit - mailbox - object: - info@domain.tld rl_value: "10" rl_frame: h msg: - rl_saved - info@domain.tld schema: properties: log: description: contains request object items: {} type: array msg: items: {} type: array type: enum: - success - danger - error type: string type: object description: OK headers: {} tags: - Ratelimits description: >- Using this endpoint you can edit the ratelimits for a certain mailbox. operationId: Edit mailbox ratelimits requestBody: content: application/json: schema: example: attr: rl_value: "10" rl_frame: "h" items: - info@domain.tld properties: attr: properties: rl_frame: description: contains the frame for the ratelimit h,s,m type: string rl_value: description: contains the rate for the ratelimit 10,20,50,1 type: number type: object items: description: contains list of mailboxes you want to edit the ratelimit of type: object type: object summary: Edit mailbox ratelimits /api/v1/edit/rl-domain/: post: responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: - type: success - log: - ratelimit - edit - domain - object: - domain.tld rl_value: "50" rl_frame: "h" msg: - rl_saved - domain.tld schema: properties: log: description: contains request object items: {} type: array msg: items: {} type: array type: enum: - success - danger - error type: string type: object description: OK headers: {} tags: - Ratelimits description: >- Using this endpoint you can edit the ratelimits for a certain domains. operationId: Edit domain ratelimits requestBody: content: application/json: schema: example: attr: rl_value: "10" rl_frame: "h" items: - domain.tld properties: attr: properties: rl_frame: description: contains the frame for the ratelimit h,s,m type: string rl_value: description: contains the rate for the ratelimit 10,20,50,1 type: number type: object items: description: contains list of domains you want to edit the ratelimit of type: object type: object summary: Edit domain ratelimits /api/v1/get/status/containers: get: responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: acme-mailcow: container: acme-mailcow image: "mailcow/acme:1.63" started_at: "2019-12-22T21:00:08.270660275Z" state: running type: info clamd-mailcow: container: clamd-mailcow image: "mailcow/clamd:1.35" started_at: "2019-12-22T21:00:01.622856172Z" state: running type: info dockerapi-mailcow: container: dockerapi-mailcow image: "mailcow/dockerapi:1.36" started_at: "2019-12-22T20:59:59.984797808Z" state: running type: info dovecot-mailcow: container: dovecot-mailcow image: "mailcow/dovecot:1.104" started_at: "2019-12-22T21:00:08.988680259Z" state: running type: info ipv6nat-mailcow: container: ipv6nat-mailcow image: robbertkl/ipv6nat started_at: "2019-12-22T21:06:37.273225445Z" state: running type: info memcached-mailcow: container: memcached-mailcow image: "memcached:alpine" started_at: "2019-12-22T20:59:58.0907785Z" state: running type: info mysql-mailcow: container: mysql-mailcow image: "mariadb:10.3" started_at: "2019-12-22T21:00:02.201937528Z" state: running type: info netfilter-mailcow: container: netfilter-mailcow image: "mailcow/netfilter:1.31" started_at: "2019-12-22T21:00:09.851559297Z" state: running type: info nginx-mailcow: container: nginx-mailcow image: "nginx:mainline-alpine" started_at: "2019-12-22T21:00:12.9843038Z" state: running type: info olefy-mailcow: container: olefy-mailcow image: "mailcow/olefy:1.2" started_at: "2019-12-22T20:59:59.676259274Z" state: running type: info php-fpm-mailcow: container: php-fpm-mailcow image: "mailcow/phpfpm:1.55" started_at: "2019-12-22T21:00:00.955808957Z" state: running type: info postfix-mailcow: container: postfix-mailcow image: "mailcow/postfix:1.44" started_at: "2019-12-22T21:00:07.186717617Z" state: running type: info redis-mailcow: container: redis-mailcow image: "redis:5-alpine" started_at: "2019-12-22T20:59:56.827166834Z" state: running type: info rspamd-mailcow: container: rspamd-mailcow image: "mailcow/rspamd:1.56" started_at: "2019-12-22T21:00:12.456075355Z" state: running type: info sogo-mailcow: container: sogo-mailcow image: "mailcow/sogo:1.65" started_at: "2019-12-22T20:59:58.382274592Z" state: running type: info solr-mailcow: container: solr-mailcow image: "mailcow/solr:1.7" started_at: "2019-12-22T20:59:59.635413798Z" state: running type: info unbound-mailcow: container: unbound-mailcow image: "mailcow/unbound:1.10" started_at: "2019-12-22T20:59:58.760595825Z" state: running type: info watchdog-mailcow: container: watchdog-mailcow image: "mailcow/watchdog:1.65" started_at: "2019-12-22T20:59:56.028660382Z" state: running type: info description: OK headers: {} tags: - Status description: >- Using this endpoint you can get the status of all containers and when hey where started and a few other details. operationId: Get container status summary: Get container status /api/v1/get/status/solr: get: responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: solr_documents: null solr_enabled: false solr_size: null type: info description: OK headers: {} tags: - Status description: >- Using this endpoint you can get the status of all containers and when hey where started and a few other details. operationId: Get solr status summary: Get solr status /api/v1/get/status/vmail: get: responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: disk: /dev/mapper/mail--vg-root total: 41G type: info used: 11G used_percent: 28% description: OK headers: {} tags: - Status description: >- Using this endpoint you can get the status of the vmail and the amount of used storage. operationId: Get vmail status summary: Get vmail status /api/v1/get/status/version: get: responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: version: "2022-04" description: OK headers: {} tags: - Status description: >- Using this endpoint you can get the current running release of this instance. operationId: Get version status summary: Get version status /api/v1/get/syncjobs/all/no_log: get: responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: - active: "1" authmd51: 0 authmech1: PLAIN automap: 1 created: "2019-05-22 11:37:25" custom_params: "" delete1: 0 delete2: 0 delete2duplicates: 1 domain2: "" enc1: TLS exclude: (?i)spam|(?i)junk host1: imap.server.tld id: 1 is_running: 0 last_run: "2019-05-22 11:40:02" log: "" maxage: 0 maxbytespersecond: "0" mins_interval: "20" modified: "2019-05-22 11:40:02" port1: 993 regextrans2: "" skipcrossduplicates: 0 subfolder2: External subscribeall: 1 timeout1: 600 timeout2: 600 user1: username user2: mailbox@domain.tld description: OK headers: {} tags: - Sync jobs description: You can list all syn jobs existing in system. operationId: Get sync jobs summary: Get sync jobs "/api/v1/get/tls-policy-map/{id}": get: parameters: - description: id of entry you want to get example: all in: path name: id required: true schema: enum: - all - "1" - "2" - "5" - "10" type: string - description: e.g. api-key-string example: api-key-string in: header name: X-API-Key required: false schema: type: string responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: - parameters: "" active: "1" created: "2019-10-03 08:42:12" dest: mailcow.tld id: 1 modified: null policy: encrypt description: OK headers: {} tags: - Outgoing TLS Policy Map Overrides description: Using this endpoint you can get all TLS policy map override maps. operationId: Get TLS Policy Map summary: Get TLS Policy Map "/api/v1/get/transport/{id}": get: parameters: - description: id of entry you want to get example: all in: path name: id required: true schema: enum: - all - "1" - "2" - "5" - "10" type: string - description: e.g. api-key-string example: api-key-string in: header name: X-API-Key required: false schema: type: string responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: - active: "1" destination: example.org id: 1 lookup_mx: "0" nexthop: "host:25" password: supersecurepw password_short: sup... username: testuser description: OK headers: {} tags: - Routing description: Using this endpoint you can get all Transport Maps. operationId: Get Transport Maps summary: Get Transport Maps /api/v1/edit/spam-score/: post: responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: - type: success log: - mailbox - edit - spam_score - username: - info@domain.tld spam_score: "8,15" msg: - mailbox_modified - info@domain.tld schema: properties: log: description: contains request object items: {} type: array msg: items: {} type: array type: enum: - success - danger - error type: string type: object description: OK headers: {} tags: - Mailboxes description: >- Using this endpoint you can edit the spam filter score for a certain mailbox. operationId: Edit mailbox spam filter score requestBody: content: application/json: schema: example: - items: - info@domain.tld attr: spam_score: "8,15" summary: Edit mailbox spam filter score "/api/v1/get/mailbox/all/{domain}": get: parameters: - description: name of domain in: path name: domain required: false schema: type: string - description: e.g. api-key-string example: api-key-string in: header name: X-API-Key required: false schema: type: string responses: "401": $ref: "#/components/responses/Unauthorized" "200": content: application/json: examples: response: value: - active: "1" attributes: force_pw_update: "0" mailbox_format: "maildir:" quarantine_notification: never sogo_access: "1" tls_enforce_in: "0" tls_enforce_out: "0" domain: domain3.tld is_relayed: 0 local_part: info max_new_quota: 10737418240 messages: 0 name: Full name percent_class: success percent_in_use: 0 quota: 3221225472 quota_used: 0 rl: false spam_aliases: 0 username: info@domain3.tld tags: ["tag1", "tag2"] description: OK headers: {} tags: - Mailboxes description: You can list all mailboxes existing in system for a specific domain. operationId: Get mailboxes of a domain summary: Get mailboxes of a domain tags: - name: Domains description: You can create antispam whitelist and blacklist policies - name: Domain antispam policies description: You can edit the Domain Antispam policies - name: Mailboxes description: You can manage mailboxes - name: Aliases description: You can manage aliases - name: Sync jobs description: Using Syncjobs you can sync your mails with other email servers - name: Fordwarding Hosts description: Forwarding Hosts enable you to send mail using a relay - name: Logs description: Get all mailcow system logs - name: Queue Manager description: Manage the postfix mail queue - name: Quarantine description: Check what emails went to quarantine - name: Fail2Ban description: Manage the Netfilter fail2ban options - name: DKIM description: Manage DKIM keys - name: Domain admin description: Create or udpdate domain admin users - name: Single Sign-On description: Issue tokens for users - name: Address Rewriting description: Create BCC maps or recipient maps - name: Outgoing TLS Policy Map Overrides description: Force global TLS policys - name: oAuth Clients description: Use mailcow as a oAuth server - name: Routing description: Define your own email routes - name: Resources description: Manage ressources - name: App Passwords description: Create mailbox app passwords - name: Status description: Get the status of your cow - name: Ratelimits description: Edit domain ratelimits