Generic Top-Level Domain (gTLD) Registry Agreements

gTLD Registry Agreements establish the rights, duties, liabilities, and obligations ICANN requires of registry operators to run gTLDs.

Unsponsored TLD Agreement: Appendix C, Section B (.info)

ICANN | Unsponsored TLD Agreement: Appendix C, Section B (.info)
  ICANN Logo

Unsponsored TLD Agreement: Appendix C, Section B (.info)

(11 May 2001)


Functional Specifications

Section B—Database Services

The Registry database will serve as the authoritative source of data for all aspects of the Registry Service. Authorized Registrars will be permitted to interact with this data according to the EPP specifications using the commands specified in Transactional Services, below. The Registry database will also serve as the authoritative source of data for all other aspects of the Registry Service including Whois, xWhois, Domain Name Service and billing.

The following sections describe the objects stored within the database, the transactional services that can be applied to these objects and the billing services that are triggered because of these transactions.

Object Store Overview

The Database system will support the following object stores: Contact objects, Host Objects, Domain Name objects, and Registrar Objects. The set of these objects defines a "thick" registry, as all the information associated with registered entities, including technical and social information, is stored within the registry repository. Definitions of attributes for Contact, Host and Domain Name objects can be found in the EPP Mapping drafts, which have been included as attachments to this appendix.

The object stores are described below.

Contact Objects

The system will support the mapping, provisioning and management of identifiers representing individuals or organizations (known as "contacts") stored in a shared central repository. The contact mapping is specified in XML, and follows EPP command syntax and semantics as applied to contacts. The attributes, associated values, and formal syntax are described in Extensible Provisioning Protocol Contact Mapping [EPP-C], in sections 2 and 4.

The contact object has attributes and associated values that may be viewed and modified by the sponsoring client or the server.

Host Objects

The system will support the mapping, provisioning and management of Internet host names stored in a shared central repository. The host mapping is specified in XML, and follows EPP command syntax and semantics as applied to host names. The attributes, associated values, and formal syntax are described in Extensible Provisioning Protocol Host Mapping [EPP-H], in sections 2 and 4.

The Internet host names object has attributes and associated values that may be viewed and modified by the sponsoring client or the server.

Domain Name Objects

The system will support the mapping, provisioning and management of Internet domain names stored in a shared central repository. The mapping is specified in XML, and follows EPP command syntax and semantics as applied to domain names. The attributes, associated values, and formal syntax are described in Extensible Provisioning Protocol Domain Name Mapping [EPP-D], in sections 2 and 4.

The Internet domain names object has attributes and associated values that may be viewed and modified by the sponsoring client or the server.

Registrar Objects

The system shall support the mapping, provisioning and management of Registrars stored in a shared central repository. The Registrar object has attributes and associated values that may be viewed and modified by the sponsoring client or by the Registry. The Registrar object cannot be manipulated directly via EPP. The Registry/Registrar Administrative Interfaces are used to create, update, delete and otherwise manage these objects.

Database Structure

This section describes the database schema and rules for the objects supported by the registry.

BNF Definitions

The following syntax specification uses the augmented Backus-Naur Form (BNF) as described in [RFC2234].

space = %x20 ; " "
plus = %x2B ; "+"
dot = %x2E ; "."
dash = %x2D ; "-"
underscore = %x5F ; "_"
colon = %x3A ; ":"
atsign = %x40 ; "@"
cr = %x0D ; ASCII carriage return
lf = %x0A ; ASCII linefeed
crlf = cr lf
alpha = %x41-5A / %x61-7A ; A-Z / a-z
digit = %x30-39 ; 0-9
dns-char = alpha / digit / dash
id-char = alpha / digit / underscore / dash
id-prefix = alpha / digit
id-word = id-prefix *id-char
printable-char = %x20-7E ; ASCII " " - "~"
label = id-prefix [*61dns-char id-prefix]
sldn = label dot label
hostname = *(label dot) sldn
transaction-id = id-prefix 6*14dns-char id-prefix
ipv4-address = 1*3digit dot 1*3digit dot 1*3digit dot 1*3digit
e164a-number = plus 1*3digit dot 1*12digit ; Compliant with [E164a]
domain-status = "NEW" / "ACTIVE" / "INACTIVE" / "HOLD" / "LOCK" / "CLIENT-HOLD" / "CLIENT-LOCK" / "PENDING-TRANSFER" / "PENDING-DELETE"
ipv6-address = hexpart [ colon ipv4-address ]
hexpart = hexseq | hexseq "::" [ hexseq ] | "::" [ hexseq ]
hexseq = hex4 *( ":" hex4)
hex4 = 1*4HEXDIG


























