EPP

About

The .kiwi registry platform has standardised on the globally adopted Extensible Provisioning Protocol (EPP).

EPP communication between the Registrar and the Registry allows the Registrar to manage domain, host and contact objects without using the web portal.

EPP is a protected service, to access the service Registrars require both an EPP account (see Portal Accounts) and TLS Client Certificate.

Registrars must ensure that EPP requests meet EPP standards as defined by the following:

The registry parses all incoming requests using a validating XML parser that reads the XML and validates XML syntax before processing the request.

Hostname

The EPP hostname is environment specific, see production or OTE environment sections.

IP Allowlisting

EPP has a dedicated IP Allowlist, these can only be configured in the portal.

Namespaces and Schemas

Namespace

Scheme

XSD extensions supported by Fury:

EPP

urn:ietf:params:xml:ns:epp-1.0

epp-1.0, eppall-1.0, and eppcom-1.0 - RFC 5730

Domain

urn:ietf:params:xml:ns:domain-1.0

domain-1.0 - RFC 5731

Host

urn:ietf:params:xml:ns:host-1.0

host-1.0 - RFC 5732

Contact

urn:ietf:params:xml:ns:contact-1.0

contact-1.0 - RFC 5733

Registry Fee Extension 0.9

urn:ietf:params:xml:ns:fee-0.9

#fee-0.9 - RFC Draft: brown-epp-fees

Registry Fee Extension 0.11

urn:ietf:params:xml:ns:fee-0.11

fee-0.11 - RFC Draft: regext-epp-fees

IDN

urn:ietf:params:xml:ns:idn-1.0

idn-1.0 - RFC Draft: eppext-idnmap

Launch Phase Mapping

urn:ietf:params:xml:ns:launch-1.0

launch-1.0 - RFC Draft: regext-launchphase

Domain Registry Grace Period

urn:ietf:params:xml:ns:rgp-1.0

rgp-1.0 - RFC 3915

DNSSEC

urn:ietf:params:xml:ns:fee-0.11

secDNS-1.1 - RFC 5910

Note

Fee 0.9 is an earlier version of the Fee extension and 0.11 is the latest version

The following are the Fury-specific custom extensions:

Namespace

Scheme

Fury extensions:

Fury Generic properties

urn:ietf:params:xml:ns:fury-2.0

fury 2.0 - Generic properties

Fury Registry Fee Extension

fury-rgp-1.0 - RGP

EPP Connection Limits

There are no static connection or rate limits. CIRA operates the EPP service on a capacity‑based, cooperative model. Registrars may establish as many connections as required for normal operations. This applies to both Production and OTE.

Should a registrar’s usage patterns materially impact system performance or reliability, CIRA will work collaboratively with the registrar to assess the situation and implement reasonable adjustments to restore optimal service levels.

EPP Commands

The following EPP commands can be used by registrars to query and update objects in Fury production and OTE environments:

Please also see the EPP code examples in the Portal Help section and in the Fury Registrar Guide

login

This command is to establish a session with an EPP server.

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>
      <login>
          <clID>user_epp</clID>
          <pw>password</pw>
          <options><version>1.0</version>
            <lang>en</lang></options>
          <svcs>
            <objURI>urn:ietf:params:xml:ns:epp-1.0</objURI>
            <objURI>urn:ietf:params:xml:ns:domain-1.0</objURI>
            <objURI>urn:ietf:params:xml:ns:host-1.0</objURI>
            <objURI>urn:ietf:params:xml:ns:contact-1.0</objURI>
            <svcExtension>
                <extURI>urn:ietf:params:xml:ns:fury-rgp-1.0</extURI>
            <extURI>urn:ietf:params:xml:ns:fury-2.0</extURI>
                <extURI>urn:ietf:params:xml:ns:idn-1.0</extURI>
                <extURI>urn:ietf:params:xml:ns:secDNS-1.1</extURI>
                <extURI>urn:ietf:params:xml:ns:launch-1.0</extURI>
                <extURI>urn:ietf:params:xml:ns:mark-1.0</extURI>
                <extURI>urn:ietf:params:xml:ns:signedMark-1.0</extURI>
                <extURI>http://www.w3.org/2000/09/xmldsig#</extURI>
                <extURI>urn:ietf:params:xml:ns:rgp-1.0</extURI>
                <extURI>urn:ietf:params:xml:ns:fee-0.11</extURI>
            </svcExtension>
          </svcs>
      </login>
      <clTRID>ABC-54321</clTRID>
    </command>
</epp>

Element

Occurrence

Note

<login>

1

command element

<clID>

1

client identifier  assigned to client by the server. Same as registrar id in Fury

<pw>

1

registrar’s plain text password

<newPW>

0-1

optional - a new password to change the current login password

<options>

1

contains the following 2 child elements

<version>

1

the protocol version to be used for the command

<lang>

1

contains text response language to be used for the command or ongoing server commands

<svcs>

1

contains services used. Contains following child elements

<objURI>

1-n

Namespace URIs representing the objects to be managed during the session

<svcExtension>

0-1

optional element containing extURI elements

<extURI>

1-n

element identifying object extensions during session

Response:

