from __future__ import annotations
from ..models.resources import Domain, DomainCancelation, DomainRestore, Job
from ._base import BaseService
[docs]
class DomainService(BaseService):
"""Domain operations."""
[docs]
def create(self, body: dict, *, headers: dict | None = None):
"""Register a new domain. Async operation.
:param body: Domain data.
:param headers: Optional extra HTTP headers.
:returns: Response with :class:`~domainrobot.models.resources.Job` data.
"""
return self._request("POST", "/domain", json=body, headers=headers, model=Job)
[docs]
def info(self, name: str, *, headers: dict | None = None):
"""Inquire data for a domain.
:param name: Domain name.
:param headers: Optional extra HTTP headers.
:returns: Response with :class:`~domainrobot.models.resources.Domain` data.
"""
return self._request("GET", f"/domain/{name}", headers=headers, model=Domain)
[docs]
def update(self, name: str, body: dict, *, headers: dict | None = None):
"""Update a domain. Async operation.
:param name: Domain name.
:param body: Domain data to update.
:param headers: Optional extra HTTP headers.
:returns: Response with :class:`~domainrobot.models.resources.Job` data.
"""
return self._request(
"PUT", f"/domain/{name}", json=body, headers=headers, model=Job
)
[docs]
def list(
self,
body: dict | None = None,
*,
keys: list[str] | None = None,
headers: dict | None = None,
):
"""List domains.
:param body: Optional query filters.
:param keys: Additional data keys to return.
:param headers: Optional extra HTTP headers.
:returns: Response with list of :class:`~domainrobot.models.resources.Domain`.
"""
return self._request(
"POST",
"/domain/_search",
json=body or {},
params=self._keys_params(keys),
headers=headers,
model=Domain,
)
[docs]
def transfer(self, body: dict, *, headers: dict | None = None):
"""Transfer a domain. Async operation.
:param body: Domain transfer data including authinfo.
:param headers: Optional extra HTTP headers.
:returns: Response with :class:`~domainrobot.models.resources.Job` data.
"""
return self._request(
"POST", "/domain/_transfer", json=body, headers=headers, model=Job
)
[docs]
def renew(self, name: str, body: dict, *, headers: dict | None = None):
"""Renew a domain. Async operation.
:param name: Domain name.
:param body: Renewal data.
:param headers: Optional extra HTTP headers.
:returns: Response with :class:`~domainrobot.models.resources.Job` data.
"""
return self._request(
"PUT", f"/domain/{name}/_renew", json=body, headers=headers, model=Job
)
[docs]
def restore(self, name: str, body: dict, *, headers: dict | None = None):
"""Restore a domain. Async operation.
:param name: Domain name.
:param body: Restore data.
:param headers: Optional extra HTTP headers.
:returns: Response with :class:`~domainrobot.models.resources.Job` data.
"""
return self._request(
"PUT", f"/domain/{name}/_restore", json=body, headers=headers, model=Job
)
[docs]
def restore_list(
self,
body: dict | None = None,
*,
keys: list[str] | None = None,
headers: dict | None = None,
):
"""List restorable domains.
:param body: Optional query filters.
:param keys: Additional data keys to return.
:param headers: Optional extra HTTP headers.
:returns: Response with list of :class:`~domainrobot.models.resources.DomainRestore`.
"""
return self._request(
"POST",
"/domain/restore/_search",
json=body or {},
params=self._keys_params(keys),
headers=headers,
model=DomainRestore,
)
[docs]
def update_status(self, name: str, body: dict, *, headers: dict | None = None):
"""Update the registry status for a domain. Async operation.
:param name: Domain name.
:param body: Status data.
:param headers: Optional extra HTTP headers.
:returns: Response with :class:`~domainrobot.models.resources.Job` data.
"""
return self._request(
"PUT", f"/domain/{name}/_statusUpdate", json=body, headers=headers, model=Job
)
[docs]
def authinfo1_create(self, name: str, *, headers: dict | None = None):
"""Create an AuthInfo1 for a domain.
:param name: Domain name.
:param headers: Optional extra HTTP headers.
:returns: Response with :class:`~domainrobot.models.resources.Domain` data.
"""
return self._request(
"POST", f"/domain/{name}/_authinfo1", headers=headers, model=Domain
)
[docs]
def authinfo1_delete(self, name: str, *, headers: dict | None = None):
"""Delete an AuthInfo1 for a domain.
:param name: Domain name.
:param headers: Optional extra HTTP headers.
"""
return self._request("DELETE", f"/domain/{name}/_authinfo1", headers=headers)
[docs]
def authinfo2_create(self, name: str, *, headers: dict | None = None):
"""Create an AuthInfo2 for a domain.
:param name: Domain name.
:param headers: Optional extra HTTP headers.
"""
return self._request("POST", f"/domain/{name}/_authinfo2", headers=headers)
[docs]
def cancelation_create(self, name: str, body: dict, *, headers: dict | None = None):
"""Create a cancelation for a domain.
:param name: Domain name.
:param body: Cancelation data.
:param headers: Optional extra HTTP headers.
:returns: Response with :class:`~domainrobot.models.resources.DomainCancelation` data.
"""
return self._request(
"POST", f"/domain/{name}/cancelation", json=body, headers=headers, model=DomainCancelation
)
[docs]
def cancelation_update(self, name: str, body: dict, *, headers: dict | None = None):
"""Update a cancelation for a domain.
:param name: Domain name.
:param body: Cancelation data to update.
:param headers: Optional extra HTTP headers.
:returns: Response with :class:`~domainrobot.models.resources.DomainCancelation` data.
"""
return self._request(
"PUT", f"/domain/{name}/cancelation", json=body, headers=headers, model=DomainCancelation
)
[docs]
def cancelation_delete(self, name: str, *, headers: dict | None = None):
"""Delete a cancelation for a domain.
:param name: Domain name.
:param headers: Optional extra HTTP headers.
"""
return self._request("DELETE", f"/domain/{name}/cancelation", headers=headers)
[docs]
def cancelation_info(self, name: str, *, headers: dict | None = None):
"""Inquire cancelation data for a domain.
:param name: Domain name.
:param headers: Optional extra HTTP headers.
:returns: Response with :class:`~domainrobot.models.resources.DomainCancelation` data.
"""
return self._request(
"GET", f"/domain/{name}/cancelation", headers=headers, model=DomainCancelation
)
[docs]
def cancelation_list(
self,
body: dict | None = None,
*,
keys: list[str] | None = None,
headers: dict | None = None,
):
"""List domain cancelations.
:param body: Optional query filters.
:param keys: Additional data keys to return.
:param headers: Optional extra HTTP headers.
:returns: Response with list of :class:`~domainrobot.models.resources.DomainCancelation`.
"""
return self._request(
"POST",
"/domain/cancelation/_search",
json=body or {},
params=self._keys_params(keys),
headers=headers,
model=DomainCancelation,
)
[docs]
def comment_update(self, name: str, body: dict, *, headers: dict | None = None):
"""Update the comment for a domain.
:param name: Domain name.
:param body: Comment data.
:param headers: Optional extra HTTP headers.
"""
return self._request("PUT", f"/domain/{name}/_comment", json=body, headers=headers)
[docs]
def buy(self, body: dict, *, headers: dict | None = None):
"""Buy a domain from the premium market. Async operation.
:param body: Domain buy data.
:param headers: Optional extra HTTP headers.
:returns: Response with :class:`~domainrobot.models.resources.Job` data.
"""
return self._request("POST", "/domain/_buy", json=body, headers=headers, model=Job)
[docs]
def trade(self, body: dict, *, headers: dict | None = None):
"""Change the owner of a domain (trade). Async operation.
:param body: Domain trade data.
:param headers: Optional extra HTTP headers.
:returns: Response with :class:`~domainrobot.models.resources.Job` data.
"""
return self._request("POST", "/domain/_trade", json=body, headers=headers, model=Job)
[docs]
def owner_change(self, name: str, body: dict, *, headers: dict | None = None):
"""Change the owner contact of a domain. Async operation.
:param name: Domain name.
:param body: Owner change data.
:param headers: Optional extra HTTP headers.
:returns: Response with :class:`~domainrobot.models.resources.Job` data.
"""
return self._request(
"PUT", f"/domain/{name}/_ownerChange", json=body, headers=headers, model=Job
)
[docs]
def dnssec_update(self, name: str, body: dict, *, headers: dict | None = None):
"""Update DNSSEC data for a domain. Async operation.
:param name: Domain name.
:param body: DNSSEC data.
:param headers: Optional extra HTTP headers.
:returns: Response with :class:`~domainrobot.models.resources.Job` data.
"""
return self._request(
"PUT", f"/domain/{name}/_dnssec", json=body, headers=headers, model=Job
)