Quick start
Installation
pip install domainrobot
Basic usage
from domainrobot import Domainrobot
with Domainrobot(username="user", password="pass", context=4) as client:
# list all domains
result = client.domain.list()
for domain in result.data:
print(domain.name, domain.expire, domain.registryStatus)
Every service method returns a DomainrobotResponse where data is a list of
typed model objects. The model attributes match the API field names and provide
full IDE autocompletion.
Listing all domains
result = client.domain.list()
for domain in result.data:
# Domain model attributes (all optional, None if not returned by API):
#
# domain.name - domain name, e.g. "example.com"
# domain.idn - unicode version (punycode)
# domain.expire - expiration date
# domain.payable - next payable date
# domain.registryStatus - "ACTIVE", "HOLD", "LOCK", etc.
# domain.autoRenewStatus - "TRUE", "FALSE", "ONCE"
# domain.cancelationStatus- cancelation status if any
# domain.action - last action, e.g. "CREATE", "UPDATE"
# domain.authinfo - transfer auth code
# domain.dnssec - DNSSEC enabled (bool)
# domain.privacy - privacy service enabled (bool)
# domain.trustee - trustee service enabled (bool)
# domain.domainsafe - DomainSafe enabled (bool)
# domain.comment - custom comment
# domain.ownerc - owner contact (dict)
# domain.adminc - admin contact (dict)
# domain.techc - technical contact (dict)
# domain.zonec - zone contact (dict)
# domain.nameServers - list of name servers (list[dict])
# domain.period - registration period (dict)
# domain.created - creation date
# domain.updated - last update date
# domain.owner - owning user (dict)
# domain.extra - any unknown/new API fields (dict)
print(f"{domain.name:30s} {domain.expire} {domain.registryStatus}")
You can filter and sort with query parameters:
result = client.domain.list(
{
"filters": [{"key": "name", "value": "*.com", "operator": "LIKE"}],
"orders": [{"key": "expire", "type": "ASC"}],
},
keys=["status", "expire"],
)
Error handling
from domainrobot import Domainrobot, DomainrobotApiError, DomainrobotTransportError
try:
client.domain.info("nonexistent.example")
except DomainrobotApiError as e:
print(f"API error {e.status_code}: {e}")
print(e.messages) # list of error message dicts
print(e.response_body) # full response body
except DomainrobotTransportError as e:
print(f"Connection error: {e}")
print(e.original) # underlying httpx exception
Custom headers
Every method accepts an optional headers parameter:
client.domain.info("example.com", headers={"X-Domainrobot-Demo": "true"})