NAME
WWW::Namecheap::Domain - Namecheap API domain methods
SYNOPSIS
Namecheap API domain methods.
See WWW::Namecheap::API for main documentation.
my
$domain
= WWW::Namecheap::Domain->new(
API
=>
$api
);
$domain
->check(...);
$domain
->create(...);
...
SUBROUTINES/METHODS
WWW::Namecheap::Domain->new(API => $api)
Instantiate a new Domain object for making domain-related API calls. Requires a WWW::Namecheap::API object.
$domain->check(Domains => ['example.com'])
Check a list of domains. Returns a hashref of availablity status with domain names as the keys and 0/1 as the values for not available/available.
my
$result
=
$domain
->check(
Domains
=> [
qw(
example.com
example2.com
foobar.com
)
]);
Will give a $result something like:
$result
= {
'example.com'
=> 0,
# example.com is taken
'example2.com'
=> 1,
# example2.com is available
'foobar.com'
=> 0,
# damn, foobar.com is taken
};
$domain->create(%hash)
Register a new domain name.
Example:
my
$result
=
$domain
->create(
UserName
=>
'username'
,
# optional if DefaultUser specified in $api
ClientIp
=>
'1.2.3.4'
,
# optional if DefaultIp specified in $api
DomainName
=>
'example.com'
,
Years
=> 1,
# required; default is 2
Registrant
=> {
OrganizationName
=>
'Example Dot Com'
,
# optional
JobTitle
=>
'CTO'
,
# optional
FirstName
=>
'Domain'
,
LastName
=>
'Manager'
,
Address1
=>
'123 Fake Street'
,
Address2
=>
'Suite 555'
,
# optional
City
=>
'Univille'
,
StateProvince
=>
'SD'
,
StateProvinceChoice
=>
'S'
,
# optional; 'S' for 'State' or 'P' for 'Province'
PostalCode
=>
'12345'
,
Country
=>
'US'
,
Phone
=>
'+1.2025551212'
,
PhoneExt
=>
'4444'
,
# optional
Fax
=>
'+1.2025551212'
,
# optional
EmailAddress
=>
'foo@example.com'
,
},
Tech
=> {
# same fields as Registrant
},
Admin
=> {
# same fields as Registrant
},
AuxBilling
=> {
# same fields as Registrant
},
Billing
=> {
# Optional; fields as Registrant except OrganizationName, JobTitle
},
Nameservers
=>
'ns1.foo.com,ns2.bar.com'
,
# optional
AddFreeWhoisguard
=>
'yes'
,
# or 'no', default 'no'
WGEnabled
=>
'yes'
,
# or 'no', default 'no'
PromotionCode
=>
'some-string'
,
# optional
IdnCode
=>
''
,
# optional, see Namecheap API doc
'Extended attributes'
=>
''
,
# optional, see Namecheap API doc
IsPremiumDomain
=>
''
,
# optional, see Namecheap API doc
PremiumPrice
=>
''
,
# optional, see Namecheap API doc
EapFreee
=>
''
,
# optional, see Namecheap API doc
);
Unspecified contacts will be automatically copied from Registrant, which must be provided.
Returns:
$result
= {
Domain
=>
'example.com'
,
DomainID
=>
'12345'
,
Registered
=>
'true'
,
OrderID
=>
'12345'
,
TransactionID
=>
'12345'
,
ChargedAmount
=>
'10.45'
,
# dollars and cents
};
$domain->getinfo(DomainName => 'example.com')
Returns a hashref containing information about the requested domain.
$domain->list(%hash)
Get a list of domains in your account. Automatically handles the Namecheap "paging" to get a full list. May be optionally restricted:
my
$domains
=
$domain
->list(
ListType
=>
'ALL'
,
# or EXPIRING or EXPIRED
SearchTerm
=>
'foo'
,
# keyword search
SortBy
=>
'NAME'
,
# or EXPIREDATE, CREATEDATE, or *_DESC
);
Returns an arrayref of hashrefs:
$domains
= [
{
ID
=>
'123'
,
Name
=>
'example.com'
,
User
=>
'owner'
,
Created
=>
'MM/DD/YYYY'
,
Expires
=>
'MM/DD/YYYY'
,
IsExpired
=>
'false'
,
IsLocked
=>
'true'
,
AutoRenew
=>
'false'
,
WhoisGuard
=>
'ENABLED'
,
},
...
];
$domain->getcontacts(DomainName => 'example.com')
Get the contacts on file for the provided DomainName. Returns a big ol' data structure:
$contacts
= {
Domain
=>
'example.com'
,
domainnameid
=>
'12345'
,
Registrant
=> {
ReadOnly
=>
'false'
,
... all contact fields from create ...
},
Tech
=> {
... ditto ...
},
Admin
=> {
... ditto ...
},
AuxBilling
=> {
... ditto ...
},
WhoisGuardContact
=> {
... same contacts as outside, except the actual published
WhoisGuard info,
ReadOnly
=>
'true'
...
},
};
$domain->setcontacts(%hash)
Set contacts for a domain name.
Example:
my
$result
=
$domain
->create(
UserName
=>
'username'
,
# optional if DefaultUser specified in $api
ClientIp
=>
'1.2.3.4'
,
# optional if DefaultIp specified in $api
DomainName
=>
'example.com'
,
Registrant
=> {
OrganizationName
=>
'Example Dot Com'
,
# optional
FirstName
=>
'Domain'
,
LastName
=>
'Manager'
,
Address1
=>
'123 Fake Street'
,
Address2
=>
'Suite 555'
,
# optional
City
=>
'Univille'
,
StateProvince
=>
'SD'
,
StateProvinceChoice
=>
'S'
,
# for 'State' or 'P' for 'Province'
PostalCode
=>
'12345'
,
Country
=>
'USA'
,
Phone
=>
'+1.2025551212'
,
Fax
=>
'+1.2025551212'
,
# optional
EmailAddress
=>
'foo@example.com'
,
},
Tech
=> {
# same fields as Registrant
},
Admin
=> {
# same fields as Registrant
},
AuxBilling
=> {
# same fields as Registrant
},
);
Unspecified contacts will be automatically copied from the registrant, which must be provided.
$result is a small hashref confirming back the domain that was modified and whether the operation was successful or not:
$result
= {
Domain
=>
'example.com'
,
IsSuccess
=>
'true'
,
};
$domain->gettldlist()
Get a list of all TLDs available for registration, along with various attributes for each TLD. Results are automatically cached for one hour to avoid excessive API load.
$domain->transfer(%hash)
Initiate a transfer in request to Namecheap from another registrar. Request should look something like:
my
$transfer
=
$domain
->transfer(
DomainName
=>
'example.com'
,
Years
=> 1,
EPPCode
=>
'foobarbaz'
,
);
The response will be a hashref:
$transfer
= {
Transfer
=>
'true'
,
TransferID
=>
'15'
,
StatusID
=>
'-1'
,
OrderID
=>
'1234'
,
TransactionID
=>
'1234'
,
ChargedAmount
=>
'10.10'
,
};
For transfer status code details, see the Namecheap API documentation:
https://www.namecheap.com/support/api/domains-transfer/transfer-statuses.aspx
$domain->transferstatus(TransferID => '1234')
Check the current status of a particular transfer. The TransferID is the TransferID returned by the transfer() call, or included in the transferlist(). Returns a hashref:
$result
= {
TransferID
=>
'1234'
,
Status
=>
'String'
,
StatusID
=>
'-1'
,
};
$domain->transferlist()
Retrieve a list of transfers associated with the connected API account. Automatically handles the Namecheap "paging" to get a full list. May be optionally restricted:
my
$transfers
=
$domain
->transferlist(
ListType
=>
'ALL'
,
# or INPROGRESS, CANCELLED, COMPLETED
SearchTerm
=>
'foo'
,
# keyword search
SortBy
=>
'DOMAINNAME'
,
# or TRANSFERDATE, STATUSDATE, *_DESC
);
Returns an arrayref of hashrefs:
$domains
= [
{
ID
=>
'123'
,
DomainName
=>
'example.com'
,
User
=>
'apiuser'
,
TransferDate
=>
'MM/DD/YYYY'
,
OrderID
=> 12345,
StatusID
=> 20
Status
=>
'Cancelled'
,
StatusDate
=>
'MM/DD/YYYY'
,
StatusDescription
=>
'String'
,
}
...
];
$domain->api()
Accessor for internal API object.
AUTHOR
Tim Wilde, <twilde at cpan.org>
BUGS
Please report any bugs or feature requests to bug-www-namecheap-api at rt.cpan.org
, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=WWW-Namecheap-API. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.
SUPPORT
You can find documentation for this module with the perldoc command.
perldoc WWW::Namecheap::Domain
You can also look for information at:
RT: CPAN's request tracker (report bugs here)
AnnoCPAN: Annotated CPAN documentation
CPAN Ratings
Search CPAN
ACKNOWLEDGEMENTS
LICENSE AND COPYRIGHT
Copyright 2011 Tim Wilde.
This program is free software; you can redistribute it and/or modify it under the terms of either: the GNU General Public License as published by the Free Software Foundation; or the Artistic License.
See http://dev.perl.org/licenses/ for more information.