Domain Object

The epp_domain table stores information about a domain object. The following field definitions are based on the EPP Domain Mapping schema described in [EPP-D].

Field Data Type Min Max Pattern Description
ID Int NA NA NA Unique ID for the Domain object
Name String 1 128 BNF: sldn Domain name
Status Enum NA NA BNF: domain-status
These are described in [EPP-D]
Domain status codes
Period Int 1 10 NA Period of domain registration
Owned By Int NA NA Registrar ID as maintained by IANA Points to the sponsor of the domain object
Created Code String 8 16 BNF: transaction-id Transaction ID for create
Created On Timestamp NA NA NA When domain object was originally created
Renewed On Timestamp NA NA NA When domain object was renewed
Updated By Int NA NA NA Who (Registrar) last updated the domain object
Updated On Timestamp NA NA NA When domain object was last updated
Transferred By Int NA NA NA Who (Registrar) last transferred the domain object
Transferred On Timestamp NA NA NA When object was transferred
Transferred Code String 8 16 BNF: transaction-id Transaction ID for transfer

Host Object

The epp_host table stores information about a host object. The following field definitions are based on the EPP Host Mapping schema described in [EPP-H].

Field Data Type Min Max Pattern Description
ID Int NA NA NA Unique ID for the Host object
Name String 1 128 BNF: hostname Name of the host
Owned By Int NA NA Registrar ID as maintained by IANA Points to the sponsor of the host object
Created Code String 8 16 BNF: transaction-id Transaction ID for create
Created On Timestamp NA NA NA When host object was originally created
Updated By Int NA NA NA Who (Registrar) last updated the host object
Updated On Timestamp NA NA NA When host object was last updated

The epp_domain_host table associates a domain object with one or more host objects:

Field Data Type Min Max Pattern Description
Domain ID Int NA NA NA Points to a domain object
Host ID Int NA NA NA Points to a host object

The epp_ip table stores information about an IP addresses. The following field definitions are based on the EPP Host Mapping schema described in [EPP-H].

Field Data Type Min Max Pattern Description
ID Int NA NA NA Unique ID for the object
IP Address String 7 39

For IPV4:
BNF: ipv4-address-where the IP address is not reserved or disallowed by IANA per [RFC1466].

For IPV6:
ipv6-address [RFC2373]

IP Address of the host
Host ID Int NA NA NA Points to an associated host object

The epp_host_ip table associates a host with one or more IP addresses.

Field Data Type Min Max Pattern Description
Host ID Int NA NA NA Points to a host object
IP ID Int NA NA NA Points to a IP object

Contact Object

The epp_contact table stores information about a contact object. The following field definitions are based on the EPP Contact Mapping schema described in [EPP-C].