<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0" xmlns:host="urn:ietf:params:xml:ns:host-1.0" xmlns:contact="urn:ietf:params:xml:ns:contact-1.0" xmlns:domain="urn:ietf:params:xml:ns:domain-1.0" xmlns:rgp="urn:ietf:params:xml:ns:rgp-1.0" xmlns:fury-rgp="urn:ietf:params:xml:ns:fury-rgp-1.0" xmlns:fury="urn:ietf:params:xml:ns:fury-2.0" xmlns:idn="urn:ietf:params:xml:ns:idn-1.0" xmlns:secDNS="urn:ietf:params:xml:ns:secDNS-1.1" xmlns:launch="urn:ietf:params:xml:ns:launch-1.0" xmlns:mark="urn:ietf:params:xml:ns:mark-1.0" xmlns:smd="urn:ietf:params:xml:ns:signedMark-1.0" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:fee="urn:ietf:params:xml:ns:fee-0.11">
    <response>
      <result code="1000">
          <msg>Command completed successfully</msg>
      </result>
      <trID>
          <clTRID>ABC-54321</clTRID>
          <svTRID>CIRA-000055043942-0000000001</svTRID>
      </trID>
    </response>
</epp>

domain:check

This command is to check whether a domain name is available for registration.

Request:

<?xml version="1.0" encoding="UTF-8"?>
<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>domain.kiwi</domain:name>
                <domain:name>otherdomain.kiwi</domain:name>
            </domain:check>
        </check>
        <clTRID>ABC-12345</clTRID>
    </command>
</epp>

Element

Occurrence

Note

<domain:check>

1

identifies namespace and domain schema location

<domain:name>

1-15

Response:

<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns:fury="urn:ietf:params:xml:ns:fury-2.0" xmlns:fury-rgp="urn:ietf:params:xml:ns:fury-rgp-1.0" xmlns:fee="urn:ietf:params:xml:ns:fee-0.11" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:smd="urn:ietf:params:xml:ns:signedMark-1.0" xmlns:mark="urn:ietf:params:xml:ns:mark-1.0" xmlns:host="urn:ietf:params:xml:ns:host-1.0" xmlns:launch="urn:ietf:params:xml:ns:launch-1.0" xmlns:secDNS="urn:ietf:params:xml:ns:secDNS-1.1" xmlns:rgp="urn:ietf:params:xml:ns:rgp-1.0" xmlns:idn="urn:ietf:params:xml:ns:idn-1.0" xmlns="urn:ietf:params:xml:ns:epp-1.0" xmlns:contact="urn:ietf:params:xml:ns:contact-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">domain.kiwi</domain:name>
              </domain:cd>
              <domain:cd>
                  <domain:name avail="false">otherdomain.kiwi</domain:name>
              </domain:cd>
          </domain:chkData>
      </resData>
      <trID>
          <svTRID>CIRA-000054882110-0000000002</svTRID>
      </trID>
    </response>
</epp>

Element

Occurrence

Note

<domain:chkData>

1

identifies namespace and domain schema location

<domain:cd>

1-15

checked data record element with one child element

<domain:name avail=” ”>

1-15

contains domain name of queried object with an attribute ʻavailʼ: =true => is available =false => is not available

domain:create

This command is used to create a new domain name.

.kiwi Business Rules

  • A .kiwi domain must have 1 registrant contact, 1 administrative contact and 1 technical contact. There is an optional billing contact which can also be added.

  • A .kiwi domain name can have a registration period between 1 and 10 years.

  • A .kiwi domain name can have 0 or from 2 to 13 Host objects.

  • An Authentication code “authcode” must be provided with the registration request.

Request:

<epp xmlns="urn:ietf:params:xml:ns:epp-1.0" xmlns:contact="urn:ietf:params:xml:ns:contact-1.0" xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
    <command>
        <create>
            <domain:create>
                <domain:name>anewdomain.kiwi</domain:name>
                <domain:period unit="y">1</domain:period>
                <domain:ns>
                    <domain:hostObj>ns1.first.kiwi</domain:hostObj>
                    <domain:hostObj>ns2.first.kiwi</domain:hostObj>
                </domain:ns>
                <domain:registrant>con1234</domain:registrant>
                <domain:contact type="admin">con1234</domain:contact>
                <domain:contact type="tech">con1234</domain:contact>
                <domain:authInfo>
                    <domain:pw>BdqqKh22NEg3dHz7</domain:pw>
                </domain:authInfo>
            </domain:create>
        </create>
        <clTRID>ABC-12345</clTRID>
    </command>
</epp>

Element

Occurrence

Note

<domain:create>

1

<domain:name>

1

<domain:period unit=”y”>

1-Oct

<domain:ns>

0-1

<domain:hostObj>

Feb-13

<domain:registrant>

1

<domain:contact type=”admin”>

1

<domain:contact type=”tech”>

1

<domain:contact type=”billing”>

0-n

optional

<domain:authInfo>

1

<domain:pw>

1

auth-code

Response:

