Check domain[Link]

Purpose

to check the availability of a domain name.

Check domain only returns the availability of a domain name, if you want to retrieve all the information of a domain name, you should use info domain.

Registrars can optionally specify a version when using this command. By default, the command uses version 1.0. Version 2.0 returns additional information.

In order to avoid abusive querying, rate limits have been introduced for the EPP check-domain:

EPP command

Rate limit per 60 seconds per IP

check-domain version 1.0

360

check-domain version 2.0

60

The elements and tags that are relevant for DNS Belgium are specified below. Tags that are optional can be omitted without producing an XML parsing error. Some components of the command need further explanation:

  • <domain:name> is required once. Is a list of names, with or without the .be, to be checked for availability. You can check the availability of many names at the same time.

  • <dnsbe:domain version=”2.0”/> is optional. When version 2.0 is specified, more information is visible in the answer.

Please refer to the examples to see a complete request.

Examples[Link]

Checking some domains using version 1.0:

<?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"
     xmlns:epp="urn:ietf:params:xml:ns:epp-1.0"
     xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"
     xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 epp-1.0.xsd
                urn:ietf:params:xml:ns:domain-1.0 domain-1.0.xsd">
<command>
  <check>
     <domain:check>
       <domain:name>semaphore.be</domain:name>
       <domain:name>greatdomain.be</domain:name>
       <domain:name>secureshopping.be</domain:name>
       <domain:name>dns-domain-22</domain:name>
       <domain:name>dnà</domain:name>
       <domain:name>xn--belgi-rsa</domain:name>
       <domain:name>$$$</domain:name>
       <domain:name>belgië</domain:name>
    </domain:check>
  </check>
  <clTRID>clientref-00029</clTRID>
</command>
</epp>

The server will return:

<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0" xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
  <response>
    <result code="1000">
      <msg>Command completed successfully</msg>
    </result>
    <resData>
      <domain:chkData>
        <domain:cd>
          <domain:name avail="true">semaphore.be</domain:name>
        </domain:cd>
        <domain:cd>
          <domain:name avail="false">greatdomain.be</domain:name>
        </domain:cd>
        <domain:cd>
          <domain:name avail="true">secureshopping.be</domain:name>
        </domain:cd>
        <domain:cd>
          <domain:name avail="false">dns-domain-22.be</domain:name>
        </domain:cd>
        <domain:cd>
          <domain:name avail="false">xn--dn-kia.be</domain:name>
        </domain:cd>
        <domain:cd>
          <domain:name avail="true">xn--belgi-rsa.be</domain:name>
        </domain:cd>
        <domain:cd>
          <domain:name avail="false">$$$.be</domain:name>
        </domain:cd>
        <domain:cd>
          <domain:name avail="true">xn--belgi-rsa.be</domain:name>
        </domain:cd>
      </domain:chkData>
    </resData>
    <trID>
      <clTRID>clientref-00029</clTRID>
      <svTRID>dnsbe-0</svTRID>
    </trID>
  </response>
</epp>

Where <domain:name> contains an attribute ‘avail’ with value ‘false’ when the domain is not available for registration, and value ‘true’ when the domain name is available at the time of the check.

In the example above, we tested 8 names, 4 of which are available and 4 are not.

A valid command using version 2.0 would look like

<?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"
     xmlns:epp="urn:ietf:params:xml:ns:epp-1.0"
     xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"
     xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 epp-1.0.xsd
                urn:ietf:params:xml:ns:domain-1.0 domain-1.0.xsd">
<command>
  <check>
     <domain:check>
       <domain:name>semaphore.be</domain:name>
       <domain:name>greatdomain.be</domain:name>
       <domain:name>test-v2.be</domain:name>
       <domain:name>dns-domain-22.be</domain:name>
       <domain:name>dnà</domain:name>
       <domain:name>xn--belgi-rsa</domain:name>
       <domain:name>$$$</domain:name>
       <domain:name>belgië</domain:name>
    </domain:check>
  </check>
<extension>
  <dnsbe:ext xmlns:dnsbe="http://www.dns.be/xml/epp/dnsbe-1.0">
    <dnsbe:check>
      <dnsbe:domain version="2.0"/>
    </dnsbe:check>
  </dnsbe:ext>
</extension>
  <clTRID>clientref-00029</clTRID>
</command>
</epp>

giving as result:

<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0" xmlns:domain="urn:ietf:params:xml:ns:domain-1.0" xmlns:dnsbe="http://www.dns.be/xml/epp/dnsbe-1.0">
  <response>
    <result code="1000">
      <msg>Command completed successfully</msg>
    </result>
    <resData>
      <domain:chkData>
        <domain:cd>
          <domain:name avail="true">semaphore.be</domain:name>
        </domain:cd>
        <domain:cd>
          <domain:name avail="false">greatdomain.be</domain:name>
          <domain:reason lang="en">in use</domain:reason>
        </domain:cd>
        <domain:cd>
          <domain:name avail="false">test-v2.be</domain:name>
          <domain:reason lang="en">quarantine</domain:reason>
        </domain:cd>
        <domain:cd>
          <domain:name avail="false">dns-domain-22.be</domain:name>
          <domain:reason lang="en">in use</domain:reason>
        </domain:cd>
        <domain:cd>
          <domain:name avail="false">xn--dn-kia.be</domain:name>
          <domain:reason lang="en">in use</domain:reason>
        </domain:cd>
        <domain:cd>
          <domain:name avail="true">xn--belgi-rsa.be</domain:name>
        </domain:cd>
        <domain:cd>
          <domain:name avail="false">$$$.be</domain:name>
          <domain:reason  lang="en">invalid_chars_used</domain:reason>
        </domain:cd>
        <domain:cd>
          <domain:name avail="true">xn--belgi-rsa.be</domain:name>
        </domain:cd>
      </domain:chkData>
    </resData>
    <extension>
      <dnsbe:ext>
        <dnsbe:chkData>
          <dnsbe:domain>
            <dnsbe:cd>
              <dnsbe:name>greatdomain.be</dnsbe:name>
              <dnsbe:availableDate>2010-04-12T16:00:00.000Z </dnsbe:availableDate>
            </dnsbe:cd>
            <dnsbe:cd>
              <dnsbe:name>test-v2.be</dnsbe:name>
              <dnsbe:availableDate>2009-01-14T13:00:00.000Z </dnsbe:availableDate>
            </dnsbe:cd>
            <dnsbe:cd>
              <dnsbe:name>dns-domain-22.be</dnsbe:name>
              <dnsbe:status s="clientTransferProhibited"/>
              <dnsbe:status s="serverTransferProhibited"/>
            </dnsbe:cd>
            <dnsbe:cd>
              <dnsbe:name>xn--dn-kia.be</dnsbe:name>
              <dnsbe:status s="serverTransferProhibited"/>
            </dnsbe:cd>
          </dnsbe:domain>
        </dnsbe:chkData>
      </dnsbe:ext>
    </extension>
    <trID>
      <clTRID>clientref-00029</clTRID>
      <svTRID>dnsbe-0</svTRID>
    </trID>
  </response>
</epp>

When the attribute ‘avail’ is false, more information regarding the status of the domain name is added.

The output contains some extra fields:

  • <reason> contains the reason why the domain name is not available. In case of an invalid domain name, the reason will also state why the domain name is invalid.

  • <availableDate> contains the date and time in UTC when the name becomes available. This element is only used when the name is in quarantine.

  • <status> contains all active flags associated with the domain name. Possible values are:

    • clientTransferProhibited: the domain name is locked for transfer by the registrar. In case of abuse, this flag may be overruled by the registry.

    • serverTransferProhibited: the domain name is locked for transfer by the registry.

    • serverUpdateProhibited: the domain name is locked for updates by the registry.

    • serverDeleteProhibited: the domain name is locked for delete by the registry.

In case of Domain Guard, all server related flags will be set. In case Domain Guard is temporarily disabled, the serverUpdateProhibited flag will be off, while the other 2 will remain on.

If the registrar has exceeded the rate limit for check-domain, the server will reply:

<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0" xmlns:dnsbe="http://www.dns.be/xml/epp/dnsbe-1.0">
  <response>
    <result code="2306">
      <msg>Parameter value policy error</msg>
    </result>
    <extension>
      <dnsbe:ext>
        <dnsbe:result>
          <dnsbe:msg>Excessive querying</dnsbe:msg>
        </dnsbe:result>
      </dnsbe:ext>
    </extension>
    <trID>
      <clTRID>test-overflow</clTRID>
      <svTRID>dnsbe-0</svTRID>
    </trID>
  </response>
</epp>