From Code to Community: Sponsoring The Perl and Raku Conference 2025 Learn more

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:

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.