<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns:fury="urn:ietf:params:xml:ns:fury-2.0" xmlns:fury-rgp="urn:ietf:params:xml:ns:fury-rgp-1.0" xmlns:fee="urn:ietf:params:xml:ns:fee-0.11" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:smd="urn:ietf:params:xml:ns:signedMark-1.0" xmlns:mark="urn:ietf:params:xml:ns:mark-1.0" xmlns:host="urn:ietf:params:xml:ns:host-1.0" xmlns:launch="urn:ietf:params:xml:ns:launch-1.0" xmlns:secDNS="urn:ietf:params:xml:ns:secDNS-1.1" xmlns:rgp="urn:ietf:params:xml:ns:rgp-1.0" xmlns:idn="urn:ietf:params:xml:ns:idn-1.0" xmlns="urn:ietf:params:xml:ns:epp-1.0" xmlns:contact="urn:ietf:params:xml:ns:contact-1.0" xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
    <response>
        <result code="1000">
            <msg>Command completed successfully</msg>
        </result>
        <resData>
            <domain:creData>
                <domain:name>anewdomain.kiwi</domain:name>
                <domain:crDate>2023-03-16T04:17:17.009Z</domain:crDate>
                <domain:exDate>2024-03-16T04:17:17.009Z</domain:exDate>
            </domain:creData>
        </resData>
        <extension>
            <fee:creData>
                <fee:currency>NZD</fee:currency>
                <fee:fee refundable="true" grace-period="P1D">25.00</fee:fee>
                <fee:balance>-450.00</fee:balance>
            </fee:creData>
        </extension>
        <trID>
            <clTRID>ABC-12345</clTRID>
            <svTRID>CIRA-000054906105-0000000002</svTRID>
        </trID>
    </response>
</epp>

Element

Occurrence

Note

<domain:creData>

1

???? identifies namespace and domain schema location

<domain:name>

1

The domain name supplied by the Registrar.

<domain:crDate>

1

The date and time the domain name was created in the Registry

<domain:exDate>

1

The date and time the domain name is set to expire in the Registry

Request with DNSSEC:

<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0" xmlns:contact="urn:ietf:params:xml:ns:contact-1.0" xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
  <command>
      <create>
          <domain:create>
              <domain:name>dnssecdomain.kiwi</domain:name>
              <domain:period unit="y">1</domain:period>
              <domain:ns>
                  <domain:hostObj>ns1.first.kiwi</domain:hostObj>
                  <domain:hostObj>ns2.first.kiwi</domain:hostObj>
              </domain:ns>
              <domain:registrant>con1234</domain:registrant>
              <domain:contact type="admin">con1234</domain:contact>
              <domain:contact type="tech">con1234</domain:contact>
              <domain:authInfo>
                  <domain:pw>BdqqKh22NEg3dHz7</domain:pw>
              </domain:authInfo>
          </domain:create>
      </create>
      <extension>
          <secDNS:create xmlns:secDNS="urn:ietf:params:xml:ns:secDNS-1.1">
              <secDNS:dsData>
                  <secDNS:keyTag>12987</secDNS:keyTag>
                  <secDNS:alg>3</secDNS:alg>
                  <secDNS:digestType>1</secDNS:digestType>
                    <secDNS:digest>8cdb09364147aed879d12c68d615f98af5900b72</secDNS:digest>
              </secDNS:dsData>
          </secDNS:create>
      </extension>
      <clTRID>ABC-12346</clTRID>
  </command>
</epp>

Response:

<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns:fury="urn:ietf:params:xml:ns:fury-2.0" xmlns:fury-rgp="urn:ietf:params:xml:ns:fury-rgp-1.0" xmlns:fee="urn:ietf:params:xml:ns:fee-0.11" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:smd="urn:ietf:params:xml:ns:signedMark-1.0" xmlns:mark="urn:ietf:params:xml:ns:mark-1.0" xmlns:host="urn:ietf:params:xml:ns:host-1.0" xmlns:launch="urn:ietf:params:xml:ns:launch-1.0" xmlns:secDNS="urn:ietf:params:xml:ns:secDNS-1.1" xmlns:rgp="urn:ietf:params:xml:ns:rgp-1.0" xmlns:idn="urn:ietf:params:xml:ns:idn-1.0" xmlns="urn:ietf:params:xml:ns:epp-1.0" xmlns:contact="urn:ietf:params:xml:ns:contact-1.0" xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
    <response>
        <result code="1000">
            <msg>Command completed successfully</msg>
        </result>
        <resData>
            <domain:creData>
              <domain:name>dnssecdomain.kiwi</domain:name>
              <domain:crDate>2023-03-16T22:27:43.774Z</domain:crDate>
              <domain:exDate>2024-03-16T22:27:43.774Z</domain:exDate>
            </domain:creData>
        </resData>
        <extension>
            <fee:creData>
              <fee:currency>NZD</fee:currency>
              <fee:fee refundable="true" grace-period="P1D">25.00</fee:fee>
              <fee:balance>-475.00</fee:balance>
            </fee:creData>
        </extension>
        <trID>
            <clTRID>ABC-12346</clTRID>
            <svTRID>CIRA-000055050502-0000000002</svTRID>
        </trID>
    </response>
</epp>

domain:info

This command is used to retrieve information associated with a domain name.

.kiwi Business Rules

Registrars can only get a full response for domain objects managed by them. For domains not managed by the registrar if they specify the authcode they will get a full response. If they do not include the authcode they will get a truncated response.

Request:

<?xml version="1.0" encoding="UTF-8"?>
<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>anewdomain.kiwi</domain:name>
          </domain:info>
      </info>
      <clTRID>ABC-12995</clTRID>
  </command>
</epp>

Response:

<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns:fury="urn:ietf:params:xml:ns:fury-2.0" xmlns:fury-rgp="urn:ietf:params:xml:ns:fury-rgp-1.0" xmlns:fee="urn:ietf:params:xml:ns:fee-0.11" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:smd="urn:ietf:params:xml:ns:signedMark-1.0" xmlns:mark="urn:ietf:params:xml:ns:mark-1.0" xmlns:host="urn:ietf:params:xml:ns:host-1.0" xmlns:launch="urn:ietf:params:xml:ns:launch-1.0" xmlns:secDNS="urn:ietf:params:xml:ns:secDNS-1.1" xmlns:rgp="urn:ietf:params:xml:ns:rgp-1.0" xmlns:idn="urn:ietf:params:xml:ns:idn-1.0" xmlns="urn:ietf:params:xml:ns:epp-1.0" xmlns:contact="urn:ietf:params:xml:ns:contact-1.0" xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
  <response>
      <result code="1000">
          <msg>Command completed successfully</msg>
      </result>
      <resData>
          <domain:infData>
              <domain:name>anewdomain.kiwi</domain:name>
              <domain:roid>9958301-INZ</domain:roid>
              <domain:status s="serverTransferProhibited"/>
              <domain:registrant>con1234</domain:registrant>
              <domain:contact type="admin">con1234</domain:contact>
              <domain:contact type="tech">con1234</domain:contact>
              <domain:ns>
                  <domain:hostObj>ns1.first.kiwi</domain:hostObj>
                  <domain:hostObj>ns2.first.kiwi</domain:hostObj>
              </domain:ns>
              <domain:clID>997</domain:clID>
              <domain:crID>997</domain:crID>
              <domain:crDate>2023-03-16T04:17:17.009Z</domain:crDate>
              <domain:exDate>2024-03-16T04:17:17.009Z</domain:exDate>
          </domain:infData>
      </resData>
      <extension>
          <rgp:infData>
              <rgp:rgpStatus s="addPeriod"/>
          </rgp:infData>
          <fury-rgp:rgpInfo>
              <fury-rgp:rgpStatusEnd>2023-03-17T04:17:17.198Z</fury-rgp:rgpStatusEnd>
          </fury-rgp:rgpInfo>
          <fury:info>
              <fury:properties>
                  <fury:property>
                      <fury:key>PRIVACY</fury:key>
                      <fury:value>PUBLIC</fury:value>
                  </fury:property>
              </fury:properties>
          </fury:info>
      </extension>
      <trID>
          <clTRID>ABC-12995</clTRID>
          <svTRID>CIRA-000055056702-0000000002</svTRID>
      </trID>
  </response>
</epp>

Response for a domain outside of registrar management and no authcode included:

<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns:fury="urn:ietf:params:xml:ns:fury-2.0" xmlns:fury-rgp="urn:ietf:params:xml:ns:fury-rgp-1.0" xmlns:fee="urn:ietf:params:xml:ns:fee-0.11" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:smd="urn:ietf:params:xml:ns:signedMark-1.0" xmlns:mark="urn:ietf:params:xml:ns:mark-1.0" xmlns:host="urn:ietf:params:xml:ns:host-1.0" xmlns:launch="urn:ietf:params:xml:ns:launch-1.0" xmlns:secDNS="urn:ietf:params:xml:ns:secDNS-1.1" xmlns:rgp="urn:ietf:params:xml:ns:rgp-1.0" xmlns:idn="urn:ietf:params:xml:ns:idn-1.0" xmlns="urn:ietf:params:xml:ns:epp-1.0" xmlns:contact="urn:ietf:params:xml:ns:contact-1.0" xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
  <response>
      <result code="1000">
          <msg>Command completed successfully</msg>
      </result>
      <resData>
          <domain:infData>
              <domain:name>newtest.kiwi</domain:name>
              <domain:roid>128701-INZ</domain:roid>
              <domain:status s="ok"/>
              <domain:ns>
                  <domain:hostObj>ns1.tim9.kiwi</domain:hostObj>
                  <domain:hostObj>ns2.tim9.kiwi</domain:hostObj>
              </domain:ns>
              <domain:clID>998</domain:clID>
              <domain:crDate>2022-04-26T01:30:21.280Z</domain:crDate>
              <domain:upDate>2022-10-13T03:28:55.185Z</domain:upDate>
              <domain:exDate>2023-04-26T01:30:21.280Z</domain:exDate>
          </domain:infData>
      </resData>
      <extension>
          <fury-rgp:rgpInfo>
              <fury-rgp:rgpStatusEnd>2023-04-26T01:30:21.280Z</fury-rgp:rgpStatusEnd>
          </fury-rgp:rgpInfo>
      </extension>
      <trID>
          <clTRID>ABC-12996</clTRID>
          <svTRID>CIRA-000055069101-0000000002</svTRID>
      </trID>
  </response>
</epp>

domain:update

A domain update request can be used to update a domains status, contacts, hosts, authcode, privacy and DNSSEC records.

Request:

