PDF version

EPP Commands

.uk

The following commands are used to register and maintain domains through our EPP system.

 

Login command

The login command is used to establish and authenticate a session with the EPP server. The login command must be sent to the server before any other EPP command and identifies and authenticates the tag to be used by the session. An EPP session is terminated by a logout command.

<epp:login> element

The <epp:login> element contains the following child elements:

  • A <epp:clID> element that contains the tag. See the note below for 2 character tags.
  • A <epp:pw> element that contains the EPP password for the tag.
  • An optional <epp:newPW> element that contains a new password to be used for subsequent login commands.
  • An <epp:options> element that containing the following child elements:
    • A <epp:version> element containing the protocol version to be used. Currently, this must be 1.0
    • A <epp:lang> element that contains the text response language to be used. Currently, this must be en.
  • A <epp:svcs> element containing:
  • <epp:objURI> elements which contain the namespace URIs for the objects to be used during the session. Further details on the namespace URIs are available.  It is necessary to declare the schemas for all the objects that will be manipulated during the session.
  • An optional <epp:svcExtension> element containing:
    • <epp:extURI> elements which contain namespace extension URIs.  It is necessary to declare the schema extensions for all the objects that will be manipulated during the session.

Note: If 'epp' is set as the default namespace then the 'epp:' prefix can be omitted.

 2 character tags

The EPP standard schema mandates that <epp:clID> elements must have between 3 and 16 characters. To login with a 2 character tag, it is necessary to prepend the tag with a '#' character.

 Example - Logging in

This is an example of a log in request where only standard schemas have been declared.

<?xml version="1.0" encoding="UTF-8"?>
  <epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 epp-1.0.xsd">
    <command>
      <login>
        <clID>EXAMPLE-TAG</clID>
        <pw>foo-123</pw>
        <options>
          <version>1.0</version>
          <lang>en</lang>
        </options>
        <svcs>
           <objURI>urn:ietf:params:xml:ns:domain-1.0</objURI>
           <objURI>urn:ietf:params:xml:ns:contact-1.0</objURI>
           <objURI>urn:ietf:params:xml:ns:host-1.0</objURI>
        </svcs>
      </login>
      <clTRID>ABC-12345</clTRID>
    </command>
  </epp>

This is an example of a log in request where standard and extension schemas have been declared.

<?xml version="1.0" encoding="UTF-8"?>
  <epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 epp-1.0.xsd">
    <command>
      <login>
        <clID>EXAMPLE-TAG</clID>
        <pw>foo-123</pw>
        <options>
          <version>1.0</version>
          <lang>en</lang>
        </options>
        <svcs>
           <objURI>urn:ietf:params:xml:ns:domain-1.0</objURI>
           <objURI>urn:ietf:params:xml:ns:contact-1.0</objURI>
           <objURI>urn:ietf:params:xml:ns:host-1.0</objURI>
           <svcExtension>
             <extURI>http://www.nominet.org.uk/epp/xml/contact-nom-ext-1.0</extURI>
             <extURI>http://www.nominet.org.uk/epp/xml/domain-nom-ext-1.0</extURI>
           </svcExtension>
        </svcs>
      </login>
      <clTRID>ABC-12345</clTRID>
    </command>
  </epp>

Logging in and changing the password for next time

<?xml version="1.0" encoding="UTF-8"?>
  <epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 epp-1.0.xsd">
    <command>
      <login>
        <clID>EXAMPLE-TAG</clID>
        <pw>foo-123</pw>
        <newPW>foo-321</newPW>
        <options>
          <version>1.0</version>
          <lang>en</lang>
        </options>
        <svcs>
           <objURI>urn:ietf:params:xml:ns:domain-1.0</objURI>
           <objURI>urn:ietf:params:xml:ns:contact-1.0</objURI>
           <objURI>urn:ietf:params:xml:ns:host-1.0</objURI>
        </svcs>
      </login>
      <clTRID>ABC-12345</clTRID>
    </command>
  </epp>

Response from logging in

<?xml version="1.0" encoding="UTF-8"?>
 <epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0
      epp-1.0.xsd">
   <response>
     <result code="1000">
       <msg>Command completed successfully</msg>
     </result>
     <trID>
       <clTRID>ABC-12345</clTRID>
       <svTRID>54321-XYZ</svTRID>
     </trID>
   </response>
 </epp>

 

Hello command

The hello command is used to obtain a greeting element from our server and may be used to keep your connection with our EPP server open.  Sending an EPP hello command every 59 minutes will keep your connection with our EPP server open.

A <greeting> element is sent by the server to the client and specifies the object services that the server provides, it is sent in response to a <hello> element and also on connection to the server.

An EPP <hello> element is an empty element with no child elements.

An EPP <greeting> from Nominet's EPP server contains the following elements

  • An <svID> element containing the name of the server
  • An <svDate> element containing the server's current date and time in UTC.
  • An <svcMenu> element that identifies the services supported by the server. This contains the following sub elements
    • A <version> element with content 1.0 that identifies the protocol version supported by the server.
    • A <lang> element with content 'en' which gives the language known by the server, 'en'.
    • <objURI> elements that contain the namespace URIs for the objects that can be manipulated in the session.
    • An optional <svcExtension> element that identifies the service extensions supported by the server. This contains the following sub elements
      • <extURI> elements that contain the namespace extension URIs for objects that can be manipulated during the session.
  • A <dcp> (data collection policy) element that contains child elements that describe the server's privacy policy for data collection and management. This contains the following sub-elements
  • An <access> element with a child element of <all/> to show that access is given to the client to all data.
  • A <statement> element with the following sub-elements:
    • A <purpose> sub-element with <admin/> and <prov/> child elements to define that we collect data for administrative and technical support of the provisioning system and to identify objects and inter-object relationships.
    • A <recipient> sub-element with a child element of <ours/> which declares that Nominet, the server operator, are the recipients of the collected data.
    • A <retention> sub element with an <indefinite/> child element which declares that we retain the data indefinitely.

RFC 5730 shows the full definition of the <greeting> element.

Example of a <hello> element

 <?xml version="1.0" encoding="UTF-8"?>
  <epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0
       epp-1.0.xsd">
    <hello/>
  </epp>

Example of a <greeting> element

<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.nominet.org.uk/epp/xml/epp-1.0 epp-1.0.xsd">
    <greeting>
    <svID>Nominet EPP server epp.nominet.org.uk</svID>
    <svDate>2009-03-2T10:28:01Z</svDate>
    <svcMenu>
      <version>1.0</version>
      <lang>en</lang>
      <objURI>http://www.nominet.org.uk/epp/xml/nom-warning-1.0</objURI>
      <objURI>urn:ietf:params:xml:ns:contact-1.0</objURI>
      <objURI>urn:ietf:params:xml:ns:domain-1.0</objURI>
      <objURI>urn:ietf:params:xml:ns:host-1.0</objURI>
      <svcExtension>
        <extURI>http://www.nominet.org.uk/epp/xml/contact-nom-ext-1.0</extURI>
        <extURI>http://www.nominet.org.uk/epp/xml/domain-nom-ext-1.0</extURI>
      </svcExtension>
   </svcMenu>
    <dcp>
      <access><all/></access>
      <statement>
        <purpose><admin/><prov/></purpose>
        <recipient><ours/></recipient>
        <retention><indefinite/></retention>
      </statement>
    </dcp>
  </greeting>
</epp>

 

Logout command

A logout command is used to end a session with an EPP server. On receipt the EPP server responds and then closes the connection with the client.

<epp:logout> element

The <epp:logout> element is an empty element.

Note:  If 'epp' is set as the default namespace then the 'epp:' prefix can be omitted.

Example - Logging out

<?xml version="1.0" encoding="UTF-8"?>
  <epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
       xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 epp-1.0.xsd">
    <command>
       <logout/>
    </command>
  </epp>

Response from logging out

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 epp-1.0.xsd">
  <response>
    <result code="1500">
      <msg>
        Command completed successfully; ending session
      </msg>
    </result>
    <trID>
      <svTRID>118073</svTRID>
    </trID>
  </response>
</epp>

 

Check command

Domains

The EPP command allows the registrar to delete a domain name, a host or a contact. If a domain name is associated with a host, or if a contact or host is associated with a domain name, it cannot be deleted. For further explanation of the circumstances delete can be used, see RFC 5731 for domains, RFC 5732 for hosts or RFC 5731 for contacts.

The <domain:check> command is used to determine if the domain name is currently registered and provides a hint about whether a <create> command would be successful. Further information on <domain:check> commands can be found in RFC 5731.

Example of a domain check command

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
  <command>
    <check>
      <domain:check
       xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
        <domain:name>nominet.org.uk</domain:name>
      </domain:check>
    </check>
    <clTRID>ABC-12345</clTRID>
  </command>
</epp>

Usage

The <domain:check> command is subject to the Acceptable Use Policy. A check for multiple domains in one request will only succeed if the you are sufficiently below your abuse limit to guarantee completing the whole request.

Contacts

The <contact:check> command is used to determine if the contact identifier requested has been used within the registry. Further details on the representation of accounts and contacts can be found here and information on <contact:check> commands in RFC 5733.

Example of a contact check command

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
    <command>
        <check>
            <contact:check
                xmlns:contact="urn:ietf:params:xml:ns:contact-1.0">
                <contact:id>sh8013</contact:id>
            </contact:check>
        </check>
        <clTRID>ABC-12345</clTRID>
    </command>
</epp>

Hosts

The <host:check> command is used to determine if the host name requested has been registered. Further information on <host:check> commands is in RFC 5732.

Example of a host check command

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
  <command>
    <check>
      <host:check
       xmlns:host="urn:ietf:params:xml:ns:host-1.0">
        <host:name>ns1.nominet.org.uk</host:name>
      </host:check>
    </check>
    <clTRID>ABC-12345</clTRID>
  </command>
</epp>

EPP rights check command

The command can be used to determine if the domain name is currently registered and provides an indication whether a command would be successful. Further information on commands can be found in RFC 5731. This command also allows registrars to check if registrant details match the domain name with right of registration. The extension can only be used to check one domain name at a time.

Please note that if you log in with the nom-direct-rights schema, but do not include any of the <extension> elements (i.e. you perform a normal <check> command), you will receive a result which shows just the third level domain name with rights.

For example, using a normal command for example.uk rights:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
  <command>
    <check>
      <domain:check
       xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
        <domain:name>example.uk</domain:name>
      </domain:check>
    </check>
    <clTRID>ABC-12345</clTRID>
  </command>
</epp>  

This check returns the below, where example.sld.uk shows the third level domain name with rights:

<resData>
      <domain:chkData
        xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"
        xsi:schemaLocation="urn:ietf:params:xml:ns:domain-1.0 domain-1.0.xsd">
        <domain:cd>
          <domain:name avail="1">example.uk</domain:name>
        </domain:cd>
      </domain:chkData>
    </resData>
    <extension>
      <nom-direct-rights:chkData
        xmlns:nom-direct-rights="http://www.nominet.org.uk/epp/xml/nom-direct-rights-1.0"
        xsi:schemaLocation="http://www.nominet.org.uk/epp/xml/nom-direct-rights-1.0 nom-direct-rights-1.0.xsd">
        <nom-direct-rights:ror>example.sld.uk</nom-direct-rights:ror>
      </nom-direct-rights:chkData>
    </extension>

In addition to the EPP command elements described in RFC 5731 the <check> command may contain an <extension> element. If you need more detailed rights information, the <extension> element needs to contain a <nom-direct-rights;check> element that identifies the direct-rights namespace and the location of the schema.

The <nom-direct-rights;check> element contains either of the following:

  • A <nom-direct-rights;check> element as defined in RFC 5733
  • A <nom-direct-rights;email> element as defined in RFC 5733

or

  • A <nom-direct-rights;registration> element containing the EPP ID of the registrant you are checking.

The fields must match the registrant of the third level domain name using the same logic as for registration matching on a case-insensitive basis for a registration attempt to be successful.

Example of a <check> domain command using <nom-direct-rights;postalInfo> and <nom-direct-rights;email> elements:

<?xml version="1.0" encoding="UTF-8" standalone="no"?> <epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0
     epp-1.0.xsd">
    <command>
        <check>
            <domain:check
             xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"
             xsi:schemaLocation="urn:ietf:params:xml:ns:domain-1.0 domain-1.0.xsd">
                <domain:name>example1.uk</domain:name>
            </domain:check>
        </check>
        <extension>
            <nom-direct-rights:check
             xmlns:nom-direct-rights="http://www.nominet.org.uk/epp/xml/nom-direct-rights-1.0"
             xsi:schemaLocation="http://www.nominet.org.uk/epp/xml/nom-direct-rights-1.0
             nom-direct-rights-1.0.xsd"
             xmlns:contact="urn:ietf:params:xml:ns:contact-1.0">
                <nom-direct-rights:postalInfo type="loc">
                    <contact:name>Contact name</contact:name>
                    <contact:org>Org name</contact:org>
                    <contact:addr>
                        <contact:street>222 Test Street</contact:street>
                        <contact:city>Test City</contact:city>
                        <contact:sp>Testshire</contact:sp>
                        <contact:pc>TE57 1NG</contact:pc>
                        <contact:cc>GB</contact:cc>
                    </contact:addr>
                </nom-direct-rights:postalInfo>
                <nom-direct-rights:email>john.smith@example.uk</nom-direct-rights:email>
            </nom-direct-rights:check>
        </extension>
        <clTRID>ABC-12345</clTRID>
    </command>
</epp>
Example of a domain <check> command using <nom-direct-rights;registrant> element:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
  <command>
    <check>
<domain:check
   xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
    <domain:name>example1.uk</domain:name>
  </domain:check>
  <extension>
    <nom-direct-rights:check
     xmlns:direct-rights=".....:nom-direct-rights-1.0">
      <nom-direct-rights:registrant>ABCD12345</nom-direct-rights:registrant>
    </nom-direct-rights:check>
  </extension>
 </check>
    <clTRID>ABC-12345</clTRID>
  </command>
</epp>
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0
     epp-1.0.xsd">
    <command>
        <check>
            <domain:check
             xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"
             xsi:schemaLocation="urn:ietf:params:xml:ns:domain-1.0 domain-1.0.xsd">
                <domain:name>example1.uk</domain:name>
            </domain:check>
        </check>
        <extension>
            <nom-direct-rights:check
             xmlns:nom-direct-rights="http://www.nominet.org.uk/epp/xml/nom-direct-rights-1.0"
             xsi:schemaLocation="http://www.nominet.org.uk/epp/xml/nom-direct-rights-1.0
             nom-direct-rights-1.0.xsd">
                <nom-direct-rights:registrant>ABCD12345</nom-direct-rights:registrant>
            </nom-direct-rights:check>
        </extension>
        <clTRID>ABC-12345</clTRID>
    </command>
</epp>

Where ABCD12345 is the EPP ID for the registrant

EPP check response

When a <check> command is successfully processed, the EPP <extension> element will contain the third level domain name for which the registrant has right of refusal or it will be empty if there are no such rights.

An example response to a <check> command <resData>, showing that example.co.uk has the right to example.uk:

<resData>
      <domain:chkData
        xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"
        xsi:schemaLocation="urn:ietf:params:xml:ns:domain-1.0 domain-1.0.xsd">
        <domain:cd>
          <domain:name avail="1">example.uk</domain:name>
        </domain:cd>
      </domain:chkData>
    </resData>
    <extension>
      <nom-direct-rights:chkData
        xmlns:nom-direct-rights="http://www.nominet.org.uk/epp/xml/nom-direct-rights-1.0"
        xsi:schemaLocation="http://www.nominet.org.uk/epp/xml/nom-direct-rights-1.0 nom-direct-rights-1.0.xsd">
        <nom-direct-rights:ror>example.co.uk</nom-direct-rights:ror>
      </nom-direct-rights:chkData>
    </extension>

Further examples

In the <check> response below, assume that the “X” in <domain:name avail="X"> will either be “1” or “0”

<resData>
      <domain:chkData
        xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"
        xsi:schemaLocation="urn:ietf:params:xml:ns:domain-1.0 domain-1.0.xsd">
        <domain:cd>
          <domain:name avail="X">example.uk</domain:name>
        </domain:cd>
      </domain:chkData>
    </resData>
    <extension>
      <nom-direct-rights:chkData
        xmlns:nom-direct-rights="http://www.nominet.org.uk/epp/xml/nom-direct-rights-1.0"
        xsi:schemaLocation="http://www.nominet.org.uk/epp/xml/nom-direct-rights-1.0 nom-direct-rights-1.0.xsd">
        <nom-direct-rights:ror>example.sld.uk</nom-direct-rights:ror>
      </nom-direct-rights:chkData>
    </extension>

The different results will indicate the following:

1. If a check element is provided as an extension to the request:

 Situation“avail” attribute (“X”)<nom-direct:ror> element
aexample.uk is already registered0 (object is not available to register)Empty
bexample.uk is not already registered, a third level domain name has rights and the elements provided match that domain name1 (object is available to
register)
Contains third level domain name with rights
cexample.uk is not already registered, a third level domain name has rights but the elements provided do not match that domain name0 (object is available to
register but you have not matched the details with the third level domain)
Contains the third level domain name with rights
dexample.uk is not already registered and there is no third level domain name with rights1 (object is available to
register)
Empty

 

In situation c above, we will provide the first non-matching field only.

For example:

<resData>
      <domain:chkData
        xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"
        xsi:schemaLocation="urn:ietf:params:xml:ns:domain-1.0 domain-1.0.xsd">
        <domain:cd>
          <domain:name avail="0">example.uk</domain:name>
    <domain:reason>address line 1</domain:reason>
        </domain:cd>
      </domain:chkData>
    </resData>
    <extension>
      <nom-direct-rights:chkData
        xmlns:nom-direct-rights="http://www.nominet.org.uk/epp/xml/nom-direct-rights-1.0"
        xsi:schemaLocation="http://www.nominet.org.uk/epp/xml/nom-direct-rights-1.0 nom-direct-rights-1.0.xsd">
        <nom-direct-rights:ror>example.sld.uk</nom-direct-rights:ror>
      </nom-direct-rights:chkData>
    </extension>

In this example, the “address line 1” does not match the “address line 1” of the third level domain name with rights.

2. If a <nom-direct-rights> check element is provided and more than one domain is being queried

The check command will fail and an appropriate error will be given in the response.

3. If a <nom-direct-rights> check element is not provided as an extension to the request and the nom-direct-rights schema was included when logging in to EPP you will still receive a <nom-direct-rights;ror> result

In the <check> response, assume that the “X” in <domain;name avail="X"> will either be “1” or “0”

Situation“avail” attribute (“X”)   <nom-direct-rights:ror> element
example.uk is already registered0 (object is not available to register)   empty
example.uk is not registered and there is a third level domain name with rights1 (object is available to register)Contains the third level domain name with rights
example.uk is not registered and there is not a third level domain name with rights1 (object is available to register)empty

4. If a <nom-direct-rights> check element is not provided but more than one domain is specified in the <check>

This will be allowed so that the original <check> command functionality can continue to be used even if you are logged in with the extension schema. In this case, no <nom-direct-rights> extension elements will be provided in the response.

For full documentation, please see our Changes to Processes and Technical Specs PDF

 

Create command

The create command allows you to register a domain name or to create an account or nameserver object to link to domain names.

The process to register a domain name is as follows:

  • For .uk applications an address for service is required where the registrant’s main address is outside of the UK.
  • PO Boxes will not be accepted as a valid address for second level .uk domain names except where, during the rights window, a right is being exercised. Where a PO Box is given to exercise a right it will subsequently need to be updated to meet the rules for second level .uk registrations.
  • Either use an existing registrant contact or create a new one using the standard <contact:create> operation. Details on this are available in RFC 5733.
  • Create the domain name using the standard <domain:create> operation. Details on this are available in RFC 5731.
  • The registrant contact identifier should be defined in the <domain:registrant> field.
  • The nameservers can be set using <domain:hostObj> fields.
  • If the <domain:period> field is used then to register a domain for 2 years this must be set to 2y or 24m. If registering a domain for any other period, set the figure accordingly, however a registration of 9 or 10 years can only have the figure set in years.

  • The <domain:contact> fields should not be used.
  • The <domain:authInfo> field is mandatory for EPP standard but is not used by our systems.

To register a registrant account, fields must be set as follows:

  • If the registrant is an individual then the <contact:name> should contain the registrant's name and the <contact:org> should either be omitted or identical to <contact:name>.
  • If the registrant is an organisation then the <contact:org> field should contain the registrant's name and the <contact:name> must contain the main administrative contact for the registrant.
  • In all cases, the registrant's name is taken from the <contact:org> field and is populated from the <contact:name> field if not present.
  • The <contact:addr> must contain the registrant's address. This is the address that will be used for the whois.
  • The optional <contact:voice> may contain a phone number for the main administrative contact.
  • The optional <contact:fax> is ignored.
  • The <contact:email> address must contain the registrant's email address.
  • The <contact:authInfo> element is a mandatory field for the EPP standard but is unused by our system.
  • The <contact:disclose> element should not be used.

To register a nameserver, fields must be set as follows:

  • The name given in <host:name> must not already exist for the registrar.
  • Only a single <host:addr ip="v4"> record is accepted per nameserver object.
  • Only a single <host:addr ip="v6"> record is accepted per nameserver object.


Registrations can be made using only the fields provided by the standard objects. However the use of some optional fields will require an extension object. These are detailed below.

Domain extensions

The standard <domain> object can be used to specify the domain name to be registered along with the registrant account and nameservers.

The schema http://www.nominet.org.uk/epp/xml/domain-nom-ext-1.2 can be used to specify further optional domain fields. It contains the following fields for the create operation:

  • auto-bill
  • next-bill
  • notes
  • reseller

Account extensions

The standard <contact> object can be used to specify the registrant name, address, contact name, contact phone numbers and email address. Further information on this is here.

The schema http://www.nominet.org.uk/epp/xml/contact-nom-ext-1.0 can be used to specify optional account fields. It contains the following fields for the create operation:

  • trad-name
  • type
  • co-no
  • opt-out

Example of a domain create command

<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0
   epp-1.0.xsd">
   <command>
     <create>
       <domain:create
         xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"
         xsi:schemaLocation="urn:ietf:params:xml:ns:domain-1.0
         domain-1.0.xsd">
         <domain:name>nominet-test100.co.uk</domain:name>
         <domain:period unit="y">2</domain:period>
         <domain:ns>
           <domain:hostObj>ns1.nominet.org.uk</domain:hostObj>
           <domain:hostObj>ns2.nominet.org.uk</domain:hostObj>
         </domain:ns>
         <domain:registrant>ab-c123456</domain:registrant>
         <domain:authInfo>
           <domain:pw>**********</domain:pw>
         </domain:authInfo>
       </domain:create>
     </create>
     <clTRID>abcde12345</clTRID>
   </command>
</epp>

Example of a contact create command

<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0
    epp-1.0.xsd">
    <command>
        <create>
            <contact:create
                xmlns:contact="urn:ietf:params:xml:ns:contact-1.0" 
                xsi:schemaLocation="urn:ietf:params:xml:ns:contact-1.0
                contact-1.0.xsd">
                <contact:id>ABCD12345</contact:id>
                <contact:postalInfo type="loc">
                    <contact:name>Firstname Lastname</contact:name>
                    <contact:org>Companyname Ltd</contact:org>
                    <contact:addr>
                        <contact:street>Teststreet 1</contact:street>
                        <contact:street>Teststreet 2</contact:street>
                        <contact:city>Oxford</contact:city>
                        <contact:sp>England</contact:sp>
                        <contact:pc>OX1 1AH</contact:pc>
                        <contact:cc>GB</contact:cc>
                    </contact:addr>
                </contact:postalInfo>
                <contact:voice>+44.1865658754</contact:voice>
                <contact:email>test@nominet.org.uk</contact:email>
                <contact:authInfo>
                    <contact:pw>authinfo</contact:pw>
                </contact:authInfo>
            </contact:create>
        </create>
    </command>
</epp>

Example of a contact create command with extensions

