Skip to content

Latest commit

 

History

History
279 lines (235 loc) · 20.2 KB

README.md

File metadata and controls

279 lines (235 loc) · 20.2 KB

Go API client for mailcow

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

Overview

This API client was generated by the OpenAPI Generator project. By using the OpenAPI-spec from a remote server, you can easily generate an API client.

  • API version: 1.0.0
  • Package version: 1.0.0
  • Build package: org.openapitools.codegen.languages.GoClientCodegen

Installation

Install the following dependencies:

go get github.com/stretchr/testify/assert
go get golang.org/x/net/context

Put the package under your project folder and add the following in import:

import mailcow "github.com/shoopea/mailcow-go"

To use a proxy, set the environment variable HTTP_PROXY:

os.Setenv("HTTP_PROXY", "http://proxy_name:proxy_port")

Configuration of Server URL

Default configuration comes with Servers field that contains server objects as defined in the OpenAPI specification.

Select Server Configuration

For using other server than the one defined on index 0 set context value sw.ContextServerIndex of type int.

ctx := context.WithValue(context.Background(), mailcow.ContextServerIndex, 1)

Templated Server URL

Templated server URL is formatted using default variables from configuration or from context value sw.ContextServerVariables of type map[string]string.

ctx := context.WithValue(context.Background(), mailcow.ContextServerVariables, map[string]string{
	"basePath": "v2",
})

Note, enum values are always validated and all unused variables are silently ignored.

URLs Configuration per Operation

Each operation can use different server URL defined using OperationServers map in the Configuration. An operation is uniquely identified by "{classname}Service.{nickname}" string. Similar rules for overriding default operation server index and variables applies by using sw.ContextOperationServerIndices and sw.ContextOperationServerVariables context maps.

ctx := context.WithValue(context.Background(), mailcow.ContextOperationServerIndices, map[string]int{
	"{classname}Service.{nickname}": 2,
})
ctx = context.WithValue(context.Background(), mailcow.ContextOperationServerVariables, map[string]map[string]string{
	"{classname}Service.{nickname}": {
		"port": "8443",
	},
})

Documentation for API Endpoints

All URIs are relative to http://localhost