<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
    <command>
          <update>
              <domain:update xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
                  <domain:name>first.kiwi</domain:name>
                  <domain:add>
                  <domain:ns>
                      <domain:hostObj>ns1.example.kiwi</domain:hostObj>
                      <domain:hostObj>ns2.example.kiwi</domain:hostObj>
                  </domain:ns>
                  <domain:status s="clientDeleteProhibited"/>
                  </domain:add>
                  <domain:rem>
                  <domain:ns>
                      <domain:hostObj>ns1.timtest.kiwi</domain:hostObj>
                      <domain:hostObj>ns2.timtest.kiwi</domain:hostObj>
                  </domain:ns>
                  </domain:rem>
                  <domain:chg>
                  <domain:authInfo>
                      <domain:pw>Vget465jUht87hg3</domain:pw>
                  </domain:authInfo>
                  </domain:chg>
              </domain:update>
          </update>
          <extension>
              <fury:update xmlns:fury="urn:ietf:params:xml:ns:fury-2.0">
                  <fury:add>
                      <fury:properties>
                          <fury:property>
                              <fury:key>PRIVACY</fury:key>
                              <fury:value>PRIVATE</fury:value>
                          </fury:property>
                      </fury:properties>
                  </fury:add>
                  <fury:rem>
                      <fury:properties>
                          <fury:property>
                              <fury:key>PRIVACY</fury:key>
                              <fury:value>PUBLIC</fury:value>
                          </fury:property>
                      </fury:properties>
                  </fury:rem>
              </fury:update>
          </extension>
          <clTRID>ABC-12432</clTRID>
    </command>
</epp>

Element

Occurrence

Note

<domain:update>

1

<domain:name>

1

<domain:add>

0-1

optional

<domain:rem>

0-1

optional

<domain:ns>

0 - 1

optional

<domain:hostObj>

0 or 2 - 13

optional

<domain:status>

0-1

optional

<domain:chg>

0-1

optional

<domain:registrant>

1

The identifier of a contact having the Registrant relationship to the domain name.

<domain:contact type=”admin”>

1

<domain:contact type=”tech”>

1

<domain:contact type=”billing”>

0-1

optional

<domain:authInfo>

1

<domain:pw>

1

auth-code

<fury:key>PRIVACY</fury:key>

0-1

The domain privacy setting for WHOIS information configured as either Private or Public.

<secDNS:dsData>

0-1

domain:delete

This command is used to cancel a domain name.

.kiwi Business Rules

Auto-Renew

.kiwi domain names auto renew at the end of their registration period. In order to remove an existing .kiwi domain name from the register a delete command has to be sent.

Registration and Renewal Grace Periods

.kiwi domain names have a 5 day Registration Grace Period, a 5 day explicit Renewal Grace Period and a 45 day Auto-renew Grace Period. Sending a delete command during any of these grace periods for a domain will undo the previous transaction and remove any billing transactions caused by the create or renew transaction from the system. Sending a delete within 5 days after registration will remove the domain name immediately from the register and the domain name is available for registration again. Sending a delete within either of the Renewal Grace Periods will undo the renewal, void the billing transaction and put the domain name in status Redemption period.

Restore from Redemption Period

A cancelled .kiwi domain name will be kept in the register for another 90 days under the Redemption Period status (except when canceled during Registration Grace Period). During that time the registrar will be able to fully re-instate the domain name for the registrant so that it becomes active again using the restore process. The domain name can also be transferred to a new registrar and be restored by the gaining registrar.

Request:

<?xml version='1.0' encoding='UTF-8'?>
<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>testdomain.kiwi</domain:name>
          </domain:delete>
      </delete>
      <clTRID>ABC-22432</clTRID>
  </command>
</epp>

Response:

<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns:fury="urn:ietf:params:xml:ns:fury-2.0" xmlns:fury-rgp="urn:ietf:params:xml:ns:fury-rgp-1.0" xmlns:fee="urn:ietf:params:xml:ns:fee-0.11" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:smd="urn:ietf:params:xml:ns:signedMark-1.0" xmlns:mark="urn:ietf:params:xml:ns:mark-1.0" xmlns:host="urn:ietf:params:xml:ns:host-1.0" xmlns:launch="urn:ietf:params:xml:ns:launch-1.0" xmlns:secDNS="urn:ietf:params:xml:ns:secDNS-1.1" xmlns:rgp="urn:ietf:params:xml:ns:rgp-1.0" xmlns:idn="urn:ietf:params:xml:ns:idn-1.0" xmlns="urn:ietf:params:xml:ns:epp-1.0" xmlns:contact="urn:ietf:params:xml:ns:contact-1.0" xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
  <response>
      <result code="1000">
          <msg>Command completed successfully</msg>
      </result>
      <trID>
          <clTRID>ABC-22432</clTRID>
          <svTRID>CIRA-000055592709-0000000002</svTRID>
      </trID>
  </response>
</epp>

domain:restore

While in Redemption Period a domain can be restored to reactivate it. Both a restore request and a restore report are required to complete the process.

Note

On restore from redemption, a domain will autorenew instantly for 1 year if it is past its expiry date.

Restore request:

<?xml version='1.0' encoding='UTF-8'?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
  <command>
    <update>
       <domain:update xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
          <domain:name>testdomain.kiwi</domain:name>
          <domain:chg/>
       </domain:update>
    </update>
    <extension>
       <rgp:update xmlns:rgp="urn:ietf:params:xml:ns:rgp-1.0">
          <rgp:restore op="request"/>
       </rgp:update>
    </extension>
    <clTRID>ABC-32432</clTRID>
  </command>
</epp>

Restore response:

<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns:fury="urn:ietf:params:xml:ns:fury-2.0" xmlns:fury-rgp="urn:ietf:params:xml:ns:fury-rgp-1.0" xmlns:fee="urn:ietf:params:xml:ns:fee-0.11" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:smd="urn:ietf:params:xml:ns:signedMark-1.0" xmlns:mark="urn:ietf:params:xml:ns:mark-1.0" xmlns:host="urn:ietf:params:xml:ns:host-1.0" xmlns:launch="urn:ietf:params:xml:ns:launch-1.0" xmlns:secDNS="urn:ietf:params:xml:ns:secDNS-1.1" xmlns:rgp="urn:ietf:params:xml:ns:rgp-1.0" xmlns:idn="urn:ietf:params:xml:ns:idn-1.0" xmlns="urn:ietf:params:xml:ns:epp-1.0" xmlns:contact="urn:ietf:params:xml:ns:contact-1.0" xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
  <response>
      <result code="1000">
          <msg>Command completed successfully</msg>
      </result>
      <extension>
          <rgp:upData>
              <rgp:rgpStatus s="pendingRestore"/>
          </rgp:upData>
          <fee:updData>
              <fee:currency>NZD</fee:currency>
              <fee:fee refundable="true" grace-period="P5D">0.00</fee:fee>
              <fee:balance>-500.00</fee:balance>
          </fee:updData>
      </extension>
      <trID>
          <clTRID>ABC-32432</clTRID>
          <svTRID>CIRA-000055610507-0000000002</svTRID>
      </trID>
  </response>
</epp>

Restore report request:

<?xml version='1.0' encoding='UTF-8'?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
 <command>
    <update>
       <domain:update xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
          <domain:name>testdomain.kiwi</domain:name>
          <domain:chg/>
       </domain:update>
    </update>
    <extension>
       <rgp:update xmlns:rgp="urn:ietf:params:xml:ns:rgp-1.0">
          <rgp:restore op="report">
              <rgp:report>
                 <rgp:preData>Not Applicable</rgp:preData>
                  <rgp:postData>Not Applicable.</rgp:postData>
                  <rgp:delTime>2023-03-20T09:08:50</rgp:delTime>
                  <rgp:resTime>2023-03-20T11:31:50</rgp:resTime>
                  <rgp:resReason>Registrant error.</rgp:resReason>
                  <rgp:statement>This registrar has not restored the Registered Name in order to assume the rights to use or sell the Registered Name for itself or for any third party.</rgp:statement>
                  <rgp:statement>The information in this report is true to best of this registrar's knowledge, and this registrar acknowledges that intentionally supplying false information in this report shall constitute an incurable material breach of the  Registry-Registrar Agreement.</rgp:statement>
                  <rgp:other>Supporting information goes  here.</rgp:other>
                </rgp:report>
             </rgp:restore>
       </rgp:update>
    </extension>
    <clTRID>ABC-32433</clTRID>
 </command>
</epp>

Restore report response:

<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns:fury="urn:ietf:params:xml:ns:fury-2.0" xmlns:fury-rgp="urn:ietf:params:xml:ns:fury-rgp-1.0" xmlns:fee="urn:ietf:params:xml:ns:fee-0.11" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:smd="urn:ietf:params:xml:ns:signedMark-1.0" xmlns:mark="urn:ietf:params:xml:ns:mark-1.0" xmlns:host="urn:ietf:params:xml:ns:host-1.0" xmlns:launch="urn:ietf:params:xml:ns:launch-1.0" xmlns:secDNS="urn:ietf:params:xml:ns:secDNS-1.1" xmlns:rgp="urn:ietf:params:xml:ns:rgp-1.0" xmlns:idn="urn:ietf:params:xml:ns:idn-1.0" xmlns="urn:ietf:params:xml:ns:epp-1.0" xmlns:contact="urn:ietf:params:xml:ns:contact-1.0" xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
  <response>
      <result code="1000">
          <msg>Command completed successfully</msg>
      </result>
      <trID>
          <clTRID>ABC-32433</clTRID>
          <svTRID>CIRA-000055613114-0000000002</svTRID>
      </trID>
  </response>
</epp>

domain:transfer

This command allows the transfer of management of a domain name between registrars.

.kiwi Business Rules

When and How to transfer

Transfer for an existing domain name can be performed by registrars at any time except during the Registration Grace Period (first 5 days after domain create) or when a domain name has been locked by the registry.

To transfer the management of a domain name the Auth-code needs to be provided in the transfer request which is provided by the registrant to the gaining registrar. The registrant of a domain name can request the Auth-code from their current registrar who is required to supply the information. Please check <domain:update> to find out how to generate a new Auth-code.

The Releasing Registrar

The releasing registrar is not able to delay the transfer, nor refuse to supply the Auth-code so the transfer cannot occur. A service message will be generated after a successful transfer to notify the releasing registrar of the transfer away. The releasing registrar will be able to retrieve this message by running the poll command.