Field Data Type Min Max Pattern Description
ID Int NA NA NA Unique ID for the contact object
Name String 1 255 BNF: 1*255printable-char Name of the contact
Org String 4 128 BNF: 4*128printable-char Organization
Street1 String 1 64 BNF: 1*64printable-char Street 1
Street2 String 1 64 BNF: 1*64printable-char Street 2
City String 1 64 BNF: 1*64printable-char City
StateProvince String 1 64 BNF: 1*64printable-char State or Province
Postal Code String 1 16 BNF: 1*16printable-char Postal Code
Country String 2 2 ISO 2 letter country code
Compliant with [ISO3166]
Country
Voice String 1 17 BNF: e164a-number Voice phone number (e164)
Fax String 1 17 BNF: e164a-number Fax number (e164)
Email String 1 128 BNF: 1*printable-char atsign hostname Email address
Owned By Int NA NA Registrar ID as maintained by IANA Points to the sponsor of the contact object
Created Code String 8 16 BNF: transaction-id Transaction ID for creation of the object
Created On Timestamp NA NA NA When contact was originally created
Updated By Int NA NA NA Who (Registrar) last updated the contact object
Updated On Timestamp NA NA NA When contact object was last updated
Transferred By Int NA NA NA Who (Registrar) last transferred the contact object
Transferred On Timestamp NA NA NA When contact object was transferred
Transferred Code String 8 16 BNF: transaction-id Transaction ID for transfer of the object

The epp_domain_contact table associates a domain object with one or more contact objects. The following field definitions are based on the EPP Contact Mapping schema described in [EPP-C].

Field Data Type Min Max Pattern Description
Domain ID Int NA NA NA Points to a domain object
Contact ID Int NA NA NA Points to a contact object
Contact Type Enum NA NA

Allowed values:
Administrative
Billing
Registrant
Technical



These are described in [EPP-C]

Defines the type of contact that is being associated

Registrar Object

The epp_registrar table stores information about a registrar object.

Field Data Type Min Max Pattern Description
ID Int NA NA Registrar ID as maintained by IANA Unique ID for the Registrar object
Password String 8 32 BNF: 8*32printable-char Registrar's password
Name String 1 64 BNF: 1*64printable-char Registrar's name
Status Enum NA NA Allowed values:TBD Status of Registrar
Contact ID Int NA NA NA Link to contact object for the Registrar

The epp_registrar_contact table associates a registrar object with one or more contact objects.

Field Data Type Min Max Pattern Description
Registrar ID Int NA NA NA Points to a registrar object
Contact ID Int NA NA NA Points to a contact object
Contact Type Enum NA NA Allowed values:
Administrative
Billing
Technical


Defines the type of contact that is being associated


Transactional Services Overview

Authorized Registrars can interact with the objects in the database via the SRS using the following transactional services.

  • Create domain, nameservers or contacts.
  • Get information on domains, nameservers or contacts.
  • Check for the existence of domains, nameservers or contacts.
  • Modify domains, nameservers or contacts.
  • Delete domains, nameservers or contacts.
  • Renew domains.
  • Transfers domains or contacts.

The Billing Services will handle billing events associated with the above transactions. This is described in "Billing Services Overview".

Command Set

The following command set will allow Authorized Registrars to interact with the data in the object store. Examples of the EPP commands and responses can be found in the EPP drafts, which have been included as attachments to this appendix.

Add Domain

Registrars use the Add Domain command to create a new domain object in the Registry. The creation of a new domain is a billable operation. Domains can be created with associated nameservers and contacts. The EPP specification permits from 0 to 13 nameservers, however Afilias policy only permits domains with two or more nameservers to be resolvable. The EPP specification permits from 0 to 4 contact handles, however Afilias policy requires all four contact handles.

The Add Domain command can be specified with an optional registration period, with minimum and maximum values of one and ten years, respectively. If the registration period is not specified, the initial registration period will be the minimum required by the Registry. Afilias policy restricts the maximum outstanding expiration period to ten years, which the Registry System enforces. Add Domain uses the EPP Domain Mapping <create> command. An example of an Add Domain command can be found in the EPP Domain Mapping [EPP-D] draft in section 3.2.1.

Modify Domain

A registrar uses the Modify Domain command to change attributes of a domain for which it is the sponsoring registrar. Attributes that can be changed include: contact information, nameservers and domain status. The EPP specification permits from 0 to 13 nameservers, however Afilias policy only permits domains with two or more nameservers to be resolvable. The EPP specification permits from 0 to 4 contact handles, however Afilias policy requires all four contact handles. Modification of domain attributes is a non-billable operation. Modify Domain uses the EPP Domain Mapping <update> command. An example of a Modify Domain command can be found in the EPP Domain Mapping [EPP-D] draft in section 3.2.5.