<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0
    epp-1.0.xsd">
    <command>
        <create>
            <contact:create
                xmlns:contact="urn:ietf:params:xml:ns:contact-1.0" 
                xsi:schemaLocation="urn:ietf:params:xml:ns:contact-1.0
                contact-1.0.xsd">
                <contact:id>ABCD12345</contact:id>
                <contact:postalInfo type="loc">
                    <contact:name>Firstname Lastname</contact:name>
                    <contact:org>Companyname Ltd</contact:org>
                    <contact:addr>
                        <contact:street>Teststreet 1</contact:street>
                        <contact:street>Teststreet 2</contact:street>
                        <contact:city>Oxford</contact:city>
                        <contact:sp>England</contact:sp>
                        <contact:pc>OX1 1AH</contact:pc>
                        <contact:cc>GB</contact:cc>
                    </contact:addr>
                </contact:postalInfo>
                <contact:voice>+44.1865658754</contact:voice>
                <contact:email>test@nominet.org.uk</contact:email>
                <contact:authInfo>
                    <contact:pw>authinfo</contact:pw>
                </contact:authInfo>
            </contact:create>
        </create>
        <extension>
            <contact-ext:create 
                xmlns:contact-ext="http://www.nominet.org.uk/epp/xml/contact-nom-ext-1.0"
                xsi:schemaLocation="http://www.nominet.org.uk/epp/xml/contact-nom-ext-1.0 contact-nom-ext-1.0.xsd">
                <contact-ext:trad-name>Trading name</contact-ext:trad-name>
                <contact-ext:type>LTD</contact-ext:type>
                <contact-ext:co-no>12345678</contact-ext:co-no>
                <contact-ext:opt-out>N</contact-ext:opt-out>
            </contact-ext:create>
        </extension>
        <clTRID>ABC-12345</clTRID>
    </command>
</epp>

Example of a host create command

<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0
    epp-1.0.xsd">
    <command>
        <create>
            <host:create xmlns:host="urn:ietf:params:xml:ns:host-1.0"
                xsi:schemaLocation="urn:ietf:params:xml:ns:host-1.0
                host-1.0.xsd">
                <host:name>ns1.nominet.org.uk</host:name>
                <host:addr ip="v4">123.123.123.123</host:addr>
            </host:create>
        </create>
        <clTRID>ABC-12345</clTRID>
    </command>
</epp>

Address for service

To create a new address for service and a new registrant

  • create registrant contact
  • create address for service contact
  • create domain name using both contact IDs

Example:

1.To register example.uk to a new registrant that requires an address for service: Create the domain name using the standard operation. Details on this are available in RFC 5731.

<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0
    epp-1.0.xsd">
    <command>
        <create>
            <contact:create
xmlns:contact="urn:ietf:params:xml:ns:contact-1.0"
                xsi:schemaLocation="urn:ietf:params:xml:ns:contact-1.0
                contact-1.0.xsd">
                <contact:id>ABCD12345</contact:id>
                <contact:postalInfo type="loc">
                    <contact:name>Firstname Lastname</contact:name>
                    <contact:org>Companyname Ltd</contact:org>
                    <contact:addr>
                        <contact:street>Teststreet 1</contact:street>
                                       <contact:street>Teststreet 2</contact:street>
                        <contact:city>Paris</contact:city>
                        <contact:sp>France</contact:sp>
                        <contact:pc>12345</contact:pc>
                        <contact:cc>FR</contact:cc>
                    </contact:addr>
                </contact:postalInfo>
                <contact:voice>+44.1865658754</contact:voice>
                <contact:email>test@nominet.org.uk</contact:email>
                <contact:authInfo>
                    <contact:pw>authinfo</contact:pw>
                </contact:authInfo>
            </contact:create>
        </create>
    </command>
</epp>

Please note that the contact country is FR so an address for service is needed.

Create an address for service contact with a different ID – this must be an address with a country code of GB, GG, IM or JE

<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0
    epp-1.0.xsd">
    <command>
        <create>
            <contact:create
                xmlns:contact="urn:ietf:params:xml:ns:contact-1.0"
                xsi:schemaLocation="urn:ietf:params:xml:ns:contact-1.0
                contact-1.0.xsd">
                <contact:id>servABCD12345</contact:id>
                <contact:postalInfo type="loc">
                    <contact:name>Firstname Lastname</contact:name>
                    <contact:org>Companyname Ltd</contact:org>
                    <contact:addr>
                        <contact:street>Teststreet 1</contact:street>
                        <contact:street>Teststreet 2</contact:street>
                        <contact:city>Oxford</contact:city>
                        <contact:sp>England</contact:sp>
                        <contact:pc>OX1 1AH</contact:pc>
                        <contact:cc>GB</contact:cc>
                    </contact:addr>
                </contact:postalInfo>
                <contact:voice>+44.1865658754</contact:voice>
                <contact:email>test@nominet.org.uk</contact:email>
                <contact:authInfo>
                    <contact:pw>authinfo</contact:pw>
                </contact:authInfo>
            </contact:create>
        </create>
    </command>
</epp>

Create the domain name using:

<domain:registrant> (in this example ABCD12345)
<domain:contact type="admin> (in this example servABCD12345)

Example:

<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0
   epp-1.0.xsd">
   <command>
     <create>
       <domain:create
         xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"
         xsi:schemaLocation="urn:ietf:params:xml:ns:domain-1.0
         domain-1.0.xsd">
         <domain:name>example.uk</domain:name>
         <domain:period unit="y">2</domain:period>
         <domain:ns>
           <domain:hostObj>ns1.nominet.org.uk</domain:hostObj>
           <domain:hostObj>ns2.nominet.org.uk</domain:hostObj>
         </domain:ns>
         <domain:registrant>ABCD12345</domain:registrant>
         <domain:contact type="admin">servABCD12345</domain:contact>
         <domain:authInfo>
           <domain:pw>**********</domain:pw>
         </domain:authInfo>
       </domain:create>
     </create>
     <clTRID>abcde12345</clTRID>
   </command>
</epp>

2. To create an address for service for an existing registrant:

Create a service contact (as above) and create the domain name using the existing registrant contact ID and the new service contact ID.

If the existing registrant contact ID is XYZ54321, then the command would be

<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0
   epp-1.0.xsd">
   <command>
     <create>
       <domain:create
         xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"
         xsi:schemaLocation="urn:ietf:params:xml:ns:domain-1.0
         domain-1.0.xsd">
         <domain:name>example.uk</domain:name>
         <domain:period unit="y">2</domain:period>
         <domain:ns>
           <domain:hostObj>ns1.nominet.org.uk</domain:hostObj>
           <domain:hostObj>ns2.nominet.org.uk</domain:hostObj>
         </domain:ns>
         <domain:registrant>XYZ54321</domain:registrant>
         <domain:contact type="admin">servABCD12345</domain:contact>
         <domain:authInfo>
           <domain:pw>**********</domain:pw>
         </domain:authInfo>
       </domain:create>
     </create>
     <clTRID>abcde12345</clTRID>
   </command>
</epp>

3. To create a new registrant with an existing address for service:

Create a registrant contact (as above) and create the domain name using the new registrant contact ID and the existing service contact ID.

If the existing service contact is servXYZ54321, then the command would be

<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0
   epp-1.0.xsd">
   <command>
     <create>
       <domain:create
         xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"
         xsi:schemaLocation="urn:ietf:params:xml:ns:domain-1.0
         domain-1.0.xsd">
         <domain:name>example.uk</domain:name>
         <domain:period unit="y">2</domain:period>
         <domain:ns>
           <domain:hostObj>ns1.nominet.org.uk</domain:hostObj>
           <domain:hostObj>ns2.nominet.org.uk</domain:hostObj>
         </domain:ns>
         <domain:registrant>ABCD12345</domain:registrant>
         <domain:contact type="admin">servXYZ54321</domain:contact>
         <domain:authInfo>
           <domain:pw>**********</domain:pw>
         </domain:authInfo>
       </domain:create>
     </create>
     <clTRID>abcde12345</clTRID>
   </command>
</epp>

4. To link an existing registration to an existing address for service:

Create the domain name using the existing registrant contact ID and the existing service contact ID

If the existing registrant contact ID is NOMINET12345 and the existing service contact ID is servNOMINET12345, then the command would be

<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0
   epp-1.0.xsd">
   <command>
     <create>
       <domain:create
         xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"
         xsi:schemaLocation="urn:ietf:params:xml:ns:domain-1.0
         domain-1.0.xsd">
         <domain:name>example.uk</domain:name>
         <domain:period unit="y">2</domain:period>
         <domain:ns>
           <domain:hostObj>ns1.nominet.org.uk</domain:hostObj>
           <domain:hostObj>ns2.nominet.org.uk</domain:hostObj>
         </domain:ns>
         <domain:registrant>NOMINET12345</domain:registrant>
         <domain:contact type="admin">servNOMINET12345</domain:contact>
         <domain:authInfo>
           <domain:pw>**********</domain:pw>
         </domain:authInfo>
       </domain:create>
     </create>
     <clTRID>abcde12345</clTRID>
   </command>
</epp>

 

Delete command

The EPP <delete> command allows the registrar to delete a domain name, a host or a contact. If a domain name is associated with a host, or if a contact or host is associated with a domain name, it cannot be deleted. For further explanation of the circumstances in which delete can be used, see RFC 5731 for domains, RFC 5732 for hosts or RFC 5731 for contacts.

Example of a delete command

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
    <command>
        <delete>
            <domain:delete
                xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
                <domain:name>nominet-test100.co.uk</domain:name>
            </domain:delete>
        </delete>
        <clTRID>ABC-12345</clTRID>
    </command>
</epp>

 

Renew command

The renew command only applies to domain names. It has no meaning for other object types.

Domains

<domain:renew> element

Standard EPP renew commands should be constructed in accordance with RFC 5731. It should be noted that:

  • An optional domain:period element exists that specifies the registration period in years (y) or months (m).
  • The current expiry date of the domain must be provided in the domain:curExpDate element.

Example of a domain renew command 

    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 
     epp-1.0.xsd">
      <command>
        <renew>
          <domain:renew
	   xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"
      	   xsi:schemaLocation="urn:ietf:params:xml:ns:domain-1.0 
           domain-1.0.xsd">
            <domain:name>example.co.uk</domain:name>
            <domain:curExpDate>2009-04-07</domain:curExpDate>
            <domain:period unit="y">2</domain:period>
      	  </domain:renew>
        </renew>
        <clTRID>ABC-12345</clTRID>
      </command>
    </epp>

Example successful domain renew response

    <?xml version="1.0" encoding="UTF-8" standalone="no"?>    
    <epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://www.nominet.org.uk/epp/xml/epp-1.0 
     epp-1.0.xsd">
      <response>
        <result code="1000">
          <msg>Command completed successfully</msg>
        </result>
        <resData>
          <domain:renData
           xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"
           xsi:schemaLocation="urn:ietf:params:xml:ns:domain-1.0 
           domain-1.0.xsd">
            <domain:name>example.co.uk</domain:name>
            <domain:exDate>2010-12-12T13:04:46</domain:exDate>
          </domain:renData>
        </resData>
        <trID>
          <clTRID>EPP-ABC-12345</clTRID>
          <svTRID>112642</svTRID>
        </trID>
      </response>
    </epp>

 

Unrenew command

The <u:unrenew> operation is used to reverse a renewal request made for a domain name. The u prefix represents the std-unrenew schema.

The unrenew command only applies to domain names. It has no meaning for other object types.

Domains

Unrenew commands will only be processed if the renewal invoice has not yet been generated. If the operation is successful, an email will be sent to the registrant of the domain name notifying them of the renewal reversal.

<u:unrenew> element

The <u:unrenew> element contains the following child elements:

<u:domainName> elements that contains the fully qualified name of the domain objects whose renewal is to be undone.

Example of a domain unrenew command

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0
      epp-1.0.xsd">
   <command>
      <update>
            <u:unrenew
            xmlns:u="http://www.nominet.org.uk/epp/xml/std-unrenew-1.0"
            xsi:schemaLocation="http://www.nominet.org.uk/epp/xml/std-unrenew-1.0
            std-unrenew-1.0.xsd">
             <u:domainName>example.co.uk</u:domainName>
             <u:domainName>example2.co.uk</u:domainName>
           </u:unrenew>
      </update>
      <clTRID>ABC-12345</clTRID>
    </command>
  </epp>