op=”request” only

Renewal

A renewal is not required as part of a registrar transfer but can be included if needed.

Transfer request without renewal:

<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
  <command>
      <transfer op="request">
          <domain:transfer xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
              <domain:name>testdomain.kiwi</domain:name>
              <domain:authInfo>
                  <domain:pw>authcodeauthcode</domain:pw>
              </domain:authInfo>
          </domain:transfer>
      </transfer>
      <clTRID>ABC-42433</clTRID>
  </command>
</epp>

Response:

<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns:fury="urn:ietf:params:xml:ns:fury-2.0" xmlns:fury-rgp="urn:ietf:params:xml:ns:fury-rgp-1.0" xmlns:fee="urn:ietf:params:xml:ns:fee-0.11" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:smd="urn:ietf:params:xml:ns:signedMark-1.0" xmlns:mark="urn:ietf:params:xml:ns:mark-1.0" xmlns:host="urn:ietf:params:xml:ns:host-1.0" xmlns:launch="urn:ietf:params:xml:ns:launch-1.0" xmlns:secDNS="urn:ietf:params:xml:ns:secDNS-1.1" xmlns:rgp="urn:ietf:params:xml:ns:rgp-1.0" xmlns:idn="urn:ietf:params:xml:ns:idn-1.0" xmlns="urn:ietf:params:xml:ns:epp-1.0" xmlns:contact="urn:ietf:params:xml:ns:contact-1.0" xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
  <response>
      <result code="1000">
          <msg>Command completed successfully</msg>
      </result>
      <resData>
          <domain:trnData>
              <domain:name>testdomain.kiwi</domain:name>
              <domain:trStatus>serverApproved</domain:trStatus>
              <domain:reID>998</domain:reID>
              <domain:reDate>2023-03-20T00:13:02.326Z</domain:reDate>
              <domain:acID>997</domain:acID>
              <domain:acDate>2023-03-20T00:13:02.443Z</domain:acDate>
              <domain:exDate>2023-03-27T19:37:21.034Z</domain:exDate>
          </domain:trnData>
      </resData>
      <extension>
          <fee:trnData>
              <fee:currency>NZD</fee:currency>
              <fee:fee refundable="false">0.00</fee:fee>
          </fee:trnData>
      </extension>
      <trID>
          <clTRID>ABC-42433</clTRID>
          <svTRID>CIRA-000055625102-0000000002</svTRID>
      </trID>
  </response>
</epp>

Transfer request with renewal:

<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
  <command>
      <transfer op="request">
          <domain:transfer xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
              <domain:name>testdomain.kiwi</domain:name>
              <domain:period unit="y">1</domain:period>
              <domain:authInfo>
                  <domain:pw>passwordpassword</domain:pw>
              </domain:authInfo>
          </domain:transfer>
      </transfer>
      <clTRID>ABC-42434</clTRID>
  </command>
</epp>

Response:

<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns:fury="urn:ietf:params:xml:ns:fury-2.0" xmlns:fury-rgp="urn:ietf:params:xml:ns:fury-rgp-1.0" xmlns:fee="urn:ietf:params:xml:ns:fee-0.11" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:smd="urn:ietf:params:xml:ns:signedMark-1.0" xmlns:mark="urn:ietf:params:xml:ns:mark-1.0" xmlns:host="urn:ietf:params:xml:ns:host-1.0" xmlns:launch="urn:ietf:params:xml:ns:launch-1.0" xmlns:secDNS="urn:ietf:params:xml:ns:secDNS-1.1" xmlns:rgp="urn:ietf:params:xml:ns:rgp-1.0" xmlns:idn="urn:ietf:params:xml:ns:idn-1.0" xmlns="urn:ietf:params:xml:ns:epp-1.0" xmlns:contact="urn:ietf:params:xml:ns:contact-1.0" xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
  <response>
      <result code="1000">
          <msg>Command completed successfully</msg>
      </result>
      <resData>
          <domain:trnData>
              <domain:name>authcodetest-4.kiwi</domain:name>
              <domain:trStatus>serverApproved</domain:trStatus>
              <domain:reID>997</domain:reID>
              <domain:reDate>2023-03-20T00:42:01.493Z</domain:reDate>
              <domain:acID>998</domain:acID>
              <domain:acDate>2023-03-20T00:42:01.615Z</domain:acDate>
              <domain:exDate>2024-03-27T19:37:21.034Z</domain:exDate>
          </domain:trnData>
      </resData>
      <extension>
          <fee:trnData>
              <fee:currency>NZD</fee:currency>
              <fee:fee refundable="false">25.00</fee:fee>
          </fee:trnData>
      </extension>
      <trID>
          <clTRID>ABC-42434</clTRID>
          <svTRID>CIRA-000055629101-0000000002</svTRID>
      </trID>
  </response>
</epp>

domain:renew

This command is used to renew a domain name

.kiwi Business Rules

  • a .kiwi domain doesnʼt expire but auto-renews automatically on a yearly basis unless the domain has been explicitly renewed for one or more years by a renewal command prior to its expiry date or

    • the domain name has been cancelled or

    • the domain name has been locked by the registry

  • Domain names can be renewed for up to 10 years (depending on the current expiration date). A domain name can have a expiration date up to 10 years into the future.

  • There is a 5 day Renewal Grace Period