Delete Domain

Registrars use the Delete Domain command to remove a domain object from the Registry. A registrar can only delete domains for which it is the sponsoring registrar. The deletion of a domain may trigger a billing operation if the deletion is performed within certain grace periods. When a domain is deleted, all Host objects for which this domain is the parent domain will also be deleted. As a result of this requirement, a domain can only be deleted if these nameservers are not associated with any domains in the Registry. Delete Domain uses the EPP Domain Mapping <delete> command. An example of a Delete Domain command can be found in the EPP Domain Mapping [EPP-D] draft in section 3.2.2.

Renew Domain

Registrars use the Renew Domain command to extend the expiration year for a domain object. A registrar can only renew domains for which it is the sponsoring registrar. The renewal of a domain is a billable operation. The Renew Domain command must be specified with a registration period, from one to ten years. Afilias policy restricts the maximum outstanding expiration period to ten years. A domain renewal with an extension period that exceeds this limit will be rejected. Renew Domain uses the EPP Domain Mapping <renew> command. An example of a Renew Domain command can be found in the EPP Domain Mapping [EPP-D] draft in section 3.2.3.

Auto-Renew Domain

When a domain reaches its expiration date the Registry will automatically renew the domain for one additional year. The automatic renewal of a domain is a billable operation. A registrar has the duration of the auto-renewal grace period to delete the domain and receive a refund for the automatic renewal. Afilias policy restricts the maximum outstanding expiration period to ten years.

Transfer Domain

Registrars use the Transfer Domain command to change a domain's sponsoring registrar. The transfer request is issued by the gaining registrar, after which the Registry will notify the current registrar of the request to transfer the domain. The current registrar may choose to accept or deny the transfer request. If the current registrar takes no action, the Registry will automatically accept the transfer after a pre-determined number of days. A domain that is transferred will have its expiration date extended by at least one year. The expiration extension is a billable operation. When a domain is transferred, all Host objects for which this domain is the parent domain will also be transferred to the gaining registrar. Transfer Domain uses the EPP Domain Mapping <transfer> transform command. Please note that this is different from the EPP <transfer> query command. An example of a Transfer Domain command can be found in the EPP Domain Mapping [EPP-D] draft in section 3.2.4.

Bulk Transfer

Per Appendix F, Exhibit D, Part B, ICANN may request Afilias to perform a bulk transfer of all registered objects from one registrar to another registrar. The bulk transfer will not be performed with the use of EPP commands. Instead it will be performed as a bulk database update of the Owned By field for all objects currently sponsored by the losing registrar.

Check Domain

Registrars use the Check Domain command to find out if a domain exists as a valid object in the Registry. The Registry will return a result of "known" or "unknown" to the Check Domain request. The checking of a domain is a non-billable operation. Check Domain uses the EPP Domain Mapping <check> command. An example of a Check Domain command can be found in the EPP Domain Mapping [EPP-D] draft in section 3.1.2.

Query Domain

Registrars use the Query Domain command to retrieve the domain information of a domain object in the Registry. Only the sponsoring registrar of a domain can retrieve its domain information. The query for domain information is a non-billable operation. Query Domain uses the EPP Domain Mapping <info> command. An example of a Query Domain command can be found in the EPP Domain Mapping [EPP-D] draft in section 3.1.1.

Query Domain Transfer Status

Registrars use the Query Domain Transfer Status command to find out the status of a domain transfer. The query for domain transfer status information is a non-billable operation. Query Domain Transfer Status uses the EPP Domain Mapping <transfer> query command. Please note that this is different from the EPP <transfer> transform command. An example of a Query Domain Transfer Status command can be found in the EPP Domain Mapping [EPP-D] draft in section 3.1.3.

