openapi: 3.0.3 info: title: 'ELITEDOMAINS API Documentation' description: 'The ELITEDOMAINS API allows you to manage domains, handles, and catcher orders programmatically through a simple REST API.' version: 1.0.0 servers: - url: 'https://api.elitedomains.de' tags: - name: 'Catcher Management' description: '' - name: 'Domain Management' description: '' - name: 'Domain Offers' description: '' - name: 'Handle Management' description: '' components: securitySchemes: default: type: http scheme: bearer description: 'You can retrieve your personal access token by visiting your account settings page in the ELITEDOMAINS dashboard. Contact support to enable API access for your account.' security: - default: [] paths: /catcher: get: summary: 'List all catcher orders' operationId: listAllCatcherOrders description: 'Retrieve a paginated list of all domain catcher orders in your account.' parameters: - in: query name: page description: 'The page number for pagination.' example: 1 required: false schema: type: integer description: 'The page number for pagination.' example: 1 - in: query name: per_page description: 'Number of results per page. Default: 500, Max: 500.' example: 500 required: false schema: type: integer description: 'Number of results per page. Default: 500, Max: 500.' example: 500 responses: 200: description: Success content: application/json: schema: type: object example: current_page: 1 per_page: 500 data: - name: example.de status: rgp users: 3 price: 5 dropdate_at: '2024-03-15' created_at: '2024-03-10 14:30:00' tags: - tag1 - tag2 properties: current_page: type: integer example: 1 per_page: type: integer example: 500 data: type: array example: - name: example.de status: rgp users: 3 price: 5 dropdate_at: '2024-03-15' created_at: '2024-03-10 14:30:00' tags: - tag1 - tag2 items: type: object properties: name: type: string example: example.de status: type: string example: rgp users: type: integer example: 3 price: type: integer example: 5 dropdate_at: type: string example: '2024-03-15' created_at: type: string example: '2024-03-10 14:30:00' tags: type: array example: - tag1 - tag2 items: type: string tags: - 'Catcher Management' post: summary: 'Add domain to catcher' operationId: addDomainToCatcher description: 'Add a new domain to the RGP (Redemption Grace Period) catcher. Successfully caught domains will be registered using your default handle configuration.' parameters: [] responses: 200: description: Success content: application/json: schema: type: object example: message: 'Domain added to catcher' name: example.de properties: message: type: string example: 'Domain added to catcher' name: type: string example: example.de 400: description: '' content: application/json: schema: oneOf: - description: 'Missing domain name' type: object example: message: 'Domain name is missing' properties: message: type: string example: 'Domain name is missing' - description: 'Invalid domain' type: object example: message: 'Domain name is invalid' properties: message: type: string example: 'Domain name is invalid' - description: 'Unsupported TLD' type: object example: message: 'Only .de domains are supported at this time. Support for additional TLDs is coming soon.' properties: message: type: string example: 'Only .de domains are supported at this time. Support for additional TLDs is coming soon.' - description: 'Missing handle' type: object example: message: 'Default handle in your accounts sale settings required' properties: message: type: string example: 'Default handle in your accounts sale settings required' 405: description: 'Droptime restriction' content: application/json: schema: type: object example: message: 'Catcher Create not possible between 2:00 and 4:00am' properties: message: type: string example: 'Catcher Create not possible between 2:00 and 4:00am' 409: description: 'Already added' content: application/json: schema: type: object example: message: 'Domain already added to catcher' properties: message: type: string example: 'Domain already added to catcher' tags: - 'Catcher Management' requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'The domain name to catch.' example: example.de price: type: integer description: "The maximum price you're willing to pay (minimum 2)." example: 10 required: - name delete: summary: 'Remove domain from catcher' operationId: removeDomainFromCatcher description: 'Remove a domain from your catcher order list.' parameters: [] responses: 200: description: Success content: application/json: schema: type: object example: message: 'Domain deleted' name: example.de properties: message: type: string example: 'Domain deleted' name: type: string example: example.de 400: description: 'Missing domain name' content: application/json: schema: type: object example: message: 'Domain name is missing' properties: message: type: string example: 'Domain name is missing' 404: description: 'Domain not found' content: application/json: schema: type: object example: message: 'Domain not found' properties: message: type: string example: 'Domain not found' 405: description: 'Droptime restriction' content: application/json: schema: type: object example: message: 'Catcher Delete not possible between 2:00 and 4:00am' properties: message: type: string example: 'Catcher Delete not possible between 2:00 and 4:00am' tags: - 'Catcher Management' requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'The domain name to remove.' example: example.de required: - name /catcher/info: get: summary: 'Get catcher domain info' operationId: getCatcherDomainInfo description: 'Retrieve status information for any domain in the catcher, including the number of users competing for it, the current status and the expected drop date. The domain does not need to be in your own catcher orders.' parameters: - in: query name: name description: 'The domain name.' example: example.de required: true schema: type: string description: 'The domain name.' example: example.de responses: 200: description: Success content: application/json: schema: type: object example: name: example.de status: rgp users: 3 dropdate_at: '2024-03-15 00:00:00' properties: name: type: string example: example.de status: type: string example: rgp users: type: integer example: 3 dropdate_at: type: string example: '2024-03-15 00:00:00' 400: description: 'Missing domain name' content: application/json: schema: type: object example: message: 'Domain name is missing' name: null properties: message: type: string example: 'Domain name is missing' name: type: string example: null nullable: true 404: description: 'Domain not in catcher' content: application/json: schema: type: object example: message: 'Domain not found' name: example.de properties: message: type: string example: 'Domain not found' name: type: string example: example.de tags: - 'Catcher Management' /domains: get: summary: 'List all domains' operationId: listAllDomains description: 'Retrieve a paginated list of all domains in your account.' parameters: - in: query name: page description: 'The page number for pagination.' example: 1 required: false schema: type: integer description: 'The page number for pagination.' example: 1 - in: query name: per_page description: 'Number of results per page. Default: 500, Max: 500.' example: 500 required: false schema: type: integer description: 'Number of results per page. Default: 500, Max: 500.' example: 500 responses: 200: description: Success content: application/json: schema: type: object example: current_page: 1 per_page: 500 data: - name: example.de redirector_settings: type: landing method: redirect_sale_page authinfo: E-Hc$f3xx auto_expire: '2024-12-31' paid_until: '2024-12-31' expires_at: '2025-01-01T00:00:00.000000Z' created_at: '2023-01-15T10:30:00.000000Z' properties: current_page: type: integer example: 1 per_page: type: integer example: 500 data: type: array example: - name: example.de redirector_settings: type: landing method: redirect_sale_page authinfo: E-Hc$f3xx auto_expire: '2024-12-31' paid_until: '2024-12-31' expires_at: '2025-01-01T00:00:00.000000Z' created_at: '2023-01-15T10:30:00.000000Z' items: type: object properties: name: type: string example: example.de redirector_settings: type: object properties: type: type: string example: landing method: type: string example: redirect_sale_page authinfo: type: string example: E-Hc$f3xx auto_expire: type: string example: '2024-12-31' paid_until: type: string example: '2024-12-31' expires_at: type: string example: '2025-01-01T00:00:00.000000Z' created_at: type: string example: '2023-01-15T10:30:00.000000Z' tags: - 'Domain Management' post: summary: 'Register or transfer a domain' operationId: registerOrTransferADomain description: 'Register a new domain or transfer an existing domain to your account. Domains will be created using your default redirector and handle configuration.' parameters: [] responses: 200: description: '' content: application/json: schema: oneOf: - description: 'Domain registered' type: object example: message: 'Domain registered successfully' name: example.de properties: message: type: string example: 'Domain registered successfully' name: type: string example: example.de - description: 'Domain transferred' type: object example: message: 'Domain transferred successfully' name: example.de properties: message: type: string example: 'Domain transferred successfully' name: type: string example: example.de 400: description: '' content: application/json: schema: oneOf: - description: 'Missing domain name' type: object example: message: 'Domain name is missing' properties: message: type: string example: 'Domain name is missing' - description: 'Invalid domain' type: object example: message: 'Domain name is invalid' properties: message: type: string example: 'Domain name is invalid' - description: 'Unsupported TLD' type: object example: message: 'Only .de domains are supported at this time. Support for additional TLDs is coming soon.' properties: message: type: string example: 'Only .de domains are supported at this time. Support for additional TLDs is coming soon.' - description: 'Invalid authcode' type: object example: message: 'Authcode invalid' properties: message: type: string example: 'Authcode invalid' - description: 'Missing handle' type: object example: message: 'Default handle in your accounts sale settings required' properties: message: type: string example: 'Default handle in your accounts sale settings required' 403: description: 'Registry error' content: application/json: schema: type: object example: message: 'The request was rejected by DENIC' properties: message: type: string example: 'The request was rejected by DENIC' 409: description: '' content: application/json: schema: oneOf: - description: 'Already registered' type: object example: message: 'Domain already registered' properties: message: type: string example: 'Domain already registered' - description: 'Already in account' type: object example: message: 'Domain already in your account' properties: message: type: string example: 'Domain already in your account' tags: - 'Domain Management' requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'The domain name.' example: example.de authinfo: type: string description: 'The authinfo code for domain transfers.' example: E-Hc$f3xx handle_id: type: integer description: 'The handle ID to use. If not provided, uses your default handle.' example: 123 period: type: integer description: 'Registration period in months. Defaults to 12.' example: 12 redirector_settings: type: object description: 'Redirector configuration object (optional).' example: [] properties: type: type: string description: 'Redirector type. Options: `redirect`, `landing`, `external`, `dns`.' example: landing method: type: string description: 'Redirect/landing method. For redirect: `301`, `302`, `meta`, `js`, `frame`. For landing: `redirect_sale_page`, `whitescreen`, `default`, `4sale`.' example: redirect_sale_page url: type: string description: 'Target URL (required for redirect type).' example: 'https://example.com' ns: type: array description: 'Array of 2 to 13 external nameservers (required for external type).' example: - ns1.example.com - ns2.example.com items: type: string dns: type: array description: 'Array of DNS entry objects (required for dns type).' example: - [] items: type: object properties: type: type: string description: 'DNS record type. Options: `A`, `AAAA`, `CNAME`, `MX`, `TXT`.' example: A name: type: string description: 'Use `@` for apex domain or subdomain name.' example: '@' value: type: string description: 'Record value (e.g., IP address or hostname).' example: 192.168.1.1 prio: type: integer description: 'Priority (only for MX records).' example: 10 ttl: type: integer description: 'Time To Live in seconds. Default: 3600.' example: 3600 options: type: object description: 'DNSSEC configuration (optional, for external/dns types).' example: [] properties: dnssec-active: type: string description: 'DNSSEC status. Options: `true`, `false`.' example: 'false' dnssec-key: type: string description: 'DNSSEC key (required if dnssec-active is true).' example: AwEAAa... dnssec-algorithm: type: string description: 'DNSSEC algorithm (required if dnssec-active is true).' example: '13' dnssec-flags: type: string description: 'DNSSEC flags (required if dnssec-active is true).' example: '257' required: - type required: - name patch: summary: 'Update a domain' operationId: updateADomain description: 'Update domain settings such as redirector configuration or handle assignment.' parameters: [] responses: 200: description: Success content: application/json: schema: type: object example: message: 'Domain updated' properties: message: type: string example: 'Domain updated' 400: description: '' content: application/json: schema: oneOf: - description: 'Missing domain name' type: object example: message: 'Domain name is missing' properties: message: type: string example: 'Domain name is missing' - description: 'Validation error' type: object example: message: 'Validation error details' properties: message: type: string example: 'Validation error details' 404: description: 'Domain not found' content: application/json: schema: type: object example: message: 'Domain not found' properties: message: type: string example: 'Domain not found' tags: - 'Domain Management' requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'The domain name.' example: example.de redirector_settings: type: object description: 'Redirector configuration object.' example: [] properties: type: type: string description: 'Redirector type. Options: `redirect`, `landing`, `external`, `dns`.' example: landing method: type: string description: 'Redirect/landing method. For redirect: `301`, `302`, `meta`, `js`, `frame`. For landing: `redirect_sale_page`, `whitescreen`, `default`, `4sale`.' example: redirect_sale_page url: type: string description: 'Target URL (required for redirect type).' example: 'https://example.com' ns: type: array description: 'Array of 2 to 13 external nameservers (required for external type).' example: - ns1.example.com - ns2.example.com items: type: string dns: type: array description: 'Array of DNS entry objects (required for dns type).' example: - [] items: type: object properties: type: type: string description: 'DNS record type. Options: `A`, `AAAA`, `CNAME`, `MX`, `TXT`.' example: A name: type: string description: 'Use `@` for apex domain or subdomain name.' example: '@' value: type: string description: 'Record value (e.g., IP address or hostname).' example: 192.168.1.1 prio: type: integer description: 'Priority (only for MX records).' example: 10 ttl: type: integer description: 'Time To Live in seconds. Default: 3600.' example: 3600 options: type: object description: 'DNSSEC configuration (optional, for external/dns types).' example: [] properties: dnssec-active: type: string description: 'DNSSEC status. Options: `true`, `false`.' example: 'false' dnssec-key: type: string description: 'DNSSEC key (required if dnssec-active is true).' example: AwEAAa... dnssec-algorithm: type: string description: 'DNSSEC algorithm (required if dnssec-active is true).' example: '13' dnssec-flags: type: string description: 'DNSSEC flags (required if dnssec-active is true).' example: '257' required: - type handle_id: type: integer description: 'The handle ID to assign to the domain.' example: 1234 required: - name delete: summary: 'Delete or transit a domain' operationId: deleteOrTransitADomain description: 'Delete a domain from your account or put it into DENIC transit state.' parameters: [] responses: 200: description: '' content: application/json: schema: oneOf: - description: 'Domain deleted' type: object example: message: 'Domain deleted' name: example.de properties: message: type: string example: 'Domain deleted' name: type: string example: example.de - description: 'Domain in transit' type: object example: message: 'Domain put in transit' name: example.de properties: message: type: string example: 'Domain put in transit' name: type: string example: example.de 400: description: 'Missing domain name' content: application/json: schema: type: object example: message: 'Domain name is missing' properties: message: type: string example: 'Domain name is missing' 403: description: 'Registry error' content: application/json: schema: type: object example: message: 'The request was rejected by DENIC' properties: message: type: string example: 'The request was rejected by DENIC' 404: description: 'Domain not found' content: application/json: schema: type: object example: message: 'Domain not found' properties: message: type: string example: 'Domain not found' tags: - 'Domain Management' requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'The domain name.' example: example.de transit: type: integer description: 'Set to 1 to put domain into transit state instead of deleting.' example: 0 required: - name /domains/prices: get: summary: 'List TLD prices' operationId: listTLDPrices description: "Retrieve the prices for all top-level domains (TLDs) available for registration. All prices are net (excluding VAT) and quoted per year.\n\nThe `price` object holds the price currently valid for your account. It may be lower than the standard price because of an active promotion or because an individual price has been negotiated for your account. The `original_price` object holds the standard list price without any promotions or individual pricing. The `custom` object indicates, per price type, whether an individual price is configured for your account that deviates from the standard price.\n\nA price may be `null` when the corresponding action is not offered for a TLD." parameters: - in: query name: tld description: 'Filter the result by a single TLD. The leading dot is optional.' example: de required: false schema: type: string description: 'Filter the result by a single TLD. The leading dot is optional.' example: de responses: 200: description: Success content: application/json: schema: type: object example: data: - tld: de price: reg: 5 transfer: 5 renew: 5 restore: 80 original_price: reg: 5 transfer: 5 renew: 5 restore: 80 custom: reg: false transfer: false renew: false restore: false properties: data: type: array example: - tld: de price: reg: 5 transfer: 5 renew: 5 restore: 80 original_price: reg: 5 transfer: 5 renew: 5 restore: 80 custom: reg: false transfer: false renew: false restore: false items: type: object properties: tld: type: string example: de price: type: object properties: reg: type: integer example: 5 transfer: type: integer example: 5 renew: type: integer example: 5 restore: type: integer example: 80 original_price: type: object properties: reg: type: integer example: 5 transfer: type: integer example: 5 renew: type: integer example: 5 restore: type: integer example: 80 custom: type: object properties: reg: type: boolean example: false transfer: type: boolean example: false renew: type: boolean example: false restore: type: boolean example: false tags: - 'Domain Management' /domains/tags: post: summary: 'Update domain tags' operationId: updateDomainTags description: 'Add or update tags for a specific domain in your portfolio. Tags help organize and categorize your domains.' parameters: [] responses: 200: description: Success content: application/json: schema: type: object example: tags: - premium - aged - brandable message: 'Tags saved.' properties: tags: type: array example: - premium - aged - brandable items: type: string message: type: string example: 'Tags saved.' 400: description: 'Invalid domain' content: application/json: schema: type: object example: message: 'Domain name is invalid' properties: message: type: string example: 'Domain name is invalid' 404: description: 'Domain not found' content: application/json: schema: type: object example: message: 'Domain not found' properties: message: type: string example: 'Domain not found' tags: - 'Domain Management' requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'The domain name.' example: example.de tags: type: array description: 'Array of tag names to assign to the domain.' example: - premium - aged - brandable items: type: string required: - name - tags /domains/check: get: summary: 'Check domain availability' operationId: checkDomainAvailability description: "Check the registry status of a `.de` domain. The `message` field contains the\ncurrent status. The most common values are `free` (available for registration)\nand `connect` (already registered). Other registry statuses such as\n`redemptionPeriod`, `transfer_lock` or `transit` may also be returned.\n\nOnly `.de` domains are supported at this time." parameters: - in: query name: name description: 'The domain name to check.' example: example.de required: true schema: type: string description: 'The domain name to check.' example: example.de responses: 200: description: '' content: application/json: schema: oneOf: - description: 'Domain available' type: object example: name: example.de message: free properties: name: type: string example: example.de message: type: string example: free - description: 'Domain registered' type: object example: name: example.de message: connect properties: name: type: string example: example.de message: type: string example: connect 400: description: '' content: application/json: schema: oneOf: - description: 'Missing domain name' type: object example: message: 'Domain name is missing' properties: message: type: string example: 'Domain name is missing' - description: 'Invalid domain' type: object example: message: 'Domain name is invalid' properties: message: type: string example: 'Domain name is invalid' - description: 'Unsupported TLD' type: object example: message: 'Only .de domains are supported at this time. Support for additional TLDs is coming soon.' properties: message: type: string example: 'Only .de domains are supported at this time. Support for additional TLDs is coming soon.' tags: - 'Domain Management' /domains/authinfo: get: summary: 'Get domain AuthInfo code' operationId: getDomainAuthInfoCode description: 'Retrieve the AuthInfo/transfer code for a domain. If none exists, a new one will be generated.' parameters: - in: query name: name description: 'The domain name.' example: example.de required: true schema: type: string description: 'The domain name.' example: example.de responses: 200: description: Success content: application/json: schema: type: object example: message: 'Authcode exists' name: example.de authinfo: EDxHc$f3xx expires_at: '07.04.2024 21:34:35' properties: message: type: string example: 'Authcode exists' name: type: string example: example.de authinfo: type: string example: EDxHc$f3xx expires_at: type: string example: '07.04.2024 21:34:35' 400: description: 'Missing domain name' content: application/json: schema: type: object example: message: 'Domain name is missing' properties: message: type: string example: 'Domain name is missing' 403: description: 'Registry error' content: application/json: schema: type: object example: message: 'The request was rejected by DENIC' properties: message: type: string example: 'The request was rejected by DENIC' 404: description: 'Domain not found' content: application/json: schema: type: object example: message: 'Domain not found' properties: message: type: string example: 'Domain not found' tags: - 'Domain Management' /domains/authinfo2/check: get: summary: 'Check AuthInfo2 availability' operationId: checkAuthInfo2Availability description: "Check if an AuthInfo2 letter can be ordered for a `.de` domain via DENIC. Only available for accounts\nthat use monthly invoicing (Sammelrechnung)." parameters: - in: query name: name description: 'The domain name to check.' example: example.de required: true schema: type: string description: 'The domain name to check.' example: example.de responses: 200: description: '' content: application/json: schema: oneOf: - description: 'Can be ordered' type: object example: name: example.de available: true message: 'AuthInfo2 can be ordered' properties: name: type: string example: example.de available: type: boolean example: true message: type: string example: 'AuthInfo2 can be ordered' - description: 'Not available' type: object example: name: example.de available: false message: 'AuthInfo2 cannot be ordered for this domain' properties: name: type: string example: example.de available: type: boolean example: false message: type: string example: 'AuthInfo2 cannot be ordered for this domain' 400: description: '' content: application/json: schema: oneOf: - description: 'Missing domain name' type: object example: message: 'Domain name is missing' properties: message: type: string example: 'Domain name is missing' - description: 'Invalid domain' type: object example: message: 'Domain name is invalid' properties: message: type: string example: 'Domain name is invalid' 403: description: 'Not a monthly invoice account' content: application/json: schema: type: object example: message: 'AuthInfo2 ordering via API requires monthly invoice billing (Sammelrechnung)' properties: message: type: string example: 'AuthInfo2 ordering via API requires monthly invoice billing (Sammelrechnung)' tags: - 'Domain Management' /domains/authinfo2: post: summary: 'Order AuthInfo2' operationId: orderAuthInfo2 description: "Order an AuthInfo2 letter from DENIC for a `.de` domain. Only available for accounts that use monthly\ninvoicing (Sammelrechnung); the order is added to the next collective invoice. A confirmation email\nis sent on success." parameters: [] responses: 200: description: '' content: application/json: schema: oneOf: - description: Ordered type: object example: name: example.de message: 'AuthInfo2 letter for example.de has been ordered and will be sent within 1-2 business days.' properties: name: type: string example: example.de message: type: string example: 'AuthInfo2 letter for example.de has been ordered and will be sent within 1-2 business days.' - description: Sandbox type: object example: name: example.de message: 'AuthInfo2 would be ordered (sandbox mode)' properties: name: type: string example: example.de message: type: string example: 'AuthInfo2 would be ordered (sandbox mode)' 400: description: '' content: application/json: schema: oneOf: - description: 'Missing domain name' type: object example: message: 'Domain name is missing' properties: message: type: string example: 'Domain name is missing' - description: 'Invalid domain' type: object example: message: 'Domain name is invalid' properties: message: type: string example: 'Domain name is invalid' - description: 'Not orderable' type: object example: message: 'AuthInfo2 cannot be ordered for this domain' properties: message: type: string example: 'AuthInfo2 cannot be ordered for this domain' 403: description: '' content: application/json: schema: oneOf: - description: 'Not a monthly invoice account' type: object example: message: 'AuthInfo2 ordering via API requires monthly invoice billing (Sammelrechnung)' properties: message: type: string example: 'AuthInfo2 ordering via API requires monthly invoice billing (Sammelrechnung)' - description: 'Payment problem' type: object example: message: 'There is a problem with your payment method. Please contact support.' properties: message: type: string example: 'There is a problem with your payment method. Please contact support.' tags: - 'Domain Management' requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'The domain name.' example: example.de sandbox: type: string description: 'Set to `1` or `true` to run in sandbox mode (no order, no billing).' example: '0' required: - name /domains/sedo: post: summary: 'Add domain to Sedo marketplace' operationId: addDomainToSedoMarketplace description: 'List a domain on the Sedo marketplace with a specified price. The domain will be configured for Paynow transactions.' parameters: [] responses: 200: description: Success content: application/json: schema: type: object example: message: 'SEDO-Domain added or updated successfully' name: example.de properties: message: type: string example: 'SEDO-Domain added or updated successfully' name: type: string example: example.de 400: description: '' content: application/json: schema: oneOf: - description: 'Missing domain name' type: object example: message: 'Domain name is missing' properties: message: type: string example: 'Domain name is missing' - description: 'Invalid price' type: object example: message: 'Price is required and must be greater than 0' properties: message: type: string example: 'Price is required and must be greater than 0' - description: 'Invalid domain' type: object example: message: 'Domain name is invalid' properties: message: type: string example: 'Domain name is invalid' 404: description: 'Domain not found' content: application/json: schema: type: object example: message: 'Domain not found in your inventory' properties: message: type: string example: 'Domain not found in your inventory' 500: description: 'Server error' content: application/json: schema: type: object example: message: 'An error occurred while processing the SEDO task' properties: message: type: string example: 'An error occurred while processing the SEDO task' tags: - 'Domain Management' requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'The domain name.' example: example.de price: type: number description: 'The listing price in EUR (must be greater than 0).' example: 1500.0 required: - name - price /offers: get: summary: 'List all domain offers' operationId: listAllDomainOffers description: 'Retrieve a paginated list of all sale pages (domain offers) in your account with relevant data including status, pricing, visitors, leads, and template information.' parameters: - in: query name: page description: 'The page number for pagination.' example: 1 required: false schema: type: integer description: 'The page number for pagination.' example: 1 - in: query name: per_page description: 'Number of results per page. Default: 50, Max: 500.' example: 50 required: false schema: type: integer description: 'Number of results per page. Default: 50, Max: 500.' example: 50 - in: query name: type description: 'Filter by offer type. Options: `paynow`, `4sale`.' example: paynow required: false schema: type: string description: 'Filter by offer type. Options: `paynow`, `4sale`.' example: paynow - in: query name: status description: 'Filter by status. Options: `verified`, `hold`, `not_configured`, `unverified`, `inactive`, `deconnect`.' example: verified required: false schema: type: string description: 'Filter by status. Options: `verified`, `hold`, `not_configured`, `unverified`, `inactive`, `deconnect`.' example: verified - in: query name: is_internal description: 'Filter by internal domains (true) or external domains (false).' example: true required: false schema: type: boolean description: 'Filter by internal domains (true) or external domains (false).' example: true - in: query name: template description: 'Filter by template name.' example: slim required: false schema: type: string description: 'Filter by template name.' example: slim - in: query name: min_price description: 'Minimum price filter.' example: 99 required: false schema: type: integer description: 'Minimum price filter.' example: 99 - in: query name: max_price description: 'Maximum price filter.' example: 5000 required: false schema: type: integer description: 'Maximum price filter.' example: 5000 - in: query name: min_visitors description: 'Minimum visitors in last 30 days.' example: 10 required: false schema: type: integer description: 'Minimum visitors in last 30 days.' example: 10 - in: query name: order_by description: 'Field to order by. Options: `created_at`, `name`, `price`, `visitors`, `status`. Default: `created_at`.' example: visitors required: false schema: type: string description: 'Field to order by. Options: `created_at`, `name`, `price`, `visitors`, `status`. Default: `created_at`.' example: visitors - in: query name: order_direction description: 'Order direction. Options: `asc`, `desc`. Default: `desc`.' example: desc required: false schema: type: string description: 'Order direction. Options: `asc`, `desc`. Default: `desc`.' example: desc responses: 200: description: Success content: application/json: schema: type: object example: current_page: 1 per_page: 50 total: 125 last_page: 3 data: - name: example.de type: paynow status: verified price: 2999 template: slim created_at: '2023-01-15T10:30:00.000000Z' is_internal: true redirect_status: true hide_on_marketplace: false visitors: last_30_days: 142 last_7_days: 35 referrer_30_days: 12 template_data: theme-color: blue price-suggest: 'true' tags: - premium - short properties: current_page: type: integer example: 1 per_page: type: integer example: 50 total: type: integer example: 125 last_page: type: integer example: 3 data: type: array example: - name: example.de type: paynow status: verified price: 2999 template: slim created_at: '2023-01-15T10:30:00.000000Z' is_internal: true redirect_status: true hide_on_marketplace: false visitors: last_30_days: 142 last_7_days: 35 referrer_30_days: 12 template_data: theme-color: blue price-suggest: 'true' tags: - premium - short items: type: object properties: name: type: string example: example.de type: type: string example: paynow status: type: string example: verified price: type: integer example: 2999 template: type: string example: slim created_at: type: string example: '2023-01-15T10:30:00.000000Z' is_internal: type: boolean example: true redirect_status: type: boolean example: true hide_on_marketplace: type: boolean example: false visitors: type: object properties: last_30_days: type: integer example: 142 last_7_days: type: integer example: 35 referrer_30_days: type: integer example: 12 template_data: type: object properties: theme-color: type: string example: blue price-suggest: type: string example: 'true' tags: type: array example: - premium - short items: type: string 401: description: Unauthenticated content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Domain Offers' /handles: get: summary: 'List all handles' operationId: listAllHandles description: 'Retrieve a paginated list of all contact handles in your account.' parameters: - in: query name: page description: 'The page number for pagination.' example: 1 required: false schema: type: integer description: 'The page number for pagination.' example: 1 - in: query name: per_page description: 'Number of results per page. Default: 500, Max: 500.' example: 500 required: false schema: type: integer description: 'Number of results per page. Default: 500, Max: 500.' example: 500 responses: 200: description: Success content: application/json: schema: type: object example: current_page: 1 per_page: 500 data: - id: 123 alias: JohnPrivate type: PERSON handle_name: 'John Doe' street_name: 'Unter den Linden' street_number: '12' postalcode: '12345' city: Berlin country_id: DE email: john@example.com phone: '+49.16094751251' created_at: '2023-01-15T10:30:00.000000Z' properties: current_page: type: integer example: 1 per_page: type: integer example: 500 data: type: array example: - id: 123 alias: JohnPrivate type: PERSON handle_name: 'John Doe' street_name: 'Unter den Linden' street_number: '12' postalcode: '12345' city: Berlin country_id: DE email: john@example.com phone: '+49.16094751251' created_at: '2023-01-15T10:30:00.000000Z' items: type: object properties: id: type: integer example: 123 alias: type: string example: JohnPrivate type: type: string example: PERSON handle_name: type: string example: 'John Doe' street_name: type: string example: 'Unter den Linden' street_number: type: string example: '12' postalcode: type: string example: '12345' city: type: string example: Berlin country_id: type: string example: DE email: type: string example: john@example.com phone: type: string example: '+49.16094751251' created_at: type: string example: '2023-01-15T10:30:00.000000Z' tags: - 'Handle Management' post: summary: 'Create a new handle' operationId: createANewHandle description: 'Add a new contact handle to your account. Handles are used for domain contact information at the registry.' parameters: [] responses: 200: description: Success content: application/json: schema: type: object example: id: 123 alias: JohnPrivate type: PERSON handle_name: 'John Doe' street_name: 'Unter den Linden' street_number: '12' postalcode: '12345' city: Berlin country_id: DE email: john@example.com phone: '+49.16094751251' created_at: '2023-01-15T10:30:00.000000Z' properties: id: type: integer example: 123 alias: type: string example: JohnPrivate type: type: string example: PERSON handle_name: type: string example: 'John Doe' street_name: type: string example: 'Unter den Linden' street_number: type: string example: '12' postalcode: type: string example: '12345' city: type: string example: Berlin country_id: type: string example: DE email: type: string example: john@example.com phone: type: string example: '+49.16094751251' created_at: type: string example: '2023-01-15T10:30:00.000000Z' 400: description: 'Validation error' content: application/json: schema: type: object example: message: 'Your input is invalid or incomplete.' error: field: - 'error message' properties: message: type: string example: 'Your input is invalid or incomplete.' error: type: object properties: field: type: array example: - 'error message' items: type: string 500: description: 'Unknown error' content: application/json: schema: type: object example: message: 'Unknown error' properties: message: type: string example: 'Unknown error' tags: - 'Handle Management' requestBody: required: true content: application/json: schema: type: object properties: alias: type: string description: 'Internal alias for the handle.' example: JohnPrivate type: type: string description: 'Handle type (PERSON or ORG).' example: PERSON handle_name: type: string description: 'Full name or company name.' example: 'John Doe' street_name: type: string description: 'Street name without house number.' example: 'Unter den Linden' street_number: type: string description: 'House number.' example: '12' postalcode: type: string description: 'Postal code.' example: '12345' city: type: string description: 'City name.' example: Berlin country_iso: type: string description: 'Country code (ISO 3166-2).' example: DE email: type: string description: 'Email address.' example: john@example.com phone: type: string description: 'Phone number in E.164 format.' example: '+49.16094751251' general_request: type: string description: 'General request email (optional).' example: general@example.com abuse_contact: type: string description: 'Abuse contact email (optional).' example: abuse@example.com address_suggest: type: string description: 'Set to "keep" to skip address validation.' example: keep required: - alias - type - handle_name - street_name - street_number - postalcode - city - country_iso - email - phone '/handles/{id}': patch: summary: 'Update a handle' operationId: updateAHandle description: 'Update an existing contact handle. Only include fields you want to update.' parameters: [] responses: 200: description: Success content: application/json: schema: type: object example: id: 123 alias: JohnPrivate type: PERSON handle_name: 'John Doe' street_name: 'Unter den Linden' street_number: '12' postalcode: '12345' city: Berlin country_id: DE email: john@example.com phone: '+49.16094751251' created_at: '2023-01-15T10:30:00.000000Z' properties: id: type: integer example: 123 alias: type: string example: JohnPrivate type: type: string example: PERSON handle_name: type: string example: 'John Doe' street_name: type: string example: 'Unter den Linden' street_number: type: string example: '12' postalcode: type: string example: '12345' city: type: string example: Berlin country_id: type: string example: DE email: type: string example: john@example.com phone: type: string example: '+49.16094751251' created_at: type: string example: '2023-01-15T10:30:00.000000Z' 400: description: 'Validation error' content: application/json: schema: type: object example: message: 'Your input is invalid or incomplete.' error: field: - 'error message' properties: message: type: string example: 'Your input is invalid or incomplete.' error: type: object properties: field: type: array example: - 'error message' items: type: string 404: description: 'Handle not found' content: application/json: schema: type: object example: message: 'Handle not found' properties: message: type: string example: 'Handle not found' tags: - 'Handle Management' requestBody: required: false content: application/json: schema: type: object properties: alias: type: string description: 'Internal alias for the handle.' example: JohnPrivate street_name: type: string description: 'Street name without house number.' example: 'Unter den Linden' street_number: type: string description: 'House number.' example: '12' postalcode: type: string description: 'Postal code.' example: '12345' city: type: string description: 'City name.' example: Berlin country_iso: type: string description: 'Country code (ISO 3166-2).' example: DE email: type: string description: 'Email address.' example: john@example.com phone: type: string description: 'Phone number in E.164 format.' example: '+49.16094751251' general_request: type: string description: 'General request email (optional).' example: general@example.com abuse_contact: type: string description: 'Abuse contact email (optional).' example: abuse@example.com address_suggest: type: string description: 'Set to "keep" to skip address validation.' example: keep parameters: - in: path name: id description: 'The handle ID.' example: 123 required: true schema: type: integer