### GET /api/v1/catch-all/{id} Source: https://system.atriomail.com/api-docs Retrieves details of a specific catch-all configuration by its ID. Requires an API key for authentication. ```APIDOC ## GET /api/v1/catch-all/{id} ### Description Returns details of a specific catch-all configuration. ### Method GET ### Endpoint /api/v1/catch-all/{id} ### Parameters #### Path Parameters - **id** (integer) - Required - The ID of the catch-all configuration. ### Response #### Success Response (200) - Returns an object with the catch-all details. #### Response Example { "id": 1, "domain": "example.com", "goto_array": ["user@example.com"], "active": true } ### Security Requires API key authentication (apiKeyAuth). ``` -------------------------------- ### GET /api/v1/status Source: https://system.atriomail.com/api-docs Retrieves the current system status, including recent jobs. Requires an API key with appropriate permissions. ```APIDOC ## GET /api/v1/status ### Description Retrieves the current system status, including recent jobs. Requires an API key with appropriate permissions. ### Method GET ### Endpoint /api/v1/status ### Security - apiKeyAuth ### Response #### Success Response (200) - **success** (boolean) - Indicates if the request was successful - **data** (object) - Contains status data - **status** (string) - Current system status - **recent_jobs** (array) - List of recent jobs #### Error Responses - **401** - No API key, or an unknown one - **message** (string) - Error message, e.g., "API key is missing" - **403** - A key on a user-role account answers this; a suspended account, or a key that may not act for the account named in its impersonation headers, answers {message} alone - **success** (boolean) - false - **message** (string) - Error message, e.g., "User does not have the required permissions." - **500** - Server error - **status** (string) - "error" - **message** (string) - Error message - **error** (string|null) - Exception message when debug mode is on; null in production ``` -------------------------------- ### GET /api/v1/catch-all Source: https://system.atriomail.com/api-docs Retrieves a list of catch-all email configurations based on the user's role and permissions. Requires API key authentication. ```APIDOC ## GET /api/v1/catch-all ### Description Returns list of catch-all email configurations based on user's role and permissions. ### Method GET ### Endpoint /api/v1/catch-all ### Security - apiKeyAuth ### Response #### Success Response (200) - **body** (object) - Successful operation #### Response Example {} ``` -------------------------------- ### GET /api/v1/dashboard Source: https://system.atriomail.com/api-docs Returns consolidated statistics about domains, mailboxes, and migrations. Requires an admin or superadmin key. ```APIDOC ## GET /api/v1/dashboard ### Description Returns consolidated statistics about domains, mailboxes, and migrations. Needs an admin or superadmin key. ### Method GET ### Endpoint /api/v1/dashboard ### Security - apiKeyAuth ### Response #### Success Response (200) - **status** (string) - Example: "success" - **data** (object) - Contains: - **timestamp** (string, date-time) - Timestamp of the statistics - **email_system** (object) - Contains: - **domains_count** (integer) - Number of domains - **mailboxes_count** (integer) - Number of mailboxes - **total_quota_mb** (number) - Total quota in MB - **used_quota_mb** (number) - Used quota in MB - **quota_usage_percent** (number) - Quota usage percentage - **aliases_count** (integer) - Number of aliases - **migrations** (object) - Contains: - **total_count** (integer) - Total number of migrations - **active_count** (integer) - Number of active migrations - **running_count** (integer) - Number of running migrations #### Response Example { "status": "success", "data": { "timestamp": "2023-01-01T00:00:00Z", "email_system": { "domains_count": 10, "mailboxes_count": 100, "total_quota_mb": 1024, "used_quota_mb": 512, "quota_usage_percent": 50, "aliases_count": 20 }, "migrations": { "total_count": 5, "active_count": 2, "running_count": 1 } } } #### Error Response (403) - **success** (boolean) - Example: false - **message** (string) - Example: "User does not have the required permissions." ``` -------------------------------- ### GET /api/v1/mailboxes Source: https://system.atriomail.com/api-docs Returns a list of email mailboxes based on the user's role and permissions. ```APIDOC ## GET /api/v1/mailboxes ### Description Returns a list of email mailboxes based on the user's role and permissions. ### Method GET ### Endpoint /api/v1/mailboxes ### Response #### Success Response (200) - **body** (object) - The list of mailboxes. #### Response Example {} ### Security Requires API key authentication (apiKeyAuth). ``` -------------------------------- ### GET /api/v1/migrations Source: https://system.atriomail.com/api-docs Lists migration jobs whose destination is the account's own address, the address of a user the account created, or a mailbox the account created. A superadmin sees all jobs. Requires an admin or superadmin key. ```APIDOC ## GET /api/v1/migrations ### Description Lists migration jobs whose destination is the account's own address, the address of a user the account created, or a mailbox the account created. A superadmin sees all jobs. An unreachable mail server gives an empty list, not an error. Requires an admin or superadmin key. ### Method GET ### Endpoint /api/v1/migrations ### Response #### Success Response (200) - **status** (string) - Example: "success" - **data** (object) - Contains: - **total** (integer) - Example: 2 - **jobs** (array) - List of migration jobs. For an admin whose jobs are not the first entries of the mail server's list, this arrives as a JSON object keyed by position. #### Response Example { "status": "success", "data": { "total": 2, "jobs": [] } } #### Error Responses - **401** - No API key, or an unknown one. Example: { "message": "API key is missing" } - **403** - A key on a user-role account answers this; a suspended account, or a key that may not act for the account named in its impersonation headers, answers {message} alone. Example: { "success": false, "message": "User does not have the required permissions." } - **500** - Internal server error. ``` -------------------------------- ### GET /api/v1/domains/{id} Source: https://system.atriomail.com/api-docs Returns a single domain by ID if the user has access. Requires the domain ID as a path parameter. ```APIDOC ## GET /api/v1/domains/{id} ### Description Returns a single domain by ID if user has access. ### Method GET ### Endpoint /api/v1/domains/{id} ### Parameters #### Path Parameters - **id** (integer) - Required - Domain ID ### Response #### Success Response (200) - **data** (Domain) - The domain object #### Response Example { "data": { "id": 1, "domain_name": "example.com", "description": "My company domain", "active": true } } ### Error Responses - **401** - Unauthenticated - **403** - Forbidden ### Security - apiKeyAuth ``` -------------------------------- ### GET /api/v1/search Source: https://system.atriomail.com/api-docs Searches across all resources (domains, mailboxes, aliases, migrations) matching the query. Requires an admin or superadmin key. ```APIDOC ## GET /api/v1/search ### Description Searches for domains, mailboxes, aliases, and migrations matching the query. Needs an admin or superadmin key. ### Method GET ### Endpoint /api/v1/search ### Parameters #### Query Parameters - **q** (string) - Required - Search query (minimum 3 characters) ### Security - apiKeyAuth ### Response #### Success Response (200) - **success** (boolean) - Indicates if the request was successful - **data** (object) - Contains search results #### Error Responses - **401** - No API key, or an unknown one - **message** (string) - Error message, e.g., "API key is missing" - **403** - A key on a user-role account answers this; a suspended account, or a key that may not act for the account named in its impersonation headers, answers {message} alone - **success** (boolean) - false - **message** (string) - Error message, e.g., "User does not have the required permissions." - **500** - Server error - **status** (string) - "error" - **message** (string) - Error message - **error** (string|null) - Exception message when debug mode is on; null in production ``` -------------------------------- ### GET /api/v1/domains Source: https://system.atriomail.com/api-docs Retrieves a list of email domains. Returns a paginated collection of domain resources. ```APIDOC ## GET /api/v1/domains ### Description Retrieves a list of email domains. ### Method GET ### Endpoint /api/v1/domains ### Response #### Success Response (200) - **data** (array of Domain) - List of domain objects - **links** (object) - Pagination links - **meta** (object) - Pagination metadata #### Response Example { "data": [ { "id": 1, "domain_name": "example.com", "description": "My company domain", "active": true } ], "links": {}, "meta": {} } ### Error Responses - **401** - Unauthenticated - **403** - Forbidden ### Security - apiKeyAuth ``` -------------------------------- ### GET /api/v1/domains/{id}/mail-settings Source: https://system.atriomail.com/api-docs Returns the MX record, SPF record, and IMAP/SMTP client settings a customer needs to configure their domain and mail clients. Reflects the owning reseller's white-label mail server hostname when one is configured. ```APIDOC ## GET /api/v1/domains/{id}/mail-settings ### Description Returns the MX record, SPF record, and IMAP/SMTP client settings a customer needs to configure their domain and mail clients. Reflects the owning reseller's white-label mail server hostname when one is configured. ### Method GET ### Endpoint /api/v1/domains/{id}/mail-settings ### Parameters #### Path Parameters - **id** (integer) - Required - Domain ID ### Response #### Success Response (200) - **domain** (string) - The domain name - **mx** (object) - MX record settings - **spf** (string) - SPF record - **imap** (object) - IMAP client settings - **smtp** (object) - SMTP client settings - **username_pattern** (string) - Username pattern for mail clients #### Response Example { "domain": "example.com", "mx": {}, "spf": "v=spf1 ...", "imap": {}, "smtp": {}, "username_pattern": "user@example.com" } #### Error Responses - **404** - Domain not found ### Security - apiKeyAuth ``` -------------------------------- ### GET /api/v1/mailboxes/{id} Source: https://system.atriomail.com/api-docs Returns details of a specific mailbox identified by its ID. ```APIDOC ## GET /api/v1/mailboxes/{id} ### Description Returns details of a specific mailbox. ### Method GET ### Endpoint /api/v1/mailboxes/{id} ### Parameters #### Path Parameters - **id** (integer) - Required - The ID of the mailbox. ### Response #### Success Response (200) - **description**: Successful operation. ### Security Requires API key authentication. ``` -------------------------------- ### GET /api/v1/users Source: https://system.atriomail.com/api-docs Returns a list of users based on role permissions. Requires API key authentication. ```APIDOC ## GET /api/v1/users ### Description Returns list of users based on role permissions. ### Method GET ### Endpoint /api/v1/users ### Response #### Success Response (200) - **content** (object) - Successful operation #### Response Example { "content": {} } ### Security - apiKeyAuth ``` -------------------------------- ### GET /api/v1/forwarders/{id} Source: https://system.atriomail.com/api-docs Returns details of a specific forwarder identified by its ID. Requires API key authentication. ```APIDOC ## GET /api/v1/forwarders/{id} ### Description Returns details of a specific forwarder. ### Method GET ### Endpoint /api/v1/forwarders/{id} ### Parameters #### Path Parameters - **id** (integer) - Required - The ID of the forwarder. ### Response #### Success Response (200) - **body** (object) - Successful operation #### Response Example {} #### Error Response (404) - No forwarder with this id: none exists, or the id is an alias or a catch-all ### Security - apiKeyAuth ``` -------------------------------- ### GET /api/v1/status Source: https://system.atriomail.com/api-docs Returns health status of the API and connected services. Needs an admin or superadmin key. ```APIDOC ## GET /api/v1/status ### Description Returns health status of the API and connected services. Needs an admin or superadmin key. ### Method GET ### Endpoint /api/v1/status ### Response #### Success Response (200) - **status** (string) - Health status, e.g., "healthy". - **timestamp** (string, date-time) - Timestamp of the response. - **services** (object) - Status of connected services. - **database** (object) - Database status. - **status** (string) - Status of the database. - **message** (string) - Message from the database. - **mailcow** (object) - Mailcow status. - **status** (string) - Status of mailcow. - **message** (string) - Message from mailcow. - **api_version** (string) - API version. #### Response Example { "status": "healthy", "timestamp": "2023-01-01T00:00:00Z", "services": { "database": { "status": "ok", "message": "Connected" }, "mailcow": { "status": "ok", "message": "Connected" } }, "api_version": "1.0" } #### Error Response (401) - **message** (string) - Error message, e.g., "API key is missing". #### Error Response Example { "message": "API key is missing" } ### Security - **apiKeyAuth** - Required ``` -------------------------------- ### GET /api/v1/migrations Source: https://system.atriomail.com/api-docs Retrieves the list of migration jobs from the mail server. The response includes the first five jobs in the mail server's order, not sorted by date. Requires an API key with appropriate permissions. ```APIDOC ## GET /api/v1/migrations ### Description Retrieves the list of migration jobs from the mail server. The response includes the first five jobs in the mail server's order, not sorted by date. Requires an API key with appropriate permissions. ### Method GET ### Endpoint /api/v1/migrations ### Parameters #### Query Parameters - **limit** (integer) - Optional - The maximum number of jobs to return. Default is 5. ### Response #### Success Response (200) - **jobs** (array of MigrationJob) - The list of migration jobs. #### Response Example { "jobs": [ { "id": "string", "name": "string", "active": true, "interval": "string" } ] } #### Error Responses - **401**: No API key, or an unknown one. Response body: { "message": "API key is missing" } - **403**: A key on a user-role account answers this; a suspended account, or a key that may not act for the account named in its impersonation headers, answers {message} alone. Response body: { "success": false, "message": "User does not have the required permissions." } - **500**: An unexpected failure here (the database or the audit log); an unreachable mail server is not one, it answers 200 with no jobs. Response body: { "status": "error", "message": "Failed to fetch migration statistics", "error": null } ### Security - apiKeyAuth: [] ``` -------------------------------- ### GET /api/v1/migrations/{id} Source: https://system.atriomail.com/api-docs Retrieves a specific migration job and its log entries from the mail server. Requires an admin or superadmin API key. ```APIDOC ## GET /api/v1/migrations/{id} ### Description Retrieves a specific migration job and its log entries from the mail server. Requires an admin or superadmin API key. ### Method GET ### Endpoint /api/v1/migrations/{id} ### Parameters #### Path Parameters - **id** (integer) - Required - The job id. ### Response #### Success Response (200) - **status** (string) - Example: "success" - **data** (object) - Contains the job and its logs. - **job** (MigrationJob) - The migration job object. - **logs** (array) - The mail server's log entries for this job; empty when it has not run, or when the log could not be read. #### Response Example { "status": "success", "data": { "job": {}, "logs": [] } } #### Error Response (401) - **description** - No API key, or an unknown one. ### Security - **apiKeyAuth** - API key authentication required. ``` -------------------------------- ### POST /api/v1/migrations/{id}/toggle Source: https://system.atriomail.com/api-docs Switches a migration job on or off. Flips the active status on the mail server for a job from the list GET /api/v1/migrations gives. An active job is scheduled on its interval, an inactive one is not. No body is required. Needs an admin or superadmin key. ```APIDOC ## POST /api/v1/migrations/{id}/toggle ### Description Switches a migration job on or off. Flips the active status on the mail server for a job from the list GET /api/v1/migrations gives. An active job is scheduled on its interval, an inactive one is not. No body is required. Needs an admin or superadmin key. ### Method POST ### Endpoint /api/v1/migrations/{id}/toggle ### Parameters #### Path Parameters - **id** (string) - Required - The job id. ### Response #### Success Response (200) - **success** (boolean) - Indicates if the toggle was successful. - **message** (string) - A message describing the result. #### Response Example { "success": true, "message": "Migration job toggled successfully." } #### Error Responses - **401**: No API key, or an unknown one. Response body: { "message": "API key is missing" } - **403**: A key on a user-role account answers this; a suspended account, or a key that may not act for the account named in its impersonation headers, answers {message} alone. Response body: { "success": false, "message": "User does not have the required permissions." } - **500**: An unexpected failure here (the database or the audit log); an unreachable mail server is not one, it answers 200 with no jobs. Response body: { "status": "error", "message": "Failed to fetch migration statistics", "error": null } ### Security - apiKeyAuth: [] ``` -------------------------------- ### GET /api/v1/users/{id} Source: https://system.atriomail.com/api-docs Returns details of a specific user identified by the path parameter id. Requires API key authentication. ```APIDOC ## GET /api/v1/users/{id} ### Description Returns details of a specific user. ### Method GET ### Endpoint /api/v1/users/{id} ### Parameters #### Path Parameters - **id** (integer) - Required - User ID ### Response #### Success Response (200) - **content** (object) - Successful operation #### Response Example { "content": {} } ### Security - apiKeyAuth ``` -------------------------------- ### GET /api/v1/mailboxes/{id}/quota Source: https://system.atriomail.com/api-docs Returns quota information for a specific mailbox. The mailbox must be one the API key can see. ```APIDOC ## GET /api/v1/mailboxes/{id}/quota ### Description Returns quota information for a specific mailbox. The mailbox must be one the API key can see. ### Method GET ### Endpoint /api/v1/mailboxes/{id}/quota ### Parameters #### Path Parameters - **id** (integer) - Required - Mailbox ID. ### Response #### Success Response (200) - **object** - Quota information. #### Response Example {} #### Error Response (401) - **message** (string) - Error message when API key is missing or unknown. #### Error Response Example { "message": "API key is missing" } ### Security - apiKeyAuth ``` -------------------------------- ### GET /api/v1/migrations/stats Source: https://system.atriomail.com/api-docs Counts the migration jobs, including total, active, running, and recent jobs. Requires an admin or superadmin API key. ```APIDOC ## GET /api/v1/migrations/stats ### Description Counts the migration jobs, including total, active, running, and recent jobs. Requires an admin or superadmin API key. ### Method GET ### Endpoint /api/v1/migrations/stats ### Response #### Success Response (200) - **status** (string) - Status of the response. - **data** (object) - Contains job statistics. - **total_jobs** (integer) - Total number of migration jobs. - **active_jobs** (integer) - Number of active migration jobs. - **running_jobs** (integer) - Number of running migration jobs. - **recent_jobs** (array) - List of recent migration jobs. #### Response Example { "status": "success", "data": { "total_jobs": 2, "active_jobs": 1, "running_jobs": 0, "recent_jobs": [] } } ### Security Requires apiKeyAuth with admin or superadmin permissions. ``` -------------------------------- ### GET /api/v1/forwarders Source: https://system.atriomail.com/api-docs Returns a list of email forwarders based on the user's role and permissions. This endpoint requires API key authentication. ```APIDOC ## GET /api/v1/forwarders ### Description Returns list of email forwarders based on user's role and permissions. ### Method GET ### Endpoint /api/v1/forwarders ### Response #### Success Response (200) - **body** (object) - Successful operation #### Response Example {} ### Security - apiKeyAuth ``` -------------------------------- ### GET /api/v1/dns-check/quota Source: https://system.atriomail.com/api-docs Retrieves the current DNS check allowance and usage for the account. The allowance is based on the number of domains in the account, with a minimum of 10 checks per rolling 24 hours and 40 per rolling 7 days. This call is free. ```APIDOC ## GET /api/v1/dns-check/quota ### Description Retrieves the current DNS check allowance and usage for the account. The allowance grows with the number of domains in the account: 2 per domain per rolling 24 hours (minimum 10) and 8 per domain per rolling 7 days (minimum 40). Checks of domains outside the account share it and are capped at the minimums on their own. This call is free. ### Method GET ### Endpoint /api/v1/dns-check/quota ### Parameters None ### Response #### Success Response (200) - **DnsCheckQuota** (object) - Allowance and usage details. #### Response Example { "allowance": 10, "usage": 3 } #### Error Responses - **401** - API key missing or invalid. ### Security - apiKeyAuth ``` -------------------------------- ### GET /api/v1/domains Source: https://system.atriomail.com/api-docs Returns a list of email domains based on the user's role and permissions. Supports pagination, filtering by IDs, sorting, and eager-loading related data. ```APIDOC ## GET /api/v1/domains ### Description Returns list of email domains based on user's role and permissions. ### Method GET ### Endpoint /api/v1/domains ### Parameters #### Query Parameters - **page** (integer) - Optional - Page number. - **ids[]** (array of integers) - Optional - Return only the domains with these ids (still scoped by the caller's own visibility, same as every other filter here). Lets a caller that already knows N specific ids fetch all of them in one call instead of N. - **per_page** (integer) - Optional - Number of items per page. - **sort** (string) - Optional - Sort field (prefix with - for descending). - **with_counts** (boolean) - Optional - Add aliases_count to each row. mailboxes_count is always present on this endpoint. Cheaper than include=, which loads the rows themselves. - **include** (string) - Optional - Comma-separated relations to eager-load: creator, mailboxes, aliases. ### Response #### Success Response (200) - **Successful operation** - List of domains. #### Response Example { "data": [ { "id": 1, "name": "example.com", "mailboxes_count": 5, "aliases_count": 2 } ] } #### Error Responses - **401** - API key missing or invalid. ### Security - apiKeyAuth ``` -------------------------------- ### GET /api/v1/domains/{id}/ses-dns-records Source: https://system.atriomail.com/api-docs Returns the DNS records needed to verify the domain in Amazon SES, plus the domain's Mailcow DKIM record (mailcow_dkim) so a caller can publish the complete set in one pass. Requires SES to be enabled for the domain. ```APIDOC ## GET /api/v1/domains/{id}/ses-dns-records ### Description Returns the DNS records needed to verify the domain in Amazon SES, plus the domain's Mailcow DKIM record (mailcow_dkim) so a caller can publish the complete set in one pass. Requires SES to be enabled for the domain. ### Method GET ### Endpoint /api/v1/domains/{id}/ses-dns-records ### Parameters #### Path Parameters - **id** (integer) - Required - Domain ID ### Response #### Success Response (200) - **mailcow_dkim** (string or null) - The domain's Mailcow DKIM record, null until Mailcow has issued a key - **ses_records** (array) - DNS records needed for SES verification #### Response Example { "mailcow_dkim": "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC...", "ses_records": [ { "name": "_amazonses.example.com", "type": "TXT", "value": "" } ] } ``` -------------------------------- ### POST /api/v1/dns-check Source: https://system.atriomail.com/api-docs Checks a domain's mail DNS records by domain name. In auto mode, a domain the key can list is checked against its exact expected values; any other domain gets a generic check. The generic result never reveals whether a domain is hosted on the platform. ```APIDOC ## POST /api/v1/dns-check ### Description Checks a domain's mail DNS records by domain name. In auto mode, a domain the key can list is checked against its exact expected values; any other domain gets a generic check. The generic result never reveals whether a domain is hosted on the platform. ### Method POST ### Endpoint /api/v1/dns-check ### Parameters #### Request Body - **domain** (string) - Required - The domain name to check. - **mode** (string) - Optional - Check mode: auto, account, or generic. Default is auto. In account mode, 404 unless the domain is in the account. In generic mode, never consults the account. - **selector** (string) - Optional - DKIM selector to look up in generic mode. - **fresh** (boolean) - Optional - If true, bypass the cache. ### Request Example { "domain": "customer.com", "mode": "auto", "selector": "dkim", "fresh": false } ### Response #### Success Response (200) - **DnsCheckReport** - The check report. #### Response Example { "$ref": "#/components/schemas/DnsCheckReport" } ### Error Responses - **401** - API key missing or invalid. - **404** - mode is account and the domain is not in the account. - **422** - The domain or selector is not valid. ``` -------------------------------- ### GET /api/v2/domains/{id}/ses-dns-records Source: https://system.atriomail.com/api-docs Retrieves the SES DNS records required for domain verification. This endpoint is identical to the v1 version except that the dns_records field is returned as a JSON array of record objects instead of a JSON-encoded string. ```APIDOC ## GET /api/v2/domains/{id}/ses-dns-records ### Description Retrieves the SES DNS records required for domain verification. This endpoint is identical to the v1 version except that the dns_records field is returned as a JSON array of record objects instead of a JSON-encoded string. ### Method GET ### Endpoint /api/v2/domains/{id}/ses-dns-records ### Parameters #### Path Parameters - **id** (integer) - Required - The ID of the domain. ### Response #### Success Response (200) - **domain** (string) - The domain name. - **ses_enabled** (boolean) - Indicates if SES is enabled for the domain. - **verification_status** (string) - The verification status of the domain. - **dkim_status** (string) - Amazon SES DKIM state for the SES identity, not the Mailcow record below. - **dns_records** (array) - The SES record list as an array of objects with properties: type, name, value, ttl. - **mailcow_dkim** (object, nullable) - The domain's Mailcow DKIM TXT record. Null when no key is available right now — either Mailcow has not issued one yet or it could not be reached. Never treat null as 'remove the record': leave an already-published record in place. - **type** (string) - Example: "TXT" - **host** (string) - Record name relative to the zone. Example: "dkim._domainkey" - **name** (string) - Fully qualified record name. Example: "dkim._domainkey.example.com" - **value** (string) - Example: "v=DKIM1;k=rsa;t=s;s=email;p=MIIBIjANBgkq..." - **ttl** (integer) - Example: 1800 #### Response Example { "domain": "example.com", "ses_enabled": true, "verification_status": "Success", "dkim_status": "Success", "dns_records": [ { "type": "TXT", "name": "_amazonses.example.com", "value": "exampleRecordValue", "ttl": 1800 } ], "mailcow_dkim": { "type": "TXT", "host": "dkim._domainkey", "name": "dkim._domainkey.example.com", "value": "v=DKIM1;k=rsa;t=s;s=email;p=MIIBIjANBgkq...", "ttl": 1800 } } #### Error Response (404) - **description**: Domain not found ``` -------------------------------- ### POST /api/v1/catch-all Source: https://system.atriomail.com/api-docs Creates a new catch-all email configuration. Requires API key authentication and a request body with domain_id and goto_array. ```APIDOC ## POST /api/v1/catch-all ### Description Creates a new catch-all email configuration. ### Method POST ### Endpoint /api/v1/catch-all ### Security - apiKeyAuth ### Parameters #### Request Body - **domain_id** (integer) - Required - The domain identifier. - **goto_array** (array of string) - Required - List of email addresses to forward catch-all emails to. - **active** (boolean) - Optional - Whether the configuration is active. - **private_comment** (string) - Optional - A private comment for the configuration. ### Request Example { "domain_id": 1, "goto_array": ["user@example.com"], "active": true, "private_comment": "Example comment" } ### Response #### Success Response (201) - **body** (object) - Catch-all created successfully. #### Response Example {} ``` -------------------------------- ### POST /api/v1/migrations Source: https://system.atriomail.com/api-docs Creates a new migration job. Requires an admin or superadmin API key. ```APIDOC ## POST /api/v1/migrations ### Description Creates a new migration job. Requires an admin or superadmin API key. ### Method POST ### Endpoint /api/v1/migrations ### Parameters #### Request Body - **username** (string) - Required - The username field is required. ### Request Example { "username": "string" } ### Response #### Success Response (200) - **status** (string) - Example: "success" - **data** (object) - Contains the created migration job. #### Response Example { "status": "success", "data": {} } #### Error Response (422) - **errors** (object) - Example: { "username": ["The username field is required."] } #### Error Response (500) - **status** (string) - Example: "error" - **message** (string) - Example: "Failed to create migration job" - **error** (string|null) - The exception message when debug mode is on, null in production; absent when the mail server answered with an error status. ### Security - **apiKeyAuth** - API key authentication required. ``` -------------------------------- ### POST /api/v1/domains Source: https://system.atriomail.com/api-docs Creates a new email domain and returns the created resource. Requires a domain name and optionally a description and active status. ```APIDOC ## POST /api/v1/domains ### Description Creates a new email domain and returns the created resource. ### Method POST ### Endpoint /api/v1/domains ### Parameters #### Request Body - **domain_name** (string) - Required - Domain name - **description** (string) - Optional - Domain description - **active** (boolean) - Optional - Domain status ### Request Example { "domain_name": "example.com", "description": "My company domain", "active": true } ### Response #### Success Response (201) - **Domain** - The created domain resource #### Response Example { "id": 1, "domain_name": "example.com", "description": "My company domain", "active": true } ### Error Responses - **400** - Invalid input - **401** - Unauthenticated - **403** - Forbidden - **422** - Validation error ### Security - apiKeyAuth ``` -------------------------------- ### POST /api/v1/mailboxes Source: https://system.atriomail.com/api-docs Creates a new mailbox. Requires an active subscription; otherwise returns a 402 error. ```APIDOC ## POST /api/v1/mailboxes ### Description Creates a new mailbox. Requires an active subscription; otherwise returns a 402 error. ### Method POST ### Endpoint /api/v1/mailboxes ### Parameters #### Request Body - **name** (string) - Required - The name of the mailbox. - **password** (string, format: password) - Required - The password for the mailbox. - **quota** (integer) - Optional - Mailbox size in MB. A value below 15360 (the 15 GB every mailbox includes) is raised to 15360; null leaves the size unchanged. - **active** (boolean) - Optional - Whether the mailbox is active. - **revoke_sessions** (boolean) - Optional - Also delete the mailbox's app passwords, close its open mail connections and clear the login cache. ### Response #### Success Response (201) - **description**: Mailbox created successfully. #### Error Response (402) - **message** (string) - Error message. - **code** (string) - Error code, e.g., "subscription_required". ### Security Requires API key authentication. ``` -------------------------------- ### POST /api/v1/users Source: https://system.atriomail.com/api-docs Creates a new user account. Requires name, email, and password in the request body. Requires API key authentication. ```APIDOC ## POST /api/v1/users ### Description Creates a new user account. ### Method POST ### Endpoint /api/v1/users ### Parameters #### Request Body - **name** (string) - Required - User's name - **email** (string, email) - Required - User's email - **password** (string, password) - Required - User's password ### Request Example { "name": "string", "email": "string", "password": "string" } ### Response #### Success Response (201) - **content** (object) - User created successfully #### Response Example { "content": {} } ### Security - apiKeyAuth ``` -------------------------------- ### POST /api/v1/migrations Source: https://system.atriomail.com/api-docs Creates a new migration job. The request body must include required fields such as username, host1, port1, user1, password1, and enc1. Optional fields control scheduling, filtering, and transfer limits. ```APIDOC ## POST /api/v1/migrations ### Description Creates a new migration job. The request body must include required fields such as username, host1, port1, user1, password1, and enc1. Optional fields control scheduling, filtering, and transfer limits. ### Method POST ### Endpoint /api/v1/migrations ### Parameters #### Request Body - **username** (string) - Required - A mailbox on this platform the key can manage: the destination. Example: john@example.com - **host1** (string) - Required - The remote IMAP host. Max length: 255. Example: imap.old-provider.com - **port1** (integer) - Required - Port number. Minimum: 1, Maximum: 65535. Example: 993 - **user1** (string) - Required - The login on the remote host. Max length: 255. Example: john@old-provider.com - **password1** (string) - Required - The remote login's password; stored on the mail server, never returned. Format: password. Example: remote-password - **enc1** (string) - Required - Encryption type. Enum: TLS, SSL, PLAIN. Example: SSL - **mins_interval** (integer) - Optional - Minutes between runs. Minimum: 1. Default: 60. Example: 60 - **subfolder2** (string) - Optional - Folder in the destination mailbox to sync into; empty for the root. Example: "" - **maxage** (integer) - Optional - Only mail newer than this many days; 0 for everything. Minimum: 0. Default: 0. Example: 0 - **maxbytespersecond** (integer) - Optional - Transfer cap; 0 for none. Minimum: 0. Default: 0. Example: 0 - **timeout1** (integer) - Optional - Timeout in seconds. Minimum: 1. Default: 600. Example: 600 - **automap** (integer) - Optional - Automap flag. Enum: 0, 1. Default: 1. Example: 1 - **skipcrossduplicates** (integer) - Optional - Skip cross duplicates flag. Enum: 0, 1. Default: 0. Example: 0 - **subscribeall** (integer) - Optional - Subscribe all flag. Enum: 0, 1. Default: 1. Example: 1 - **active** (integer) - Optional - Active flag. Enum: 0, 1. Default: 1. Example: 1 - **is_running** (integer) - Optional - Is running flag. Enum: 0, 1. Default: 0. Example: 0 - **last_run** (string) - Optional - Last run timestamp. Nullable. Example: 2026-07-01 12:00:00 ### Request Example { "username": "john@example.com", "host1": "imap.old-provider.com", "port1": 993, "user1": "john@old-provider.com", "password1": "remote-password", "enc1": "SSL", "mins_interval": 60, "subfolder2": "", "maxage": 0, "maxbytespersecond": 0, "timeout1": 600, "automap": 1, "skipcrossduplicates": 0, "subscribeall": 1, "active": 1, "is_running": 0, "last_run": "2026-07-01 12:00:00" } ### Response #### Success Response (200) - **id** (integer) - The ID of the created migration job. - **username** (string) - The destination mailbox. - **host1** (string) - The remote IMAP host. - **port1** (integer) - The remote port. - **user1** (string) - The remote login. - **enc1** (string) - Encryption type. - **mins_interval** (integer) - Minutes between runs. - **subfolder2** (string) - Destination folder. - **maxage** (integer) - Max age in days. - **maxbytespersecond** (integer) - Transfer cap. - **timeout1** (integer) - Timeout in seconds. - **automap** (integer) - Automap flag. - **skipcrossduplicates** (integer) - Skip cross duplicates flag. - **subscribeall** (integer) - Subscribe all flag. - **active** (integer) - Active flag. - **is_running** (integer) - Is running flag. - **last_run** (string) - Last run timestamp. #### Response Example { "id": 1, "username": "john@example.com", "host1": "imap.old-provider.com", "port1": 993, "user1": "john@old-provider.com", "enc1": "SSL", "mins_interval": 60, "subfolder2": "", "maxage": 0, "maxbytespersecond": 0, "timeout1": 600, "automap": 1, "skipcrossduplicates": 0, "subscribeall": 1, "active": 1, "is_running": 0, "last_run": "2026-07-01 12:00:00" } ``` -------------------------------- ### PUT /api/v1/catch-all/{id} Source: https://system.atriomail.com/api-docs Updates an existing catch-all configuration by its ID. The request body must include the fields to update. Requires an API key for authentication. ```APIDOC ## PUT /api/v1/catch-all/{id} ### Description Updates an existing catch-all configuration. ### Method PUT ### Endpoint /api/v1/catch-all/{id} ### Parameters #### Path Parameters - **id** (integer) - Required - The ID of the catch-all configuration. #### Request Body - **goto_array** (array of strings) - Optional - List of email addresses to forward to. - **active** (boolean) - Optional - Whether the catch-all is active. - **private_comment** (string) - Optional - A private comment for the configuration. ### Request Example { "goto_array": ["new@example.com"], "active": true, "private_comment": "Updated comment" } ### Response #### Success Response (200) - Returns an object confirming the update. #### Response Example { "message": "Catch-all updated successfully" } ### Security Requires API key authentication (apiKeyAuth). ```