Renewal request:

<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
  <command>
      <renew>
          <domain:renew xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
              <domain:name>testdomain.kiwi</domain:name>
              <domain:curExpDate>2024-03-27</domain:curExpDate>
              <domain:period unit="y">2</domain:period>
          </domain:renew>
      </renew>
      <clTRID>ABC-52434</clTRID>
  </command>
</epp>

Response:

<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns:fury="urn:ietf:params:xml:ns:fury-2.0" xmlns:fury-rgp="urn:ietf:params:xml:ns:fury-rgp-1.0" xmlns:fee="urn:ietf:params:xml:ns:fee-0.11" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:smd="urn:ietf:params:xml:ns:signedMark-1.0" xmlns:mark="urn:ietf:params:xml:ns:mark-1.0" xmlns:host="urn:ietf:params:xml:ns:host-1.0" xmlns:launch="urn:ietf:params:xml:ns:launch-1.0" xmlns:secDNS="urn:ietf:params:xml:ns:secDNS-1.1" xmlns:rgp="urn:ietf:params:xml:ns:rgp-1.0" xmlns:idn="urn:ietf:params:xml:ns:idn-1.0" xmlns="urn:ietf:params:xml:ns:epp-1.0" xmlns:contact="urn:ietf:params:xml:ns:contact-1.0" xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
  <response>
      <result code="1000">
          <msg>Command completed successfully</msg>
      </result>
      <resData>
          <domain:renData>
              <domain:name>testdomain.kiwi</domain:name>
              <domain:exDate>2026-03-27T19:37:21.034Z</domain:exDate>
          </domain:renData>
      </resData>
      <extension>
          <fee:renData>
              <fee:currency>NZD</fee:currency>
              <fee:fee refundable="true" grace-period="P1D">50.00</fee:fee>
              <fee:balance>-550.00</fee:balance>
          </fee:renData>
      </extension>
      <trID>
          <clTRID>ABC-52434</clTRID>
          <svTRID>CIRA-000055633314-0000000002</svTRID>
      </trID>
  </response>
</epp>

poll

This command is to check and retrieve queued service messages

Request:

<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
    <command>
        <poll op="req"/>
    </command>
</epp>

Response:

<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns:fury="urn:ietf:params:xml:ns:fury-2.0" xmlns:fury-rgp="urn:ietf:params:xml:ns:fury-rgp-1.0" xmlns:fee="urn:ietf:params:xml:ns:fee-0.11" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:smd="urn:ietf:params:xml:ns:signedMark-1.0" xmlns:mark="urn:ietf:params:xml:ns:mark-1.0" xmlns:host="urn:ietf:params:xml:ns:host-1.0" xmlns:launch="urn:ietf:params:xml:ns:launch-1.0" xmlns:secDNS="urn:ietf:params:xml:ns:secDNS-1.1" xmlns:rgp="urn:ietf:params:xml:ns:rgp-1.0" xmlns:idn="urn:ietf:params:xml:ns:idn-1.0" xmlns="urn:ietf:params:xml:ns:epp-1.0" xmlns:contact="urn:ietf:params:xml:ns:contact-1.0" xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
  <response>
      <result code="1301">
          <msg>Command completed successfully; ack to dequeue</msg>
      </result>
      <msgQ count="6" id="22236860">
          <qDate>2023-03-15T03:00:29.284Z</qDate>
          <msg lang="en">Domain deltestdomain.kiwi has been deleted.</msg>
      </msgQ>
      <trID>
          <svTRID>CIRA-000055814979-0000000002</svTRID>
      </trID>
  </response>
</epp>

poll ack

This command will acknowledge and remove a message from the poll queue so that registrars can run another poll request to get the next message in line if one exists.

Note

In the poll ack request “msgID” should match the “id” returned in the poll message.

Request:

<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
  <command>
    <poll op="ack" msgID="22236860" />
  </command>
</epp>

Response

<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns:fury="urn:ietf:params:xml:ns:fury-2.0" xmlns:fury-rgp="urn:ietf:params:xml:ns:fury-rgp-1.0" xmlns:fee="urn:ietf:params:xml:ns:fee-0.11" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:smd="urn:ietf:params:xml:ns:signedMark-1.0" xmlns:mark="urn:ietf:params:xml:ns:mark-1.0" xmlns:host="urn:ietf:params:xml:ns:host-1.0" xmlns:launch="urn:ietf:params:xml:ns:launch-1.0" xmlns:secDNS="urn:ietf:params:xml:ns:secDNS-1.1" xmlns:rgp="urn:ietf:params:xml:ns:rgp-1.0" xmlns:idn="urn:ietf:params:xml:ns:idn-1.0" xmlns="urn:ietf:params:xml:ns:epp-1.0" xmlns:contact="urn:ietf:params:xml:ns:contact-1.0" xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
  <response>
      <result code="1000">
          <msg>Command completed successfully</msg>
      </result>
      <msgQ count="5" id="22236860"/>
      <trID>
          <svTRID>CIRA-000055823571-0000000002</svTRID>
      </trID>
  </response>
</epp>