Example successful domain unrenew response

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0
      epp-1.0.xsd">
   <response>
     <result code="1000">
       <msg>Command completed successfully</msg>
     </result>
     <resData>
      <domain:renData
        xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"
        xsi:schemaLocation="urn:ietf:params:xml:ns:domain-1.0 domain-1.0.xsd">
        <domain:name>example.co.uk</domain:name>
        <domain:exDate>2013-01-02T11:56:40</domain:exDate>
      </domain:renData>
      <domain:renData
        xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"
        xsi:schemaLocation="urn:ietf:params:xml:ns:domain-1.0 domain-1.0.xsd">
        <domain:name>example2.co.uk</domain:name>
        <domain:exDate>2013-01-02T11:56:40</domain:exDate>
      </domain:renData>
     </resData>
     <trID>
       <clTRID>ABC-12345</clTRID>
       <svTRID>265768</svTRID>
     </trID>
   </response>
 </epp>

 

Update command

The <update> operation allows the attributes of an object to be updated.

Domains

The <domain:update> operation is described in RFC 5731 and allows the following modifications to a domain name:

  • The <domain:registrant> field allows the domain name to be assigned to a different registrant account. This is only allowed if the new account has the same organisation name as the first.
  • Nameservers can be added and removed to the domain name

Modification of the auto-bill, next-bill, renew-not-required, notes and reseller fields are done using the domain-nom-ext-1.1 extension.

Example of a <domain:update> operation with extensions

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0
      epp-1.0.xsd">
  <command>
   <update>
    <domain:update
     xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"
     xsi:schemaLocation="urn:ietf:params:xml:ns:domain-1.0
     domain-1.0.xsd">
     <domain:name>epp-example2.co.uk</domain:name>
     <domain:add>
       <domain:ns>
        <domain:hostObj>ns0.epp-example3.co.uk</domain:hostObj>
        <domain:hostObj>ns0.epp-example4.co.uk</domain:hostObj>
       </domain:ns>
     </domain:add>
     <domain:rem>
      <domain:ns>
        <domain:hostObj>ns0.epp-example1.co.uk</domain:hostObj>
        <domain:hostObj>ns0.epp-example2.co.uk</domain:hostObj>
      </domain:ns>
     </domain:rem>
     <domain:chg>
        <domain:registrant>5689658965</domain:registrant>      
     </domain:chg>
    </domain:update>
   </update>
   <extension>
    <domain-ext:update 
     xmlns:domain-ext="http://www.nominet.org.uk/epp/xml/domain-nom-ext-1.1"
     xsi:schemaLocation="http://www.nominet.org.uk/epp/xml/domain-nom-ext-1.1
     domain-nom-ext-1.1.xsd">
     <domain-ext:auto-bill>143</domain-ext:auto-bill>
     <domain-ext:next-bill>10</domain-ext:next-bill>
     <domain-ext:notes>notes</domain-ext:notes>
     <domain-ext:notes>notes2</domain-ext:notes>
    </domain-ext:update>
   </extension> 
  <clTRID>ABC-12345</clTRID>
 </command>
</epp>

Registrant contacts

The <contact:update> is described in RFC 5733 and allows the following fields in a registrant contact to be modified:

  • address
  • contact name
  • email address
  • contact name

Modifications to the trading name, organisation type, company number, whois opt-out field can done using the contact-nom-1.0 extension.

Example of a <contact:update> operation with extensions

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0
      epp-1.0.xsd">
  <command>
   <update>
    <contact:update
     xmlns:contact="urn:ietf:params:xml:ns:contact-1.0"
     xsi:schemaLocation="urn:ietf:params:xml:ns:contact-1.0
     contact-1.0.xsd">
     <contact:id>my_contact</contact:id>
     <contact:chg>
      <contact:postalInfo type="loc">
        <contact:name>Changed main contact name</contact:name> 
        <contact:addr>
          <contact:street>10 Modified Street</contact:street>
          <contact:city>Oxford</contact:city>
          <contact:sp>Oxon</contact:sp>
          <contact:pc>OX5 5ZZ</contact:pc>
          <contact:cc>GB</contact:cc>
        </contact:addr>
       </contact:postalInfo>
     </contact:chg>
    </contact:update>
   </update>
   <extension>
    <contact-ext:update 
     xmlns:contact-ext="http://www.nominet.org.uk/epp/xml/contact-nom-ext-1.0"
     xsi:schemaLocation="http://www.nominet.org.uk/epp/xml/contact-nom-ext-1.0
     contact-nom-ext-1.0.xsd">
      <contact-ext:trad-name>Example trading name</contact-ext:trad-name>
      <contact-ext:type>LTD</contact-ext:type>
      <contact-ext:co-no>NI65786</contact-ext:co-no>
      <contact-ext:opt-out>N</contact-ext:opt-out>
    </contact-ext:update>
   </extension> 
  <clTRID>ABC-12345</clTRID>
 </command>
</epp>

Notes

  • The <contact:org> field cannot be provided as part of a <contact:update> operation.
  • If the <contact:name> field is provided as part of a <contact:update>, the registrant name is not modified only the main admin contact name.

Nameservers

The <host:update> operation is described in RFC 5732 and allows the following modifications to a nameserver object with a given name:

  • Modify the name field.
  • Modify the ipv4 field
  • Modify the ipv6 field.

Contact-id

The <contact-id:update> operation allows the contact-id associated with a Nominet account to be amended. The new value must be unique across the registry.

Example of a <contact-id:update> operation

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 epp-1.0.xsd">
  <command>
    <update>
      <contact-id:update
        xmlns:contact-id="http://www.nominet.org.uk/epp/xml/std-contact-id-1.0"
        xsi:schemaLocation="http://www.nominet.org.uk/epp/xml/std-contact-id-1.0 
        std-contact-id-1.0.xsd">
        <contact-id:id>S79TA01</contact-id:id>
        <contact-id:chg>
          <contact-id:id>S79TA01NEW</contact-id:id>
        </contact-id:chg>
      </contact-id:update>
    </update>
    <clTRID>ABC-12345</clTRID>
  </command>
</epp>

 

Info command

The EPP <info> command is used to retrieve information associated with an object.

Domains

The <domain:info> command will retrieve information associated with a domain and is described in RFC 5731.

Example of a <domain:info> command

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
    <command>
        <info>
            <domain:info
                xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
                <domain:name hosts="all">epp-example.co.uk</domain:name>
                <domain:authInfo>
                    <domain:pw></domain:pw>
                </domain:authInfo>
            </domain:info>
        </info>
        <clTRID>ABC-12345</clTRID>
    </command>
</epp>

 

Example of a <domain:info> response

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 epp-1.0.xsd">
  <response>
    <result code="1000">
       <msg>Command completed successfully</msg>
    </result>
    <resData>
       <domain:infData
        xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"
        xsi:schemaLocation="urn:ietf:params:xml:ns:domain-1.0 domain-1.0.xsd">
         <domain:name>epp-example.co.uk</domain:name>
         <domain:roid>7854785487-UK</domain:roid>
         <domain:registrant>S70T1</domain:registrant>
         <domain:ns>
           <domain:hostObj>ns0.epp-example2.co.uk</domain:hostObj> 
           <domain:hostObj>ns1.epp-example2.co.uk</domain:hostObj>
         </domain:ns>
         <domain:host>ns0.epp-example.co.uk</domain:host>
         <domain:host>ns1.epp-example.co.uk</domain:host>
         <domain:clID>EXAMPLE_TAG</domain:clID>
         <domain:crID>epp@epp-example.</domain:crID>
         <domain:crDate>2008-01-01T13:34:20.0Z</domain:crDate>
         <domain:upID>epp@epp-example.</domain:upID>
         <domain:upDate>2009-04-02T13:56:03.0Z</domain:upDate>
         <domain:exDate>2010-01-01T13:34:20.0Z</domain:exDate>
       </domain:infData> 
    </resData>
    <extension>
      <domain-ext:infData 
       xmlns:domain-ext="http://www.nominet.org.uk/epp/xml/domain-nom-ext-1.1"
       xsi:schemaLocation="http://www.nominet.org.uk/epp/xml/domain-nom-ext-1.1 
       domain-nom-ext-1.1.xsd">
        <domain-ext:auto-bill>123</domain-ext:auto-bill>
        <domain-ext>
      </domain-ext:infData>
    </extension>
    <trID>
      <clTRID>ABC-12345</clTRID>
      <svTRID>54322-XYZ</svTRID>
    </trID>
  </response>
</epp>

Notes

  • There will be no <domain:status> element within the standard object.
  • The <domain:crID> field in the standard object will be truncated to 16 characters. The full field will be provided in a warning extension object.
  • The <domain:upID> field in the standard object will be truncated to 16 characters. The full field will be provided in a warning extension object.
  • There will be no <domain:trDate> element within the standard object.
  • There will be no <domain:authInfo> element within the standard object.

Registrant contacts

The standard <contact:info> will retrieve information associated with a registrant contact and is described in RFC 5733.

Example of a <contact:info> command

<?xml version="1.0" standalone="no"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
    xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0
    epp-1.0.xsd"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <command>
        <info>
            <contact:info xmlns:contact="urn:ietf:params:xml:ns:contact-1.0"
                xsi:schemaLocation="urn:ietf:params:xml:ns:contact-1.0
                contact-1.0.xsd">
                <contact:id>S70T1</contact:id>
            </contact:info>
        </info>
        <clTRID>ABC-12345</clTRID>
    </command>
</epp>

where S70T1 is the Standard EPP ID - you retrieve this through the <domain:info> command

Example of a <contact:info> response

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0
     epp-1.0.xsd">
  <response>
    <result code="1000">
      <msg>Command completed successfully</msg>
    </result>
    <resData>
      <contact:infData
       xmlns:contact="urn:ietf:params:xml:ns:contact-1.0"
       xsi:schemaLocation="urn:ietf:params:xml:ns:contact-1.0
       contact-1.0.xsd">
        <contact:id>CMyContactID</contact:id>
        <contact:roid>548965487-UK</contact:roid>
        <contact:status s="ok"/>
        <contact:postalInfo type="loc">
          <contact:name>Mr Jones</contact:name>
          <contact:org>Company.</contact:org>
          <contact:addr>
            <contact:street>High Street</contact:street>
            <contact:city>Oxford</contact:city>
            <contact:pc>OX1 1AH</contact:pc>
            <contact:cc>GB</contact:cc>
          </contact:addr>
        </contact:postalInfo>
        <contact:voice>+44.1865658754</contact:voice>
        <contact:email>example@epp-example.org.uk</contact:email>
        <contact:clID>EXAMPLE-TAG</contact:clID>
        <contact:crDate>2007-05-12T12:44:00Z</contact:crDate>
        <contact:upDate>2008-06-12T06:46:00Z</contact:upDate>
      </contact:infData>
    </resData>
    <extension>
      <contact-ext:infData
        xmlns:contact-ext="http://www.nominet.org.uk/epp/xml/contact-nom-ext-1.0"
        xsi:schemaLocation="http://www.nominet.org.uk/epp/xml/contact-nom-ext-1.0
        contact-nom-ext-1.0.xsd">
        <contact-ext:trad-name>Big enterprises</contact-ext:trad-name>
        <contact-ext:type>LTD</contact-ext:type>
        <contact-ext:co-no>5489549</contact-ext:co-no>
        <contact-ext:opt-out>N</contact-ext:opt-out>
      </contact-ext:infData>
    </extension>    
    <trID>
      <clTRID>ABC-12345</clTRID>
      <svTRID>54322-XYZ</svTRID>
    </trID>
  </response>
</epp>

Notes

  • The <contact:crID> and <contact:upID> elements in the standard object will be truncated to 16 characters. The full field will be given in a warning extension object.
  • There will be no <contact:authInfo> element.
  • There will be no <contact:trDate> element.
  • The <contact:city> and <contact:cc> fields are mandatory in the standard schema but may not be present in the database for some domain names. In this circumstance, the <contact:city> field will be '.' and the <contact:cc> field '..'.

The optional extension schema nom-data-quality1.1 adds some additional fields regarding data quality in response to <contact:info> requests. The current implementation returns the fields for invalid data that have been manually checked by Nominet and requries action.  These fields will be returned for Accredited Channel Partners only.

  • reason: this will indicate the reason for a data quality workflow on the contact
  • dateCommenced: the date on which the contact was created or changed to trigger the data quality case
  • dateToSuspend: the date on which the domains should be suspended if the registrant data is not corrected
  • lockApplied: this will be true (Y) if any data quality lock has been set for the contact