Add Nameserver

Registrars use the Add Nameserver command to create a new host object in the Registry. The creation of a new nameserver is a non-billable operation. Nameservers can only be created by the sponsoring registrar of the parent domain object. A nameserver can be created with up to 13 IP addresses. Add Nameserver uses the EPP Host Mapping <create> command. An example of an Add Nameserver command can be found in the EPP Host Mapping [EPP-H] draft in section 3.2.1.

Modify Nameserver

Registrars use the Modify Nameserver command to change the IP addresses associated with a nameserver. The modification of a nameserver is a non-billable operation and can only be performed by the sponsoring registrar of the nameserver. Modify Nameserver uses the EPP Host Mapping <update> command. An example of a Modify Nameserver command can be found in the EPP Host Mapping [EPP-H] draft in section 3.2.5.

Delete Nameserver

Registrars use the Delete Nameserver command to remove a host object from the Registry. A registrar can only delete a nameserver for which it is the sponsoring registrar. The deletion of a nameserver is a non-billable operation. A nameserver can only be deleted if is not associated with any domains in the Registry. Delete Nameserver uses the EPP Host Mapping <delete> command. An example of a Delete Nameserver command can be found in the EPP Host Mapping [EPP-H] draft in section 3.2.2.

Check Nameserver

Registrars use the Check Nameserver command to check to see if a nameserver object exists in the Registry. The Registry will return a result of "known" or "unknown" for the nameserver requested. Checking nameserver existence is a non-billable operation. Check Nameserver uses the EPP Host Mapping <check> command. An example of a Check Nameserver command can be found in the EPP Host Mapping [EPP-H] draft in section 3.1.2.

Query Nameserver

Registrars use the Query Nameserver command to retrieve the host object's information for a nameserver. Only the sponsoring registrar of the nameserver can query for a nameserver's information. Querying for a nameserver's information is a non-billable operation. Query Nameserver uses the EPP Host Mapping <info> command. An example of a Query Nameserver command can be found in the EPP Host Mapping [EPP-H] draft in section 3.1.1.

Add Contact

Registrars use the Add Contact command to create a new contact object in the Registry. The creation of a new contact is a non-billable operation. Add Contact uses the EPP Contact Mapping <create> command. An example of an Add Contact command can be found in the EPP Contact Mapping [EPP-C] draft in section 3.2.1.

Modify Contact

Registrars use the Modify Contact command to change the attributes of a contact object. The modification of a contact is a non-billable operation and can only be performed by the sponsoring registrar of the contact. Modify Contact uses the EPP Contact Mapping <update> command. An example of a Modify Contact command can be found in the EPP Contact Mapping [EPP-C] draft in section 3.2.5.

Delete Contact

Registrars use the Delete Contact command to remove a contact object from the Registry. A registrar can only delete a contact for which it is the sponsoring registrar. The deletion of a contact is a non-billable operation. A contact can only be deleted if is not associated with any domains in the Registry. Delete Contact uses the EPP Contact Mapping <delete> command. An example of a Delete Contact command can be found in the EPP Contact Mapping [EPP-C] draft in section 3.2.2.

Transfer Contact

Registrars use the Transfer Contact command to change a domain's sponsoring registrar. Transfer Contact uses the EPP Contact Mapping <transfer> transform command. Please note that this is different from the EPP <transfer> query command. An example of a Transfer Contact command can be found in the EPP Contact Mapping [EPP-C] draft in section 3.2.4.

Check Contact

Registrars use the Check Contact command to check to see if a contact object exists in the Registry. The Registry will return a result of "known" or "unknown" for the contact requested. Checking contact existence is a non-billable operation. Check Contact uses the EPP Contact Mapping <check> command. An example of a Check Contact command can be found in the EPP Contact Mapping [EPP-C] draft in section 3.1.2.

Query Contact

Registrars use the Query Contact command to retrieve the contact object's information for a contact. Querying for a contact's information is a non-billable operation. Query Contact uses the EPP Contact Mapping <info> command. An example of a Query Contact command can be found in the EPP Contact Mapping [EPP-C] draft in section 3.1.1.

