title: DNS -> Base API ## Base API ## * [list_record_types](#list_record_types) * [list_zones](#list_zones) * [list_records](#list_records) * [get_zone](#get_zone) * [get_record](#get_record) * [create_zone](#create_zone) * [update_zone](#update_zone) * [create_record](#create_record) * [update_record](#update_record) * [delete_zone](#delete_zone) * [delete_record](#delete_record)

list_record_types

**Method signature**: [driver.list_record_types()](/apidocs/current/libcloud.dns.base.DNSDriver.html#list_record_types) **Description**: Return a list of record types supported by the provider.

list_zones

**Method signature**: [driver.list_zones()](/apidocs/current/libcloud.dns.base.DNSDriver.html#list_zones) **Description**: Return a list of the Zone objects belonging to your account.

list_records

**Method signature**: [driver.list_records(zone)](/apidocs/current/libcloud.dns.base.DNSDriver.html#list_record), [zone.list_records()](/apidocs/current/libcloud.dns.base.Zone.html#list_record) **Description**: Return a list of Record objects for the specified zone.

get_zone

**Method signature**: [driver.get_zone(zone_id)](/apidocs/current/libcloud.dns.base.DNSDriver.html#get_zone) **Description**: Return a Zone instance. This method is useful if you know the zone id and want to perform operations on it.

get_record

**Method signature**: [driver.get_record(zone_id, record_id)](/apidocs/current/libcloud.dns.base.DNSDriver.html#get_record) **Description**: Return a Record instance. This method is useful if you know the zone and record id and want to perform operations on the record.

create_zone

**Method signature**: [driver.create_zone(domain, type='master', ttl, extra)](/apidocs/current/libcloud.dns.base.DNSDriver.html#create_zone) **Description**: Create a new zone. Some of the providers require extra attributes to be provided when creating a zone. Good example of this is a Rackspace Cloud DNS API which requires you to specify 'email' key in the otherwise optional `extra` dictionary.

update_zone

**Method signature**: [driver.update_zone(zone, domain, type='master', ttl=None, extra=None)](/apidocs/current/libcloud.dns.base.DNSDriver.html#update_zone), [zone.update(domain, type='master', ttl=None, extra=None)](/apidocs/current/libcloud.dns.base.Zone.html#update) **Description**: Update an existing zone. Which attributes can be updated depends on the provider. Most of the providers don't allow you to change the actual domain name. If you want to change the domain name, you need to first delete a zone, create a new one with the wanted domain name and then re-create all the old records.

create_record

**Method signature**: [driver.create_record(name, zone, type, data, extra=None)](/apidocs/current/libcloud.dns.base.DNSDriver.html#create_record), [zone.create_record(name, type, data, extra=None)](/apidocs/current/libcloud.dns.base.Zone.html#create_record) **Description**: Create a new record. To view a list of supported records by the provider you can use the list_record_types method.

update_record

**Method signature**: [driver.update_record(record, name, type, data, extra)](/apidocs/current/libcloud.dns.base.DNSDriver.html#update_record), [record.update_record(name, type, data, extra)](/apidocs/current/libcloud.dns.base.Record.html#update) **Description**: Update an existing record. Similar to the update_zone which attributes can be updated depends on the provider.

delete_zone

**Method signature**: [driver.delete_zone(zone)](/apidocs/current/libcloud.dns.base.DNSDriver.html#delete_zone), [zone.delete()](/apidocs/current/libcloud.dns.base.Zone.html#zone) **Description**: Delete a zone.

delete_record

**Method signature**: [driver.delete_rcord(record)](/apidocs/current/libcloud.dns.base.DNSDriver.html#delete_record), [record.delete(record)](/apidocs/current/libcloud.dns.base.Record.html#delete) **Description**: Delete a record.