Source code for domainrobot.services.zone

from __future__ import annotations

from ..models.resources import Zone
from ._base import BaseService


[docs] class ZoneService(BaseService): """DNS zone operations."""
[docs] def create(self, body: dict, *, headers: dict | None = None): """Create a zone. :param body: Zone data. :param headers: Optional extra HTTP headers. :returns: Response with :class:`~domainrobot.models.resources.Zone` data. """ return self._request("POST", "/zone", json=body, headers=headers, model=Zone)
[docs] def info(self, name: str, virtual_ns: str, *, headers: dict | None = None): """Inquire data for a zone. :param name: Zone origin. :param virtual_ns: Virtual name server. :param headers: Optional extra HTTP headers. :returns: Response with :class:`~domainrobot.models.resources.Zone` data. """ return self._request("GET", f"/zone/{name}/{virtual_ns}", headers=headers, model=Zone)
[docs] def update(self, name: str, virtual_ns: str, body: dict, *, headers: dict | None = None): """Update a zone. :param name: Zone origin. :param virtual_ns: Virtual name server. :param body: Zone data to update. :param headers: Optional extra HTTP headers. :returns: Response with :class:`~domainrobot.models.resources.Zone` data. """ return self._request( "PUT", f"/zone/{name}/{virtual_ns}", json=body, headers=headers, model=Zone )
[docs] def delete(self, name: str, virtual_ns: str, *, headers: dict | None = None): """Delete a zone. :param name: Zone origin. :param virtual_ns: Virtual name server. :param headers: Optional extra HTTP headers. """ return self._request("DELETE", f"/zone/{name}/{virtual_ns}", headers=headers)
[docs] def list( self, body: dict | None = None, *, keys: list[str] | None = None, headers: dict | None = None, ): """List zones. :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.Zone`. """ return self._request( "POST", "/zone/_search", json=body or {}, params=self._keys_params(keys), headers=headers, model=Zone, )
[docs] def stream(self, name: str, body: dict, *, headers: dict | None = None): """Add or remove records for a zone (stream update). :param name: Zone origin. :param body: Stream data with ``adds`` and ``rems`` lists. :param headers: Optional extra HTTP headers. :returns: Response with :class:`~domainrobot.models.resources.Zone` data. """ return self._request( "POST", f"/zone/{name}/_stream", json=body, headers=headers, model=Zone )
[docs] def import_zone(self, name: str, virtual_ns: str, body: dict, *, headers: dict | None = None): """Import a zone. :param name: Zone origin. :param virtual_ns: Virtual name server. :param body: Zone data to import. :param headers: Optional extra HTTP headers. :returns: Response with :class:`~domainrobot.models.resources.Zone` data. """ return self._request( "POST", f"/zone/{name}/{virtual_ns}/_import", json=body, headers=headers, model=Zone )