This is a client for the DNSimple REST API. It currently allows you to fetch existing domain info, as well as register new domains and manage domain records.
dnsimple-python
works for both python 2 & 3.
You'll need the json
module that is included with python version 2.6 and
later, or the simplejson
module if you are using an earlier version.
dnsimple-python
also depends on the requests
library.
Import the module:
from dnsimple import DNSimple
You can provide your DNSimple credentials in one of two ways:
-
Provide username/password or email/api_token credentials programmatically:
# Use username/password authentication: HTTP Basic dns = DNSimple(username=YOUR_USERNAME, password=YOUR_PASSWORD) # Use email/api_token credentials dns = DNSimple(email=YOUR_EMAIL_ADDRESS, api_token=YOUR_API_TOKEN)
-
Store you username/password or email/api_token credentials in a file called
.dnsimple
in the current directory with the following data:[DNSimple] username: [email protected] password: yourpassword
Or:
[DNSimple] email: [email protected] api_token: yourapitoken
Or (assuming
$DNSIMPLE_EMAIL
and$DNSIMPLE_TOKEN
are environment variables):[DNSimple] email: %(DNSIMPLE_EMAIL)s api_token: %(DNSIMPLE_TOKEN)s
You then need not provide any credentials when constructing
DNSimple
:dns = DNSimple()
Just run:
domains = dns.domains()
Results appear as a Python dict:
{'domain': {'created_at': '2010-10-14T09:45:32Z',
'expires_at': '10/14/2011 5:45:00 AM',
'id': 999,
'last_enom_order_id': None,
'name': 'yourdomain.com',
'name_server_status': 'active',
'registrant_id': 99,
'registration_status': 'registered',
'updated_at': '2010-10-14T10:00:14Z',
'user_id': 99}},
{'domain': {'created_at': '2010-10-15T16:02:34Z',
'expires_at': '10/15/2011 12:02:00 PM',
'id': 999,
'last_enom_order_id': None,
'name': 'anotherdomain.com',
'name_server_status': 'active',
'registrant_id': 99,
'registration_status': 'registered',
'updated_at': '2010-10-15T16:30:16Z',
'user_id': 99}}]
dns.domain('mikemaccana.com')
Results are the same as domains()
above, but only show the domain specified.
dns.check('google.com')
# Hmm, looks like I'm too late to get that one...
{u'currency': u'USD',
u'currency_symbol': u'$',
u'minimum_number_of_years': 1,
u'name': u'google.com',
u'price': u'14.00',
u'status': u'unavailable'}
dns.register('newdomain.com')
This will register 'newdomain.com', automatically picking the registrant_id
from your first domain. To specify a particularly registrant_id
, just run:
dns.register('newdomain.com', 99)
Responses will be in a dictionary describing the newly created domain, same as
the domain()
call above.
Careful with this one!
dns.delete('domain-to-die.com')
All operations on domain records are now supported:
- List records:
records(id_or_domainname)
- Get record details:
record(id_or_domainname, record_id)
- Add record:
add_record(id_or_domainname, data)
- Update record:
update_record(id_or_domainname, record_id, data)
- Delete record:
delete_record(id_or_domainname, record_id)
Before running tests, you'll need to ensure your environment is set up correctly:
- If you don't already have a DNSimple sandbox account, create one and make sure to have your email address, password, and API token handy.
- Ensure you have the
virtualenv
package installed (pip install virtualenv --upgrade
) since tests are run from this isolated environment - Copy the file
tests/.env.example
totests/.env
and supply your sandbox credentials - From the project root, run
make test
-- this will set up your local environment withvirutalenv
, install all necessary dependencies, and run all the tests.
Licensed under the MIT license
- Original Author Mike MacCana