Example EPP login using our extension schemas and the new DQ schema:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0
    epp-1.0.xsd">
    <command>
        <login>
            <clID>EXAMPLE-TAG</clID>
            <pw>foo-123</pw>
            <options>
                <version>1.0</version>
                <lang>en</lang>
            </options>
            <svcs>
                <objURI>urn:ietf:params:xml:ns:domain-1.0</objURI>
                <objURI>urn:ietf:params:xml:ns:contact-1.0</objURI>
                <objURI>urn:ietf:params:xml:ns:host-1.0</objURI>
                <svcExtension>
                    <extURI>http://www.nominet.org.uk/epp/xml/domain-nom-ext-1.2</extURI>
                    <extURI>http://www.nominet.org.uk/epp/xml/contact-nom-ext-1.0</extURI>
                    <extURI>http://www.nominet.org.uk/epp/xml/nom-data-quality-1.1</extURI>
                </svcExtension>
            </svcs>
        </login>
        <clTRID>ABC-12345</clTRID>
    </command>
</epp>

Example output for a newly created contact:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.nominet.org.uk/epp/xml/epp-1.0 epp-1.0.xsd">
    <response>
        <result code="1000">
            <msg>Command completed successfully</msg>
        </result>
        <resData>
            <contact:infData
                xmlns:contact="urn:ietf:params:xml:ns:contact-1.0"
                xsi:schemaLocation="urn:ietf:params:xml:ns:contact-1.0 contact-1.0.xsd">
                <contact:id>CMyContactID</contact:id>
                <contact:roid>548965487-UK</contact:roid>
                <contact:status s="ok"/>
                <contact:postalInfo type="loc">
                    <contact:name>Mr Jones</contact:name>
                    <contact:org>Company.</contact:org>
                    <contact:addr>
                        <contact:street>High Street</contact:street>
                        <contact:city>Oxford</contact:city>
                        <contact:pc>OX1 1AH</contact:pc>
                        <contact:cc>GB</contact:cc>
                    </contact:addr>
                </contact:postalInfo>
                <contact:voice>+44.1865658754</contact:voice>
                <contact:email>example@epp-example.org.uk</contact:email>
                <contact:clID>EXAMPLE-TAG</contact:clID>
                <contact:crID>EPP-ABC-12345</contact:crID>
                <contact:crDate>2015-05-07T13:20:04</contact:crDate>
               </contact:infData>
        </resData>
        <extension>
            <nom-data-quality:infData
                xmlns:nom-data-quality="http://www.nominet.org.uk/epp/xml/nom-data-quality-1.1"
                xsi:schemaLocation="http://www.nominet.org.uk/epp/xml/nom-data-quality-1.1 nom-data-quality-1.1.xsd">
                <nom-data-quality:status>invalid</nom-data-quality:status>
                <nom-data-quality:reason>Registrant name and address awaiting validation</nom-data-quality:reason>
                <nom-data-quality:lockApplied>N</nom-data-quality:lockApplied>
            </nom-data-quality:infData>
        </extension>
        <trID>
            <clTRID>ABC-12345</clTRID>
            <svTRID>127349</svTRID>
        </trID>
    </response>
</epp>

Example output for a contact that has an address which hasn’t been validated (using the contact-nom-ext schema):

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.nominet.org.uk/epp/xml/epp-1.0 epp-1.0.xsd">
    <response>
        <result code="1000">
            <msg>Command completed successfully</msg>
        </result>
        <resData>
            <contact:infData
                xmlns:contact="urn:ietf:params:xml:ns:contact-1.0"
                xsi:schemaLocation="urn:ietf:params:xml:ns:contact-1.0
                contact-1.0.xsd">
                <contact:id>CMyContactID</contact:id>
                <contact:roid>548965487-UK</contact:roid>
                <contact:status s="ok"/>
                <contact:postalInfo type="loc">
                    <contact:name>Mr Jones</contact:name>
                    <contact:org>Company.</contact:org>
                    <contact:addr>
                        <contact:street>High Street</contact:street>
                        <contact:city>Oxford</contact:city>
                        <contact:pc>OX1 1AH</contact:pc>
                        <contact:cc>GB</contact:cc>
                    </contact:addr>
                </contact:postalInfo>
                <contact:voice>+44.1865658754</contact:voice>
                <contact:email>example@epp-example.org.uk</contact:email>
                <contact:clID>EXAMPLE-TAG</contact:clID>
                <contact:crID>EPP-ABC-12345</contact:crID>
                <contact:crDate>2015-05-07T13:20:04</contact:crDate>
               </contact:infData>
        </resData>
        <extension>
            <contact-nom-ext:infData
                xmlns:contact-nom-ext="http://www.nominet.org.uk/epp/xml/contact-nom-ext-1.0"
                xsi:schemaLocation="http://www.nominet.org.uk/epp/xml/contact-nom-ext-1.0 contact-nom-ext-1.0.xsd">
                <contact-nom-ext:type>UNKNOWN</contact-nom-ext:type>
                <contact-nom-ext:opt-out>N</contact-nom-ext:opt-out>
            </contact-nom-ext:infData>
            <nom-data-quality:infData
                xmlns:nom-data-quality="http://www.nominet.org.uk/epp/xml/nom-data-quality-1.1"
                xsi:schemaLocation="http://www.nominet.org.uk/epp/xml/nom-data-quality-1.1 nom-data-quality-1.1.xsd">
                <nom-data-quality:status>invalid</nom-data-quality:status>
                <nom-data-quality:reason>Incorrect Address</nom-data-quality:reason>
                <nom-data-quality:dateCommenced>2015-05-07T13:20:04</nom-data-quality:dateCommenced>
                <nom-data-quality:dateToSuspend>2015-06-06T13:20:04</nom-data-quality:dateToSuspend>
                <nom-data-quality:lockApplied>Y</nom-data-quality:lockApplied>
                <nom-data-quality:domainListData noDomains="2">
                    <nom-data-quality:domainName>epp-example1.co.uk</nom-data-quality:domainName>
                    <nom-data-quality:domainName>epp-example2.co.uk</nom-data-quality:domainName>
                </nom-data-quality:domainListData>
            </nom-data-quality:infData>
        </extension>
        <trID>
            <clTRID>ABC-12345</clTRID>
            <svTRID>127373</svTRID>
        </trID>
    </response>
</epp>

Notes:

  • suspensionStatus will not be included in version 1.1 of the schema
  • If a registrar that is not an Accredited Channel Partner uses version 1.1 of the schema they will receive only the dq:status field (matching the output for version 1.0)
  • dateCommenced, dateToSuspend, domainListData will only be populated (and included in infData) when the contact has been specifically marked as poor data quality (Incorrect registrant, incorrect address, incorrect registrant & address)

Hosts

The <host:info> command will retrieve information associated with a nameserver object and is described in RFC 5732.

Example of a <host:info> command

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
    <command>
        <info>
            <host:info
                xmlns:host="urn:ietf:params:xml:ns:host-1.0">
                <host:name>ns0.epp-example.co.uk</host:name>
            </host:info>
        </info>
        <clTRID>ABC-12345</clTRID>
    </command>
</epp>

Example of a <host:info> response

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.nominet.org.uk/epp/xml/epp-1.0 epp-1.0.xsd">
  <response>
    <result code="1000">
      <msg>Command completed successfully</msg>
    </result>
    <resData>
      <host:infData
        xmlns:host="urn:ietf:params:xml:ns:host-1.0"
        xsi:schemaLocation="urn:ietf:params:xml:ns:host-1.0 host-1.0.xsd">
        <host:name>ns0.epp-example.co.uk.</host:name>
        <host:roid>548965487-UK</host:roid>
        <host:status s="ok"/>
        <host:addr ip="v4">123.123.123.123</host:addr>
        <host:addr ip="v6">1080:0:0:0:8:800:200C:417B</host:addr>
        <host:clID>EXAMPLE_TAG</host:clID>
        <host:crID>epp-user</host:crID>
        <host:crDate>2008-06-12T06:46:00Z</host:crDate>
      </host:infData>
    </resData>
    <trID> 
      <clTRID>EPP-ABC-12345</clTRID>
      <svTRID>116890</svTRID>
    </trID>
  </response>
</epp>

Notes

  • The <host:crID> and <host:upID> elements in the standard object will be truncated to 16 characters. The full field will be given in a warning extension object.
  • There will be no <contact:trDate> element.

 

Poll command

When changes take place in the registration data for domain names or ENUMs on a tag, we send notifications to the registrar. It will be possible for registrars to elect to receive these notifications via EPP.

If a registrar elects to receive notifications via EPP, then notifications will be placed in the message queue awaiting a poll command to retrieve them. If the message queue is not empty, then a successful response to a poll command returns the first message from the queue. This response includes a unique message identifier and a counter that gives the number of messages in the queue.

After a message has been received by the client, the client must respond to the client with an explicit acknowledgement to confirm that the message has been received. Then that message is dequeued and the next message in the queue becomes available for retrieval.

Note

To use the poll command you must have activated this notification option for your account in the Online Service. In addition, version 1.1 or subsequent schemas must be used if polling via Nominet EPP.

<epp:poll> element

The <epp:poll> element is an empty element. It has a single "op" attribute which may take the following values:

  • "req" to retrieve the first message from the server message queue.
  • "ack", to acknowledge receipt of a message. the message identifier is defined by a msgID attribute.

<epp:resData> element

The contents of the <epp:resData> depends upon the message type being returned and is described in the documentation for each notification.

Note: If 'epp' is chosen as the default namespace then the 'epp:' prefix can be omitted.

Full list of notification responses.

Example - Polling for messages

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
  <epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
    <command>
      <poll op="req"/>
      <clTRID>ABC-12345</clTRID>
    </command>
  </epp>

Example poll response

For illustrative purposes the <resData> element is empty in this example.

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
   <response>
     <result code="1301">
       <msg>Command completed successfully; ack to dequeue</msg>
     </result>
     <msgQ count="5" id="12345">
       <qDate>2000-06-08T22:00:00.0</qDate>
       <msg>Domains Released Notification</msg>
     </msgQ>
     <resData>
     </resData>
     <trID>
       <clTRID>ABC-12345</clTRID>
       <svTRID>54321-XYZ</svTRID>
     </trID>
   </response>
 </epp>

Response to an acknowledgement

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
  <epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
    <response>
      <result code="1000">
        <msg>Command completed successfully</msg>
      </result>
      <msgQ count="4" id="12345"/>
      <trID>
        <clTRID>ABC-12346</clTRID>
        <svTRID>54322-XYZ</svTRID>
      </trID>
    </response>
  </epp>

 

Transfer command

If you have an accredited TAG, or are self-managed, you have the ability to transfer domain names between registrants. View full details on how to do this here.

The <transfer> command allows a registrar to request that a domain name or account object to be transferred from another registrar.

 As we operate "push" transfers requested by the current registrar, (rather than "pull" transfers requested by the target registrar), the <domain:transfer> command is not included in our standard EPP implementation.

To release a domain name to another registrar, use the Release command.

 

Handshake command

The handshake operation allows a registrar to accept or reject a registrar change/registrant transfer authorisation request.

<h:accept> element

The <h:accept> element is used to accept a registrar change/registrant transfer authorisation request. This element contains the following sub-elements:

  • An <h:caseId> element specifying the case-id of the authorisation request.
  • An optional <h:registrant> element specifying an account that the domains associated with the case should be placed on. Note that this is only applicable to registrar changes. A new account is created If this element is not given.

<h:reject> element

The <h:reject> element is used to reject a registrar change/registrant transfer authorisation request. This element contains the following sub-elements:

  • An <h:caseId> element specifying the case-id of the authorisation request.

Example handshake accept request

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 epp-1.0.xsd">
  <command>
    <update>
      <h:accept
        xmlns:h="http://www.nominet.org.uk/epp/xml/std-handshake-1.0"
        xsi:schemaLocation="http://www.nominet.org.uk/epp/xml/std-handshake-1.0 
        std-handshake-1.0.xsd">
        <h:caseId>123456</h:caseId>
        <h:registrant>EXAMPLE-REGISTRANT</h:registrant>
      </h:accept>
    </update>
    <clTRID>ABC-12345</clTRID>
  </command>
