Domain Update

This command follows standard EPP Domain name mapping, RFC-5731, but has several policy restrictions and is extended to work with auto-renewal of domain names.

Policy restrictions

Nameservers

  • Hosts (nameservers) should be added and removed as <domain:hostAttr> elements.

  • Domain can have a maximum of 5 nameservers assigned.

    Note

    At least two nameservers are required for a domain name to be published in .lv zone.

  • Glue (an IP address) should be provided for subordinate hosts - whose <hostName> is a subdomain of the domain name they are linked to.

    Note

    Currently, only IPv4 addresses may be assigned to nameservers.

  • To update just IP address for a nameserver, remove and re-add it in the same request (it is ok to leave out current IP address when removing a network - only it’s hostname is relevant)

    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>
          <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>a-networkfull-domain.id.lv</domain:name>
            <domain:add>
              <domain:ns>
                <domain:hostAttr>
                  <domain:hostName>ns.a-networkfull-domain.id.lv</domain:hostName>
                  <!-- Re-adding network with same hostname but different IP -->
                  <domain:hostAddr>11.22.33.44</domain:hostAddr>
                </domain:hostAttr>
              </domain:ns>
            </domain:add>
            <domain:rem>
              <domain:ns>
                <domain:hostAttr>
                  <domain:hostName>ns.a-networkfull-domain.id.lv</domain:hostName>
                  <!-- It's OK to leave out IP when removing -->
                </domain:hostAttr>
              </domain:ns>
            </domain:rem>
          </domain:update>
        </update>
        <clTRID>RhuIq7djPgbF85NxNfgH</clTRID>
      </command>
    </epp>
    

Contacts

  • Domain always should be linked with a registrant contact and exactly one billing, technical and administrative contacts (so, if a contact is removed, the new one should be added in that same request for the role).

Registrant change

  • Unlike other contacts, which are removed and added, a registrant change according to RFC-5731 is done by supplying the new registrar handle in a <domain:chg> tag.

  • Although RFC-5731 allows registrant contact to be removed (by providing empty <contact:id> element under <domain:chg> tag) an attempt to do that would result in error response with a code of 2306 (“Parameter value policy error”)

  • As the change of registrant contact actually means transfer of the rights to use domain name to different person/legal entity, in accordance with Registrar agreement concluded between Registry and Registrar, Registrar must be certain that the person requesting domain name transfer is the domain name holder and must ensure evidence that request to transfer the right to use the domain name was made by the domain name holder.

    Note

    Therefore, please, use contact:update command if just contact information of the registrant has changed and should be updated.

Example (a trade operation: change of a registrant along with administrative 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>
      <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>some-domain-expiring-soon.lv</domain:name>
        <domain:add>
          <domain:contact type="admin">anew-97901</domain:contact>
        </domain:add>
        <domain:rem>
          <domain:contact type="admin">aold-11231</domain:contact>
        </domain:rem>
        <domain:chg>
          <domain:registrant>rgst-1024667</domain:registrant>
        </domain:chg>
      </domain:update>
    </update>
    <clTRID>CL-20150101-12544</clTRID>
  </command>
</epp>

Extensions

Update request may have an additional <extension> tag with <lvdomain:update> child element, containing <lvdomain:add> and/or <lvdomain:rem> tags to set or remove "clientAutoRenewProhibited" status.

Example: setting clientAutoRenewProhibited status to prevent domain name from being auto-renewed at month when it expires:

<?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>some-domain-expiring-soon.lv</domain:name>
      </domain:update>
    </update>
    <extension>
      <lvdomain:update xmlns:lvdomain='http://www.nic.lv/epp/schema/lvdomain-ext-1.0'>
        <lvdomain:add>
          <lvdomain:status s='clientAutoRenewProhibited' lang='en'>Client, didn't pay for domain</lvdomain:status>
        </lvdomain:add>
      </lvdomain:update>
    </extension>
    <clTRID>RhuIq7djPgbF85NxNfgH</clTRID>
  </command>
</epp>

Order of XML elements

XML schema for EPP protocol is quite strict about the order in which the various elements should appear in the EPP command XML message.

  • Order of domain attributes to be added/removed/changed should be given in that exact order - <domain:add>, if present, should be the first one, followed by <domain:rem> and <domain:chg> element, which goes as last (all three are optional).
  • under <domain:add> and <domain:rem> elements, nameservers (<domain:ns>) to be added/removed should appear before <domain:contact> elements (if any) and only then comes status values (<domain:status>).

The correct hierarchy and order of the elements are shown below (all elements are optional):

<domain:update>
  <domain:name>
  <domain:add>
    <domain:ns>
    <domain:contact>
    <domain:status>
  <domain:rem>
    <domain:ns>
    <domain:contact>
    <domain:status>
  <domain:chg>
    <domain:registrant>
    <domain:authInfo>
<!-- .... -->
<extension>
  <lvdomain:update>
    <domain:add>
      <domain:status>
    <domain:rem>
      <domain:status>