Class Method HTTP request Description
AddressRewritingApi CreateBCCMap Post /api/v1/add/bcc Create BCC Map
AddressRewritingApi CreateRecipientMap Post /api/v1/add/recipient_map Create Recipient Map
AddressRewritingApi DeleteBCCMap Post /api/v1/delete/bcc Delete BCC Map
AddressRewritingApi DeleteRecipientMap Post /api/v1/delete/recipient_map Delete Recipient Map
AddressRewritingApi GetBCCMap Get /api/v1/get/bcc/{id} Get BCC Map
AddressRewritingApi GetRecipientMap Get /api/v1/get/recipient_map/{id} Get Recipient Map
AliasesApi CreateAlias Post /api/v1/add/alias Create alias
AliasesApi CreateTimeLimitedAlias Post /api/v1/add/time_limited_alias Create time limited alias
AliasesApi DeleteAlias Post /api/v1/delete/alias Delete alias
AliasesApi GetAliases Get /api/v1/get/alias/{id} Get aliases
AliasesApi GetTimeLimitedAliases Get /api/v1/get/time_limited_aliases/{mailbox} Get time limited aliases
AliasesApi UpdateAlias Post /api/v1/edit/alias Update alias
AppPasswordsApi CreateAppPassword Post /api/v1/add/app-passwd Create App Password
AppPasswordsApi DeleteAppPassword Post /api/v1/delete/app-passwd Delete App Password
AppPasswordsApi GetAppPassword Get /api/v1/get/app-passwd/all/{mailbox} Get App Password
DKIMApi DeleteDKIMKey Post /api/v1/delete/dkim Delete DKIM Key
DKIMApi DuplicateDKIMKey Post /api/v1/add/dkim_duplicate Duplicate DKIM Key
DKIMApi GenerateDKIMKey Post /api/v1/add/dkim Generate DKIM Key
DKIMApi GetDKIMKey Get /api/v1/get/dkim/{domain} Get DKIM Key
DomainAdminApi CreateDomainAdminUser Post /api/v1/add/domain-admin Create Domain Admin user
DomainAdminApi DeleteDomainAdmin Post /api/v1/delete/domain-admin Delete Domain Admin
DomainAdminApi EditDomainAdminACL Post /api/v1/edit/da-acl Edit Domain Admin ACL
DomainAdminApi EditDomainAdminUser Post /api/v1/edit/domain-admin Edit Domain Admin user
DomainAdminApi GetDomainAdmins Get /api/v1/get/domain-admin/all Get Domain Admins
DomainAntispamPoliciesApi CreateDomainPolicy Post /api/v1/add/domain-policy Create domain policy
DomainAntispamPoliciesApi DeleteDomainPolicy Post /api/v1/delete/domain-policy Delete domain policy
DomainAntispamPoliciesApi ListBlacklistDomainPolicy Get /api/v1/get/policy_bl_domain/{domain} List blacklist domain policy
DomainAntispamPoliciesApi ListWhitelistDomainPolicy Get /api/v1/get/policy_wl_domain/{domain} List whitelist domain policy
DomainsApi CreateDomain Post /api/v1/add/domain Create domain
DomainsApi DeleteDomain Post /api/v1/delete/domain Delete domain
DomainsApi DeleteDomainTags Post /api/v1/delete/domain/tag/{domain} Delete domain tags
DomainsApi GetDomains Get /api/v1/get/domain/{id} Get domains
DomainsApi UpdateDomain Post /api/v1/edit/domain Update domain
Fail2BanApi EditFail2Ban Post /api/v1/edit/fail2ban Edit Fail2Ban
Fail2BanApi GetFail2BanConfig Get /api/v1/get/fail2ban Get Fail2Ban Config
FordwardingHostsApi AddForwardHost Post /api/v1/add/fwdhost Add Forward Host
FordwardingHostsApi DeleteForwardHost Post /api/v1/delete/fwdhost Delete Forward Host
FordwardingHostsApi GetForwardingHosts Get /api/v1/get/fwdhost/all Get Forwarding Hosts
LogsApi GetACMELogs Get /api/v1/get/logs/acme/{count} Get ACME logs
LogsApi GetApiLogs Get /api/v1/get/logs/api/{count} Get Api logs
LogsApi GetAutodiscoverLogs Get /api/v1/get/logs/autodiscover/{count} Get Autodiscover logs
LogsApi GetDovecotLogs Get /api/v1/get/logs/dovecot/{count} Get Dovecot logs
LogsApi GetNetfilterLogs Get /api/v1/get/logs/netfilter/{count} Get Netfilter logs
LogsApi GetPostfixLogs Get /api/v1/get/logs/postfix/{count} Get Postfix logs
LogsApi GetRatelimitLogs Get /api/v1/get/logs/ratelimited/{count} Get Ratelimit logs
LogsApi GetRspamdLogs Get /api/v1/get/logs/rspamd-history/{count} Get Rspamd logs
LogsApi GetSOGoLogs Get /api/v1/get/logs/sogo/{count} Get SOGo logs
LogsApi GetWatchdogLogs Get /api/v1/get/logs/watchdog/{count} Get Watchdog logs
MailboxesApi CreateMailbox Post /api/v1/add/mailbox Create mailbox
MailboxesApi DeleteMailbox Post /api/v1/delete/mailbox Delete mailbox
MailboxesApi DeleteMailboxTags Post /api/v1/delete/mailbox/tag/{mailbox} Delete mailbox tags
MailboxesApi EditMailboxSpamFilterScore Post /api/v1/edit/spam-score/ Edit mailbox spam filter score
MailboxesApi GetMailboxes Get /api/v1/get/mailbox/{id} Get mailboxes
MailboxesApi GetMailboxesOfADomain Get /api/v1/get/mailbox/all/{domain} Get mailboxes of a domain
MailboxesApi QuarantineNotifications Post /api/v1/edit/quarantine_notification Quarantine Notifications
MailboxesApi UpdateMailbox Post /api/v1/edit/mailbox Update mailbox
MailboxesApi UpdateMailboxACL Post /api/v1/edit/user-acl Update mailbox ACL
MailboxesApi UpdatePushoverSettings Post /api/v1/edit/pushover Update Pushover settings
OAuthClientsApi CreateOAuthClient Post /api/v1/add/oauth2-client Create oAuth Client
OAuthClientsApi DeleteOAuthClient Post /api/v1/delete/oauth2-client Delete oAuth Client
OAuthClientsApi GetOAuthClients Get /api/v1/get/oauth2-client/{id} Get oAuth Clients
OutgoingTLSPolicyMapOverridesApi CreateTLSPolicyMap Post /api/v1/add/tls-policy-map Create TLS Policy Map
OutgoingTLSPolicyMapOverridesApi DeleteTLSPolicyMap Post /api/v1/delete/tls-policy-map Delete TLS Policy Map
OutgoingTLSPolicyMapOverridesApi GetTLSPolicyMap Get /api/v1/get/tls-policy-map/{id} Get TLS Policy Map
QuarantineApi DeleteMailsInQuarantine Post /api/v1/delete/qitem Delete mails in Quarantine
QuarantineApi GetMailsInQuarantine Get /api/v1/get/quarantine/all Get mails in Quarantine
QueueManagerApi DeleteQueue Post /api/v1/delete/mailq Delete Queue
QueueManagerApi FlushQueue Post /api/v1/edit/mailq Flush Queue
QueueManagerApi GetQueue Get /api/v1/get/mailq/all Get Queue
RatelimitsApi EditDomainRatelimits Post /api/v1/edit/rl-domain/ Edit domain ratelimits
RatelimitsApi EditMailboxRatelimits Post /api/v1/edit/rl-mbox/ Edit mailbox ratelimits
RatelimitsApi GetDomainRatelimits Get /api/v1/get/rl-domain/{domain} Get domain ratelimits
RatelimitsApi GetMailboxRatelimits Get /api/v1/get/rl-mbox/{mailbox} Get mailbox ratelimits
ResourcesApi CreateResources Post /api/v1/add/resource Create Resources
ResourcesApi DeleteResources Post /api/v1/delete/resource Delete Resources
ResourcesApi GetResources Get /api/v1/get/resource/all Get Resources
RoutingApi CreateSenderDependentTransports Post /api/v1/add/relayhost Create Sender-Dependent Transports
RoutingApi CreateTransportMaps Post /api/v1/add/transport Create Transport Maps
RoutingApi DeleteSenderDependentTransports Post /api/v1/delete/relayhost Delete Sender-Dependent Transports
RoutingApi DeleteTransportMaps Post /api/v1/delete/transport Delete Transport Maps
RoutingApi GetSenderDependentTransports Get /api/v1/get/relayhost/{id} Get Sender-Dependent Transports
RoutingApi GetTransportMaps Get /api/v1/get/transport/{id} Get Transport Maps
SingleSignOnApi IssueDomainAdminSSOToken Post /api/v1/add/sso/domain-admin Issue Domain Admin SSO token
StatusApi GetContainerStatus Get /api/v1/get/status/containers Get container status
StatusApi GetSolrStatus Get /api/v1/get/status/solr Get solr status
StatusApi GetVersionStatus Get /api/v1/get/status/version Get version status
StatusApi GetVmailStatus Get /api/v1/get/status/vmail Get vmail status
SyncJobsApi CreateSyncJob Post /api/v1/add/syncjob Create sync job
SyncJobsApi DeleteSyncJob Post /api/v1/delete/syncjob Delete sync job
SyncJobsApi GetSyncJobs Get /api/v1/get/syncjobs/all/no_log Get sync jobs
SyncJobsApi UpdateSyncJob Post /api/v1/edit/syncjob Update sync job

Documentation For Models

Documentation For Authorization

Authentication schemes defined for the API:

ApiKeyAuth

  • Type: API key
  • API key parameter name: X-API-Key
  • Location: HTTP header

Note, each API key must be added to a map of map[string]APIKey where the key is: X-API-Key and passed in as the auth context for each request.

Documentation for Utility Methods

Due to the fact that model structure members are all pointers, this package contains a number of utility functions to easily obtain pointers to values of basic types. Each of these functions takes a value of the given basic type and returns a pointer to it:

  • PtrBool
  • PtrInt
  • PtrInt32
  • PtrInt64
  • PtrFloat
  • PtrFloat32
  • PtrFloat64
  • PtrString
  • PtrTime

Author