</epp>

Example response to a successful handshake accept request

<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.nominet.org.uk/epp/xml/epp-1.0 epp-1.0.xsd">
  <response>
    <result code="1000">
      <msg>Command completed successfully</msg>
    </result>
    <resData>
      <h:hanData
       xmlns:h="http://www.nominet.org.uk/epp/xml/std-handshake-1.0"
       xsi:schemaLocation="http://www.nominet.org.uk/epp/xml/std-handshake-1.0 
       std-handshake-1.0.xsd">
        <h:caseId>6</h:caseId>
        <h:domainListData noDomains="2">
          <h:domainName>example1.co.uk</h:domainName>
          <h:domainName>example2.co.uk</h:domainName>
        </h:domainListData>
      </h:hanData>
    </resData>
    <trID>
      <clTRID>EPP-ABC-12345</clTRID>
      <svTRID>104239</svTRID>
    </trID>
  </response>
</epp>

 

Release operation

The release operation allows a registrar to move a domain name, or account onto another tag.

The release operation is requested by enclosing an <r:release> element within an <update> command. The r prefix represents the std-release schema.

<r:release> element

The <r:release> element contains the following sub-elements:

  • Either an <r:domainName> element with the domain name to be released or an <r:registrant> element with the account to be released.
  • An <r:registrarTag> element with the tag to release the domain name to.

Example domain release request

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 epp-1.0.xsd">
  <command>
    <update>
      <r:release
        xmlns:r="http://www.nominet.org.uk/epp/xml/std-release-1.0"
        xsi:schemaLocation="http://www.nominet.org.uk/epp/xml/std-release-1.0 
        std-release-1.0.xsd">
        <r:domainName>epp-example.co.uk</r:domainName>
        <r:registrarTag>EXAMPLE-TAG</r:registrarTag>
      </r:release>
    </update>
    <clTRID>ABC-12345</clTRID>
  </command>
</epp>

Example account release request

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 epp-1.0.xsd">
  <command>
    <update>
      <r:release
        xmlns:r="http://www.nominet.org.uk/epp/xml/std-release-1.0"
        xsi:schemaLocation="http://www.nominet.org.uk/epp/xml/std-release-1.0 
        std-release-1.0.xsd">
        <r:registrant>S75TA03</r:registrant>
        <r:registrarTag>EXAMPLE-TAG</r:registrarTag>
      </r:release>
    </update>
    <clTRID>ABC-12345</clTRID>
  </command>
</epp>

Notes

  • If an account is released to another tag then all of its domain names are also released.
  • If the receiving tag does not require a handshake then a response code of 1000 is returned to the client.
  • If the receiving tag does require a handshake then a response code of 1001 is returned to the client to show that further action is necessary, an example is below.

Example response to a release request when a handshake is required by the receiving tag

<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.nominet.org.uk/epp/xml/epp-1.0 epp-1.0.xsd">
  <response>
    <result code="1001">
      <msg>Command completed successfully; action pending</msg>
    </result>
    <resData>
      <r:releasePending
        xmlns:r="http://www.nominet.org.uk/epp/xml/std-release-1.0"
        xsi:schemaLocation="http://www.nominet.org.uk/epp/xml/std-release-1.0 
        std-release-1.0.xsd">
        Your request for a registrar change has resulted in a handshake
        request to the receiving tag. The receiving tag has up to 5 days to respond, after
        which the request will be expired. You will be notified of the success or
        failure of the registrar change.
      </r:releasePending>
    </resData>
    <trID>
      <clTRID>EPP-ABC-12345</clTRID>
      <svTRID>104239</svTRID>
    </trID>
  </response>
</epp>

 

Fork command

The fork command allows a number of domain names on a registrant contact to be moved to a copy of that contact.
A fork is requested by enclosing an <f:fork> element within an <update> command. The f prefix represents the std-fork schema.

<f:fork> element

The <f:fork> element contains the following sub-elements:

  • An optional <f:contactId> element giving the registrant contact identifier that the domain names are to be forked from.
  • An optional <f:newContactId> element which specifies the new contact identifier for the new contact. If this is not specified then a new contact identifier will be automatically generated.
  • One or more <f:domainName> elements giving domain names to fork from the contact. This is optional if duplicating the contact and using both the <f:contactId> and <f:newContactId> elements.

If the <f:contactId> element is provided then the domain names must all be on that contact, otherwise the domain names must all be on a single contact.

Example fork request

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
  <epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0
       epp-1.0.xsd">
    <command>
      <update>
        <f:fork xmlns:f="http://www.nominet.org.uk/epp/xml/std-fork-1.0"
                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                xsi:schemaLocation="http://www.nominet.org.uk/epp/xml/std-fork-1.0 
                std-fork-1.0.xsd">
          <f:contactId>MY-CONTACT-ID</f:contactId>
          <f:newContactId>NEW-CONTACT-ID</f:newContactId>
          <f:domainName>example1.co.uk</f:domainName>
          <f:domainName>example2.co.uk</f:domainName>
          <f:domainName>example3.co.uk</f:domainName>
        </f:fork>
      </update>
      <clTRID>ABC-123</clTRID>
    </command>
  </epp>

Example fork response

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
  <epp  xmlns="urn:ietf:params:xml:ns:epp-1.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0
        epp-1.0.xsd">
    <response>
      <result code="1000">
        <msg>Command completed successfully</msg>    
      </result>
      <resData>
        <contact:creData>
          <contact:id>NEW-CONTACT-ID</contact:id>
          <contact:crDate>2008-01-12T15:00:12</contact:crDate>
        </contact:creData>
      </resData>
    </response>
  </epp>

Notes

Details of the new contact created are included in a <contact:creData> element included in the <resData> element.

List command

A domain list operation can be requested by enclosing an <l:list> element within an <info> command. The l prefix represents the std-list schema.

The <l:list> element contains the following sub-elements:

Either:

  • <l:month> element giving the registration month to list domain names for

Or

  • <l:expiry> element giving the expiry month to list domain names for

Example domain list request

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
  <epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0
    epp-1.0.xsd">
    <command>
     <info>
      <l:list xmlns:l="http://www.nominet.org.uk/epp/xml/std-list-1.0"
              xsi:schemaLocation="http://www.nominet.org.uk/epp/xml/std-list-1.0 
              std-list-1.0.xsd">
        <l:month>2012-11</l:month>
      </l:list>
     </info>
    <clTRID>ABC-12345</clTRID>
   </command>
  </epp>

Example domain list response

The following shows an example domain list response:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0
      epp-1.0.xsd">
   <response>
    <result code="1000">
     <msg>Command completed successfully</msg>
    </result>
    <resData>
     <list:listData
       xmlns:list="http://www.nominet.org.uk/epp/xml/std-list-1.0"
       xsi:schemaLocation="http://www.nominet.org.uk/epp/xml/std-list-1.0 std-list-1.0.xsd"
       noDomains="6">
      <list:domainName>epp-example1.co.uk</list:domainName>
      <list:domainName>epp-example2.co.uk</list:domainName>
      <list:domainName>epp-example3.co.uk</list:domainName>
      <list:domainName>epp-example4.co.uk</list:domainName>
      <list:domainName>epp-example5.co.uk</list:domainName>
      <list:domainName>epp-example6.co.uk</list:domainName>
     </list:listData>
    </resData>
    <trID>
      <clTRID>EPP-ABC-12345</clTRID>
      <svTRID>54322-XYZ</svTRID>
    </trID>
   </response>
  </epp>

The following is an example of a list response that contains no domains:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0
      epp-1.0.xsd">
   <response>
    <result code="1000">
     <msg>Command completed successfully</msg>
    </result>
    <resData>
     <list:listData
       xmlns:list="http://www.nominet.org.uk/epp/xml/std-list-1.0"
       xsi:schemaLocation="http://www.nominet.org.uk/epp/xml/std-list-1.0 std-list-1.0.xsd"
       noDomains="0"/>
    </resData>
    <trID>
      <clTRID>EPP-ABC-12345</clTRID>
      <svTRID>54322-XYZ</svTRID>
    </trID>
   </response>
  </epp>

 

Tag List command

The tag list command is used to obtain a list of all tags that accept tag changes
along with their handshake settings.  It uses the nom-tag-1.0 schema.

<tag:list> element

To obtain a list of tags, the <info> command must contain an empty <tag:list> element

<tag:listData> element

The <tag:listData> element returned in a response to a <tag:list> command
contains a <tag:infData> element for each tag.

Each <tag:infData> element contains the following child elements:

  • A <tag:registrar-tag> element giving the tag.
  • A <tag:name> element giving the company name for the tag
  • An optional <tag:trad-name> element giving the trading name for the tag.
  • A <tag:handshake> element giving the handshake setting for the tag. This is either 'Y' if the tag requires a handshake accepting domains onto its tag or 'N' if not.

Note that the list will contain more than 4000 <tag:infData> entries.

Examples

Example of a <tag:list> command

 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0
         epp-1.0.xsd">
      <command>
        <info>
          <tag:list
           xmlns:tag="http://www.nominet.org.uk/epp/xml/nom-tag-1.0"
           xsi:schemaLocation="http://www.nominet.org.uk/epp/xml/nom-tag-1.0
           nom-tag-1.0.xsd"/>
       </info>
       <clTRID>ABC-12345</clTRID>
     </command>
   </epp>

Example of a successful <tag:list> response

 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0
         epp-1.0.xsd">
      <response>
       <result code="1000">
        <msg>Command completed successfully</msg>
       </result>
       <resData>
         <tag:listData
           xmlns:tag="http://www.nominet.org.uk/epp/xml/nom-tag-1.0"
           xsi:schemaLocation="http://www.nominet.org.uk/epp/xml/nom-tag-1.0
           nom-tag-1.0.xsd">
           <tag:infData>
             <tag:registrar-tag>EXAMPLE-TAG</tag:registrar-tag>
             <tag:name>Example company name</tag:name>
             <tag:trad-name>Example trading name</tag:trad-name>
             <tag:handshake>Y</tag:handshake>
           </tag:infData>
           <tag:infData>
             <tag:registrar-tag>EXAMPLE2-TAG</tag:registrar-tag>
             <tag:name>Example2 company name</tag:name>
             <tag:handshake>N</tag:handshake>
           </tag:infData>
        </tag:listData>
       </resData>
     </response>
    </epp>

Lock command – data quality (Accredited Channel Partner tags only)

As part of the requirements for Accredited Channel Partner tags, registrars are responsible for validating their customer data. Where they are unable to validate data, registrars must suspend domain names within 30 days.

The lock affects contacts, whether it is applied by referring to the contact id or a domain associated with a particular contact.

The lock will be applied only to the specified contact. Service contacts must be explicitly locked separately if relevant.

The lock can only be applied to contacts that we have been unable to validate through our processes.

If the lock function is attempted on data that has been validated an error message will be given. If a contact is locked, you will be unable to create a new domain name for that contact.

Once you lock a registrant contact, all domains registered to it will be suspended. Similarly, when a service contact is locked, all domains registered to it will be suspended. Once suspended, a new suspension reason will be given as “Registrar DQ Lock”

Suspended domains cannot be transferred, nor their tag changed, and they must not be renewed.

EPP lock command

Data quality lock to contact ‘MY-EPP-ID’ is applied by setting the “type” attribute to “data quality”

Example

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 epp-1.0.xsd">
   <command>
     <update>
          <l:lock
                xmlns:l="http://www.nominet.org.uk/epp/xml/std-locks-1.0"
                xsi:schemaLocation="http://www.nominet.org.uk/epp/xml/std-locks-1.0
                std-locks-1.0.xsd"
                object="contact"
                type="data quality">
             <l:contactId>MY-EPP-ID</l:contactId>
          </l:lock>
     </update>
     <clTRID>ABC-123</clTRID>
  </command>
</epp>

