{
    "openapi": "3.0.0",
    "info": {
        "title": "Simply.com API",
        "description": "Documentation for this API can be found on https://www.simply.com/docs/api/",
        "termsOfService": "https://www.simply.com/terms-of-service/",
        "version": "2.3.0"
    },
    "servers": [
        {
            "url": "https://api.simply.com"
        }
    ],
    "paths": {
        "/2/ddns/": {
            "get": {
                "tags": [
                    "dns"
                ],
                "summary": "Dynamic DNS helper endpoint",
                "description": "User-friendly DDNS endpoint that provides human-readable responses. For DynDNS protocol compatibility, use the /dyndns/ endpoint instead.",
                "operationId": "ddnsHelper",
                "parameters": [
                    {
                        "name": "domain",
                        "in": "query",
                        "description": "The domain you wish to update. Overrides data from hostname parameter.",
                        "required": false,
                        "schema": {
                            "type": "string"
                        },
                        "example": "example.com"
                    },
                    {
                        "name": "hostname",
                        "in": "query",
                        "description": "The full hostname you wish to create/update. Domain and record will be inferred from this.",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "example": "home.example.com"
                    },
                    {
                        "name": "record",
                        "in": "query",
                        "description": "The name of the DNS record you wish to create/update on the domain. Overrides data inferred from hostname parameter.",
                        "required": false,
                        "schema": {
                            "type": "string"
                        },
                        "example": "home"
                    },
                    {
                        "name": "myip",
                        "in": "query",
                        "description": "The IP address to be set. Will automatically use the client IP (REMOTE_ADDR) if this parameter is not provided. We recommend leaving this parameter blank.",
                        "required": false,
                        "schema": {
                            "type": "string"
                        },
                        "examples": {
                            "ipv4": {
                                "summary": "IPv4 address",
                                "value": "127.0.0.1"
                            },
                            "ipv6": {
                                "summary": "IPv6 address",
                                "value": "2001:0db8:85a3:0000:0000:8a2e:0370:7334"
                            }
                        }
                    },
                    {
                        "name": "ttl",
                        "in": "query",
                        "description": "The TTL (Time To Live) of the generated DNS record in seconds. Defaults to 3600.",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 3600
                        },
                        "example": 360
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Human-readable description of action taken",
                        "content": {
                            "text/plain": {
                                "schema": {
                                    "type": "string"
                                },
                                "examples": {
                                    "success": {
                                        "summary": "IP updated successfully",
                                        "value": "IP address has been updated to 1.2.3.4"
                                    },
                                    "nochange": {
                                        "summary": "IP unchanged",
                                        "value": "No change, IP address unchanged."
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "406": {
                        "description": "Invalid request parameters",
                        "content": {
                            "text/plain": {
                                "schema": {
                                    "type": "string"
                                },
                                "examples": {
                                    "nohost": {
                                        "summary": "Unknown hostname",
                                        "value": "Unknown hostname."
                                    },
                                    "notfqdn": {
                                        "summary": "Invalid hostname",
                                        "value": "Not a fully qualified domain or hostname."
                                    }
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Too many requests or IP updates. Check Retry-After header.",
                        "content": {
                            "text/plain": {
                                "schema": {
                                    "type": "string"
                                },
                                "example": "Throttled, too many IP updates or requests."
                            }
                        }
                    }
                }
            }
        },
        "/2/dyndns/": {
            "get": {
                "tags": [
                    "dns"
                ],
                "summary": "DynDNS protocol-compatible endpoint",
                "description": "Dyndns-compatible endpoint that emulates DynDNS protocol responses and functionality. Supports both IPv4 and IPv6 addresses.",
                "operationId": "dyndns",
                "parameters": [
                    {
                        "name": "hostname",
                        "in": "query",
                        "description": "The full hostname you wish to create/update. Domain and record will be inferred from this.",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "examples": {
                            "fqdn": {
                                "summary": "Full FQDN",
                                "value": "home.example.com"
                            },
                            "label": {
                                "summary": "Just label, domain parameter must then be provided",
                                "value": "home"
                            }
                        }
                    },
                    {
                        "name": "myip",
                        "in": "query",
                        "description": "The IP address to be set. Will automatically use the client IP (REMOTE_ADDR) if this parameter is not provided. We recommend leaving this parameter blank.",
                        "required": false,
                        "schema": {
                            "type": "string"
                        },
                        "examples": {
                            "ipv4": {
                                "summary": "IPv4 address",
                                "value": "127.0.0.1"
                            },
                            "ipv6": {
                                "summary": "IPv6 address",
                                "value": "2001:0db8:85a3:0000:0000:8a2e:0370:7334"
                            }
                        }
                    },
                    {
                        "name": "domain",
                        "in": "query",
                        "description": "Domain to change records on, must be used if domain cannot be inferred from hostname or if incorrectly inferred. Overrides data from hostname parameter.",
                        "required": false,
                        "schema": {
                            "type": "string"
                        },
                        "example": "example.com"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "DynDNS protocol responses",
                        "content": {
                            "text/plain": {
                                "schema": {
                                    "type": "string"
                                },
                                "examples": {
                                    "good": {
                                        "summary": "IP updated",
                                        "value": "good 1.2.3.4"
                                    },
                                    "nochg": {
                                        "summary": "IP unchanged",
                                        "value": "nochg 1.2.3.4"
                                    },
                                    "badauth": {
                                        "summary": "Authentication failed",
                                        "value": "badauth"
                                    },
                                    "nohost": {
                                        "summary": "Hostname not found",
                                        "value": "nohost"
                                    },
                                    "notfqdn": {
                                        "summary": "Invalid hostname",
                                        "value": "notfqdn"
                                    },
                                    "badagent": {
                                        "summary": "Unsupported client",
                                        "value": "badagent"
                                    },
                                    "abuse": {
                                        "summary": "Too many updates, inspect Retry-After header",
                                        "value": "abuse"
                                    },
                                    "dnserr": {
                                        "summary": "Problem creating DNS record, check DNS zone",
                                        "value": "dnserr"
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Authentication failed",
                        "content": {
                            "text/plain": {
                                "schema": {
                                    "type": "string"
                                },
                                "example": "badauth"
                            }
                        }
                    },
                    "406": {
                        "description": "Invalid hostname, domain not found, or other validation error",
                        "content": {
                            "text/plain": {
                                "schema": {
                                    "type": "string"
                                },
                                "examples": {
                                    "nohost": {
                                        "summary": "Domain not owned by account",
                                        "value": "nohost"
                                    },
                                    "notfqdn": {
                                        "summary": "Invalid hostname format",
                                        "value": "notfqdn"
                                    },
                                    "dnserr": {
                                        "summary": "DNS zone error",
                                        "value": "dnserr"
                                    }
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Too many requests. Rate limit exceeded. Check Retry-After header.",
                        "content": {
                            "text/plain": {
                                "schema": {
                                    "type": "string"
                                },
                                "example": "abuse"
                            }
                        }
                    }
                }
            }
        },
        "/2/my/products/{object}/dns/records/": {
            "get": {
                "tags": [
                    "dns"
                ],
                "summary": "Retrieve all DNS records for a product",
                "description": "Returns a complete list of all DNS records in the zone, including A, AAAA, CNAME, MX, TXT, SRV, and other record types.",
                "operationId": "getDnsRecords",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/object"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful response with DNS records",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "integer",
                                            "example": 200
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "success"
                                        },
                                        "records": {
                                            "description": "Array of DNS records in the zone",
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "record_id": {
                                                        "description": "Unique identifier for the DNS record",
                                                        "type": "integer",
                                                        "example": 123
                                                    },
                                                    "name": {
                                                        "description": "The hostname or label for the DNS record",
                                                        "type": "string",
                                                        "example": "example.com"
                                                    },
                                                    "ttl": {
                                                        "description": "Time To Live in seconds",
                                                        "type": "integer",
                                                        "example": 3600
                                                    },
                                                    "data": {
                                                        "description": "The record data (IP address, hostname, text value, etc.)",
                                                        "type": "string",
                                                        "example": "192.168.1.1"
                                                    },
                                                    "type": {
                                                        "description": "DNS record type",
                                                        "type": "string",
                                                        "example": "A"
                                                    },
                                                    "priority": {
                                                        "description": "Priority value (used for MX and SRV records)",
                                                        "type": "integer",
                                                        "example": 10,
                                                        "nullable": true
                                                    },
                                                    "comment": {
                                                        "description": "Optional comment for the DNS record",
                                                        "type": "string",
                                                        "example": "Primary record",
                                                        "nullable": true
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/AccessDenied"
                    },
                    "404": {
                        "description": "Product not found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "error": {
                                            "type": "string",
                                            "example": "Unknown or invalid product reference"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            },
            "post": {
                "tags": [
                    "dns"
                ],
                "summary": "Add new DNS record to a product DNS zone",
                "description": "Creates a new DNS record in the DNS zone. Supports all common record types including A, AAAA, CNAME, MX, TXT, SRV, and more.",
                "operationId": "addDnsRecord",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/object"
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/DnsRecordPayload"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "DNS record created successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "integer",
                                            "example": 200
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "success"
                                        },
                                        "record": {
                                            "properties": {
                                                "id": {
                                                    "description": "ID of the newly created record",
                                                    "type": "integer",
                                                    "example": 123
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid request data or validation error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "error": {
                                            "type": "string",
                                            "example": "Invalid DNS record type"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/AccessDenied"
                    },
                    "404": {
                        "$ref": "#/components/responses/ProductNotFound"
                    }
                }
            }
        },
        "/2/my/products/{object}/dns/records/{record_id}/": {
            "put": {
                "tags": [
                    "dns"
                ],
                "summary": "Update a DNS record in a product DNS zone",
                "description": "Updates an existing DNS record. All fields should be provided, as this is a full update operation. The DNS zone will be automatically reloaded if changes are detected.",
                "operationId": "updateDnsRecord",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/object"
                    },
                    {
                        "$ref": "#/components/parameters/record_id"
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/DnsRecordPayload"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Success"
                    },
                    "400": {
                        "description": "Invalid request data or validation error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "error": {
                                            "type": "string",
                                            "example": "Invalid DNS record type"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/AccessDenied"
                    },
                    "404": {
                        "description": "Product or DNS record not found"
                    }
                }
            },
            "delete": {
                "tags": [
                    "dns"
                ],
                "summary": "Remove DNS record from a product DNS zone",
                "description": "Deletes a specific DNS record by its ID. The DNS zone will be automatically reloaded after deletion.",
                "operationId": "deleteDnsRecord",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/object"
                    },
                    {
                        "$ref": "#/components/parameters/record_id"
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Success"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/AccessDenied"
                    },
                    "404": {
                        "description": "Product or DNS record not found"
                    }
                }
            }
        },
        "/2/my/products/{object}/dns/reload/": {
            "post": {
                "tags": [
                    "dns"
                ],
                "summary": "Force-reload a DNS zone",
                "description": "Manually triggers a DNS zone reload. Usually not necessary as zone reloads happen automatically after record modifications.",
                "operationId": "reloadDnsZone",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/object"
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Success"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/AccessDenied"
                    },
                    "404": {
                        "$ref": "#/components/responses/ProductNotFound"
                    }
                }
            }
        },
        "/2/my/products/{object}/nameservers/": {
            "get": {
                "tags": [
                    "registry"
                ],
                "summary": "Retrieve the current nameservers of a domain",
                "description": "Returns the nameservers currently registered for the product's domain at its registry.",
                "operationId": "getNameservers",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/object"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Nameservers retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "integer",
                                            "example": 200
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "success"
                                        },
                                        "nameservers": {
                                            "description": "Nameservers reported by the registry",
                                            "type": "array",
                                            "items": {
                                                "type": "string",
                                                "example": "ns1.simply.com"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/AccessDenied"
                    },
                    "404": {
                        "description": "Product not found or domain not managed by a known registry"
                    }
                }
            }
        },
        "/2/my/products/{object}/dnssec/": {
            "get": {
                "tags": [
                    "registry"
                ],
                "summary": "Retrieve DNSSEC keys registered on a domain",
                "description": "Returns the DNSSEC keys (DS or DNSKEY records) currently published at the registry for the product's domain. Each key includes the record type and its standard zone-file representation.",
                "operationId": "getDnssecKeys",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/object"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "DNSSEC keys retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "integer",
                                            "example": 200
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "success"
                                        },
                                        "dnssec_keys": {
                                            "description": "DNSSEC keys published at the registry",
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "type": {
                                                        "description": "Record type",
                                                        "type": "string",
                                                        "example": "ds",
                                                        "enum": [
                                                            "ds",
                                                            "dnskey"
                                                        ]
                                                    },
                                                    "data": {
                                                        "description": "Zone-file formatted record data",
                                                        "type": "string",
                                                        "example": "12345 13 2 abc123..."
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/AccessDenied"
                    },
                    "404": {
                        "description": "Product not found or domain not managed by a known registry"
                    }
                }
            }
        },
        "/2/my/products/{object}/dns/": {
            "get": {
                "tags": [
                    "dns"
                ],
                "summary": "Retrieve DNS zone metadata",
                "description": "Retrieve meta information about a DNS zone for a product, including zone name and configuration.",
                "operationId": "getDnsZone",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/object"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "DNS zone information retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "integer",
                                            "example": 200
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "success"
                                        },
                                        "zone": {
                                            "properties": {
                                                "name": {
                                                    "description": "The domain name of the DNS zone",
                                                    "type": "string",
                                                    "example": "example.com"
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/AccessDenied"
                    },
                    "404": {
                        "$ref": "#/components/responses/ProductNotFound"
                    }
                }
            }
        },
        "/2/my/serverstatus/messages/": {
            "get": {
                "tags": [
                    "serverstatus"
                ],
                "summary": "Retrieve server status messages",
                "description": "Retrieve a list of current and past server status messages, including planned maintenance and incidents. Returns messages from the last 6 months.",
                "operationId": "getServerStatusMessages",
                "responses": {
                    "200": {
                        "description": "Successful response with past and present messages",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "integer",
                                            "example": 200
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "success"
                                        },
                                        "messages": {
                                            "description": "Array of server status messages",
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "text": {
                                                        "description": "Message content in markdown format",
                                                        "type": "string",
                                                        "example": "Scheduled maintenance will occur on server cluster X"
                                                    },
                                                    "date_start": {
                                                        "description": "Start date/time of the event",
                                                        "type": "string",
                                                        "format": "date-time",
                                                        "example": "2026-01-21T10:00:00Z"
                                                    },
                                                    "date_end": {
                                                        "description": "End date/time of the event (null if ongoing)",
                                                        "type": "string",
                                                        "format": "date-time",
                                                        "example": "2026-01-21T12:00:00Z",
                                                        "nullable": true
                                                    },
                                                    "type": {
                                                        "description": "Type of message (planned for scheduled maintenance, or omitted for incidents)",
                                                        "type": "string",
                                                        "example": "planned",
                                                        "nullable": true
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    }
                }
            }
        },
        "/2/my/invoices/": {
            "get": {
                "tags": [
                    "billing"
                ],
                "summary": "Retrieve list of invoices",
                "description": "Retrieve list of all paid, credited, and refunded invoices for the account. Invoices are returned in reverse chronological order (newest first).",
                "operationId": "getInvoices",
                "responses": {
                    "200": {
                        "description": "List of invoices retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "integer",
                                            "example": 200
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "success"
                                        },
                                        "invoices": {
                                            "description": "Array of invoices",
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "date": {
                                                        "description": "Payment date",
                                                        "type": "string",
                                                        "format": "date-time",
                                                        "example": "2026-01-15T10:30:00Z"
                                                    },
                                                    "invoiceno": {
                                                        "description": "Invoice number",
                                                        "type": "string",
                                                        "example": "2026-12345"
                                                    },
                                                    "reference": {
                                                        "description": "Product reference/handle",
                                                        "type": "string",
                                                        "example": "example.com",
                                                        "nullable": true
                                                    },
                                                    "subject": {
                                                        "description": "Invoice subject/description",
                                                        "type": "string",
                                                        "example": "Domain renewal for example.com"
                                                    },
                                                    "amount": {
                                                        "description": "Invoice amount",
                                                        "type": "number",
                                                        "format": "float",
                                                        "example": 99.95
                                                    },
                                                    "currency": {
                                                        "description": "Currency code (ISO 4217)",
                                                        "type": "string",
                                                        "example": "DKK"
                                                    },
                                                    "transactionno": {
                                                        "description": "Payment transaction number",
                                                        "type": "string",
                                                        "example": "TXN123456"
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    }
                }
            }
        },
        "/2/my/products/": {
            "get": {
                "tags": [
                    "products"
                ],
                "summary": "Retrieve list of products",
                "description": "Retrieve list of all active products on the account, including hosting packages, domains, and DNS services. Products are ordered by handle.",
                "operationId": "getProductList",
                "parameters": [],
                "responses": {
                    "200": {
                        "description": "List of products retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "integer",
                                            "example": 200
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "success"
                                        },
                                        "products": {
                                            "description": "Array of products",
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "object": {
                                                        "description": "Product identifier to be used in further API calls (e.g., for DNS endpoints)",
                                                        "type": "string",
                                                        "example": "example.com"
                                                    },
                                                    "object_uri": {
                                                        "description": "The base URL for the product object in API calls",
                                                        "type": "string",
                                                        "example": "/2/my/products/example.com/"
                                                    },
                                                    "name": {
                                                        "description": "Product name/handle",
                                                        "type": "string",
                                                        "example": "example.com"
                                                    },
                                                    "cancelled": {
                                                        "description": "Whether the product has been cancelled",
                                                        "type": "boolean",
                                                        "example": false
                                                    },
                                                    "domain": {
                                                        "description": "Domain information for the product",
                                                        "properties": {
                                                            "name": {
                                                                "description": "ASCII domain name",
                                                                "type": "string",
                                                                "example": "example.com"
                                                            },
                                                            "name_idn": {
                                                                "description": "Internationalized domain name (IDN)",
                                                                "type": "string",
                                                                "example": "example.com"
                                                            },
                                                            "managed": {
                                                                "description": "Whether the domain is registered and managed by Simply.com",
                                                                "type": "boolean",
                                                                "example": true
                                                            },
                                                            "date_renewdate": {
                                                                "description": "Next renewal date for the domain (null if not managed)",
                                                                "type": "string",
                                                                "format": "date-time",
                                                                "example": "2027-01-21T00:00:00Z",
                                                                "nullable": true
                                                            }
                                                        },
                                                        "type": "object"
                                                    },
                                                    "product": {
                                                        "description": "Product service information",
                                                        "properties": {
                                                            "id": {
                                                                "description": "Service ID",
                                                                "type": "integer",
                                                                "example": 42
                                                            },
                                                            "name": {
                                                                "description": "Service name",
                                                                "type": "string",
                                                                "example": "DNS Service"
                                                            },
                                                            "date_created": {
                                                                "description": "Product creation date",
                                                                "type": "string",
                                                                "format": "date-time",
                                                                "example": "2025-01-21T10:00:00Z"
                                                            },
                                                            "date_expire": {
                                                                "description": "Product expiration date (null for products without expiration)",
                                                                "type": "string",
                                                                "format": "date-time",
                                                                "example": "2027-01-21T10:00:00Z",
                                                                "nullable": true
                                                            }
                                                        },
                                                        "type": "object"
                                                    },
                                                    "usernames": {
                                                        "description": "Service access usernames (only present for hosting products)",
                                                        "properties": {
                                                            "ftp": {
                                                                "description": "FTP username",
                                                                "type": "string",
                                                                "example": "user123"
                                                            },
                                                            "ssh": {
                                                                "description": "SSH username",
                                                                "type": "string",
                                                                "example": "user123"
                                                            },
                                                            "mysql": {
                                                                "description": "MySQL username",
                                                                "type": "string",
                                                                "example": "user123_db"
                                                            },
                                                            "mssql": {
                                                                "description": "MSSQL username",
                                                                "type": "string",
                                                                "example": "user123_db"
                                                            }
                                                        },
                                                        "type": "object",
                                                        "nullable": true
                                                    },
                                                    "servers": {
                                                        "description": "Server information (only present for hosting products)",
                                                        "properties": {
                                                            "webserver": {
                                                                "description": "Web server information",
                                                                "properties": {
                                                                    "hostname": {
                                                                        "description": "Server hostname",
                                                                        "type": "string",
                                                                        "example": "server42.simply.com"
                                                                    },
                                                                    "ip": {
                                                                        "description": "Server IP address",
                                                                        "type": "string",
                                                                        "example": "1.2.3.4"
                                                                    }
                                                                },
                                                                "type": "object"
                                                            },
                                                            "ftpserver": {
                                                                "description": "FTP server information",
                                                                "properties": {
                                                                    "username": {
                                                                        "description": "FTP username",
                                                                        "type": "string",
                                                                        "example": "user123"
                                                                    },
                                                                    "hostname": {
                                                                        "description": "Server hostname",
                                                                        "type": "string",
                                                                        "example": "server42.simply.com"
                                                                    },
                                                                    "ip": {
                                                                        "description": "Server IP address",
                                                                        "type": "string",
                                                                        "example": "1.2.3.4"
                                                                    }
                                                                },
                                                                "type": "object"
                                                            },
                                                            "sshserver": {
                                                                "description": "SSH server information. Add public-key manually through Simply.com Controlpanel.",
                                                                "properties": {
                                                                    "auth": {
                                                                        "description": "Authentication method",
                                                                        "type": "string",
                                                                        "example": "publickey"
                                                                    },
                                                                    "username": {
                                                                        "description": "SSH username",
                                                                        "type": "string",
                                                                        "example": "user123"
                                                                    },
                                                                    "hostname": {
                                                                        "description": "Server hostname",
                                                                        "type": "string",
                                                                        "example": "server42.simply.com"
                                                                    },
                                                                    "ip": {
                                                                        "description": "Server IP address",
                                                                        "type": "string",
                                                                        "example": "1.2.3.4"
                                                                    }
                                                                },
                                                                "type": "object"
                                                            }
                                                        },
                                                        "type": "object",
                                                        "nullable": true
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    }
                }
            }
        },
        "/2/my/products/{object}/mail/accounts/": {
            "post": {
                "tags": [
                    "mail"
                ],
                "summary": "Add new mail account to a product",
                "description": "Creates a new email account for the product. The email address will be username@domain. The account will be created with the product's default mail quota.",
                "operationId": "addMailAccount",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/object"
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/AddMailAccountPayload"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Success"
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/AccessDenied"
                    },
                    "404": {
                        "$ref": "#/components/responses/ProductNotFound"
                    }
                }
            }
        },
        "/2/my/order/dnsservice/": {
            "post": {
                "tags": [
                    "order"
                ],
                "summary": "Order a DNS service with optional domain registration/transfer",
                "description": "Order a DNS service, optionally registering or transferring a domain. If payment is required, a working credit card must be on file. The order will be processed immediately if payment succeeds.",
                "operationId": "orderDnsService",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/OrderDnsServicePayload"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Order created and processed successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "integer",
                                            "example": 200
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "success"
                                        },
                                        "order": {
                                            "description": "Order information (only present if payment was required)",
                                            "properties": {
                                                "payment_id": {
                                                    "description": "Payment ID for the order",
                                                    "type": "integer",
                                                    "example": 12345
                                                }
                                            },
                                            "type": "object",
                                            "nullable": true
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid request data, unsupported service, domain status mismatch, or payment failed",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "error": {
                                            "type": "string",
                                            "example": "Provided domain has unsupported or non-matching status"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    }
                }
            }
        },
        "/2/my/domaincheck/{domain}/": {
            "get": {
                "tags": [
                    "domains"
                ],
                "summary": "Check domain availability",
                "description": "Check if a domain is available for registration or can be transferred. Supports both ASCII and internationalized domain names (IDN). Note: This endpoint includes a 1-second delay to prevent abuse.",
                "operationId": "domaincheck",
                "parameters": [
                    {
                        "name": "domain",
                        "in": "path",
                        "description": "The fully qualified domain name to check (e.g., example.com)",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "example": "example.com"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Domain check completed successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "integer",
                                            "example": 200
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "success"
                                        },
                                        "domain": {
                                            "description": "Domain availability information",
                                            "properties": {
                                                "name": {
                                                    "description": "The checked domain name (IDN format)",
                                                    "type": "string",
                                                    "example": "example.com"
                                                },
                                                "extension": {
                                                    "description": "The domain extension/TLD",
                                                    "type": "string",
                                                    "example": "com"
                                                },
                                                "status": {
                                                    "description": "Domain status",
                                                    "type": "string",
                                                    "example": "available",
                                                    "enum": [
                                                        "available",
                                                        "taken",
                                                        "error"
                                                    ]
                                                },
                                                "available": {
                                                    "description": "Whether the domain is available for registration",
                                                    "type": "boolean",
                                                    "example": true
                                                },
                                                "canregister": {
                                                    "description": "Whether the domain can be registered",
                                                    "type": "boolean",
                                                    "example": true
                                                },
                                                "cantransfer": {
                                                    "description": "Whether the domain can be transferred",
                                                    "type": "boolean",
                                                    "example": false
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "SuccessResponse": {
                "properties": {
                    "status": {
                        "type": "integer",
                        "example": 200
                    },
                    "message": {
                        "type": "string",
                        "example": "success"
                    }
                },
                "type": "object"
            },
            "ErrorResponse": {
                "properties": {
                    "error": {
                        "type": "string",
                        "example": "Invalid request data"
                    }
                },
                "type": "object"
            },
            "DnsRecordType": {
                "type": "string",
                "enum": [
                    "A",
                    "CNAME",
                    "AAAA",
                    "ALIAS",
                    "MX",
                    "TXT",
                    "NS",
                    "DS",
                    "DNSKEY",
                    "SRV",
                    "SPF",
                    "SOA",
                    "HTTPS",
                    "LOC",
                    "CAA",
                    "SSHFP",
                    "TLSA"
                ]
            },
            "DnsRecordPayload": {
                "required": [
                    "type",
                    "name",
                    "data"
                ],
                "properties": {
                    "type": {
                        "$ref": "#/components/schemas/DnsRecordType"
                    },
                    "name": {
                        "description": "The hostname or label for the DNS record",
                        "type": "string",
                        "example": "www.example.com"
                    },
                    "data": {
                        "description": "The record data (IP address, hostname, text value, etc.)",
                        "type": "string",
                        "example": "1.2.3.4"
                    },
                    "ttl": {
                        "description": "Time To Live in seconds. Defaults to zone default if not specified.",
                        "type": "integer",
                        "example": 3600,
                        "nullable": true,
                        "default": null
                    },
                    "priority": {
                        "description": "Priority value (required for MX and SRV records)",
                        "type": "integer",
                        "example": 10,
                        "nullable": true,
                        "default": null
                    },
                    "comment": {
                        "description": "Optional comment for the DNS record",
                        "type": "string",
                        "example": "Production server",
                        "nullable": true,
                        "default": null
                    }
                },
                "type": "object"
            },
            "AddMailAccountPayload": {
                "required": [
                    "username",
                    "password"
                ],
                "properties": {
                    "username": {
                        "description": "The local part of the email address (before @). Must be unique for the domain.",
                        "type": "string",
                        "example": "john"
                    },
                    "password": {
                        "description": "Password for the email account. Should be a strong password.",
                        "type": "string",
                        "example": "VERYSECRET"
                    }
                },
                "type": "object"
            },
            "OrderDnsServicePayload": {
                "required": [
                    "domain"
                ],
                "properties": {
                    "domain": {
                        "description": "Fully qualified domain name. Both ASCII and IDN domains are supported.",
                        "type": "string",
                        "example": "example.com"
                    },
                    "domainaction": {
                        "description": "Action to perform on the domain. Must match domain availability status.",
                        "type": "string",
                        "example": "register",
                        "nullable": true,
                        "default": null,
                        "enum": [
                            "register",
                            "transfer",
                            "transferonly",
                            "none"
                        ],
                        "x-enumDescriptions": {
                            "register": "Register a new domain name (domain must be available)",
                            "transfer": "Transfer a domain and update nameservers to Simply.com (domain must be taken)",
                            "transferonly": "Transfer a domain without nameserver changes (domain must be taken)",
                            "none": "Use existing domain without registration or transfer (domain must be taken)"
                        }
                    },
                    "authid": {
                        "description": "Authorization code for domain transfer (required for transfer and transferonly actions)",
                        "type": "string",
                        "example": "AUTH12345CODE",
                        "nullable": true,
                        "default": null
                    },
                    "coupon": {
                        "description": "Optional coupon code to apply to the order",
                        "type": "string",
                        "example": "FOOBAR",
                        "nullable": true,
                        "default": null
                    },
                    "autorenew": {
                        "description": "Whether to enable automatic renewal for the product",
                        "type": "boolean",
                        "example": true,
                        "nullable": true,
                        "default": null
                    }
                },
                "type": "object"
            }
        },
        "responses": {
            "Success": {
                "description": "Operation completed successfully",
                "content": {
                    "application/json": {
                        "schema": {
                            "$ref": "#/components/schemas/SuccessResponse"
                        }
                    }
                }
            },
            "BadRequest": {
                "description": "Invalid request data or validation error",
                "content": {
                    "application/json": {
                        "schema": {
                            "$ref": "#/components/schemas/ErrorResponse"
                        }
                    }
                }
            },
            "Unauthorized": {
                "description": "Authentication failed"
            },
            "AccessDenied": {
                "description": "Access denied to this product"
            },
            "ProductNotFound": {
                "description": "Product not found"
            }
        },
        "parameters": {
            "record_id": {
                "name": "record_id",
                "in": "path",
                "description": "The id of a DNS record in a DNS zone.",
                "required": true,
                "schema": {
                    "type": "integer"
                }
            },
            "object": {
                "name": "object",
                "in": "path",
                "description": "The product handle/UUID, as found in the /my/products/ endpoint.",
                "required": true,
                "schema": {
                    "type": "string"
                },
                "example": "example.com"
            }
        },
        "securitySchemes": {
            "basicAuth": {
                "type": "http",
                "description": "Username is the name of your Simply.com account (S123456), password is the API-key for this account.",
                "scheme": "basic"
            }
        }
    },
    "security": [
        {
            "basicAuth": []
        }
    ],
    "tags": [
        {
            "name": "dns",
            "description": "Manage DNS zones and records on the Simply.com nameservers \u2014 includes Dynamic DNS (DDNS/DynDNS) endpoints for home IP updates."
        },
        {
            "name": "mail",
            "description": "Create and manage email accounts for a product."
        },
        {
            "name": "domains",
            "description": "Check domain availability for registration or transfer."
        },
        {
            "name": "registry",
            "description": "Read registry-level data for a domain, such as its current nameservers."
        },
        {
            "name": "order",
            "description": "Create new product and domain orders."
        },
        {
            "name": "billing",
            "description": "Retrieve account invoices and billing history."
        },
        {
            "name": "products",
            "description": "List and inspect hosting and service products on the account."
        },
        {
            "name": "serverstatus",
            "description": "Public server-status messages including planned maintenance and incident notifications."
        }
    ]
}