'Create a new zone.
:param domain: Zone domain name (e.g. example.com)
:type domain: ``str``
:param type: Zone type (All zones are master by design).
:type  type: ``str``
:param ttl: TTL for new records. (optional)
:type  ttl: ``int``
:param extra: Extra attributes (driver specific). (optional)
:type extra: ``dict``
:rtype: :class:`Zone`'

def create_zone(self, domain, type='master', ttl=None, extra=None):

    r_json = {'name': domain}
    if (ttl is not None):
        r_json['ttl'] = ttl
    if (extra is not None):
        r_json.update(extra)
    r_data = json.dumps({'zone': r_json})
    try:
        response = self.connection.request('/zones', method='POST', data=r_data)
    except BaseHTTPError:
        e = sys.exc_info()[1]
        raise PointDNSException(value=e.message, http_code=e.code, driver=self)
    zone = self._to_zone(response.object)
    return zone