To apply the lock to a registrant contact you can specify a domain name instead of contact ID. To lock the registrant of example.co.uk

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 epp-1.0.xsd">
    <command>
       <update>
         <l:lock xmlns:l="http://www.nominet.org.uk/epp/xml/std-locks-1.0"
                  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                  xsi:schemaLocation="http://www.nominet.org.uk/epp/xml/std-locks-1.0 std-locks-1.0.xsd"
                  object="contact" type="data quality">
                <l:domainName>example.co.uk</l:domainName>
         </l:lock>
       </update>
       <clTRID>ABC-12345</clTRID>
    </command>
</epp>

EPP lock command response

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.nominet.org.uk/epp/xml/epp-1.0
      epp-1.0.xsd">
  <response>
    <result code="1000">
      <msg>Command completed successfully</msg>
    </result>
    <trID>
      <clTRID>EPP-ABC-12345</clTRID>
      <svTRID>10012531</svTRID>
    </trID>
  </response>
</epp>

EPP Unlock command

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 epp-1.0.xsd">
   <command>
     <update>
          <l:unlock
                xmlns:l="http://www.nominet.org.uk/epp/xml/std-locks-1.0"
                xsi:schemaLocation="http://www.nominet.org.uk/epp/xml/std-locks-1.0
                std-locks-1.0.xsd"
                object="contact"
                type="data quality">
             <l:contactId>MY-EPP-ID</l:contactId>
          </l:unlock>
     </update>
     <clTRID>ABC-123</clTRID>
  </command>
</epp>

Lock command - investigation

The investigation lock command can be used to lock down a domain name, preventing a number of operations upon it.

Guidelines

The command must only be used when a domain name or registrant is suspected of being involved in phishing.
It must not be used for any other purposes. Please refer to the guidelines for further details.

The investigation lock command can be applied to either a domain name or a registrant contact.

Use of the command on a domain name has the following effect:

  • Nameservers are removed from the zone file. The domain name will no longer resolve.
  • Prevent any registrant transfers
  • Prevent any registrar changes
  • Prevent the domain name from being renewed.
  • Prevent any modifications to the nameservers stored for the domain name in the registry.
  • Prevent the registrant or registrar from cancelling the domain name. The domain name will be cancelled by Nominet 90 days after the lock has been activated.
  • The domain name is displayed as suspended in the whois.

Use of the command on a registrant contact has the following effect:

  • All the domain names on the contact are locked having the effect listed above.
  • Prevent any modifications on data that is displayed upon the whois.
  • Prevent any new domain names from being created on that registrant contact
  • Prevent any domain names on the registrant contact from being moved away from the registrant onto a different registrant (transfers).

Domain Lock

A domain lock operation can be requested by enclosing an <l:lock> element within an <update> command. The l prefix represents the std-locks schema.

For a domain lock the <l:lock> element has two attributes:

  • an "object" attribute which must be set to "domain"
  • a "value" attribute which must be set to the value "investigation"

and the <l:lock> element contains the following sub-elements:

  • A <l:domainName> giving the domain name to lock

Contact Lock

For a contact lock the <l:lock> element has two attributes:

  • an "object" attribute which must be set to "contact"
  • a "value" attribute which must be set to the value "investigation"

and the <l:lock> element contains the following sub-elements:

Either

  • An <l:contactId> element giving the contact to lock

or

  • An <l:domainName> element giving the name of a domain name on the contact to lock.

Example of a domain lock operation

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 epp-1.0.xsd">
  <command>
   <update>
         <l:lock xmlns:l="http://www.nominet.org.uk/epp/xml/std-locks-1.0"
                  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                  xsi:schemaLocation="http://www.nominet.org.uk/epp/xml/std-locks-1.0 
                  std-locks-1.0.xsd"
                  object="domain"
                  type="investigation">
                <l:domainName>epp-example.co.uk</l:domainName>
         </l:lock>
   </update>
   <clTRID>ABC-12345</clTRID>
 </command>
</epp>

Example of a contact lock operation

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 epp-1.0.xsd">
   <command>
     <update>
          <l:lock
                xmlns:l="http://www.nominet.org.uk/epp/xml/std-locks-1.0"
                xsi:schemaLocation="http://www.nominet.org.uk/epp/xml/std-locks-1.0 
                std-locks-1.0.xsd"
                object="contact"
                type="investigation">
             <l:contactId>MY-EPP-ID</l:contactId>
          </l:lock>
     </update>
     <clTRID>ABC-123</clTRID>
  </command>
</epp>

Example of a successful response to a lock operation

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.nominet.org.uk/epp/xml/epp-1.0
      epp-1.0.xsd">
  <response>
    <result code="1000">
      <msg>Command completed successfully</msg>
    </result>
    <trID>
      <clTRID>EPP-ABC-12345</clTRID>
      <svTRID>10012531</svTRID>
    </trID>
  </response>
</epp>

 

Lock command - WHOIS opt-out

The Lock opt-out command can be used to prevent the whois opt-out field being set to 'Y'.

Guidelines

Use of the command has the following effect on a registrant contact:

  • If the opt-out is set to 'Y' then it is changed to 'N'
  • A lock is placed on the opt-out field to prevent further changes.

<l:lock> element

For a contact lock the <l:lock> element has two attributes:

  • an "object" attribute which must be set to "contact"
  • a "value" attribute which must be set to the value "opt-out"

and the <l:lock> element contains the following sub-elements:

Either

  • An <l:contactId> element giving the contact to lock

or

  • An <l:domainName> element giving the name of a domain name on the contact to lock.

Example of a contact lock operation

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 epp-1.0.xsd">
   <command>
     <update>
          <l:lock
                xmlns:l="http://www.nominet.org.uk/epp/xml/std-locks-1.0"
                xsi:schemaLocation="http://www.nominet.org.uk/epp/xml/std-locks-1.0 
                std-locks-1.0.xsd"
                object="contact"
                type="opt-out">
             <l:contactId>MY-EPP-ID</l:contactId>
          </l:lock>
     </update>
     <clTRID>ABC-123</clTRID>
  </command>
</epp>

Example of a successful response to a lock operation

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.nominet.org.uk/epp/xml/epp-1.0
      epp-1.0.xsd">
  <response>
    <result code="1000">
      <msg>Command completed successfully</msg>
    </result>
    <trID>
      <clTRID>EPP-ABC-12345</clTRID>
      <svTRID>10012531</svTRID>
    </trID>
  </response>
</epp>

Validate command

The validated command allows Accredited Channel Partners to inform Nominet that a domain has been validated.

For EPP there is the schema, nom-data-quality-1.0.xsd which you must login with. The following EPP command can be used to validate a contact.

<?xml version="1.0" encoding="UTF-8" standalone="no"?> <epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 epp-1.0.xsd">
    <command>
        <update>
            <contact:update
             xmlns:contact="urn:ietf:params:xml:ns:contact-1.0"
             xsi:schemaLocation="urn:ietf:params:xml:ns:contact-1.0 contact-1.0.xsd">
                <contact:id>ABC-12345</contact:id>
            </contact:update>
        </update>
        <extension>
            <nom-data-quality:update
             xmlns:nom-data-quality="http://www.nominet.org.uk/epp/xml/nom-data-quality-1.0"
             xsi:schemaLocation="http://www.nominet.org.uk/epp/xml/nom-data-quality-1.0
             nom-data-quality-1.0.xsd">
                <nom-data-quality:validate />
            </nom-data-quality:update>
        </extension>
        <clTRID>ABC-12345</clTRID>
    </command>
</epp>

This is similar to the standard update command. However, you will see below the update that there is an extension node that contains the following <nom-data-quality:validate />. Using this extension will validate the contact. No other details may be modified if this extension is provided - an error will be returned if this is attempted.

EPP will respond with the standard success response as follows.

<?xml version="1.0" encoding="UTF-8" standalone="no"?> <epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://www.nominet.org.uk/epp/xml/epp-1.0 epp-1.0.xsd">
    <response>
        <result code="1000">
            <msg>Command completed successfully</msg>
        </result>
        <trID>
            <clTRID>ABC-12345</clTRID>
            <svTRID>114072</svTRID>
        </trID>
    </response>
</epp>

*This command applies to Accredited Channel Partners only

Privacy service

Create contact

Example of a create contact request with privacy services active:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
  <command>
    <create>
      <contact:create
       xmlns:contact="urn:ietf:params:xml:ns:contact-1.0">
        <contact:id>EXAMPLE-CONTACT-ID</contact:id>
        <contact:postalInfo type="int">
          <contact:name>John Doe</contact:name>
          <contact:org>Example Inc.</contact:org>
          <contact:addr>
            <contact:street>123 Example Dr.</contact:street>
            <contact:street>Suite 100</contact:street>
            <contact:city>Dulles</contact:city>
            <contact:sp>VA</contact:sp>
            <contact:pc>20166-6503</contact:pc>
            <contact:cc>US</contact:cc>
          </contact:addr>
        </contact:postalInfo>
        <contact:voice>+1.7035555555</contact:voice>
        <contact:email>jdoe@example.com</contact:email>
        <contact:authInfo>
          <contact:pw>2fooBAR</contact:pw>
        </contact:authInfo>
        <contact:disclose flag="0">
          <contact:org type="int"/>
          <contact:addr type="int"/>
        </contact:disclose>
      </contact:create>
    </create>
    <clTRID>CONTACT-SA06/clTRID>
  </command>
</epp>

Example of a create contact response:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.nominet.org.uk/epp/xml/epp-1.0 epp-1.0.xsd">
  <response>
    <result code="1000">
      <msg>Command completed successfully</msg>
    </result>
    <resData>
      <contact:creData
        xmlns:contact="urn:ietf:params:xml:ns:contact-1.0"
        xsi:schemaLocation="urn:ietf:params:xml:ns:contact-1.0 contact-1.0.xsd">
        <contact:id>EXAMPLE-CONTACT-ID</contact:id>
        <contact:crDate>2016-02-26T08:57:50</contact:crDate>
      </contact:creData>
    </resData>
    <extension>
      <warning:ignored-field field-name="contact:authInfo"
        xmlns:warning="http://www.nominet.org.uk/epp/xml/std-warning-1.1"
        xsi:schemaLocation="http://www.nominet.org.uk/epp/xml/std-warning-1.1 std-warning-1.1.xsd">
        Field 'authInfo' found; this field has been ignored.
      </warning:ignored-field>
    </extension>
    <trID>
      <clTRID>CONTACT-SA06/clTRID>
      <svTRID>123456789/svTRID>
    </trID>
  </response>
</epp>

 

Note: authInfo is a mantatory EPP field, but is not used in .uk, thus the warning in the response.

 

Modify Contact to add privacy service
Example of a modify contact request to add a privacy service:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 epp-1.0.xsd">
                <command>
                                <update>
                                                <contact:update
                                                xmlns:contact="urn:ietf:params:xml:ns:contact-1.0"
                                                xsi:schemaLocation="urn:ietf:params:xml:ns:contact-1.0 contact-
                                                1.0.xsd">
                                                <contact:id>EXAMPLE-CONTACT-ID</contact:id>
                                                <contact:chg>
                                                                <contact:disclose flag="0">
                                                                <contact:org type="int"/>
                                                                <contact:addr type="int"/>
                                                </contact:disclose>
                                                </contact:chg>
                                                </contact:update>
                                </update>
                                <clTRID>CONTACT-SA06</clTRID>
                </command>
</epp>

Example of a modify contact response:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.nominet.org.uk/epp/xml/epp-1.0 epp-1.0.xsd">
  <response>
    <result code="1000">
      <msg>Command completed successfully</msg>
    </result>
    <trID>
      <clTRID>CONTACT-SA06</clTRID>
      <svTRID>123456789</svTRID>
    </trID>
  </response>
</epp>

 

Modify contact to remove privacy service
Example of a modify contact request to remove a privacy service:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 epp-1.0.xsd">
  <command>
    <update>
      <contact:update
        xmlns:contact="urn:ietf:params:xml:ns:contact-1.0"
        xsi:schemaLocation="urn:ietf:params:xml:ns:contact-1.0 contact-1.0.xsd">
      <contact:id>EXAMPLE-CONTACT-ID</contact:id>
      <contact:chg>
        <contact:disclose flag="1">
          <contact:org type="int"/>
          <contact:addr type="int"/>
        </contact:disclose>
      </contact:chg>
      </contact:update>
    </update>
    <clTRID>ABC-12345</clTRID>
  </command>
</epp>

