{
  "openapi": "3.0.4",
  "info": {
    "title": "Public Api",
    "description": "# Introduction\n\nThis API allows resellers to manage their resources in a simple, programmatic way using HTTP requests.\n\n# Conventions\n\n## Requests\n\nThe API supports different methods depending on the required action.\n\n| Method\t| Description\n| ---\t\t| ---\n| GET\t\t| Retrieve resources in a collection or get a single resource.<br/>Getters will never have any effect on the queried resources.\n| POST\t\t| Create a new resource in a collection.\n| PUT\t\t| Update an existing resource with its new representation.\n| DELETE\t| Delete an existing resource.\n\n## HTTP status codes\n\nThe API will reply with different HTTP statuscodes:\n\n| StatusCode\t\t\t\t| Description\n| ---\t\t\t\t\t\t| ---\n| 200 OK\t\t\t\t\t| The requests was processed and you receive data as a result.\n| 201 CREATED\t\t\t\t| The resource has been created. Either the Location header contains a link to the created resource, or links are being returned in the response body. The applied method will be indicated in the documentation.\n| 202 ACCEPTED\t\t\t\t| The request has been validated and accepted. Because we need to do some background processing prior to returning the result, we cannot send back a useful representation.\n| 204 NOCONTENT\t\t\t\t| The request has been processed, but no details can be returned.\n| 400 BADREQUEST\t\t\t| Your request is malformed.\n| 401 UNAUTHORIZED\t\t\t| You are not authorized. Follow the instructions in the Authorization documentation.\n| 403 FORBIDDEN\t\t\t\t| Access to the resource or operation is not allowed.\n| 404 NOTFOUND\t\t\t\t| The resource cannot be found.\n| 410 GONE                  | The resource is permanently no longer available.\n| 429 TOOMANYREQUESTS\t\t| The ratelimit has been exceeded. Please refer to the documentation on rate limiting for more details.\n| 500 INTERNALSERVERERROR\t| An error occurred during the processing of the request. The error is unexpected and most likely due to a bug in the api.\n\nIn the event of a problem, the body of the response will usually contain an errorcode and errormessage.\nIn rare cases additional details about the error are reported.\n\nErrorcodes 400-499 are considered to be client errors and indicate that there was an issue with the request.\nWe will not take any action besides monitoring. \n\nErrorcodes 500-599 are considered to be server errors. The errors are monitored AND action will be taken to resolve the error.\n\n## Formatting\n\nSnake casing is applied on resources and query parameters.\nThe API is strictly returning JSON. No other formats are supported.\n\nDatetimes are returned in ISO-8601 format.\n\n## Pagination\n\nPagination is on by default on collections and is controlled by specifying *skip* and *take* parameters.  \n**Skip** indicates the number of results to skip and where to start the new take.  \n**Take** indicates the number of records to return. The returned number of items can be smaller than the requested take.\n\nPaged results will have headers with useful information regarding the paging.\n\n| Header\t\t\t\t| Description\n| ---\t\t\t\t\t| ---\n| X-Paging-Skipped\t\t| The number of results that have been skipped.\n| X-Paging-Take\t\t\t| The number of items in the current take. The number might differ from the requested take. It represents the actual number of items returned in the response.\n| X-Paging-TotalResults | The total number of results regardless of paging.\n\n## Rate limiting\n\nThe number of requests per interval is limited. Detailed information on the rate limiting can be found in specific headers which will be sent on each request.\n\n| Header\t\t\t\t| Description\n| ---\t\t\t\t\t| ---\n| X-RateLimit-Limit\t\t| The number of requests that can be made in a specific time interval.\n| X-RateLimit-Usage\t\t| The number of requests already made in the current time interval.\n| X-RateLimit-Remaining\t| The number of requests remaining until the reset.\n| X-RateLimit-Reset\t\t| The number of seconds until the reset.<br />After the reset you are allowed to make as many requests as specified by the X-RateLimit-Limit header.\n| Retry-After\t\t\t| The number of seconds you have to wait until you can make new requests.<br />This header is only present when the rate limit has been reached. It is identical to X-RateLimit-Reset.\n\nWhen the ratelimit has been reached, all requests will return with a HTTP statuscode 429 and ReasonPhrase '*Too many requests, retry later.*'.\n\n# Authentication\n\nThe Api uses HMAC authentication.  \nHash-based message authentication code (HMAC) is a mechanism for calculating a message authentication code involving a hash function in combination with a secret key.  \nBoth the integrity and the authenticity of the message are verified this way.\n\n## Steps to generate the HMAC\n\n1. Get your api key and secret from your controlpanel.  \nIt is absolutely vital that the secret is never exposed. Once the secret is out, anyone would be able to generate hmacs to impersonate you.  \nIn case your secret is compromised, you can generate a new api key and secret on your controlpanel.\n2. Construct the input value for generating the hmac.  \nConcatenate:apikey, request method, path and querystring information, unix timestamp, nonce and content.\n\n|\t\t\t\t\t\t\t\t\t\t| Description\n| ---\t\t\t\t\t\t\t\t\t| ---\n| apikey\t\t\t\t\t\t\t\t| The key that is linked to your user.\n| request method\t\t\t\t\t\t| lowercased (eg: get, post, delete,...)\n| path and querystring information\t\t| urlencoding of the lowercased relative path and querystring.<br />The path **MUST start with the api version (/v2)**.<br />The hexadecimal codes (percent encoding) MUST be uppercased.\n| unix timestamp\t\t\t\t\t\t| the unix timestamp in **seconds**.\n| nonce\t\t\t\t\t\t\t\t\t| a\tunique string for each request. It should be a random string, not related to the request. The nonce (in combination with the unix timestamp) protects you from replay attacks in case anyone was able to intercept a request.\n| content\t\t\t\t\t\t\t\t| When the request body is not empty, this should be the Base64 encoded Md5 hash of the request body.<br />An empty body should not be encoded.\n\n3. Hash the concatenated string using your api secret and the SHA-256 algorithm.\n4. Base64 encode the result of the hash function. This is the hmac signature you will need to send an authorized request.\n\n## Sending an authorized request\n\nAn authorized request can be made by sending the generated HMAC in the authorization header.  \nA correct authorizationheader uses the hmac authorization scheme and a correctly formatted authorization parameter.\n\nCreate the authorization parameter by concatenating:\n  * apikey\n  * colon ':'\n  * generated HMAC signature (see above)\n  * colon ':'\n  * nonce (the one used to generate the signature)\n  * colon ':'\n  * unix timestamp (the one used to generate the signature)\n\nA sample (illustrated):\n\n* The first line is the string you create to feed to the hashing algorithm.\n* The second line is the authorization header that should be sent in the request.\n\n![hmac authorization header illustrated](/v2/images/authentication_illustration.jpg \"authorization header illustrated\")\n\n## IP whitelisting\n\nAccess is by default restricted for all IP addresses. You need to explicitly whitelist an IP or an IP range in your controlpanel.\n\n# Versioning\n\nBecause of breaking contract changes compared to v1, we released v2 of the API.  \nV1 will still be available, but you are strongly encouraged to migrate to the latest version.  \nNew features will only be available on v2.\n\n# Policy\n\n### Fair use policy\n\nPlease respect the rate limits and do not use the api for any purposes of abuse.  \nAll requests are being monitored and logged.  \nIntentional abuse might result in api key revocation.\n\n# Errors\n\nThe API attempts to return appropriate HTTP status codes for every request.  \nWhen the status code indicates failure, the API will also provide an error message in most cases.\n\nAn error message contains a machine-parseable error code accompanied by a descriptive error text.  \nThe text for an error message might change over time, but codes will stay the same.\n\n[An overview of error codes can be found here](/v2/documentation/errorcodes).\n\n# Change log\n\n[An overview of new changes can be found here](/v2/documentation/changelog).\n\n# Provisioning information\n\n## Terminology\n\n| Term\t\t\t| Definition\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t|\n| ---\t\t\t| ---\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t|\n| Servicepack\t| Defines a set of assets that belong together. An example is a hosting package which offers Linux hosting, a domain name, a couple of mailboxes and databases.<br/>It also limits the size of individual assets within the same account. |\n| Account\t\t| Represents an instance of the servicepack. It contains one or more assets. The number and size of assets is defined by the servicepack. |\n| Asset\t\t\t| A manageable service. For example: a mysql database, a linux hosting, a mailbox,...<br/>Some assets are created at the moment when the account is created. Other assets can be created afterwards.\n\t\n## Common provisioning scenario\n\n**Provisioning of an account with Linux hosting with one MySql database**\n\n*Without a pre-existing account:*\n\n1. Create a new account.<br/>Perform a POST on the accounts route and provide the desired servicepack id and identifier (domain name).\n2. Read the Location header from the response and perform a GET of the provided resource (a provisioning job).\n3. When the response returns 200(OK), you should repeat the GET operation after a certain interval (Repeat this step).<br/>\nWhen the response returns 201(Created), you should read the response body. This will contain links to the created resources.<br/>\nThis will usually hold only one link, but to be futureproof, this has been designed to return a collection.\n4. The created resource will point to an account. You now know the account's Id and can continue with the provisioning of a MySql database on this account.\n5. Perform a POST on the mysqldatabases route and provide the account id along with other requested information.\n6. Read the Location header from the response and perform a GET of the provided resource (a provisioning job).\n7. When the response returns 200(OK), you should repeat the GET operation after a certain interval (Repeat this step).<br/>\nWhen the response returns 201(Created), you should read the response body. This will contain links to the created resources.<br/>\nThis will usually hold only one link, but to be futureproof, this has been designed to return a collection.\n8. The created resource will point to a MySql database resource.\n\n## SSL certificate requests\n\n**Requesting an SSL certificate causes the purchase of a paying product.**\n\n1. A certificate is created by adding an ssl certificate request.\n2. Upon statuscode 201 you should query for certificate completion on the resource provided in the location response header.\n3. The resource request can respond with different statuscodes:\n<ul>\n    <li>200: the certificate request is ongoing.<br/>\nCheck the validations collection for validation values that are not auto_validated. Those should be set by you system.<br/>\nCall verify domain validations once all validation values are in place. It might take some time for verification to take place. It is not necessary to call this method more than once.</li>\n    <li>303: the certificate request is complete; there is no more certificate request resource available. Check the location header value to retrieve the representation of the resulting ssl certificate.</li>\n    <li>410: the certificate request does not exist anymore, there is no certificate created as a result of the request.</li>\n</ul>",
    "version": "v2"
  },
  "servers": [
    {
      "url": "/v2"
    }
  ],
  "paths": {
    "/accounts": {
      "get": {
        "tags": [
          "Accounts"
        ],
        "summary": "Overview of accounts",
        "operationId": "GetAccounts",
        "parameters": [
          {
            "name": "skip",
            "in": "query",
            "description": "The number of items to skip in the resultset.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "take",
            "in": "query",
            "description": "The number of items to return in the resultset. The returned count can be equal or less than this number.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "asset_type",
            "in": "query",
            "description": "Filters the list, returning only accounts containing the specified asset type.",
            "schema": {
              "$ref": "#/components/schemas/AssetType"
            }
          },
          {
            "name": "identifier",
            "in": "query",
            "description": "Return only accounts, matching the specified identifier.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Paging-Skipped": {
                "description": "The number of results that have been skipped.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Paging-Take": {
                "description": "The number of items in the current take. The number might differ from the requested take. It represents the actual number of items returned in the response.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Paging-TotalResults": {
                "description": "The total number of results regardless of paging.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Account"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Accounts"
        ],
        "summary": "Create a new account",
        "description": "The creation of an account requires some background processing. There is no instant feedback of the creation status.",
        "operationId": "CreateAccount",
        "requestBody": {
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateAccount"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Accepted"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestResponse"
                }
              }
            }
          }
        }
      }
    },
    "/accounts/{accountId}": {
      "get": {
        "tags": [
          "Accounts"
        ],
        "summary": "Get a specific account",
        "description": "",
        "operationId": "GetAccount",
        "parameters": [
          {
            "name": "account_id",
            "in": "path",
            "description": "The id of the account.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AccountDetail"
                }
              }
            }
          }
        }
      }
    },
    "/dns/{domainName}/records": {
      "get": {
        "tags": [
          "DNS records"
        ],
        "summary": "Get records",
        "operationId": "GetRecords",
        "parameters": [
          {
            "name": "domain_name",
            "in": "path",
            "description": "The domain name.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "skip",
            "in": "query",
            "description": "The number of items to skip in the resultset.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "take",
            "in": "query",
            "description": "The number of items to return in the resultset. The returned count can be equal or less than this number.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "type",
            "in": "query",
            "description": "Filters records matching the type. Most other filters only apply when this filter is specified.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "record_name",
            "in": "query",
            "description": "Filters records matching the record name. This filter only applies to lookups of A, AAAA, CAA, CNAME, MX, TXT, SRV, ALIAS and TLSA records.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "service",
            "in": "query",
            "description": "Filters records for the service. This filter only applies to lookups of SRV records.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Paging-Skipped": {
                "description": "The number of results that have been skipped.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Paging-Take": {
                "description": "The number of items in the current take. The number might differ from the requested take. It represents the actual number of items returned in the response.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Paging-TotalResults": {
                "description": "The total number of results regardless of paging.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/DnsRecord"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "DNS records"
        ],
        "summary": "Create a record",
        "operationId": "CreateRecord",
        "parameters": [
          {
            "name": "domain_name",
            "in": "path",
            "description": "The domain name.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The record to create",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DnsRecord"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "headers": {
              "Location": {
                "description": "The location of the created resource.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/dns/{domainName}/records/{recordId}": {
      "get": {
        "tags": [
          "DNS records"
        ],
        "summary": "Get specific record",
        "operationId": "GetRecord",
        "parameters": [
          {
            "name": "domain_name",
            "in": "path",
            "description": "The domain name.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "record_id",
            "in": "path",
            "description": "The id of the record.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DnsRecord"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "DNS records"
        ],
        "summary": "Edit a record",
        "operationId": "EditRecord",
        "parameters": [
          {
            "name": "domain_name",
            "in": "path",
            "description": "The domain name.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "record_id",
            "in": "path",
            "description": "The id of the record.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The record with updated values.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DnsRecord"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "delete": {
        "tags": [
          "DNS records"
        ],
        "summary": "Delete a record",
        "operationId": "DeleteRecord",
        "parameters": [
          {
            "name": "domain_name",
            "in": "path",
            "description": "The domain name.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "record_id",
            "in": "path",
            "description": "The id of the record.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/domains": {
      "get": {
        "tags": [
          "Domains"
        ],
        "summary": "Overviews of domains",
        "operationId": "GetDomains",
        "parameters": [
          {
            "name": "skip",
            "in": "query",
            "description": "The number of items to skip in the resultset.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "take",
            "in": "query",
            "description": "The number of items to return in the resultset. The returned count can be equal or less than this number.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Paging-Skipped": {
                "description": "The number of results that have been skipped.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Paging-Take": {
                "description": "The number of items in the current take. The number might differ from the requested take. It represents the actual number of items returned in the response.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Paging-TotalResults": {
                "description": "The total number of results regardless of paging.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Domain"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/domains/{domainName}": {
      "get": {
        "tags": [
          "Domains"
        ],
        "summary": "Details of a domain",
        "operationId": "GetDomain",
        "parameters": [
          {
            "name": "domain_name",
            "in": "path",
            "description": "The domain name",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DomainDetail"
                }
              }
            }
          }
        }
      }
    },
    "/domains/registrations": {
      "post": {
        "tags": [
          "Domains"
        ],
        "summary": "Register a domain",
        "description": "Registers an available domain.\r\nDomain names with extension '.ca' are only available for registrants with country code 'CA'.",
        "operationId": "Register",
        "requestBody": {
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RegisterDomain"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Accepted"
          }
        }
      }
    },
    "/domains/transfers": {
      "post": {
        "tags": [
          "Domains"
        ],
        "summary": "Transfer a domain",
        "description": "Transfers a domain with a transfer authorization code.\r\nDomain names with extension '.ca' are only available for registrants with country code 'CA'.",
        "operationId": "Transfer",
        "requestBody": {
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TransferDomain"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Accepted"
          }
        }
      }
    },
    "/domains/{domainName}/nameservers": {
      "put": {
        "tags": [
          "Domains"
        ],
        "summary": "Edit domain name servers",
        "description": "",
        "operationId": "EditNameServers",
        "parameters": [
          {
            "name": "domain_name",
            "in": "path",
            "description": "The domain name",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EditNameServers"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/domains/{domainName}/renew": {
      "put": {
        "tags": [
          "Domains"
        ],
        "summary": "Edit domain name renew state",
        "description": "Allowed if can_toggle_renew is true on the domain detail:\r\n<ul><li>If there are no unpaid invoices for the domain name anymore.</li><li>If the renewal won't start within 1 month.</li></ul>\r\nAllowed if the requesting user has the finance role.",
        "operationId": "ConfigureDomain",
        "parameters": [
          {
            "name": "domain_name",
            "in": "path",
            "description": "The domain name",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Contains the domain renew information",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EditDomainWillRenewRequest"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/linuxhostings": {
      "get": {
        "tags": [
          "Linux hostings"
        ],
        "summary": "Overview of linux hostings",
        "operationId": "GetLinuxHostings",
        "parameters": [
          {
            "name": "skip",
            "in": "query",
            "description": "The number of items to skip in the resultset.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "take",
            "in": "query",
            "description": "The number of items to return in the resultset. The returned count can be equal or less than this number.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Paging-Skipped": {
                "description": "The number of results that have been skipped.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Paging-Take": {
                "description": "The number of items in the current take. The number might differ from the requested take. It represents the actual number of items returned in the response.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Paging-TotalResults": {
                "description": "The total number of results regardless of paging.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/LinuxHosting"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/linuxhostings/{domainName}": {
      "get": {
        "tags": [
          "Linux hostings"
        ],
        "summary": "Linux hosting detail",
        "operationId": "GetLinuxHosting",
        "parameters": [
          {
            "name": "domain_name",
            "in": "path",
            "description": "The Linux hosting domain name.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LinuxHostingDetail"
                }
              }
            }
          }
        }
      }
    },
    "/linuxhostings/{domainName}/phpsettings/availableversions": {
      "get": {
        "tags": [
          "Linux hostings"
        ],
        "summary": "Get the available PHP versions.",
        "operationId": "GetAvailablePhpVersions",
        "parameters": [
          {
            "name": "domain_name",
            "in": "path",
            "description": "Linux hosting domain name.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PhpVersion"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/linuxhostings/{domainName}/phpsettings/version": {
      "put": {
        "tags": [
          "Linux hostings"
        ],
        "summary": "Change the Linux hosting PHP version.",
        "operationId": "ChangePhpVersion",
        "parameters": [
          {
            "name": "domain_name",
            "in": "path",
            "description": "Linux hosting domain name.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The new PHP version.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PhpVersion"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/linuxhostings/{domainName}/settings/gzipcompression": {
      "put": {
        "tags": [
          "Linux hostings"
        ],
        "summary": "Enable/disable GZIP compression",
        "operationId": "ChangeGzipCompression",
        "parameters": [
          {
            "name": "domain_name",
            "in": "path",
            "description": "Linux hosting domain name",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Whether GZIP compression is enabled or not.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GzipConfig"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/linuxhostings/{domainName}/subsites": {
      "post": {
        "tags": [
          "Linux hostings"
        ],
        "summary": "Create a subsite",
        "operationId": "CreateSubsite",
        "parameters": [
          {
            "name": "domain_name",
            "in": "path",
            "description": "Linux hosting domain name.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Add subsite request",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AddSubsiteRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "headers": {
              "Location": {
                "description": "The location of the created resource.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/linuxhostings/{domainName}/subsites/{siteName}": {
      "delete": {
        "tags": [
          "Linux hostings"
        ],
        "summary": "Delete a subsite",
        "operationId": "DeleteSubsite",
        "parameters": [
          {
            "name": "domain_name",
            "in": "path",
            "description": "Linux hosting domain name.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "site_name",
            "in": "path",
            "description": "Name of the site on the linux hosting.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/linuxhostings/{domainName}/sites/{siteName}/hostheaders": {
      "post": {
        "tags": [
          "Linux hostings"
        ],
        "summary": "Create a host header",
        "operationId": "CreateHostHeader",
        "parameters": [
          {
            "name": "domain_name",
            "in": "path",
            "description": "Linux hosting domain name.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "site_name",
            "in": "path",
            "description": "Name of the site on the linux hosting.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Add host header request",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AddHostHeaderRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "headers": {
              "Location": {
                "description": "The location of the created resource.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/linuxhostings/{domainName}/sites/{siteName}/http2/configuration": {
      "put": {
        "tags": [
          "Linux hostings"
        ],
        "summary": "Configure HTTP/2",
        "operationId": "ConfigureHttp2",
        "parameters": [
          {
            "name": "domain_name",
            "in": "path",
            "description": "Linux hosting domain name.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "site_name",
            "in": "path",
            "description": "Site name where HTTP/2 should be configured.\r\n\r\nFor HTTP/2 to work correctly, the site must have ssl enabled.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Http2Configuration"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/linuxhostings/{domainName}/ftp/configuration": {
      "put": {
        "tags": [
          "Linux hostings"
        ],
        "summary": "Configure FTP",
        "operationId": "ConfigureFtp",
        "parameters": [
          {
            "name": "domain_name",
            "in": "path",
            "description": "Linux hosting domain name.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FtpConfiguration"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/linuxhostings/{domainName}/sslsettings/{hostname}/letsencrypt": {
      "put": {
        "tags": [
          "Linux hostings"
        ],
        "summary": "Configure let's encrypt",
        "operationId": "ChangeLetsEncrypt",
        "parameters": [
          {
            "name": "domain_name",
            "in": "path",
            "description": "Linux hosting domain name.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "hostname",
            "in": "path",
            "description": "Specific hostname.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Let's encrypt config.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LetsEncryptConfig"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/linuxhostings/{domainName}/sslsettings/{hostname}/autoredirect": {
      "put": {
        "tags": [
          "Linux hostings"
        ],
        "summary": "Configure auto redirect",
        "operationId": "ChangeAutoRedirect",
        "parameters": [
          {
            "name": "domain_name",
            "in": "path",
            "description": "Linux hosting domain name.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "hostname",
            "in": "path",
            "description": "Specific hostname.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Auto redirect config.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AutoRedirectConfig"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/linuxhostings/{domainName}/phpsettings/memorylimit": {
      "put": {
        "tags": [
          "Linux hostings"
        ],
        "summary": "Configure PHP memory limit",
        "operationId": "ChangePhpMemoryLimit",
        "parameters": [
          {
            "name": "domain_name",
            "in": "path",
            "description": "Linux hosting domain name.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Memory limit config",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatePhpMemoryLimitRequest"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/linuxhostings/{domainName}/phpsettings/apcu": {
      "put": {
        "tags": [
          "Linux hostings"
        ],
        "summary": "Configure PHP APCu setting",
        "operationId": "ChangeApcu",
        "parameters": [
          {
            "name": "domain_name",
            "in": "path",
            "description": "Linux hosting domain name",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Php APcu config",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatePhpAPcuRequest"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/linuxhostings/{domainName}/scheduledtasks": {
      "get": {
        "tags": [
          "Linux hostings"
        ],
        "summary": "Overview of scheduled tasks",
        "description": "Manage scheduled tasks which are also manageable via the control panel.",
        "operationId": "GetScheduledTasks",
        "parameters": [
          {
            "name": "domain_name",
            "in": "path",
            "description": "Linux hosting domain name.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ScheduledTask"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Linux hostings"
        ],
        "summary": "Add a scheduled task",
        "operationId": "AddScheduledTasks",
        "parameters": [
          {
            "name": "domain_name",
            "in": "path",
            "description": "Linux hosting domain name.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ScheduledTask"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "headers": {
              "Location": {
                "description": "The location of the created resource.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/linuxhostings/{domainName}/scheduledtasks/{scheduledTaskId}": {
      "get": {
        "tags": [
          "Linux hostings"
        ],
        "summary": "Get scheduled task detail",
        "operationId": "GetScheduledTask",
        "parameters": [
          {
            "name": "domain_name",
            "in": "path",
            "description": "Linux hosting domain name.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "scheduled_task_id",
            "in": "path",
            "description": "Id of the scheduled task.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScheduledTask"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Linux hostings"
        ],
        "summary": "Configure a scheduled task",
        "operationId": "ConfigureScheduledTask",
        "parameters": [
          {
            "name": "domain_name",
            "in": "path",
            "description": "Linux hosting domain name.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "scheduled_task_id",
            "in": "path",
            "description": "Id of the scheduled task.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ScheduledTask"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "delete": {
        "tags": [
          "Linux hostings"
        ],
        "summary": "Delete a scheduled task",
        "operationId": "DeleteScheduledTask",
        "parameters": [
          {
            "name": "domain_name",
            "in": "path",
            "description": "Linux hosting domain name.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "scheduled_task_id",
            "in": "path",
            "description": "Id of the scheduled task.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/linuxhostings/{domainName}/ssh/keys": {
      "get": {
        "tags": [
          "Linux hostings"
        ],
        "summary": "Overview of SSH keys",
        "operationId": "GetSshKeys",
        "parameters": [
          {
            "name": "domain_name",
            "in": "path",
            "description": "Linux hosting domain name.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SshKey"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Linux hostings"
        ],
        "summary": "Add a SSH key",
        "operationId": "AddSshKey",
        "parameters": [
          {
            "name": "domain_name",
            "in": "path",
            "description": "Linux hosting domain name.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "SSH key public key.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AddSshKeyRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "headers": {
              "Location": {
                "description": "The location of the created resource.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/linuxhostings/{domainName}/ssh/configuration": {
      "put": {
        "tags": [
          "Linux hostings"
        ],
        "summary": "Configure SSH",
        "operationId": "ConfigureSsh",
        "parameters": [
          {
            "name": "domain_name",
            "in": "path",
            "description": "Linux hosting domain name.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SshConfiguration"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/linuxhostings/{domainName}/ssh/keys/{fingerprint}": {
      "delete": {
        "tags": [
          "Linux hostings"
        ],
        "summary": "Delete a SSH key",
        "operationId": "DeleteSshKey",
        "parameters": [
          {
            "name": "domain_name",
            "in": "path",
            "description": "Linux hosting domain name.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fingerprint",
            "in": "path",
            "description": "Fingerprint of public key.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/mailboxes": {
      "get": {
        "tags": [
          "Mailboxes"
        ],
        "summary": "Gets your mailboxes.",
        "description": "Currently only supports getting the mailboxes filtered by domain name.",
        "operationId": "GetMailboxes",
        "parameters": [
          {
            "name": "domain_name",
            "in": "query",
            "description": "Obligated domain name for getting mailboxes.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Mailbox"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Mailboxes"
        ],
        "summary": "Create a new mailbox.",
        "operationId": "CreateMailbox",
        "requestBody": {
          "description": "The add mailbox request.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateMailboxRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "headers": {
              "Location": {
                "description": "The location of the created resource.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/mailboxes/{mailboxName}": {
      "get": {
        "tags": [
          "Mailboxes"
        ],
        "summary": "Get a specific mailbox",
        "operationId": "GetMailbox",
        "parameters": [
          {
            "name": "mailbox_name",
            "in": "path",
            "description": "Mailbox name.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MailboxDetail"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Mailboxes"
        ],
        "summary": "Delete a mailbox",
        "operationId": "DeleteMailbox",
        "parameters": [
          {
            "name": "mailbox_name",
            "in": "path",
            "description": "Mailbox name.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/mailboxes/{mailboxName}/password": {
      "put": {
        "tags": [
          "Mailboxes"
        ],
        "summary": "Change password for mailbox",
        "operationId": "ChangeMailboxPassword",
        "parameters": [
          {
            "name": "mailbox_name",
            "in": "path",
            "description": "Mailbox name.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Contains the new password.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateMailboxPasswordRequest"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/mailboxes/{mailboxName}/autoreply": {
      "put": {
        "tags": [
          "Mailboxes"
        ],
        "summary": "Configure auto-reply for mailbox",
        "operationId": "ConfigureMailboxAutoReply",
        "parameters": [
          {
            "name": "mailbox_name",
            "in": "path",
            "description": "Mailbox name.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Contains the auto-reply information.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AutoReply"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/mailboxes/{mailboxName}/autoforward": {
      "put": {
        "tags": [
          "Mailboxes"
        ],
        "summary": "Configure auto-forward for mailbox",
        "operationId": "ConfigureMailboxAutoForward",
        "parameters": [
          {
            "name": "mailbox_name",
            "in": "path",
            "description": "Mailbox name.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Contains the auto-forward information.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AutoForward"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/mailzones/{domainName}": {
      "get": {
        "tags": [
          "Mail zones"
        ],
        "summary": "Get the mail zone.",
        "operationId": "GetMailZone",
        "parameters": [
          {
            "name": "domain_name",
            "in": "path",
            "description": "Mail zone domain name.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MailZone"
                }
              }
            }
          }
        }
      }
    },
    "/mailzones/{domainName}/catchall": {
      "post": {
        "tags": [
          "Mail zones"
        ],
        "summary": "Create a catch-all on the mail zone",
        "operationId": "CreateCatchAll",
        "parameters": [
          {
            "name": "domain_name",
            "in": "path",
            "description": "Mail zone domain name.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Contains the catch-all information.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateCatchAllRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "headers": {
              "Location": {
                "description": "The location of the created resource.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/mailzones/{domainName}/catchall/{emailAddress}": {
      "delete": {
        "tags": [
          "Mail zones"
        ],
        "summary": "Delete a catch-all on the mail zone",
        "operationId": "DeleteCatchAll",
        "parameters": [
          {
            "name": "domain_name",
            "in": "path",
            "description": "Mail zone domain name.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "email_address",
            "in": "path",
            "description": "E-mail address to which all e-mails are sent to inexistent mailboxes or aliases.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/mailzones/{domainName}/antispam": {
      "put": {
        "tags": [
          "Mail zones"
        ],
        "summary": "Configure anti-spam for mail zone",
        "operationId": "ConfigureAntiSpam",
        "parameters": [
          {
            "name": "domain_name",
            "in": "path",
            "description": "Mail zone domain name.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Contains the anti-spam information.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateAntiSpamRequest"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/mailzones/{domainName}/aliases": {
      "post": {
        "tags": [
          "Mail zones"
        ],
        "summary": "Create a new alias",
        "operationId": "CreateAlias",
        "parameters": [
          {
            "name": "domain_name",
            "in": "path",
            "description": "Mail zone domain name.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Contains the alias information.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateAliasRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "headers": {
              "Location": {
                "description": "The location of the created resource.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestResponse"
                }
              }
            }
          }
        }
      }
    },
    "/mailzones/{domainName}/aliases/{emailAddress}": {
      "put": {
        "tags": [
          "Mail zones"
        ],
        "summary": "Configure a alias",
        "operationId": "ConfigureAlias",
        "parameters": [
          {
            "name": "domain_name",
            "in": "path",
            "description": "Mail zone domain name.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "email_address",
            "in": "path",
            "description": "Alias e-mail address.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Contains the alias information.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateAliasRequest"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Accepted"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Mail zones"
        ],
        "summary": "Delete a alias",
        "operationId": "DeleteAlias",
        "parameters": [
          {
            "name": "domain_name",
            "in": "path",
            "description": "Mail zone domain name.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "email_address",
            "in": "path",
            "description": "Alias e-mail address.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/mailzones/{domainName}/smtpdomains": {
      "post": {
        "tags": [
          "Mail zones"
        ],
        "summary": "Create an extra smtp domain",
        "operationId": "CreateSmtpDomain",
        "parameters": [
          {
            "name": "domain_name",
            "in": "path",
            "description": "Mail zone domain name.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Contains the smtp domain information.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateSmtpDomainRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "headers": {
              "Location": {
                "description": "The location of the created resource.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestResponse"
                }
              }
            }
          }
        }
      }
    },
    "/mailzones/{domainName}/smtpdomains/{hostname}": {
      "put": {
        "tags": [
          "Mail zones"
        ],
        "summary": "Configure an extra smtp domain",
        "operationId": "ConfigureSmtpDomain",
        "parameters": [
          {
            "name": "domain_name",
            "in": "path",
            "description": "Mail zone domain name.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "hostname",
            "in": "path",
            "description": "Smtp domain name.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Contains the smtp domain information.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateSmtpDomainRequest"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Accepted"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Mail zones"
        ],
        "summary": "Delete an extra smtp domain",
        "operationId": "DeleteSmtpDomain",
        "parameters": [
          {
            "name": "domain_name",
            "in": "path",
            "description": "Mail zone domain name.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "hostname",
            "in": "path",
            "description": "Smtp domain name.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/mysqldatabases": {
      "get": {
        "tags": [
          "MySql databases"
        ],
        "summary": "Overview of mysql databases",
        "operationId": "GetMySqlDatabases",
        "parameters": [
          {
            "name": "skip",
            "in": "query",
            "description": "The number of items to skip in the resultset.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "take",
            "in": "query",
            "description": "The number of items to return in the resultset. The returned count can be equal or less than this number.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Paging-Skipped": {
                "description": "The number of results that have been skipped.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Paging-Take": {
                "description": "The number of items in the current take. The number might differ from the requested take. It represents the actual number of items returned in the response.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Paging-TotalResults": {
                "description": "The total number of results regardless of paging.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/MySqlDatabase"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "MySql databases"
        ],
        "summary": "Create a new mysql database",
        "operationId": "CreateMySqlDatabase",
        "requestBody": {
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateMySqlDatabase"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Accepted"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestResponse"
                }
              }
            }
          }
        }
      }
    },
    "/mysqldatabases/{databaseName}": {
      "get": {
        "tags": [
          "MySql databases"
        ],
        "summary": "Get a specific database",
        "operationId": "GetMySqlDatabase",
        "parameters": [
          {
            "name": "database_name",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MySqlDatabase"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "MySql databases"
        ],
        "summary": "Delete a mysql database",
        "operationId": "DeleteDatabase",
        "parameters": [
          {
            "name": "database_name",
            "in": "path",
            "description": "Name of the database.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/mysqldatabases/{databaseName}/users": {
      "get": {
        "tags": [
          "MySql databases"
        ],
        "summary": "Overview of mysql users",
        "operationId": "GetDatabaseUsers",
        "parameters": [
          {
            "name": "database_name",
            "in": "path",
            "description": "Name of the database.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/MySqlUser"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "MySql databases"
        ],
        "summary": "Create a new mysql user",
        "description": "The creation of a new mysql user will result in a user with read_only rights.",
        "operationId": "CreateMySqlUser",
        "parameters": [
          {
            "name": "database_name",
            "in": "path",
            "description": "Name of the database.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateMySqlUser"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Accepted"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestResponse"
                }
              }
            }
          }
        }
      }
    },
    "/mysqldatabases/{databaseName}/users/{userName}/status": {
      "put": {
        "tags": [
          "MySql databases"
        ],
        "summary": "Enable/disable mysql user",
        "operationId": "ChangeDatabaseUserStatus",
        "parameters": [
          {
            "name": "database_name",
            "in": "path",
            "description": "Name of the database.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "user_name",
            "in": "path",
            "description": "Name of the user.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Whether the user is enabled or not.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateUserStatusRequest"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/mysqldatabases/{databaseName}/users/{userName}/password": {
      "put": {
        "tags": [
          "MySql databases"
        ],
        "summary": "Change password for mysql user",
        "operationId": "ChangeDatabaseUserPassword",
        "parameters": [
          {
            "name": "database_name",
            "in": "path",
            "description": "Name of the database.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "user_name",
            "in": "path",
            "description": "Name of the user.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Contains the new password.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateUserPasswordRequest"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/mysqldatabases/{databaseName}/users/{userName}": {
      "delete": {
        "tags": [
          "MySql databases"
        ],
        "summary": "Delete a mysql user",
        "description": "The deletion of a mysql user is allowed for users with read_only rights.",
        "operationId": "DeleteDatabaseUser",
        "parameters": [
          {
            "name": "database_name",
            "in": "path",
            "description": "Name of the database.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "user_name",
            "in": "path",
            "description": "Name of the user.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/provisioningjobs/{jobId}": {
      "get": {
        "tags": [
          "Provisioning jobs"
        ],
        "summary": "Detail of a provisioning job",
        "description": "Provisioning failures may occur. Contact support in the event of a failure or wait for error resolution.\r\n\r\nDo NOT retry provisioning until the job reports finished or cancelled.",
        "operationId": "GetProvisioningJob",
        "parameters": [
          {
            "name": "job_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProvisioningJobInfo"
                }
              }
            }
          },
          "201": {
            "description": "Created",
            "headers": {
              "Location": {
                "description": "The location of the created resource.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProvisioningJobCompletion"
                }
              }
            }
          }
        }
      }
    },
    "/servicepacks": {
      "get": {
        "tags": [
          "Servicepacks"
        ],
        "summary": "Overview of service packs",
        "operationId": "Servicepacks",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Servicepack"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/ssh": {
      "get": {
        "tags": [
          "SSH"
        ],
        "summary": "Overview of SSH keys",
        "operationId": "GetAllSshKeys",
        "parameters": [
          {
            "name": "skip",
            "in": "query",
            "description": "The number of items to skip in the resultset.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "take",
            "in": "query",
            "description": "The number of items to return in the resultset. The returned count can be equal or less than this number.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Paging-Skipped": {
                "description": "The number of results that have been skipped.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Paging-Take": {
                "description": "The number of items in the current take. The number might differ from the requested take. It represents the actual number of items returned in the response.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Paging-TotalResults": {
                "description": "The total number of results regardless of paging.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SshKeyDetail"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/sslcertificaterequests": {
      "get": {
        "tags": [
          "SSL certificate requests"
        ],
        "summary": "Overview of SSL certificate requests",
        "operationId": "GetSslCertificateRequests",
        "parameters": [
          {
            "name": "skip",
            "in": "query",
            "description": "The number of items to skip in the resultset.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "take",
            "in": "query",
            "description": "The number of items to return in the resultset. The returned count can be equal or less than this number.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Paging-Skipped": {
                "description": "The number of results that have been skipped.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Paging-Take": {
                "description": "The number of items in the current take. The number might differ from the requested take. It represents the actual number of items returned in the response.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Paging-TotalResults": {
                "description": "The total number of results regardless of paging.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SslCertificateRequest"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "SSL certificate requests"
        ],
        "summary": "Add a SSL certificate request",
        "description": "Executing this method causes the purchase of a paying product.\r\n\r\nLog on to our website to see your current (renewal) prices or contact our Sales department.\r\n\r\nPlease note that promotional pricing does not apply for purchases made through our API.",
        "operationId": "AddSslCertificateRequest",
        "requestBody": {
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateSslCertificateRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "headers": {
              "Location": {
                "description": "The location of the created resource.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/sslcertificaterequests/{id}": {
      "get": {
        "tags": [
          "SSL certificate requests"
        ],
        "summary": "Detail of a SSL certificate request",
        "operationId": "GetSslCertificateRequest",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The id of the certificate request.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SslCertificateRequestDetail"
                }
              }
            }
          },
          "303": {
            "description": "See Other",
            "headers": {
              "Location": {
                "description": "The location referring to a resource that replaced the original resource.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "410": {
            "description": "The resource existed in the past, but is no longer available."
          }
        }
      },
      "put": {
        "tags": [
          "SSL certificate requests"
        ],
        "summary": "Verify the SSL certificate request domain validations",
        "operationId": "VerifySslCertificateRequestDomainValidations",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The id of the certificate request.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "202": {
            "description": "Accepted"
          },
          "303": {
            "description": "See Other",
            "headers": {
              "Location": {
                "description": "The location referring to a resource that replaced the original resource.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "410": {
            "description": "The resource existed in the past, but is no longer available."
          }
        }
      }
    },
    "/sslcertificates": {
      "get": {
        "tags": [
          "SSL certificates"
        ],
        "summary": "Overview of SSL certificates",
        "operationId": "GetSslCertificates",
        "parameters": [
          {
            "name": "skip",
            "in": "query",
            "description": "The number of items to skip in the resultset.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "take",
            "in": "query",
            "description": "The number of items to return in the resultset. The returned count can be equal or less than this number.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Paging-Skipped": {
                "description": "The number of results that have been skipped.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Paging-Take": {
                "description": "The number of items in the current take. The number might differ from the requested take. It represents the actual number of items returned in the response.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Paging-TotalResults": {
                "description": "The total number of results regardless of paging.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SslCertificate"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/sslcertificates/{sha1Fingerprint}": {
      "get": {
        "tags": [
          "SSL certificates"
        ],
        "summary": "Detail of a SSL certificate",
        "operationId": "GetSslCertificate",
        "parameters": [
          {
            "name": "sha1_fingerprint",
            "in": "path",
            "description": "The SHA-1 fingerprint of the certificate.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SslCertificateDetail"
                }
              }
            }
          }
        }
      }
    },
    "/sslcertificates/{sha1Fingerprint}/download": {
      "get": {
        "tags": [
          "SSL certificates"
        ],
        "summary": "Download a SSL certificate",
        "description": "Returns the certifcate as binary data with the content-type and the filename information in the response headers.",
        "operationId": "DownloadCertificate",
        "parameters": [
          {
            "name": "sha1_fingerprint",
            "in": "path",
            "description": "The SHA-1 fingerprint of the certificate.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "file_format",
            "in": "query",
            "description": "The file format of the returned file stream:\r\n<ul><li>PFX: Also known as PKCS #12, is a single, password protected certificate archive that contains the entire certificate chain plus the matching private key.</li></ul>",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/SslCertificateFileFormat"
            }
          },
          {
            "name": "password",
            "in": "query",
            "description": "The password used to protect the certificate file.\r\n",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "400": {
            "description": "Invalid file_format or invalid password"
          }
        }
      }
    },
    "/windowshostings": {
      "get": {
        "tags": [
          "Windows hostings"
        ],
        "summary": "Overview of windows hostings",
        "operationId": "GetWindowsHostings",
        "parameters": [
          {
            "name": "skip",
            "in": "query",
            "description": "The number of items to skip in the resultset.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "take",
            "in": "query",
            "description": "The number of items to return in the resultset. The returned count can be equal or less than this number.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Paging-Skipped": {
                "description": "The number of results that have been skipped.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Paging-Take": {
                "description": "The number of items in the current take. The number might differ from the requested take. It represents the actual number of items returned in the response.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Paging-TotalResults": {
                "description": "The total number of results regardless of paging.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WindowsHosting"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/windowshostings/{domainName}": {
      "get": {
        "tags": [
          "Windows hostings"
        ],
        "summary": "Windows hosting detail",
        "operationId": "GetWindowsHosting",
        "parameters": [
          {
            "name": "domain_name",
            "in": "path",
            "description": "The Windows hosting domain name.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WindowsHostingDetail"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "Account": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The id of the account",
            "format": "int32"
          },
          "identifier": {
            "type": "string",
            "description": "Identifier for the account"
          },
          "servicepack_id": {
            "type": "integer",
            "description": "The servicepack id that defines the account.",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "AccountDetail": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The id of the account",
            "format": "int32"
          },
          "identifier": {
            "type": "string",
            "description": "Identifier for the account"
          },
          "servicepack": {
            "$ref": "#/components/schemas/Servicepack"
          },
          "addons": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Addon"
            },
            "description": "A list of addons applied to the account."
          }
        },
        "additionalProperties": false,
        "description": "A detailed representation of an account."
      },
      "AddHostHeaderRequest": {
        "type": "object",
        "properties": {
          "domain_name": {
            "type": "string",
            "description": "Host header domain name (e.g. alias.be or alias.site.be)."
          }
        },
        "additionalProperties": false
      },
      "AddSshKeyRequest": {
        "type": "object",
        "properties": {
          "public_key": {
            "type": "string",
            "description": "Public key"
          }
        },
        "additionalProperties": false
      },
      "AddSubsiteRequest": {
        "type": "object",
        "properties": {
          "domain_name": {
            "type": "string",
            "description": "Subsite domain name (e.g. alias.be or subsite.site.be)."
          },
          "path": {
            "type": "string",
            "description": "Folder location for the subsite (when empty we use /subsites/site (e.g. /subsites/subsite.site.be)\r\n\r\nThe path MUST pre-exist on the server. It WILL NOT be created automatically."
          }
        },
        "additionalProperties": false
      },
      "AdditionalValidationAttribute": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Additional validation attribute field name."
          },
          "value": {
            "type": "string",
            "description": "Additional validation attribute field value."
          }
        },
        "additionalProperties": false
      },
      "Addon": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The id of the addon",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "description": "The name of the addon"
          }
        },
        "additionalProperties": false,
        "description": "Addon information"
      },
      "Alias": {
        "type": "object",
        "properties": {
          "email_address": {
            "type": "string",
            "description": "The alias e-mail address"
          },
          "destinations": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "The alias destination e-mail addresses"
          }
        },
        "additionalProperties": false
      },
      "AntiSpam": {
        "type": "object",
        "properties": {
          "type": {
            "$ref": "#/components/schemas/AntiSpamTypes"
          },
          "allowed_types": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AntiSpamTypes"
            },
            "description": "Allowed types of anti-spam scanning for this mail zone"
          }
        },
        "additionalProperties": false
      },
      "AntiSpamTypes": {
        "enum": [
          "none",
          "advanced",
          "basic"
        ],
        "type": "string",
        "description": "Types of anti-spam scanning"
      },
      "ApplicationPool": {
        "type": "object",
        "properties": {
          "runtime": {
            "type": "string",
            "description": "The active runtime for the hosting account."
          },
          "pipeline_mode": {
            "type": "string",
            "description": "The active pipeline mode for the hosting account."
          },
          "installed_net_core_runtimes": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "The installed .NET Core runtimes for the hosting account."
          }
        },
        "additionalProperties": false,
        "description": "The application pool for the hosting account."
      },
      "AssetType": {
        "enum": [
          "domain",
          "linux_hosting",
          "mysql",
          "dns",
          "mailbox",
          "windows_hosting"
        ],
        "type": "string",
        "description": "Asset types"
      },
      "AutoForward": {
        "type": "object",
        "properties": {
          "enabled": {
            "type": "boolean",
            "description": "Enabled"
          },
          "email_addresses": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "E-mail addresses to which e-mails are forwarded"
          },
          "copy_to_myself": {
            "type": "boolean",
            "description": "Copy to myself"
          }
        },
        "additionalProperties": false
      },
      "AutoRedirectConfig": {
        "type": "object",
        "properties": {
          "enabled": {
            "type": "boolean",
            "description": "Enabled"
          }
        },
        "additionalProperties": false
      },
      "AutoReply": {
        "type": "object",
        "properties": {
          "enabled": {
            "type": "boolean",
            "description": "Enabled"
          },
          "subject": {
            "type": "string",
            "description": "Subject"
          },
          "message": {
            "type": "string",
            "description": "Message"
          }
        },
        "additionalProperties": false
      },
      "BadRequestResponse": {
        "type": "object",
        "properties": {
          "validation_errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ValidationErrorMessage"
            },
            "description": "A list of validation errors that occurred when processing the request."
          }
        },
        "additionalProperties": false
      },
      "CatchAll": {
        "type": "object",
        "properties": {
          "email_addresses": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "E-mail addresses to which all e-mails are sent to inexistent mailboxes or aliases"
          }
        },
        "additionalProperties": false
      },
      "CompletionEstimation": {
        "type": "object",
        "properties": {
          "estimate": {
            "type": "string",
            "description": "The estimated time when the job should be finished.\r\n\r\nUnexpected delays can always occur.\r\n\r\nThe value is subject to change during the provisioning.",
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "CreateAccount": {
        "type": "object",
        "properties": {
          "identifier": {
            "type": "string",
            "description": "An identifier for the account.\r\n\r\nShould be a domain name for hosting accounts."
          },
          "servicepack_id": {
            "type": "integer",
            "description": "The servicepack id that defines the account.",
            "format": "int32"
          },
          "ftp_password": {
            "type": "string",
            "description": "Ftp password for the account.\r\n\r\nApplies only if the servicepack contains hosting.\r\n\r\nPasswords have to adhere to following rules:\r\n<ul><li>Between 8-20 characters.</li><li>Must be a mix of letters and digits.</li><li>Must contain at least one digit (0-9).</li><li>Must contain at least one letter (a-z).</li><li>Cannot contain spaces.</li><li>Cannot contain characters: * € $ & + } { ' \" \\ </li></ul>"
          }
        },
        "additionalProperties": false
      },
      "CreateAliasRequest": {
        "type": "object",
        "properties": {
          "email_address": {
            "type": "string",
            "description": "The alias e-mail"
          },
          "destinations": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "The alias destination e-mail addresses"
          }
        },
        "additionalProperties": false
      },
      "CreateCatchAllRequest": {
        "type": "object",
        "properties": {
          "email_address": {
            "type": "string",
            "description": "E-mail address to which all e-mails are sent to inexistent mailboxes or aliases"
          }
        },
        "additionalProperties": false
      },
      "CreateMailboxRequest": {
        "type": "object",
        "properties": {
          "email_address": {
            "type": "string",
            "description": "E-mail address"
          },
          "account_id": {
            "type": "integer",
            "description": "Mail zone account id",
            "format": "int32"
          },
          "password": {
            "type": "string",
            "description": "The password for the mailbox.\r\n\r\nPasswords have to adhere to following rules:\r\n<ul><li>Between 8-20 characters.</li><li>Must be a mix of letters and digits.</li><li>Must contain at least one digit (0-9).</li><li>Must contain at least one letter (a-z).</li><li>Cannot contain spaces.</li><li>Cannot contain characters: * € $ & + } { ' \" \\ </li></ul>"
          }
        },
        "additionalProperties": false
      },
      "CreateMySqlDatabase": {
        "type": "object",
        "properties": {
          "database_name": {
            "type": "string",
            "description": "The name for the database. This will be prefixed during provisioning.\r\nThe provided name during creation will be different from the provisioned database name."
          },
          "account_id": {
            "type": "integer",
            "description": "The id of the account on which to create the database.",
            "format": "int32"
          },
          "password": {
            "type": "string",
            "description": "The password for the database user.\r\n\r\nPasswords have to adhere to following rules:\r\n<ul><li>Between 8-20 characters.</li><li>Must be a mix of letters and digits.</li><li>Must contain at least one digit (0-9).</li><li>Must contain at least one letter (a-z).</li><li>Cannot contain spaces.</li><li>Cannot contain characters: * € $ & + } { ' \" \\ </li></ul>"
          }
        },
        "additionalProperties": false
      },
      "CreateMySqlUser": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "User name\r\n\r\nUser names have to adhere to following rules:\r\n<ul><li>Between 2-14 characters.</li><li>Must be a mix of letters and/or digits.</li><li>Must be lower cased.</li><li>Cannot contain spaces.</li></ul>"
          },
          "password": {
            "type": "string",
            "description": "The password for the database user.\r\n\r\nPasswords have to adhere to following rules:\r\n<ul><li>Between 8-20 characters.</li><li>Must be a mix of letters and digits.</li><li>Must contain at least one digit (0-9).</li><li>Must contain at least one letter (a-z).</li><li>Cannot contain spaces.</li><li>Cannot contain characters: * € $ & + } { ' \" \\ </li></ul>"
          }
        },
        "additionalProperties": false
      },
      "CreateSmtpDomainRequest": {
        "type": "object",
        "properties": {
          "hostname": {
            "type": "string",
            "description": "The smtp domain name"
          }
        },
        "additionalProperties": false
      },
      "CreateSslCertificateRequest": {
        "type": "object",
        "properties": {
          "csr": {
            "type": "string",
            "description": "The certificate signing request data.\r\n\r\nThe certificate signing request subject should contain following attributes:\r\n<table><tr><th>Name</th><th>Code</th><th>Format</th></tr><tr><td>CommonName</td><td>CN</td><td>Valid domain name, for example site.be, alias.site.be or *.site.be</td></tr><tr><td>Country</td><td>C</td><td>ISO 3166-1 alpha-2 country code</td></tr><tr><td>State</td><td>ST</td><td></td></tr><tr><td>Locality</td><td>L</td><td></td></tr><tr><td>Organization</td><td>O</td><td></td></tr><tr><td>EmailAddress</td><td>E</td><td>Valid email address</td></tr></table>\r\nThe certificate signing request should also contain all the additional aliases and domains (SAN's) for the certificate."
          },
          "certificate_type": {
            "$ref": "#/components/schemas/SslCertificateType"
          },
          "validation_level": {
            "$ref": "#/components/schemas/SslCertificateValidationLevel"
          },
          "additional_validation_attributes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AdditionalValidationAttribute"
            },
            "description": "List of additional validation attributes for the certificate when choosing organization or extended validation.\r\n<table><tr><th>Name</th><th>Info</th><th>Required</th></tr><tr><td>Firstname</td><td>Firstname of the technical contact</td><td>Yes</td></tr><tr><td>Lastname</td><td>Lastname of the technical contact</td><td>Yes</td></tr><tr><td>Phone</td><td>Phone of the technical contact</td><td>Yes</td></tr><tr><td>EmailAddress</td><td>Email address of the technical contact</td><td>Yes</td></tr><tr><td>Street</td><td>Address street of the organization</td><td>Yes</td></tr><tr><td>Number</td><td>Address house number of the organization</td><td>Yes</td></tr><tr><td>PostalCode</td><td>Address postal code of the organization</td><td>Yes</td></tr><tr><td>VatCountryCode</td><td>VAT country code of the organization, ISO 3166-1 alpha-2 country code</td><td>Yes</td></tr><tr><td>OrganizationNumber</td><td>Business number of the organization</td><td>No</td></tr></table>"
          }
        },
        "additionalProperties": false
      },
      "DnsRecord": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The id of the record\r\nThis value is ignored for creation of new records."
          },
          "type": {
            "type": "string",
            "description": "The type of the record (A, AAAA, CAA, CNAME, MX, TXT, SRV, ALIAS and TLSA)."
          },
          "record_name": {
            "type": "string",
            "description": "The name of the record.\r\n\r\nThis is the host name, alias defined by the record.\r\n\r\nAn empty record or '@' is equal to the domain name.\r\n\r\nApplies to A, AAAA, MX, CNAME, TXT, CAA, ALIAS and TLSA records.\r\n\r\nWhen type is TLSA the recommended value format is port number, protocol and host: _25._tcp.\r\n\r\nDoes not apply for SRV records."
          },
          "ttl": {
            "type": "integer",
            "description": "Time to live of the record in seconds.\r\n\r\nIt defines the time frame that clients can cache the information.\r\n\r\nThe value MUST be between 60 and 86400. The default value is 3600 (= 1 hour).",
            "format": "int32",
            "default": 3600
          },
          "content": {
            "type": "string",
            "description": "Variable data depending on the record type.\r\n<ul><li>A: the IPv4 address.</li><li>AAAA: the IPv6 address.</li><li>CNAME: canonical name of an alias.</li><li>MX: fully qualified domain name of a mail host.</li><li>SRV: does not apply. Data for the SRV records can be found in specific properties.</li><li>TXT: free form text data.</li><li>CAA: format should match specific values for flag, tag and ca: \"{flag} {tag} {ca}\".\r\n        <ul><li>The flag. The values 128 (critical) or 0 (non-critical) are expected, with 0 as the default.</li><li>The tag. A tag specifies which actions an authorized CA can take in terms of issuing SSL/TLS certificates.\r\n<ul><li>The value \"issue\": explicitly authorizes a single certificate authority to issue a certificate (any type) for the hostname.</li><li>The value \"issuewild\": explicitly authorizes a single certificate authority to issue a wildcard certificate (and only wildcard) for the hostname.</li><li>The value \"iodef\": specifies a URL to which a certificate authority may report policy violations.</li></ul></li><li>The ca. This is the domain of the CA (Certification Authority) that has the authority to issue certificates for the domain in question. If the value is a semicolon (;), it means that no CA has the authority to issue a certificate for that domain.</li></ul></li><li>ALIAS: canonical name of an alias.</li><li>TLSA: format should match specific values for usage, selector, matching type and data: \"{usage} {selector} {matching_type} {data}\"\r\n        <ul><li>The usage. The first field after the TLSA text in the DNS RR, specifies how to verify the certificate.\r\n<ul><li>A value of 0 is for what is commonly called CA constraint (and PKIX-TA). The certificate provided when establishing TLS must be issued by the listed root-CA or one of its intermediate CAs, with a valid certification path to a root-CA already trusted by the application doing the verification.</li><li>A value of 1 is for what is commonly called Service certificate constraint (and PKIX-EE). The certificate used must match the TLSA record exactly, and it must also pass PKIX certification path validation to a trusted root-CA.</li><li>A value of 2 is for what is commonly called Trust Anchor Assertion (and DANE-TA). The certificate used has a valid certification path pointing back to the certificate mention in this record, but there is no need for it to pass the PKIX certification path validation to a trusted root-CA.</li><li>A value of 3 is for what is commonly called Domain issued certificate (and DANE-EE). The services uses a self-signed certificate. It is not signed by anyone else, and is exactly this record.</li></ul></li><li>The selector. When connecting to the service and a certificate is received, the selector field specifies which parts of it should be checked.\r\n<ul><li>A value of 0 means to select the entire certificate for matching.</li><li>A value of 1 means to select just the public key for certificate matching. Matching the public key is often sufficient, as this is likely to be unique.</li></ul></li><li>The matching type.\r\n<ul><li>A type of 0 means the entire information selected is present in the certificate association data.</li><li>A type of 1 means to do a SHA-256 hash of the selected data.</li><li>A type of 2 means to do a SHA-512 hash of the selected data.</li></ul></li><li>The actual data to be matched given the settings of the other fields. This is a long text string of hexadecimal data.</li></ul></li></ul>"
          },
          "priority": {
            "type": "integer",
            "description": "The priority for MX or SRV records.\r\n\r\nA lower value means more preferred.\r\n\r\nThe value MUST be a positive integer less or equal to 9999.",
            "format": "int32",
            "default": 10
          },
          "service": {
            "type": "string",
            "description": "The symbolic name of the desired service for SRV records.\r\n\r\nEditing the value is not possible. You should add a new SRV record and can delete the existing record."
          },
          "weight": {
            "type": "integer",
            "description": "The weight for SRV records with the same priority.\r\n\r\nA higher value means more preferred.",
            "format": "int32",
            "default": 0
          },
          "target": {
            "type": "string",
            "description": "The canonical hostname of the machine providing the service for SRV records.\r\n\r\nEditing the value is not possible. You should add a new SRV record and delete the existing record."
          },
          "protocol": {
            "type": "string",
            "description": "Used for the creation of SRV records. Possible options: TCP, UDP, ...\r\n\r\nEditing the value is not possible. You should add a new SRV record and delete the existing record.",
            "default": "TCP"
          },
          "port": {
            "type": "integer",
            "description": "The port for SRV records.\r\n\r\nThe value MUST be a positive integer.\r\n\r\nEditing the value is not possible. You should add a new SRV record and delete the existing record.",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "Domain": {
        "type": "object",
        "properties": {
          "domain_name": {
            "type": "string",
            "description": "The domain name"
          },
          "expiration_date": {
            "type": "string",
            "description": "Expiration date of the domain",
            "format": "date-time"
          },
          "will_renew": {
            "type": "boolean",
            "description": "Indication of renewal.\r\n\r\nNo value indicates that the renewal state could not be determined at the moment."
          }
        },
        "additionalProperties": false
      },
      "DomainDetail": {
        "type": "object",
        "properties": {
          "domain_name": {
            "type": "string",
            "description": "The domain name"
          },
          "expiration_date": {
            "type": "string",
            "description": "Expiration date of the domain",
            "format": "date-time"
          },
          "will_renew": {
            "type": "boolean",
            "description": "Indication of renewal.\r\n\r\nNo value indicates that the renewal state could not be determined at the moment."
          },
          "name_servers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NameServer"
            },
            "description": "Nameservers of the domain"
          },
          "registrant": {
            "$ref": "#/components/schemas/Registrant"
          },
          "can_toggle_renew": {
            "type": "boolean",
            "description": "Indication if the domain renew state can be changed."
          }
        },
        "additionalProperties": false
      },
      "EditDomainWillRenewRequest": {
        "type": "object",
        "properties": {
          "will_renew": {
            "type": "boolean",
            "description": "Indication of renewal."
          }
        },
        "additionalProperties": false
      },
      "EditNameServers": {
        "type": "object",
        "properties": {
          "domain_name": {
            "type": "string",
            "description": "The domain name to register."
          },
          "name_servers": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of name servers."
          }
        },
        "additionalProperties": false
      },
      "ExtraField": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Registrant extra field name."
          },
          "value": {
            "type": "string",
            "description": "Registrant extra field value."
          }
        },
        "additionalProperties": false
      },
      "FtpConfiguration": {
        "type": "object",
        "properties": {
          "enabled": {
            "type": "boolean",
            "description": "Enable or disable FTP."
          }
        },
        "additionalProperties": false
      },
      "GzipConfig": {
        "type": "object",
        "properties": {
          "enabled": {
            "type": "boolean",
            "description": "Enabled"
          }
        },
        "additionalProperties": false
      },
      "HostHeader": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "The name of the host header."
          },
          "enabled": {
            "type": "boolean",
            "description": "Indicates if the host header is applied on the web server."
          }
        },
        "additionalProperties": false,
        "description": "A host header identifies a web domain."
      },
      "Http2Configuration": {
        "type": "object",
        "properties": {
          "enabled": {
            "type": "boolean",
            "description": "Enable or disable HTTP/2."
          }
        },
        "additionalProperties": false
      },
      "LetsEncryptConfig": {
        "type": "object",
        "properties": {
          "enabled": {
            "type": "boolean",
            "description": "Enabled"
          }
        },
        "additionalProperties": false
      },
      "LinuxHosting": {
        "type": "object",
        "properties": {
          "domain_name": {
            "type": "string",
            "description": "Domain name for the Linux hosting account."
          },
          "servicepack_id": {
            "type": "integer",
            "description": "Id of Linux hosting service package.",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "LinuxHostingDetail": {
        "type": "object",
        "properties": {
          "domain_name": {
            "type": "string",
            "description": "Domain name for the Linux hosting account."
          },
          "servicepack_id": {
            "type": "integer",
            "description": "Id of Linux hosting service package.",
            "format": "int32"
          },
          "max_webspace_size": {
            "type": "integer",
            "description": "Maximum webspace size in MB\r\n\r\nUse max_size instead.",
            "format": "int32",
            "deprecated": true
          },
          "max_size": {
            "type": "integer",
            "description": "Maximum webspace size in MB",
            "format": "int32"
          },
          "webspace_usage": {
            "type": "integer",
            "description": "Used webspace size in MB\r\n\r\nUse actual_size instead.",
            "format": "int32",
            "deprecated": true
          },
          "actual_size": {
            "type": "integer",
            "description": "Used webspace size in MB",
            "format": "int32"
          },
          "ip": {
            "type": "string",
            "description": "Linux hosting IP address"
          },
          "ip_type": {
            "$ref": "#/components/schemas/LinuxIpType"
          },
          "ftp_enabled": {
            "type": "boolean",
            "description": "Indicates whether ftp is enabled for the hosting account."
          },
          "ftp_username": {
            "type": "string",
            "description": "Ftp username"
          },
          "ssh_host": {
            "type": "string",
            "description": "Ssh host of the linux hosting account"
          },
          "ssh_username": {
            "type": "string",
            "description": "Ssh username"
          },
          "php_version": {
            "type": "string",
            "description": "The active php version for the hosting account."
          },
          "sites": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LinuxSite"
            },
            "description": "A list of websites on the hosting account."
          },
          "mysql_database_names": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "A list of mysql databases linked to the hosting account.\r\n\r\nDetails of the database can be read using the mysql database detail."
          }
        },
        "additionalProperties": false
      },
      "LinuxIpType": {
        "enum": [
          "dedicated",
          "shared"
        ],
        "type": "string",
        "description": "Type of the hosting IP address (dedicated or shared)"
      },
      "LinuxSite": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "The name of the website."
          },
          "path": {
            "type": "string",
            "description": "The path of the website."
          },
          "host_headers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/HostHeader"
            },
            "description": "Host headers for the website."
          },
          "ssl_enabled": {
            "type": "boolean",
            "description": "Indicates whether ssl is enabled for the website."
          },
          "https_redirect_enabled": {
            "type": "boolean",
            "description": "Indicates whether automatic https redirection is enabled for the website."
          },
          "http2_enabled": {
            "type": "boolean",
            "description": "Indicates whether http/2 protocol is enabled for the website."
          }
        },
        "additionalProperties": false
      },
      "MailZone": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "enabled": {
            "type": "boolean",
            "description": "Indicates whether the mail zone is enabled."
          },
          "available_accounts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MailZoneAccount"
            },
            "description": "List of mail zone accounts with their mailbox size."
          },
          "aliases": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Alias"
            },
            "description": "List of aliases on the mail zone\r\n\r\nAn alias is an e-mail address (alias) that automatically forwards received e-mails to another e-mail address (destination)."
          },
          "anti_spam": {
            "$ref": "#/components/schemas/AntiSpam"
          },
          "catch_all": {
            "$ref": "#/components/schemas/CatchAll"
          },
          "smtp_domains": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SmtpDomain"
            },
            "description": "List of extra smtp domains on the mail zone\r\n\r\nSMTP domain names allow you to link multiple domain names to a single e-mail address.\r\n\r\nE-mails sent to an SMTP domain will be caught by the respective e-mail address on the main domain name."
          }
        },
        "additionalProperties": false
      },
      "MailZoneAccount": {
        "type": "object",
        "properties": {
          "account_id": {
            "type": "integer",
            "description": "Mail zone account id, use this value to create a mailbox",
            "format": "int32"
          },
          "size": {
            "type": "integer",
            "description": "Size of mailbox(es) in MB",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "Mailbox": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "max_size": {
            "type": "integer",
            "description": "Maximum size in MB",
            "format": "int32"
          },
          "actual_size": {
            "type": "integer",
            "description": "Used size in MB",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "MailboxDetail": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "login": {
            "type": "string",
            "description": "Login to connect with the mailbox"
          },
          "max_size": {
            "type": "integer",
            "description": "Maximum size in MB",
            "format": "int32"
          },
          "actual_size": {
            "type": "integer",
            "description": "Used size in MB",
            "format": "int32"
          },
          "auto_reply": {
            "$ref": "#/components/schemas/AutoReply"
          },
          "auto_forward": {
            "$ref": "#/components/schemas/AutoForward"
          }
        },
        "additionalProperties": false
      },
      "MySqlDatabase": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Database name"
          },
          "hostname": {
            "type": "string",
            "description": "Hostname"
          },
          "user_count": {
            "type": "integer",
            "description": "The number of users.",
            "format": "int32"
          },
          "max_size": {
            "type": "integer",
            "description": "The maximim size in MB for the database.",
            "format": "int32"
          },
          "actual_size": {
            "type": "integer",
            "description": "The actual size in MB for the database.",
            "format": "int32"
          },
          "account_id": {
            "type": "integer",
            "description": "The account id for the database.",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "MySqlUser": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "User name"
          },
          "rights": {
            "$ref": "#/components/schemas/UserRights"
          },
          "enabled": {
            "type": "boolean",
            "description": "User status"
          }
        },
        "additionalProperties": false
      },
      "NameServer": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Nameserver name"
          },
          "ip": {
            "type": "string",
            "description": "Nameserver ip"
          }
        },
        "additionalProperties": false
      },
      "PhpVersion": {
        "type": "object",
        "properties": {
          "version": {
            "type": "string",
            "description": "Php version"
          }
        },
        "additionalProperties": false
      },
      "ProvisioningJobCompletion": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The id of the job."
          },
          "resource_links": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Links to the created resource(s)."
          }
        },
        "additionalProperties": false
      },
      "ProvisioningJobInfo": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The id of the job."
          },
          "status": {
            "$ref": "#/components/schemas/ProvisioningJobStatus"
          },
          "completion": {
            "$ref": "#/components/schemas/CompletionEstimation"
          }
        },
        "additionalProperties": false
      },
      "ProvisioningJobStatus": {
        "enum": [
          "ongoing",
          "cancelled",
          "failed",
          "finished"
        ],
        "type": "string",
        "description": "Current job status"
      },
      "RegisterDomain": {
        "type": "object",
        "properties": {
          "domain_name": {
            "type": "string",
            "description": "The domain name to register.\r\n\r\nOnly pass the domain part and the tld.\r\n<i>For abc.com, abc is the domain part, com is the tld.</i>"
          },
          "name_servers": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of name servers. When empty, the registation will be done on default name servers."
          },
          "registrant": {
            "$ref": "#/components/schemas/RegistrantInput"
          }
        },
        "additionalProperties": false
      },
      "Registrant": {
        "type": "object",
        "properties": {
          "first_name": {
            "type": "string",
            "description": "First name of the registrant."
          },
          "last_name": {
            "type": "string",
            "description": "Last name of the registrant."
          },
          "address": {
            "type": "string",
            "description": "Address of the registrant."
          },
          "postal_code": {
            "type": "string",
            "description": "Postal code of the registrant."
          },
          "city": {
            "type": "string",
            "description": "City of the registrant."
          },
          "country_code": {
            "type": "string",
            "description": "Country code of the registrant.\r\nSyntax: 'BE', 'NL, 'FR', ..."
          },
          "email": {
            "type": "string",
            "description": "Email of the registrant."
          },
          "fax": {
            "type": "string",
            "description": "Fax of the registrant.\r\nSyntax: '+32.123456789'"
          },
          "phone": {
            "type": "string",
            "description": "Phone of the registrant.\r\n\r\nSyntax: '+32.123456789'"
          },
          "language_code": {
            "type": "string",
            "description": "Language code of the registrant.\r\nSyntax: 'nl', 'fr', 'en', 'de', ..."
          },
          "company_name": {
            "type": "string",
            "description": "Company name of the registrant.\r\n\r\nThe registrant is a company if not empty, otherwise the registrant is an individual when validating extra fields."
          },
          "enterprise_number": {
            "type": "string",
            "description": "Enterprise number of the registrant.\r\n\r\nSyntax: 'BE0123456789'"
          }
        },
        "additionalProperties": false
      },
      "RegistrantInput": {
        "type": "object",
        "properties": {
          "first_name": {
            "type": "string",
            "description": "First name of the registrant."
          },
          "last_name": {
            "type": "string",
            "description": "Last name of the registrant."
          },
          "address": {
            "type": "string",
            "description": "Address of the registrant."
          },
          "postal_code": {
            "type": "string",
            "description": "Postal code of the registrant."
          },
          "city": {
            "type": "string",
            "description": "City of the registrant."
          },
          "country_code": {
            "type": "string",
            "description": "Country code of the registrant.\r\nSyntax: 'BE', 'NL, 'FR', ..."
          },
          "email": {
            "type": "string",
            "description": "Email of the registrant."
          },
          "fax": {
            "type": "string",
            "description": "Fax of the registrant.\r\nSyntax: '+32.123456789'"
          },
          "phone": {
            "type": "string",
            "description": "Phone of the registrant.\r\n\r\nSyntax: '+32.123456789'"
          },
          "language_code": {
            "type": "string",
            "description": "Language code of the registrant.\r\nSyntax: 'nl', 'fr', 'en', 'de', ..."
          },
          "company_name": {
            "type": "string",
            "description": "Company name of the registrant.\r\n\r\nThe registrant is a company if not empty, otherwise the registrant is an individual when validating extra fields."
          },
          "enterprise_number": {
            "type": "string",
            "description": "Enterprise number of the registrant.\r\n\r\nSyntax: 'BE0123456789'"
          },
          "extra_fields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ExtraField"
            },
            "description": "List of registrant extra fields for the domain name.\r\n<table><tr><th>Extension</th><th>Registrant specifics</th><th>Required extra field(s)</th></tr><tr><td>.dk</td><td>is a company</td><td>CompanyNumber</td></tr><tr><td>.es</td><td>is a company</td><td>CompanyNumber</td></tr><tr><td>.es</td><td>is an individual</td><td>PassportNumber</td></tr><tr><td>.fr</td><td>is a company</td><td>CompanyNumber</td></tr><tr><td>.it</td><td>is an individual and has country code 'IT'</td><td>CodiceFiscal</td></tr><tr><td>.it</td><td>is an individual and has not country code 'IT'</td><td>PassportNumber</td></tr><tr><td>.nu</td><td>is a company</td><td>CompanyNumber</td></tr><tr><td>.nu</td><td>is an individual</td><td>PassportNumber</td></tr><tr><td>.se</td><td>is a company</td><td>CompanyNumber</td></tr><tr><td>.se</td><td>is an individual</td><td>PassportNumber</td></tr></table>"
          }
        },
        "additionalProperties": false
      },
      "ScheduledTask": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The id of the scheduled task.\r\n\r\nThis value is ignored for creation of new scheduled tasks."
          },
          "enabled": {
            "type": "boolean",
            "description": "Enabled."
          },
          "cron_expression": {
            "type": "string",
            "description": "Cron expression of scheduled task.\r\n\r\n5-digit expressions (*/5 * * * *) are required in the following sequence:\r\n<ul><li>Minute (0 - 59, also */5, */10, */15 and */30 as every 5 minutes, every 10 minutes, every quarter or every half-hour are allowed)</li><li>Hour (0 - 23, also * as every hour is allowed)</li><li>Day of the month (1 - 31, also * as every day is allowed)</li><li>Month (1 - 12 as January to December, also * as every month is allowed)</li><li>Day of the week (1 - 7 as Monday to Sunday, also * as every day is allowed)</li></ul>"
          },
          "script_location": {
            "type": "string",
            "description": "Absolute path from this linux hosting to execute."
          }
        },
        "additionalProperties": false
      },
      "Servicepack": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The id of the service pack",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "description": "The name of the service pack"
          }
        },
        "additionalProperties": false,
        "description": "Servicepack information."
      },
      "SiteBinding": {
        "type": "object",
        "properties": {
          "protocol": {
            "type": "string",
            "description": "The protocol of the site binding."
          },
          "host_name": {
            "type": "string",
            "description": "The host name of the site binding."
          },
          "ip_address": {
            "type": "string",
            "description": "The IP address of the site binding."
          },
          "port": {
            "type": "integer",
            "description": "The port of the site binding.",
            "format": "int32"
          },
          "cert_thumbprint": {
            "type": "string",
            "description": "The certificate thumbprint of the site binding."
          },
          "ssl_enabled": {
            "type": "boolean",
            "description": "Indicates whether ssl is enabled for the binding."
          }
        },
        "additionalProperties": false,
        "description": "A site binding identifies a web domain."
      },
      "SmtpDomain": {
        "type": "object",
        "properties": {
          "hostname": {
            "type": "string",
            "description": "The smtp domain name"
          },
          "enabled": {
            "type": "boolean",
            "description": "Enabled"
          }
        },
        "additionalProperties": false
      },
      "SshConfiguration": {
        "type": "object",
        "properties": {
          "enabled": {
            "type": "boolean",
            "description": "Enable or disable SSH."
          }
        },
        "additionalProperties": false
      },
      "SshKey": {
        "type": "object",
        "properties": {
          "fingerprint": {
            "type": "string",
            "description": "The fingerprint of the public key.\r\n\r\nThis value is ignored for creation of new SSH keys."
          },
          "public_key": {
            "type": "string",
            "description": "Public key"
          }
        },
        "additionalProperties": false
      },
      "SshKeyDetail": {
        "type": "object",
        "properties": {
          "fingerprint": {
            "type": "string",
            "description": "The fingerprint of the public key.\r\n\r\nThis value is ignored for creation of new SSH keys."
          },
          "public_key": {
            "type": "string",
            "description": "Public key"
          },
          "linux_hostings": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of Linux hostings where SSH key is attached"
          }
        },
        "additionalProperties": false
      },
      "SslCertificate": {
        "type": "object",
        "properties": {
          "sha1_fingerprint": {
            "type": "string",
            "description": "The SHA-1 fingerprint of the certificate.\r\n\r\nThe fingerprint is a cryptographic hash which is a short unique identification of the certificate."
          },
          "common_name": {
            "type": "string",
            "description": "The common name (e.g. domain.com) of the certificate."
          },
          "expires_after": {
            "type": "string",
            "description": "The exact time the certificate will expire.",
            "format": "date-time"
          },
          "validation_level": {
            "$ref": "#/components/schemas/SslCertificateValidationLevel"
          },
          "type": {
            "$ref": "#/components/schemas/SslCertificateType"
          }
        },
        "additionalProperties": false
      },
      "SslCertificateDetail": {
        "type": "object",
        "properties": {
          "sha1_fingerprint": {
            "type": "string",
            "description": "The SHA-1 fingerprint of the certificate.\r\n\r\nThe fingerprint is a cryptographic hash which is a short unique identification of the certificate."
          },
          "common_name": {
            "type": "string",
            "description": "The common name (e.g. domain.com) of the certificate."
          },
          "expires_after": {
            "type": "string",
            "description": "The exact time the certificate will expire.",
            "format": "date-time"
          },
          "validation_level": {
            "$ref": "#/components/schemas/SslCertificateValidationLevel"
          },
          "type": {
            "$ref": "#/components/schemas/SslCertificateType"
          },
          "subject_alt_names": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SslSubjectAltName"
            },
            "description": "The list of all supported dns names in the certificate."
          }
        },
        "additionalProperties": false
      },
      "SslCertificateFileFormat": {
        "enum": [
          "pfx"
        ],
        "type": "string",
        "description": "The file format of the returned file stream:\r\n<ul><li>PFX: Also known as PKCS #12, is a single, password protected certificate archive that contains the entire certificate chain plus the matching private key.</li></ul>"
      },
      "SslCertificateRequest": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The id of the certificate request.",
            "format": "int32"
          },
          "certificate_type": {
            "$ref": "#/components/schemas/SslCertificateType"
          },
          "validation_level": {
            "$ref": "#/components/schemas/SslCertificateValidationLevel"
          },
          "vendor": {
            "$ref": "#/components/schemas/SslCertificateVendor"
          },
          "common_name": {
            "type": "string",
            "description": "The common name of the certificate request."
          },
          "order_code": {
            "type": "string",
            "description": "The order code of the certificate request."
          }
        },
        "additionalProperties": false
      },
      "SslCertificateRequestDetail": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The id of the certificate request.",
            "format": "int32"
          },
          "certificate_type": {
            "$ref": "#/components/schemas/SslCertificateType"
          },
          "validation_level": {
            "$ref": "#/components/schemas/SslCertificateValidationLevel"
          },
          "vendor": {
            "$ref": "#/components/schemas/SslCertificateVendor"
          },
          "common_name": {
            "type": "string",
            "description": "The common name of the certificate request."
          },
          "order_code": {
            "type": "string",
            "description": "The order code of the certificate request."
          },
          "subject_alt_names": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SslSubjectAltName"
            },
            "description": "The list of all supported domains in the certificate."
          },
          "validations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SslCertificateRequestValidation"
            },
            "description": "The list of validations related to domain verification.\r\n\r\nThis is based on the initially configured validations and any changes through the certificate provider's portal will not be reflected here."
          },
          "provider_portal_url": {
            "type": "string",
            "description": "The URL to access and change the information related to domain verification.\r\n\r\nThis URL wil expire within the hour after request and is valid within one browser session."
          }
        },
        "additionalProperties": false
      },
      "SslCertificateRequestValidation": {
        "type": "object",
        "properties": {
          "dns_name": {
            "type": "string",
            "description": "A domain name of the certificate."
          },
          "type": {
            "$ref": "#/components/schemas/SslCertificateRequestValidationType"
          },
          "auto_validated": {
            "type": "boolean",
            "description": "Returns true if no user interaction is required and the domain validation will be verified automatic."
          },
          "email_addresses": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "An array of eligible domain verification email addresses."
          },
          "cname_validation_name": {
            "type": "string",
            "description": "The host-part (Name) of the CNAME-record that must be created as part of domain verification."
          },
          "cname_validation_content": {
            "type": "string",
            "description": "The value-part (Point To) of the CNAME-record that must be created as part of domain verification."
          },
          "file_validation_url_http": {
            "type": "string",
            "description": "The URL (http format) your verification file must be uploaded to as part of domain verification."
          },
          "file_validation_url_https": {
            "type": "string",
            "description": "The URL (https format) your verification file must be uploaded to as part of domain verification."
          },
          "file_validation_content": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "The content your verification file must contain, consisting of three lines of plain-text."
          }
        },
        "additionalProperties": false
      },
      "SslCertificateRequestValidationType": {
        "enum": [
          "dns",
          "file",
          "email"
        ],
        "type": "string",
        "description": "The domain validation verification type."
      },
      "SslCertificateType": {
        "enum": [
          "standard",
          "multi_domain",
          "wildcard"
        ],
        "type": "string",
        "description": "The type of the certificate:\r\n<ul><li>Standard: Certificate for a single domain.</li><li>Multi domain: Certificate for multiple (sub)domains belonging to the same owner.</li><li>Wildcard: Certificate for all the subdomains.</li></ul>"
      },
      "SslCertificateValidationLevel": {
        "enum": [
          "domain_validated",
          "organization_validated",
          "extended_validated"
        ],
        "type": "string",
        "description": "The validation level of the certificate:\r\n<ul><li>Domain validated: Basic check of the identity of the owner of the domain name.</li><li>Organization validated: Company details are verified and integrated in the certificate.</li><li>Extended validated: A thorough verification of your domain name and company details.</li></ul>"
      },
      "SslCertificateVendor": {
        "enum": [
          "sectigo"
        ],
        "type": "string",
        "description": "The vendor of the certificate."
      },
      "SslSubjectAltName": {
        "type": "object",
        "properties": {
          "type": {
            "$ref": "#/components/schemas/SslSubjectAltNameType"
          },
          "value": {
            "type": "string",
            "description": "The value of the alt name."
          }
        },
        "additionalProperties": false
      },
      "SslSubjectAltNameType": {
        "enum": [
          "dns",
          "ip"
        ],
        "type": "string",
        "description": "The type of the alt name:\r\n<ul><li>Dns</li><li>Ip</li></ul>"
      },
      "TransferDomain": {
        "type": "object",
        "properties": {
          "domain_name": {
            "type": "string",
            "description": "The domain name to transfer.\r\n\r\nOnly pass the domain part and the tld.\r\n<i>For abc.com, abc is the domain part, com is the tld.</i>"
          },
          "auth_code": {
            "type": "string",
            "description": "Authorization code which allows the transfer to execute."
          },
          "name_servers": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of name servers. When empty, the transfer will be done on default name servers."
          },
          "registrant": {
            "$ref": "#/components/schemas/RegistrantInput"
          }
        },
        "additionalProperties": false
      },
      "UpdateAliasRequest": {
        "type": "object",
        "properties": {
          "destinations": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "The alias destination e-mail addresses"
          }
        },
        "additionalProperties": false
      },
      "UpdateAntiSpamRequest": {
        "type": "object",
        "properties": {
          "type": {
            "$ref": "#/components/schemas/AntiSpamTypes"
          }
        },
        "additionalProperties": false
      },
      "UpdateMailboxPasswordRequest": {
        "type": "object",
        "properties": {
          "password": {
            "type": "string",
            "description": "The password for the database user.\r\n\r\nPasswords have to adhere to following rules:\r\n<ul><li>Between 8-20 characters.</li><li>Must be a mix of letters and digits.</li><li>Must contain at least one digit (0-9).</li><li>Must contain at least one letter (a-z).</li><li>Cannot contain spaces.</li><li>Cannot contain characters: * € $ & + } { ' \" \\ </li></ul>"
          }
        },
        "additionalProperties": false
      },
      "UpdatePhpAPcuRequest": {
        "type": "object",
        "properties": {
          "apcu_size": {
            "type": "integer",
            "description": "The APcu size.",
            "format": "int32"
          },
          "enabled": {
            "type": "boolean",
            "description": "Enables or disables APC."
          }
        },
        "additionalProperties": false
      },
      "UpdatePhpMemoryLimitRequest": {
        "type": "object",
        "properties": {
          "memory_limit": {
            "type": "integer",
            "description": "The php memory limit",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "UpdateSmtpDomainRequest": {
        "type": "object",
        "properties": {
          "enabled": {
            "type": "boolean",
            "description": "Enabled"
          }
        },
        "additionalProperties": false
      },
      "UpdateUserPasswordRequest": {
        "type": "object",
        "properties": {
          "password": {
            "type": "string",
            "description": "The password for the database user.\r\n\r\nPasswords have to adhere to following rules:\r\n<ul><li>Between 8-20 characters.</li><li>Must be a mix of letters and digits.</li><li>Must contain at least one digit (0-9).</li><li>Must contain at least one letter (a-z).</li><li>Cannot contain spaces.</li><li>Cannot contain characters: * € $ & + } { ' \" \\ </li></ul>"
          }
        },
        "additionalProperties": false
      },
      "UpdateUserStatusRequest": {
        "type": "object",
        "properties": {
          "enabled": {
            "type": "boolean",
            "description": "Enabled"
          }
        },
        "additionalProperties": false
      },
      "UserRights": {
        "enum": [
          "read_and_write",
          "read_only"
        ],
        "type": "string",
        "description": "User rights"
      },
      "ValidationErrorMessage": {
        "type": "object",
        "properties": {
          "error_code": {
            "type": "string"
          },
          "error_text": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "WindowsHosting": {
        "type": "object",
        "properties": {
          "domain_name": {
            "type": "string",
            "description": "Domain name for the Windows hosting account."
          },
          "servicepack_id": {
            "type": "integer",
            "description": "Id of Windows hosting service package.",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "WindowsHostingDetail": {
        "type": "object",
        "properties": {
          "domain_name": {
            "type": "string",
            "description": "Domain name for the Windows hosting account."
          },
          "servicepack_id": {
            "type": "integer",
            "description": "Id of Windows hosting service package.",
            "format": "int32"
          },
          "max_size": {
            "type": "integer",
            "description": "Maximum webspace size in MB",
            "format": "int32"
          },
          "actual_size": {
            "type": "integer",
            "description": "Used webspace size in MB",
            "format": "int32"
          },
          "ip": {
            "type": "string",
            "description": "Windows hosting IP address"
          },
          "ip_type": {
            "$ref": "#/components/schemas/WindowsIpType"
          },
          "ftp_username": {
            "type": "string",
            "description": "Ftp username"
          },
          "application_pool": {
            "$ref": "#/components/schemas/ApplicationPool"
          },
          "sites": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WindowsSite"
            },
            "description": "A list of websites on the hosting account."
          },
          "mssql_database_names": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "A list of mssql databases linked to the hosting account.\r\n"
          }
        },
        "additionalProperties": false
      },
      "WindowsIpType": {
        "enum": [
          "dedicated",
          "shared"
        ],
        "type": "string",
        "description": "Type of the hosting IP address (dedicated or shared)"
      },
      "WindowsSite": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "The name of the website."
          },
          "path": {
            "type": "string",
            "description": "The path of the website."
          },
          "bindings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SiteBinding"
            },
            "description": "The bindings for the website."
          }
        },
        "additionalProperties": false
      }
    }
  },
  "tags": [
    {
      "name": "Accounts"
    },
    {
      "name": "DNS records",
      "description": "Manage the dns records for a domain name.<p>The interface allows you to manage following records: A, AAAA, CAA, CNAME, MX, TXT, SRV, ALIAS and TLSA.</p>"
    },
    {
      "name": "Domains",
      "description": "Manage your domains."
    },
    {
      "name": "Linux hostings",
      "description": "Manage your linux hostings."
    },
    {
      "name": "Mailboxes",
      "description": "Manage your mailboxes."
    },
    {
      "name": "Mail zones",
      "description": "Manage your mail zones."
    },
    {
      "name": "MySql databases",
      "description": "Manage your MySql databases."
    },
    {
      "name": "Provisioning jobs"
    },
    {
      "name": "Servicepacks"
    },
    {
      "name": "SSH"
    },
    {
      "name": "SSL certificate requests",
      "description": "Create new SSL certificates. In the provisioning documentation you can find more info on the flow that should be followed."
    },
    {
      "name": "SSL certificates",
      "description": "Manage your SSL certificates."
    },
    {
      "name": "Windows hostings",
      "description": "Manage your windows hostings."
    }
  ]
}