NAME

WWW::eNom::Domain - Representation of Registered eNom Domain

SYNOPSIS

use strict;
use warnings;

use WWW::eNom;
use WWW::eNom::Contact;
use WWW::eNom::Domain;

my $api = WWW::eNom->new( ... );

# Create New Domain Object, note that domain registration is handled by
# WWW::eNom::DomainRequest::Registration.
my $contact              = WWW::eNom::Contact->new( ... );
my $private_name_servers = [ WWW::eNom::PrivateNameServer->new( ... ) ];

my $domain  = WWW::eNom::Domain->new(
    id                   => 42,
    name                 => 'drzigman.com',
    status               => 'Paid',
    verification_status  => 'Pending Suspension',
    is_auto_renew        => 0,
    is_locked            => 1,
    is_private           => 0,
    created_date         => DateTime->...,
    expiration_date      => DateTime->...,
    ns                   => [ 'ns1.enom.com', 'ns2.enom.com' ],
    registrant_contact   => $contact,
    admin_contact        => $contact,
    technical_contact    => $contact,
    billing_contact      => $contact,
    private_name_servers => $private_name_servers,   # Optional
);

# Construct From eNom Response
my $response = $api->submit({
    method => 'GetDomainInfo',
    params => {
        Domain => 'drzigman.com',
    }
});

my $domain = WWW::eNom::Domain->construct_from_response(
    domain_info   => $response->{GetDomainInfo},
    is_auto_renew => $api->get_is_domain_auto_renew_by_name( 'drzigman.com' ),
    is_locked     => $api->get_is_domain_locked_by_name( 'drzigman.com' ),
    name_servers  => $api->get_domain_name_servers_by_name( 'drzigman.com' ),
    contacts      => $api->get_contacts_by_domain_name( 'drzigman.com' ),
    created_date  => $api->get_domain_created_date_by_name( 'drzigman.com' ),
);

WITH

WWW::eNom::Role::ParseDomain

DESCRIPTION

Represents eNom domains, containing all related information. For most operations this will be the base object that is used to represent the data.

attributes

id

The domain id of the domain in eNom's system.

name

The FQDN this domain object represents

status

Current status of the domain, related more so to if it's been paid or if it has been deleted or expired.

verification_status

According to ICANN rules, all new gTLD domains that were registered after January 1st, 2014 must be verified. verification_status describes the current state of this verification and begins in 'Pending Suspension' until the domain is either verified or is suspended due to a lack of verification.

For details on the ICANN policy please see the riveting ICANN Registrar Agreement https://www.icann.org/resources/pages/approved-with-specs-2013-09-17-en.

is_auto_renew

Boolean that indicates if eNom should automagically renew this domain.

is_locked

Boolean indicating if the domain is currently locked, preventing transfer.

is_private

Boolean indicating if this domain uses WHOIS Privacy.

created_date

Date this domain registration was created.

expiration_date

Date this domain registration expires.

ns

ArrayRef of Domain Names that are authoritative nameservers for this domain.

registrant_contact

A WWW::eNom::Contact for the Registrant Contact.

admin_contact

A WWW::eNom::Contact for the Admin Contact.

technical_contact

A WWW::eNom::Contact for the Technical Contact.

billing_contact

A WWW::eNom::Contact for the Billing Contact.

NOTE eNom actually calls this the AuxBilling contact since the primary billing contact is the reseller's information.

private_nameservers

An ArrayRef of WWW::eNom::PrivateNameServer objects that comprise the private nameservers for this domain, provides a predicate of has_private_nameservers.

NOTE Due to limitations of eNom's API, all private nameservers *MUST* be used as authoritative nameservers (i.e., they must also appear in the "ns" attribute). See "LIMITATIONS" in WWW::eNom::Role::Command::Domain::PrivateNameServer for more information about this and other limitations.

irtp_detail

In the event of a recent change in registrant contact, the irtp_detail attribute will be populated with an instance of WWW::eNom::IRTPDetail that contains additional IRTP related information about this domain. If there is no recent registrant contact change then no value will be provided for the irtp_detail. Offers a predicate of has_irtp_detail.

METHODS

construct_from_response

my $api = WWW::eNom->new( ... );

my $response = $api->submit({
    method => 'GetDomainInfo',
    params => {
        Domain => 'drzigman.com',
    }
});

my $domain = WWW::eNom::Domain->construct_from_response(
    domain_info          => $response->{GetDomainInfo},
    is_auto_renew        => $api->get_is_domain_auto_renew_by_name( $domain_name ),
    is_locked            => $api->get_is_domain_locked_by_name( $domain_name ),
    name_servers         => $api->get_domain_name_servers_by_name( $domain_name ),
    private_name_servers => $private_name_servers,                                   # Optional
    contacts             => $api->get_contacts_by_domain_name( $domain_name ),
    created_date         => $api->get_domain_created_date_by_name( $domain_name ),
);

Creates an instance of $self given several parameters:

domain_info

HashRef response to eNom's GetDomainInfo. This, unfortunately, does not contain all of the needed data so several other parameters are required.

is_auto_renew

Boolean, indicating if eNom will auto renew this domain.

is_locked

Boolean, indicating if this domain is locked to prevent transfer.

name_servers

ArrayRef of Domain Names that are the authoritative nameservers for this domain.

contacts

HashRef with the keys being:

registrant_contact
admin_contact
technical_contact
billing_contact

And the values being instances of WWW::eNom::Contact that correspond to the key's contact type.

created_date

DateTime that this domain was first created/registered.