Example of a modify contact response:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.nominet.org.uk/epp/xml/epp-1.0 epp-1.0.xsd">
  <response>
    <result code="1000">
      <msg>Command completed successfully</msg>
    </result>
    <trID>
      <clTRID>ABC-12345</clTRID>
      <svTRID>123456789</svTRID>
    </trID>
  </response>
</epp>

Note: Removing privacy from a contact by setting the disclose flag to 1 removes the privacy section from the contact. A contact:info on this changed contact will be missing:

<contact:disclose flag="0">
  <contact:org type="int"/>
  <contact:addr type="int"/>
</contact:disclose>

Rather than retain it and changing the flag.

 

Notes
You will need to register your privacy service through Online Services before you can apply the privacy service against domains.

 

 

Reseller commands

There are a number of commands and operations available to use EPP to manage your reseller accounts. Resellers can be added to your Nominet registrar account and linked to domain names. Reseller details are added to the WHOIS output for the domain name also used in welcome emails and renewal reminders that are sent by Nominet. More information about resellers and how reseller data is used is available.

Commands available in Nominet EPP for creating and manipulating reseller data are:

  • Reseller Create
  • Reseller Delete
  • Reseller Info
  • Reseller List
  • Reseller Update

Schemas are available for implementation of EPP reseller management operations.

Reseller Create command

The reseller create command is used to define a new reseller on your tag.  It uses the nom-reseller-1.0 schema.

<reseller:create> element

The <reseller:create> contains the following child elements:

  • A <reseller:reference> element. This contains your unique reference for the new reseller.
  • A <reseller:tradingName> element. This is the trading name of the reseller.
  • A <reseller:url> element. This is the URL for the reseller that customers will be directed to for support or further information about the reseller.
  • An optional <reseller:email> element.This is an email contact for the reseller.
  • An optional <reseller:voice> element. This is a telephone number contact for the reseller.

Reference, trading name and URL are mandatory fields and either an email or a telephone number must be supplied for each reseller.

A more detailed description of the expected values for these elements is available here.

Example of a <reseller:create> command

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
   <epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0
        epp-1.0.xsd">
     <command>
       <create>
          <reseller:create
           xmlns:reseller="http://www.nominet.org.uk/epp/xml/nom-reseller-1.0"
           xsi:schemaLocation="http://www.nominet.org.uk/epp/xml/nom-reseller-1.0
           nom-reseller-1.0.xsd"/>
            <reseller:reference>MY-RESELLER</reseller:reference>
            <reseller:tradingName>Reseller Company Ltd</reseller:tradingName>
            <reseller:url>http://www.my-reseller.co.uk</reseller:url>
            <reseller:email>info@my-reseller.co.uk</reseller:email>
            <reseller:voice>+44.1865123456</reseller:voice>
          </reseller:create>
       </create>
       <clTRID>ABC-12345</clTRID>
     </command>
   </epp>

Example of a successful <reseller:create> response

 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0
         epp-1.0.xsd">
      <response>
        <result code="1000">
          <msg>Command completed successfully</msg>
        </result>
        <trID>
          <clTRID>EPP-ABC-12345</clTRID>
          <svTRID>10012531</svTRID>
        </trID>
      </response>
 </epp>

Reseller Delete command

The reseller delete command is used to remove a reseller from your tag.  It uses the nom-reseller-1.0 schema.

<reseller:delete> element

The <reseller:delete> contains the following child elements:

  • A <reseller:reference> element: this is your unique reference specified when the reseller was created.

When a reseller is deleted links to the reseller will be removed from all associated domains.

Example of a <reseller:delete> command

 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0
         epp-1.0.xsd">
      <command>
        <delete>
          <reseller:delete
           xmlns:reseller="http://www.nominet.org.uk/epp/xml/nom-reseller-1.0"
           xsi:schemaLocation="http://www.nominet.org.uk/epp/xml/nom-reseller-1.0
           nom-reseller-1.0.xsd"/>
            <reseller:reference>MY-RESELLER</reseller:reference>
          </reseller:delete>
       </delete>
       <clTRID>ABC-12345</clTRID>
     </command>
   </epp>

Example of a successful <reseller:delete> response

 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0
         epp-1.0.xsd">
      <response>
        <result code="1000">
          <msg>Command completed successfully</msg>
        </result>
        <trID>
          <clTRID>EPP-ABC-12345</clTRID>
          <svTRID>10012531</svTRID>
        </trID>
      </response>
   </epp>

Reseller Info command

The reseller info command returns all information associated with a reseller on your tag.  It uses the nom-reseller-1.0 schema and the data is returned in a <reseller:infData> element.

<reseller:info> element

The <reseller:info> must contains the following child elements:

  • A <reseller:reference> element. This contains your unique reference for the reseller.

<reseller:infData> element

The <reseller:infData> contains the following child elements:

  • A <reseller:reference> element. This contains your unique reference for the reseller.
  • A <reseller:tradingName> element. This is the trading name of the reseller.
  • A <reseller:url> element. This is the URL for the reseller that customers will be directed to for support or further information about the reseller.
  • An optional <reseller:email> element. This is an email contact for the reseller.
  • An optional <reseller:voice> element. This is a telephone number contact for the reseller.

Example of a <reseller:info> command

 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0
         epp-1.0.xsd">
      <command>
        <info>
          <reseller:info
           xmlns:reseller="http://www.nominet.org.uk/epp/xml/nom-reseller-1.0"
           xsi:schemaLocation="http://www.nominet.org.uk/epp/xml/nom-reseller-1.0
           nom-reseller-1.0.xsd"/>
            <reseller:reference>MY-RESELLER</reseller:reference>
          </reseller:info>
       </info>
       <clTRID>ABC-12345</clTRID>
     </command>
   </epp>

Example of a successful <reseller:info> response

 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0
         epp-1.0.xsd">
      <response>
        <result code="1000">
          <msg>Command completed successfully</msg>
        </result>
        <resData>
          <reseller:infData
            xmlns:reseller="http://www.nominet.org.uk/epp/xml/nom-reseller-1.0"
            xsi:schemaLocation="http://www.nominet.org.uk/epp/xml/nom-reseller-1.0 
            nom-reseller-1.0.xsd">
              <reseller:reference>MY-RESELLER</reseller:reference>
              <reseller:tradingName>My Reseller Company Ltd</reseller:tradingName>
              <reseller:url>http://www.my-reseller.co.uk</reseller:url>
              <reseller:email>info@my-reseller.co.uk</reseller:email>
          </reseller:infData>
        </resData>
      </response>
   </epp>

Reseller List command

The reseller list command returns information about all resellers on your tag.  It uses the nom-reseller-1.0 schema and the data is returned in a <reseller:listData> element.

<reseller:list> element

The <reseller:list> element does not have any child elements and has a single attribute:

  • An optional "fields" attribute: this indicates which fields are to be returned in the response. If this attribute is not set then only a list of the reseller references on your tag will be returned. If fields is set to "all" then a list of reseller:infData elements will be returned.

<reseller:listData> element

The <reseller:listData> will contain one of the following child elements for each reseller on your tag:

  • A <reseller:reference> element.
  • A <reseller:infData> element: this contains detailed information about the reseller - see "Reseller Info" for more details.

Example of a <reseller:list> command

This command will return detailed information about all resellers on a tag:

 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0
         epp-1.0.xsd">
      <command>
        <info>
          <reseller:list
            xmlns:reseller="http://www.nominet.org.uk/epp/xml/nom-reseller-1.0"
            xsi:schemaLocation="http://www.nominet.org.uk/epp/xml/nom-reseller-1.0
            nom-reseller-1.0.xsd"
            fields="all">
          </reseller:list>
       </info>
       <clTRID>ABC-12345</clTRID>
     </command>
   </epp>

Example of a successful <reseller:list> response

The following shows an example reseller list response where <reseller:fields> was set to "all":

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://www.nominet.org.uk/epp/xml/epp-1.0 epp-1.0.xsd">
   <response>
     <result code="1000">
       <msg>Command completed successfully</msg>
     </result>
     <resData>
       <reseller:listData
         xmlns:reseller="http://www.nominet.org.uk/epp/xml/nom-reseller-1.0"
         xsi:schemaLocation="http://www.nominet.org.uk/epp/xml/nom-reseller-1.0
         nom-reseller-1.0.xsd"
         count="2">
          <reseller:infData
            xmlns:reseller="http://www.nominet.org.uk/epp/xml/nom-reseller-1.0"
            xsi:schemaLocation="http://www.nominet.org.uk/epp/xml/nom-reseller-1.0
            nom-reseller-1.0.xsd">
              <reseller:reference>MY-RESELLER-1</reseller:reference>
              <reseller:tradingName>My Reseller Company #1 Ltd</reseller:tradingName>
              <reseller:url>http://www.my-reseller1.co.uk</reseller:url>
              <reseller:email>info@my-reseller1.co.uk</reseller:email>
              <reseller:voice>+441234567890</reseller:voice>
          </reseller:infData>
          <reseller:infData
            xmlns:reseller="http://www.nominet.org.uk/epp/xml/nom-reseller-1.0"
            xsi:schemaLocation="http://www.nominet.org.uk/epp/xml/nom-reseller-1.0
            nom-reseller-1.0.xsd">
              <reseller:reference>MY-RESELLER-2</reseller:reference>
              <reseller:tradingName>My Reseller Company #2 Ltd</reseller:tradingName>
              <reseller:url>http://www.my-reseller2.co.uk</reseller:url>
              <reseller:email>info@my-reseller2.co.uk</reseller:email>
          </reseller:infData>
      </reseller:listData>
     </resData>
   </response>
 </epp>

The following shows an example reseller list response where <reseller:fields> was not set

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://www.nominet.org.uk/epp/xml/epp-1.0 epp-1.0.xsd">
   <response>
     <result code="1000">
       <msg>Command completed successfully</msg>
     </result>
     <resData>
       <reseller:listData
         xmlns:reseller="http://www.nominet.org.uk/epp/xml/nom-reseller-1.0"
         xsi:schemaLocation="http://www.nominet.org.uk/epp/xml/nom-reseller-1.0
         nom-reseller-1.0.xsd"
         count="3">
           <reseller:reference>MY-RESELLER-1</reseller:reference>
           <reseller:reference>MY-RESELLER-2</reseller:reference>
           <reseller:reference>MY-RESELLER-3</reseller:reference>
       </reseller:listData>
     </resData>
   </response>
 </epp>

Reseller Update command

The reseller update command is used to modify the attributes of an existing reseller on your tag.  It uses the nom-reseller-1.0 schema.

<reseller:update> element

The <reseller:update> element contains the following child elements:

  • A <reseller:reference> element. This contains your unique reference for the reseller.
  • An optional <reseller:tradingName> element. This is the trading name of the reseller.
  • An optional <reseller:url> element. This is the URL for the reseller that customers will be directed to for support or further information about the reseller.
  • An optional <reseller:email> element.This is an email contact for the reseller.
  • An optional <reseller:voice> element. This is a telephone number contact for the reseller.

If the email element or the voice element is empty then this will indicate that the existing value should be cleared. Before the update operation is processed the state of the modified reseller will be validated and the operation will fail if any of the validation rules have been broken.

Example of a <reseller:update> command

 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0
         epp-1.0.xsd">
      <command>
        <update>
          <reseller:update
           xmlns:reseller="http://www.nominet.org.uk/epp/xml/nom-reseller-1.0"
           xsi:schemaLocation="http://www.nominet.org.uk/epp/xml/nom-reseller-1.0
           nom-reseller-1.0.xsd"/>
            <reseller:reference>MY-RESELLER</reseller:reference>
            <reseller:tradingName>Reseller Company Ltd</reseller:tradingName>
            <reseller:url>http://www.my-reseller.co.uk</reseller:url>
            <reseller:email>info@reseller.co.uk</reseller:email>
            <reseller:voice>+44.1865123456</reseller:voice>
          </reseller:update>
       </update>
       <clTRID>ABC-12345</clTRID>
     </command>
   </epp>

Example of a successful <reseller:update> response

 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0
         epp-1.0.xsd">
      <response>
        <result code="1000">
          <msg>Command completed successfully</msg>
        </result>
        <trID>
          <clTRID>EPP-ABC-12345</clTRID>
          <svTRID>10012531</svTRID>
        </trID>
      </response>
   </epp>