Query Contact Transfer Status

Registrars use the Query Contact Transfer Status command to find out the status of a contact transfer. The query for contact transfer status information is a non-billable operation. Query Contact Transfer Status uses the EPP Contact Mapping <transfer> query command. Please note that this is different from the EPP <transfer> transform command. An example of a Query Contact Transfer Status command can be found in the EPP Contact Mapping [EPP-C] draft in section 3.1.3.

Billing Services Overview

The Billing subsystem handles all billing events from the Registry that are created as part of normal registry operations. This mechanism also handles requests from the Registrar Administration facility as well as from the Registry Administration facility. The Billing mechanism interfaces with the Afilias Financial system by way of a database interface.

The billing subsystem is composed of:

  • The XRS Billing subsystem event driven mechanism - Handles billing events from the registration process
  • The registrar administration interface - Enables the registrar various self-serviced activities.
  • The registry administration interface - Enables the administration/financial staff of Afilias to operate the billing mechanism

XRS Billing Subsystem

The "XRS Billing" subsystem executes as a part of the same subsystem that controls base registry transactions. This ensures transactional integrity between the billing server and the registry server.

Examples for billing events handled by the API are

  • "create-name" event
  • "create-name reversal" event
  • "transfer-name" event
  • "transfer-name" reversal event
  • "renew-name" event
  • "renew-name reversal" event
  • "auto-renew" event

The Billing Process

The main premise of the Billing subsystem is that the Registry sends billing events, which require an immediate response enabling the registration process to take place. The billing implementation reflects a pre-paid billing model where a balance is debited for each bill event presented.

A negative response is returned by the Billing subsystem if there are not sufficient funds available to complete the requested event. An EPP operation that receives a negative response from the billing subsystem will return an "operation failed" response to the Registrar that initiated the operation.

Each Billing subsystem event has a dependency on the Registry Administrator having done the following:

  • Ensured that the registrar is valid within the described registrars
  • Ensured that the billing event is fully described with sufficient price information.
  • Ensured that there is a balance for any registrars who require processing for billable events.

The Billing Events must contain the "Transaction Id" as outlined in the EPP specification. This enables registry events to be traced in terms of their billing consequences.

The Billing subsystem operates in US dollars only.

Registrar Administration Interface

Each registrar will be provided with a username/password to access a secured web site where it can perform certain functions.

1. Query Registrar Account - View your current Registrar account information;
2. Update Registrar Account - Update your own Registrar account information ;
3. Query Registrar Contact Information - View a list of your Registrar contacts;
4. Update Registrar Contact Information - Change information for an existing Registrar contact;
5. Add Registrar Contact Information - Create a new Registrar contact;
6. Delete Registrar Contact Information - Delete an existing Registrar contact; and
7. Query Registrar Account Balance - Check the available balance in your Registrar account.





Registry Administration Interface

The Registry Administrative interface is designed for an administrator of the Afilias Registry. This interface provides the same functions as the Registrar Administration interface except administrator staff will be able to perform the operation on any registrar's account. In addition, there are some Registry-only functions. This includes:

1. Add Registrar Account - Creates a new Registrar account;
2. Delete Registrar Account - Removes a Registrar account;
3. Update Registrar Account - Allows the modification of fields that are read-only for Registrars;
4. Update Registrar Account Status - Change the operational status of a Registrar account; and
5. Update Registrar Account Balance - Credit or debit the current balance for a particular registrar. This function is typically used when a Registrar submits payment to Afilias.



Afilias management will also be able to use this interface to manage accounts for administration staff and define roles to restrict the functionality available to a particular staff.

Earlier draft:

26 April 2001


Comments concerning the layout, construction and functionality of this site
should be sent to webmaster@icann.org.

Page Updated 24-Dec-2002

©2001  The Internet Corporation for Assigned Names and Numbers. All rights reserved.