EPP Index

From Openprovider API documentation

(Difference between revisions)
Jump to: navigation, search
Line 2: Line 2:
==Introduction==
==Introduction==
-
*The EPP interface is built for domains only. For all other products, the general Openprovider API should be used. Also note that the EPP interface of Openprovider uses the general Openprovider API for processing the commands. As a result, the EPP interface will be slower than the API interface. If you have no specific reason for using the EPP interface, we advise using the API interface instead.
+
EPP (Extensible Provisioning Protocol) is the communication standard for most registries. The EPP interface of Openprovider thus provides an interface that follows a standard, simplifying integration for any company that already implemented an EPP interface to another registry in the past.
 +
 
 +
The EPP interface is a layer on top of the [[Main Page|general Openprovider API]]. This increases maintainability and stability, but might drop speed a little because of the translation from EPP to API format.
 +
 
 +
* '''Who should use the EPP interface?'''
 +
** Customers already having an EPP implementation to another domain provider. Connecting to the EPP interface of Openprovider is the easiest way for a quick start.
 +
 
 +
* '''Who should use the [[Main Page|general Openprovider API]]?'''
 +
** Customers that do not have implemented EPP yet: the Openprovider API is easier to implement and use
 +
** Customers that want to sell not only domains: the EPP interface only supports domain and contact management, no support for SSL, licenses and other products
 +
 
 +
In general: if you have no specific reason to use EPP, we recommend the Openprovider API.
 +
 
 +
==Scope==
 +
The EPP interface is built for domains and contacts only. For all other products, the [[Main Page|general Openprovider API]] should be used.
===Reference to RFCs===
===Reference to RFCs===
-
To do
+
[http://www.rfc-editor.org/rfc/rfc5730.txt RFC 5730 Extensible Provisioning Protocol (EPP)]
 +
[http://www.rfc-editor.org/rfc/rfc5731.txt RFC 5731 Extensible Provisioning Protocol (EPP) Domain Name Mapping]
 +
[http://www.rfc-editor.org/rfc/rfc5733.txt RFC 5733 Extensible Provisioning Protocol (EPP) Contact Mapping]
===Differences===
===Differences===
-
To do: differences between RFCs and Openprovider implementation
+
* Cookies are used to keep a session alive. After the ''login'' command, the server returns a cookie ''session_id'' which must be used in all following requests to the server until closing the session.
-
* Cookies are used to keep a session alive. After the ''login'' command, the server returns a cookie ''session_id'' which must be used in all following requests to the server until closing the session
+
* DNSSEC is not yet supported.
 +
* Although not against the RFCs, please note that Openprovider uses a lot of extensions to be able to cover all TLD-specific requirements.
===Example===
===Example===
-
To do: link to a PHP example script
+
Not yet available
==Session==
==Session==
Line 66: Line 83:
   <command>
   <command>
     <login>
     <login>
-
       <clID>opdrs4</clID>
+
       <clID>username</clID>
-
       <pw>opdrs4</pw>
+
       <pw>password</pw>
       <options>
       <options>
         <version>1.0</version>
         <version>1.0</version>
Line 99: Line 116:
  </epp>
  </epp>
-
Together with the response, the server returns a cookie ''session_id'' which must be used in all following requests to the server until closing the session
+
'''Important:''' together with the response, the server returns a cookie ''session_id'' which must be used in all following requests to the server until closing the session.
===Logout===
===Logout===
Line 172: Line 189:
     <create>
     <create>
       <domain:create xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
       <domain:create xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
-
         <domain:name>qwerqwer-50055d5e2870d.nl</domain:name>
+
         <domain:name>example.com</domain:name>
         <domain:period unit="y">1</domain:period>
         <domain:period unit="y">1</domain:period>
         <domain:ns>
         <domain:ns>
           <domain:hostAttr>
           <domain:hostAttr>
-
             <domain:hostName>asdfasdfasdf1.df</domain:hostName>
+
             <domain:hostName>ns1.example.com</domain:hostName>
             <domain:hostAddr ip="v6">2607:f0d0:1002:51::4</domain:hostAddr>
             <domain:hostAddr ip="v6">2607:f0d0:1002:51::4</domain:hostAddr>
           </domain:hostAttr>
           </domain:hostAttr>
           <domain:hostAttr>
           <domain:hostAttr>
-
             <domain:hostName>asdfasdfasdf2.df</domain:hostName>
+
             <domain:hostName>ns2.example.com</domain:hostName>
             <domain:hostAddr ip="v4">123.123.123.123</domain:hostAddr>
             <domain:hostAddr ip="v4">123.123.123.123</domain:hostAddr>
           </domain:hostAttr>
           </domain:hostAttr>
         </domain:ns>
         </domain:ns>
-
         <domain:registrant>FL902041-RU</domain:registrant>
+
         <domain:registrant>FL902041-US</domain:registrant>
-
         <domain:contact type="admin">FL902041-RU</domain:contact>
+
         <domain:contact type="admin">FL902041-US</domain:contact>
-
         <domain:contact type="tech">FL902041-RU</domain:contact>
+
         <domain:contact type="tech">FL902041-US</domain:contact>
         <domain:authInfo>
         <domain:authInfo>
           <domain:pw/>
           <domain:pw/>
Line 198: Line 215:
             <op:promoCode>PROMO2</op:promoCode>
             <op:promoCode>PROMO2</op:promoCode>
             <op:useDomicile>false</op:useDomicile>
             <op:useDomicile>false</op:useDomicile>
-
             <op:nsGroup>dns-openprovider</op:nsGroup>
+
             <op:nsGroup></op:nsGroup>
             <op:comments>any comment here</op:comments>
             <op:comments>any comment here</op:comments>
             <op:autorenew>default</op:autorenew>
             <op:autorenew>default</op:autorenew>
-
            <op:nsTemplateId>123</op:nsTemplateId>
+
             <op:nsTemplateName></op:nsTemplateName>
-
             <op:nsTemplateName>TemplateForReseller165264</op:nsTemplateName>
+
           </op:domain>
           </op:domain>
         </op:create>
         </op:create>
Line 212: Line 228:
* ''<domain:pw>'' parameter is required by the EPP protocol, but is ignored by Openprovider
* ''<domain:pw>'' parameter is required by the EPP protocol, but is ignored by Openprovider
-
* ''<domain:contact type="billing"/>'' is not supported  
+
* ''<domain:contact>'': the only supported contact types are ''admin'' and ''tech''
 +
* ''<op:autorenew>'': accepted values: ''on'', ''off'', ''default''
 +
* ''<op:nsTemplateName>'': can be used if <op:nsGroup> is ''dns-openprovider''
 +
 
;Response:
;Response:
Line 223: Line 242:
     <resData xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
     <resData xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
       <domain:creData xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
       <domain:creData xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
-
         <domain:name>qwerqwer-50055d5e2870d.nl</domain:name>
+
         <domain:name>example.com</domain:name>
         <domain:crDate>2012-07-17T14:41:03.0Z</domain:crDate>
         <domain:crDate>2012-07-17T14:41:03.0Z</domain:crDate>
         <domain:exDate>2012-07-29T14:41:03.0Z</domain:exDate>
         <domain:exDate>2012-07-29T14:41:03.0Z</domain:exDate>
Line 242: Line 261:
     <delete>
     <delete>
       <domain:delete xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
       <domain:delete xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
-
         <domain:name>example50.com</domain:name>
+
         <domain:name>example.com</domain:name>
       </domain:delete>
       </domain:delete>
     </delete>
     </delete>
Line 264: Line 283:
===Restore===
===Restore===
-
Openprovider implements [http://tools.ietf.org/html/rfc3915|Domain Registry Grace Period Mapping for the Extensible Provisioning Protocol (EPP)] partially for restoration procedure.
+
Openprovider implements [http://tools.ietf.org/html/rfc3915 Domain Registry Grace Period Mapping for the Extensible Provisioning Protocol (EPP)] partially for restore procedure. The EPP response on <domain:info> command for deleted domains that can be still restored has an additional extension section '''<rgp:infData/>''', containing value '''pendingDelete''':
-
 
+
-
EPP response message on Info command for deleted domains that can be still restored has additional extension section '''<rgp:infData/>''':
+
  <?xml version="1.0" encoding="UTF-8"?>
  <?xml version="1.0" encoding="UTF-8"?>
  <epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
  <epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
   <response>
   <response>
-
<result code="1000">
+
    <result code="1000">
-
<msg>Command completed successfully</msg>
+
      <msg>Command completed successfully</msg>
-
</result>
+
    </result>
-
<resData xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
+
    <resData xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
-
<domain:infData>
+
      <domain:infData>
-
...
+
        ...
-
</domain:infData>
+
      </domain:infData>
-
</resData>
+
    </resData>
-
<extension>
+
    <extension>
-
...
+
      ...
-
</op:ext>
+
      <rgp:infData xmlns:rgp="urn:ietf:params:xml:ns:rgp-1.0">
-
<rgp:infData xmlns:rgp="urn:ietf:params:xml:ns:rgp-1.0">
+
        '''<rgp:rgpStatus s="pendingDelete"/>'''
-
'''<rgp:rgpStatus s="pendingDelete"/>'''
+
      </rgp:infData>
-
</rgp:infData>
+
      ...
-
</extension>
+
  </extension>
-
...
+
  </epp>
  </epp>
Line 295: Line 311:
     <update>
     <update>
       <domain:update xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
       <domain:update xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
-
         <domain:name>qwerqwerqwer-502dfc0f8d861.nl</domain:name>
+
         <domain:name>example.com</domain:name>
         <domain:chg/>
         <domain:chg/>
       </domain:update>
       </domain:update>
Line 307: Line 323:
   </command>
   </command>
  </epp>
  </epp>
-
* '''<domain:add/>''', '''<domain:rem/>''', '''<domain:chg/>''' must not contain any elements in it.
+
 
 +
'''<domain:add/>''', '''<domain:rem/>''' and '''<domain:chg/>''' must not contain any elements in it.
;Reply:
;Reply:
Line 350: Line 367:
         <domain:status s="ok"/>
         <domain:status s="ok"/>
         <domain:registrant>OT001234-NL</domain:registrant>
         <domain:registrant>OT001234-NL</domain:registrant>
-
         <domain:contact type="admin">OM901234-RU</domain:contact>
+
         <domain:contact type="admin">OM901234-US</domain:contact>
         <domain:contact type="tech">DD01234-NL</domain:contact>
         <domain:contact type="tech">DD01234-NL</domain:contact>
         <domain:ns>
         <domain:ns>
           <domain:hostAttr>
           <domain:hostAttr>
-
             <domain:hostName>ns1.example.nl</domain:hostName>
+
             <domain:hostName>ns1.example.com</domain:hostName>
             <domain:hostAddr ip="v4">123.123.123.123</domain:hostAddr>
             <domain:hostAddr ip="v4">123.123.123.123</domain:hostAddr>
           </domain:hostAttr>
           </domain:hostAttr>
           <domain:hostAttr>
           <domain:hostAttr>
-
             <domain:hostName>ns2.example.nl</domain:hostName>
+
             <domain:hostName>ns2.example.com</domain:hostName>
             <domain:hostAddr ip="v4">234.234.234.234</domain:hostAddr>
             <domain:hostAddr ip="v4">234.234.234.234</domain:hostAddr>
           </domain:hostAttr>
           </domain:hostAttr>
         </domain:ns>
         </domain:ns>
-
         <domain:clID>user1</domain:clID>
+
         <domain:clID>username</domain:clID>
         <domain:crDate>2012-03-28T14:08:53.0Z</domain:crDate>
         <domain:crDate>2012-03-28T14:08:53.0Z</domain:crDate>
         <domain:exDate>2013-03-28T12:08:54.0Z</domain:exDate>
         <domain:exDate>2013-03-28T12:08:54.0Z</domain:exDate>
         <domain:authInfo>
         <domain:authInfo>
-
           <domain:pw>3f!lB;1ouw</domain:pw>
+
           <domain:pw>AUTHCODE</domain:pw>
         </domain:authInfo>
         </domain:authInfo>
       </domain:infData>
       </domain:infData>
Line 409: Line 426:
  </epp>
  </epp>
-
* <b><font color=red><tt><domain:curExpDate/></tt></font> is required by EPP protocol but <font color=red>not used</font> by current version of Openprovider software</b>
+
* '''<domain:curExpDate/>''' is required by EPP protocol but not used by current version of Openprovider software
;Response:
;Response:
Line 442: Line 459:
     <transfer op="request">
     <transfer op="request">
       <domain:transfer>
       <domain:transfer>
-
         <domain:name>qwerqwer-501a507106c4a.se</domain:name>
+
         <domain:name>example.de</domain:name>
         <domain:authInfo>
         <domain:authInfo>
           <domain:pw>AUTHCODE</domain:pw>
           <domain:pw>AUTHCODE</domain:pw>
Line 452: Line 469:
         <op:transfer>
         <op:transfer>
           <op:domain>
           <op:domain>
-
             <op:registrant>FL902042-RU</op:registrant>
+
             <op:registrant>FL902042-US</op:registrant>
-
             <op:contact type="admin">FL902042-RU</op:contact>
+
             <op:contact type="admin">FL902042-US</op:contact>
-
             <op:contact type="tech">FL902042-RU</op:contact>
+
             <op:contact type="tech">FL902042-US</op:contact>
             <op:ns>
             <op:ns>
               <domain:hostAttr>
               <domain:hostAttr>
-
                 <domain:hostName>asdfasdfasdf1.df</domain:hostName>
+
                 <domain:hostName>ns1.example.de</domain:hostName>
                 <domain:hostAddr ip="v6">2607:f0d0:1002:51::4</domain:hostAddr>
                 <domain:hostAddr ip="v6">2607:f0d0:1002:51::4</domain:hostAddr>
               </domain:hostAttr>
               </domain:hostAttr>
               <domain:hostAttr>
               <domain:hostAttr>
-
                 <domain:hostName>asdfasdfasdf2.df</domain:hostName>
+
                 <domain:hostName>ns2.example.de</domain:hostName>
                 <domain:hostAddr ip="v4">123.123.123.123</domain:hostAddr>
                 <domain:hostAddr ip="v4">123.123.123.123</domain:hostAddr>
               </domain:hostAttr>
               </domain:hostAttr>
Line 467: Line 484:
             <op:autorenew>on</op:autorenew>
             <op:autorenew>on</op:autorenew>
             <op:nsGroup></op:nsGroup>
             <op:nsGroup></op:nsGroup>
-
             <op:useDomicile>1</op:useDomicile>
+
             <op:useDomicile>true</op:useDomicile>
             <op:comments>ANY COMMENT  HERE</op:comments>
             <op:comments>ANY COMMENT  HERE</op:comments>
-
             <op:promoCode>PROMO CODE</op:promoCode>
+
             <op:promoCode>PROMOCODE</op:promoCode>
-
            <op:nsTemplateId>321321312</op:nsTemplateId>
+
             <op:nsTemplateName></op:nsTemplateName>
-
             <op:nsTemplateName>DnsTemplate33</op:nsTemplateName>
+
           </op:domain>
           </op:domain>
         </op:transfer>
         </op:transfer>
Line 479: Line 495:
   </command>
   </command>
  </epp>
  </epp>
 +
 +
* ''<domain:contact>'': the only supported contact types are ''admin'' and ''tech''
 +
* ''<op:autorenew>'': accepted values: ''on'', ''off'', ''default''
 +
* ''<op:nsTemplateName>'': can be used if <op:nsGroup> is ''dns-openprovider''
;Reply:
;Reply:
Line 489: Line 509:
     <resData xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
     <resData xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
       <domain:trnData>
       <domain:trnData>
-
         <domain:name>qwerqwer-502e0d06493e2.se</domain:name>
+
         <domain:name>example.de</domain:name>
         <domain:trStatus>pending</domain:trStatus>
         <domain:trStatus>pending</domain:trStatus>
-
         <domain:reID>user1342172839</domain:reID>
+
         <domain:reID>username</domain:reID>
         <domain:reDate>2012-08-17T11:21:13.0Z</domain:reDate>
         <domain:reDate>2012-08-17T11:21:13.0Z</domain:reDate>
         <domain:acID>UNSUPPORTED</domain:acID>
         <domain:acID>UNSUPPORTED</domain:acID>
Line 505: Line 525:
  </epp>
  </epp>
-
'''<font color=red>Not supported</font>''' output values:
+
* '''Not supported output parameters''': acID, acDate, exDate
-
* <font color=red>acID</font>
+
* '''trStatus''' is restricted to 3 values:
-
* <font color=red>acDate</font>
+
** '''serverApproved''': the transfer is approved
-
* <font color=red>exDate</font>
+
** '''pending'''
 +
** '''serverCancelled''': the transfer is rejected or cancelled
-
<font color=red>'''trStatus''' restricted to three statuses</font>:
+
====Cancel Transfer====
-
* '''serverApproved''' the transfer is approved
+
''Not available''
-
* '''pending'''
+
-
* '''serverCancelled''' the transfer is rejected or cancelled
+
-
 
+
-
====Cancel Transfer (not available)====
+
====Approve Transfer====
====Approve Transfer====
Line 524: Line 541:
     <transfer op="approve">
     <transfer op="approve">
       <domain:transfer xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
       <domain:transfer xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
-
         <domain:name>qwerqwer-50055d5e2870d.nl</domain:name>
+
         <domain:name>example.com</domain:name>
       </domain:transfer>
       </domain:transfer>
     </transfer>
     </transfer>
Line 552: Line 569:
     <transfer op="query">
     <transfer op="query">
       <domain:transfer xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
       <domain:transfer xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
-
         <domain:name>qwerqwer-50055d5e2870d.nl</domain:name>
+
         <domain:name>example.com</domain:name>
       </domain:transfer>
       </domain:transfer>
     </transfer>
     </transfer>
Line 568: Line 585:
     <resData xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
     <resData xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
       <domain:trnData>
       <domain:trnData>
-
         <domain:name>qwerqwer-50055d5e2870d.nl</domain:name>
+
         <domain:name>example.com</domain:name>
         <domain:trStatus>serverApproved</domain:trStatus>
         <domain:trStatus>serverApproved</domain:trStatus>
-
         <domain:reID>user1342172839</domain:reID>
+
         <domain:reID>username</domain:reID>
         <domain:reDate>2012-07-17T14:41:04.0Z</domain:reDate>
         <domain:reDate>2012-07-17T14:41:04.0Z</domain:reDate>
         <domain:acID>UNSUPPORTED</domain:acID>
         <domain:acID>UNSUPPORTED</domain:acID>
Line 584: Line 601:
  </epp>
  </epp>
-
'''<font color=red>Not supported</font>''' output values:
+
* '''Not supported output parameters''': acID, acDate, exDate
-
* <font color=red>acID</font>
+
* '''trStatus''' is restricted to 3 values:
-
* <font color=red>acDate</font>
+
** '''serverApproved''': the transfer is approved
-
* <font color=red>exDate</font>
+
** '''pending'''  
-
 
+
** '''serverCancelled''': the transfer is rejected or cancelled
-
<font color=red>'''trStatus''' restricted to three statuses</font>:
+
-
* '''serverApproved''' the transfer is approved
+
-
* '''pending'''  
+
-
* '''serverCancelled''' the transfer is rejected or cancelled
+
===Update===
===Update===
Line 601: Line 614:
     <update>
     <update>
       <domain:update xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
       <domain:update xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
-
         <domain:name>qwerqwerqwer-4ff56c42439b1.nl</domain:name>
+
         <domain:name>example.com</domain:name>
         <domain:add>
         <domain:add>
           <domain:ns>
           <domain:ns>
-
             <domain:hostObj>ns1.domaindiscount24.net</domain:hostObj>
+
             <domain:hostObj>ns1.example.net</domain:hostObj>
           </domain:ns>
           </domain:ns>
           <domain:contact type="tech">DD004372-NL</domain:contact>
           <domain:contact type="tech">DD004372-NL</domain:contact>
Line 611: Line 624:
         <domain:rem>
         <domain:rem>
           <domain:ns>
           <domain:ns>
-
             <domain:hostObj>asdfasdfasdf1.df</domain:hostObj>
+
             <domain:hostObj>ns1.example.com</domain:hostObj>
           </domain:ns>
           </domain:ns>
-
           <domain:contact type="tech">P-JID21</domain:contact>
+
           <domain:contact type="tech">JL901992-NL</domain:contact>
-
          <domain:status s="clientUpdateProhibited"/>
+
         </domain:rem>
         </domain:rem>
         <domain:chg>
         <domain:chg>
Line 630: Line 642:
             <op:chg>
             <op:chg>
               <op:autorenew>on</op:autorenew>
               <op:autorenew>on</op:autorenew>
-
               <op:useDomicile>true</op:useDomicile>
+
               <op:useDomicile>false</op:useDomicile>
-
               <op:comments>Test comment</op:comments>
+
               <op:comments>Custom comment</op:comments>
-
               <op:nsGroup>dns-openprovider</op:nsGroup>
+
               <op:nsGroup></op:nsGroup>
-
              <op:nsTemplateId>5808</op:nsTemplateId>
+
               <op:resetAuthCode>true</op:resetAuthCode>
               <op:resetAuthCode>true</op:resetAuthCode>
             </op:chg>
             </op:chg>
Line 658: Line 669:
  </epp>
  </epp>
-
* '''<font color=red><contact:pw/> </font> element''' is NOT used but required by EPP protocol, leave it blank
+
* '''<contact:pw/> element''' is NOT used but required by EPP protocol, leave it blank
==Contact==
==Contact==
Line 707: Line 718:
     <create>
     <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: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>sh8013</contact:id>
+
         <contact:id>IGNORED</contact:id>
         <contact:postalInfo type="int">
         <contact:postalInfo type="int">
           <contact:name>John Doe</contact:name>
           <contact:name>John Doe</contact:name>
 +
          <contact:org>Example Inc.</contact:org>
           <contact:addr>
           <contact:addr>
-
             <contact:street>123 Example Dr.</contact:street>
+
             <contact:street>Main street 15</contact:street>
-
            <contact:street>Block A</contact:street>
+
             <contact:city>Rotterdam</contact:city>
-
            <contact:street>Suite 102</contact:street>
+
             <contact:sp>Zuid-Holland</contact:sp>
-
             <contact:city>Dulles</contact:city>
+
             <contact:pc>3024 BN</contact:pc>
-
             <contact:sp>VA</contact:sp>
+
-
             <contact:pc>20166-6503</contact:pc>
+
             <contact:cc>NL</contact:cc>
             <contact:cc>NL</contact:cc>
           </contact:addr>
           </contact:addr>
         </contact:postalInfo>
         </contact:postalInfo>
-
         <contact:voice>+1.7035555555</contact:voice>
+
         <contact:voice>+31.104482299</contact:voice>
-
         <contact:fax>+1.7035555556</contact:fax>
+
         <contact:fax>+31.102440250</contact:fax>
         <contact:email>jdoe@example.com</contact:email>
         <contact:email>jdoe@example.com</contact:email>
         <contact:authInfo>
         <contact:authInfo>
Line 732: Line 742:
         <op:create>
         <op:create>
           <op:contact>
           <op:contact>
-
             <op:vat>$#$#09507882B01</op:vat>
+
             <op:vat>NL09507882B01</op:vat>
-
             <op:comments>hello dfsf</op:comments>
+
             <op:comments>Custom comment</op:comments>
             <op:gender>male</op:gender>
             <op:gender>male</op:gender>
             <op:birthDate>1982-10-23</op:birthDate>
             <op:birthDate>1982-10-23</op:birthDate>
-
             <op:birthCity>Novosibirsk</op:birthCity>
+
             <op:birthCity>Amsterdam</op:birthCity>
-
             <op:birthCountry>RU</op:birthCountry>
+
             <op:birthCountry>NL</op:birthCountry>
-
             <op:birthAddress>N-Dantchenko 139\1 - 32</op:birthAddress>
+
             <op:birthAddress>Hoofdstraat 32</op:birthAddress>
-
             <op:birthState>Siberia</op:birthState>
+
             <op:birthState>Nood-Holland</op:birthState>
-
             <op:birthZipcode>630048</op:birthZipcode>
+
             <op:birthZipcode>1000 AA</op:birthZipcode>
-
             <op:companyRegistrationCity>Moscow</op:companyRegistrationCity>
+
             <op:companyRegistrationCity>Amsterdam</op:companyRegistrationCity>
             <op:companyRegistrationNumber>123456</op:companyRegistrationNumber>
             <op:companyRegistrationNumber>123456</op:companyRegistrationNumber>
             <op:companyRegistrationSubscriptionDate>2011-10-10</op:companyRegistrationSubscriptionDate>
             <op:companyRegistrationSubscriptionDate>2011-10-10</op:companyRegistrationSubscriptionDate>
-
             <op:headquartersAddress>Novosibirsk, Grebenshikova 11\1 - 14</op:headquartersAddress>
+
             <op:headquartersAddress></op:headquartersAddress>
-
             <op:headquartersCity>Rotterdam</op:headquartersCity>
+
             <op:headquartersCity></op:headquartersCity>
-
             <op:headquartersCountry>NL</op:headquartersCountry>
+
             <op:headquartersCountry></op:headquartersCountry>
-
             <op:headquartersState>Zuid-Holland</op:headquartersState>
+
             <op:headquartersState></op:headquartersState>
-
             <op:headquartersZipcode>3014 GJ</op:headquartersZipcode>
+
             <op:headquartersZipcode></op:headquartersZipcode>
-
             <op:socialSecurityNumber>987642314</op:socialSecurityNumber>
+
             <op:socialSecurityNumber></op:socialSecurityNumber>
-
             <op:passportNumber>123987642314</op:passportNumber>
+
             <op:passportNumber></op:passportNumber>
-
            <op:cifNifNumber>1231123123</op:cifNifNumber>
+
-
            <op:costCenter>111111</op:costCenter>
+
-
            <op:costCategory>222222</op:costCategory>
+
-
            <op:purchaseOrderNumber>33333333</op:purchaseOrderNumber>
+
-
            <op:projectCode>4444</op:projectCode>
+
-
            <op:internalReference>55555</op:internalReference>
+
           </op:contact>
           </op:contact>
         </op:create>
         </op:create>
Line 764: Line 768:
   </command>
   </command>
  </epp>  
  </epp>  
 +
 +
* '''<contact:postalInfo>''' ''type'' attribute is restricted to only one value: ''int''
 +
* '''<contact:id>''' is ignored by Openprovider
 +
* '''<contact:pw>''' is ignored by Openprovider
 +
* '''<contact:disclose>''' is ignored by Openprovider
;Response:
;Response:
Line 774: Line 783:
     <resData>
     <resData>
       <contact:creData xmlns:contact="urn:ietf:params:xml:ns:contact-1.0">
       <contact:creData xmlns:contact="urn:ietf:params:xml:ns:contact-1.0">
-
         <contact:id>P-JMD24</contact:id>
+
         <contact:id>IB000545-NL</contact:id>
-
         <contact:crDate>2009-04-23T11:59:29.0Z</contact:crDate>
+
         <contact:crDate>2012-07-23T11:59:29.0Z</contact:crDate>
       </contact:creData>
       </contact:creData>
     </resData>
     </resData>
Line 785: Line 794:
  </epp>
  </epp>
-
 
-
'''<contact:postalInfo> <font color=red>type</font>''' attribute restricted to only one status:
 
-
* '''type = "int"''' (internationalized form)
 
-
 
-
'''<font color=red><contact:pw/> </font> element''' is NOT used but required by EPP protocol, leave it blank
 
-
 
-
'''<font color=red><contact:disclose/> </font> element''' is NOT supported
 
===Delete===
===Delete===
Line 800: Line 802:
     <delete>
     <delete>
       <contact:delete 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:delete 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>P-JMD24</contact:id>
+
         <contact:id>IB000545-NL</contact:id>
       </contact:delete>
       </contact:delete>
     </delete>
     </delete>
Line 820: Line 822:
   </response>
   </response>
  </epp>
  </epp>
 +
===Info===
===Info===
Line 828: Line 831:
     <info>
     <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: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>P-JMD24</contact:id>
+
         <contact:id>IB000545-NL</contact:id>
       </contact:info>
       </contact:info>
     </info>
     </info>
Line 844: Line 847:
     <resData>
     <resData>
       <contact:infData xmlns:contact="urn:ietf:params:xml:ns:contact-1.0">
       <contact:infData xmlns:contact="urn:ietf:params:xml:ns:contact-1.0">
-
         <contact:id>P-JMD24</contact:id>
+
         <contact:id>IB000545-NL</contact:id>
         <contact:roid>495726825335031_CONTACT-OPENPROV</contact:roid>
         <contact:roid>495726825335031_CONTACT-OPENPROV</contact:roid>
         <contact:status s="ok"/>
         <contact:status s="ok"/>
Line 851: Line 854:
           <contact:org>Example Inc.</contact:org>
           <contact:org>Example Inc.</contact:org>
           <contact:addr>
           <contact:addr>
-
             <contact:street>123 Example Dr.</contact:street>
+
             <contact:street>Main Street 15</contact:street>
-
            <contact:street>Suite 100</contact:street>
+
             <contact:city>Rotterdam</contact:city>
-
             <contact:city>Dulles</contact:city>
+
             <contact:sp>Zuid-Holland</contact:sp>
-
             <contact:sp>VA</contact:sp>
+
             <contact:pc>3024 BN</contact:pc>
-
             <contact:pc>20166-6503</contact:pc>
+
             <contact:cc>NL</contact:cc>
-
             <contact:cc>US</contact:cc>
+
           </contact:addr>
           </contact:addr>
         </contact:postalInfo>
         </contact:postalInfo>
-
         <contact:voice>+1.7035555555</contact:voice>
+
         <contact:voice>+31.104482299</contact:voice>
-
         <contact:fax>+1.7035555556</contact:fax>
+
         <contact:fax>+31.102440250</contact:fax>
         <contact:email>jdoe@example.com</contact:email>
         <contact:email>jdoe@example.com</contact:email>
-
         <contact:clID>opdrs4</contact:clID>
+
         <contact:clID>username</contact:clID>
         <contact:crID>UNSUPPORTED</contact:crID>
         <contact:crID>UNSUPPORTED</contact:crID>
         <contact:crDate>2012-07-20T07:59:26.0Z</contact:crDate>
         <contact:crDate>2012-07-20T07:59:26.0Z</contact:crDate>
-
         <contact:upID>opdrs4</contact:upID>
+
         <contact:upID>username</contact:upID>
         <contact:upDate>2012-07-20T07:59:26.0Z</contact:upDate>
         <contact:upDate>2012-07-20T07:59:26.0Z</contact:upDate>
       </contact:infData>
       </contact:infData>
Line 875: Line 877:
             <op:contact>
             <op:contact>
               <op:gender>male</op:gender>
               <op:gender>male</op:gender>
-
               <op:birthAddress>N-Dantchenko 139\1 - 32</op:birthAddress>
+
               <op:birthAddress></op:birthAddress>
-
               <op:birthCity>Novosibirsk</op:birthCity>
+
               <op:birthCity></op:birthCity>
-
               <op:birthCountry>RU</op:birthCountry>
+
               <op:birthCountry></op:birthCountry>
               <op:birthDate>1982-10-23</op:birthDate>
               <op:birthDate>1982-10-23</op:birthDate>
-
               <op:birthState>Siberia</op:birthState>
+
               <op:birthState></op:birthState>
-
               <op:birthZipcode>630048</op:birthZipcode>
+
               <op:birthZipcode></op:birthZipcode>
-
              <op:cifNifNumber>1231123123</op:cifNifNumber>
+
               <op:companyRegistrationCity>Amsterdam</op:companyRegistrationCity>
-
               <op:companyRegistrationCity>Moscow</op:companyRegistrationCity>
+
               <op:companyRegistrationNumber>123456</op:companyRegistrationNumber>
               <op:companyRegistrationNumber>123456</op:companyRegistrationNumber>
               <op:companyRegistrationSubscriptionDate>2011-10-10</op:companyRegistrationSubscriptionDate>
               <op:companyRegistrationSubscriptionDate>2011-10-10</op:companyRegistrationSubscriptionDate>
-
              <op:costCategory>222222</op:costCategory>
+
               <op:headquartersAddress></op:headquartersAddress>
-
              <op:costCenter>111111</op:costCenter>
+
               <op:headquartersCity></op:headquartersCity>
-
               <op:headquartersAddress>Novosibirsk, Grebenshikova 11\1 - 14</op:headquartersAddress>
+
               <op:headquartersCountry></op:headquartersCountry>
-
               <op:headquartersCity>Rotterdam</op:headquartersCity>
+
               <op:headquartersState></op:headquartersState>
-
               <op:headquartersCountry>NL</op:headquartersCountry>
+
               <op:headquartersZipcode></op:headquartersZipcode>
-
               <op:headquartersState>Zuid-Holland</op:headquartersState>
+
               <op:passportNumber></op:passportNumber>
-
               <op:headquartersZipcode>3014 GJ</op:headquartersZipcode>
+
               <op:socialSecurityNumber></op:socialSecurityNumber>
-
              <op:internalReference>55555</op:internalReference>
+
-
               <op:passportNumber>123987642314</op:passportNumber>
+
-
              <op:projectCode>4444</op:projectCode>
+
-
              <op:purchaseOrderNumber>33333333</op:purchaseOrderNumber>
+
-
               <op:socialSecurityNumber>987642314</op:socialSecurityNumber>
+
             </op:contact>
             </op:contact>
           </op:infData>
           </op:infData>
Line 909: Line 905:
  </epp>
  </epp>
 +
* '''Not supported output values''': crID, crDate, upDate
-
'''<font color=red>Not supported</font>''' output values:
+
===Transfer===
-
* <font color=red>crID</font>
+
''Not available''
-
* <font color=red>crDate</font>
+
-
* <font color=red>upDate</font>
+
-
 
+
-
===Transfer (not available)===
+
===Update===
===Update===
Line 924: Line 917:
     <update>
     <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: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>P-JMD24</contact:id>
+
         <contact:id>IB000545-NL</contact:id>
         <contact:chg>
         <contact:chg>
           <contact:postalInfo type="int">
           <contact:postalInfo type="int">
             <contact:org/>
             <contact:org/>
             <contact:addr>
             <contact:addr>
-
               <contact:street>124 Example Dr.</contact:street>
+
               <contact:street>Street 18</contact:street>
-
              <contact:street>Suite 200</contact:street>
+
               <contact:city>Amsterdam</contact:city>
-
               <contact:city>Dulles</contact:city>
+
               <contact:sp>NH</contact:sp>
-
               <contact:sp>VA</contact:sp>
+
               <contact:pc>1000 AA</contact:pc>
-
               <contact:pc>20166-6503</contact:pc>
+
               <contact:cc>NL</contact:cc>
-
               <contact:cc>US</contact:cc>
+
             </contact:addr>
             </contact:addr>
           </contact:postalInfo>
           </contact:postalInfo>
-
           <contact:voice>+1.7034444444</contact:voice>
+
           <contact:voice>+31.201234567</contact:voice>
           <contact:fax/>
           <contact:fax/>
         </contact:chg>
         </contact:chg>
Line 947: Line 939:
           <op:contact>
           <op:contact>
             <op:chg>
             <op:chg>
-
               <op:vat>123245443</op:vat>
+
               <op:vat>NL123245443B01</op:vat>
-
               <op:comments>yohoho</op:comments>
+
               <op:comments></op:comments>
-
               <op:birthAddress>N-Dantchenko 139\1 - 32</op:birthAddress>
+
               <op:birthAddress></op:birthAddress>
-
               <op:birthCity>Novosibirsk</op:birthCity>
+
               <op:birthCity></op:birthCity>
-
               <op:birthCountry>RU</op:birthCountry>
+
               <op:birthCountry></op:birthCountry>
               <op:birthDate>1982-10-23</op:birthDate>
               <op:birthDate>1982-10-23</op:birthDate>
-
               <op:birthState>Siberia</op:birthState>
+
               <op:birthState></op:birthState>
-
               <op:birthZipcode>630048</op:birthZipcode>
+
               <op:birthZipcode></op:birthZipcode>
-
              <op:cifNifNumber>1231123123</op:cifNifNumber>
+
               <op:companyRegistrationCity></op:companyRegistrationCity>
-
               <op:companyRegistrationCity>Moscow</op:companyRegistrationCity>
+
               <op:companyRegistrationNumber></op:companyRegistrationNumber>
-
               <op:companyRegistrationNumber>123456</op:companyRegistrationNumber>
+
               <op:companyRegistrationSubscriptionDate>2011-10-10</op:companyRegistrationSubscriptionDate>
               <op:companyRegistrationSubscriptionDate>2011-10-10</op:companyRegistrationSubscriptionDate>
-
              <op:costCategory>222222</op:costCategory>
+
               <op:headquartersAddress></op:headquartersAddress>
-
              <op:costCenter>111111</op:costCenter>
+
               <op:headquartersCity></op:headquartersCity>
-
               <op:headquartersAddress>Novosibirsk, Grebenshikova 11\1 - 14</op:headquartersAddress>
+
               <op:headquartersCountry></op:headquartersCountry>
-
               <op:headquartersCity>Rotterdam</op:headquartersCity>
+
               <op:headquartersState></op:headquartersState>
-
               <op:headquartersCountry>NL</op:headquartersCountry>
+
               <op:headquartersZipcode></op:headquartersZipcode>
-
               <op:headquartersState>Zuid-Holland</op:headquartersState>
+
               <op:passportNumber></op:passportNumber>
-
               <op:headquartersZipcode>3014 GJ</op:headquartersZipcode>
+
               <op:socialSecurityNumber></op:socialSecurityNumber>
-
              <op:internalReference>55555</op:internalReference>
+
-
               <op:passportNumber>123987642314</op:passportNumber>
+
-
              <op:projectCode>4444</op:projectCode>
+
-
              <op:purchaseOrderNumber>33333333</op:purchaseOrderNumber>
+
-
               <op:socialSecurityNumber>987642314</op:socialSecurityNumber>
+
             </op:chg>
             </op:chg>
           </op:contact>
           </op:contact>
Line 979: Line 965:
   </command>
   </command>
  </epp>
  </epp>
 +
 +
* '''<contact:postalInfo>''' ''type'' attribute is restricted to only one value: ''int''
 +
* '''<contact:status>''' and it's attributes are ignored by Openprovider
 +
* '''<contact:pw>''' is ignored by Openprovider but required by EPP protocol, leave it blank
 +
* '''<contact:disclose>''' is ignored by Openprovider
;Response:
;Response:
Line 994: Line 985:
  </epp>
  </epp>
-
'''<contact:postalInfo> <font color=red>type</font>''' attribute restricted to only one status:
 
-
* '''type = "int"''' (internationalized form)
 
-
'''<font color=red><contact:pw/> </font> element''' is NOT used but required by EPP protocol, leave it blank
+
==Host==
-
 
+
''Not available''
-
'''<font color=red><contact:disclose/> </font> element''' is NOT supported
+
-
 
+
-
'''<font color=red><contact:status/> </font> element''' and its attributes are NOT supported
+
-
 
+
-
==Host (not available)==
+
==Poll==
==Poll==
Line 1,037: Line 1,021:
* '''<op:title/>''' - transaction title
* '''<op:title/>''' - transaction title
* '''<op:description/>''' - short transaction description  
* '''<op:description/>''' - short transaction description  
-
* '''<op:registryMessage/>''' - registry message
+
* '''<op:registryMessage/>''' - registry message containing more information
* '''<op:comments/>''' - can contain Openprovider's comments, advices, instructions
* '''<op:comments/>''' - can contain Openprovider's comments, advices, instructions
* '''<op:attachment/>''' - attachment element(s) can contain any base64 encoded documents received from registry
* '''<op:attachment/>''' - attachment element(s) can contain any base64 encoded documents received from registry
-
 
Line 1,155: Line 1,138:
         <domain:name>example.nl</domain:name>
         <domain:name>example.nl</domain:name>
         <domain:trStatus>serverCancelled</domain:trStatus>
         <domain:trStatus>serverCancelled</domain:trStatus>
-
         <domain:reID>user1</domain:reID>
+
         <domain:reID>username</domain:reID>
         <domain:reDate>2012-09-01T20:30:20.0Z</domain:reDate>
         <domain:reDate>2012-09-01T20:30:20.0Z</domain:reDate>
         <domain:acID>UNSUPPORTED</domain:acID>
         <domain:acID>UNSUPPORTED</domain:acID>
Line 1,210: Line 1,193:
               <op:name>example.nl</op:name>
               <op:name>example.nl</op:name>
               <op:trStatus>pending</op:trStatus>
               <op:trStatus>pending</op:trStatus>
-
               <op:reID>user1</op:reID>
+
               <op:reID>username</op:reID>
               <op:reDate>2012-08-01T20:30:20.0Z</op:reDate>
               <op:reDate>2012-08-01T20:30:20.0Z</op:reDate>
               <op:acID>UNSUPPORTED</op:acID>
               <op:acID>UNSUPPORTED</op:acID>
Line 1,255: Line 1,238:
         <domain:roid>140_DOMAIN-OPENPROV</domain:roid>
         <domain:roid>140_DOMAIN-OPENPROV</domain:roid>
         <domain:status s="inactive"/>
         <domain:status s="inactive"/>
-
         <domain:clID>user1</domain:clID>
+
         <domain:clID>username</domain:clID>
       </domain:infData>
       </domain:infData>
     </resData>
     </resData>

Revision as of 11:34, 21 September 2012

Contents

EPP interface specifications

Introduction

EPP (Extensible Provisioning Protocol) is the communication standard for most registries. The EPP interface of Openprovider thus provides an interface that follows a standard, simplifying integration for any company that already implemented an EPP interface to another registry in the past.

The EPP interface is a layer on top of the general Openprovider API. This increases maintainability and stability, but might drop speed a little because of the translation from EPP to API format.

  • Who should use the EPP interface?
    • Customers already having an EPP implementation to another domain provider. Connecting to the EPP interface of Openprovider is the easiest way for a quick start.
  • Who should use the general Openprovider API?
    • Customers that do not have implemented EPP yet: the Openprovider API is easier to implement and use
    • Customers that want to sell not only domains: the EPP interface only supports domain and contact management, no support for SSL, licenses and other products

In general: if you have no specific reason to use EPP, we recommend the Openprovider API.

Scope

The EPP interface is built for domains and contacts only. For all other products, the general Openprovider API should be used.

Reference to RFCs

RFC 5730 Extensible Provisioning Protocol (EPP) RFC 5731 Extensible Provisioning Protocol (EPP) Domain Name Mapping RFC 5733 Extensible Provisioning Protocol (EPP) Contact Mapping

Differences

  • Cookies are used to keep a session alive. After the login command, the server returns a cookie session_id which must be used in all following requests to the server until closing the session.
  • DNSSEC is not yet supported.
  • Although not against the RFCs, please note that Openprovider uses a lot of extensions to be able to cover all TLD-specific requirements.

Example

Not yet available

Session

Hello

Request
<?xml version="1.0" encoding="UTF-8"?>                                                   
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">                                              
  <hello/>                                                                                  
</epp>
Response
<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
  <greeting>
    <svID>Openprovider EPP Server</svID>
    <svDate>2012-07-05T16:08:04Z</svDate>
    <svcMenu>
      <version>1.0</version>
      <lang>en</lang>
      <objURI>urn:ietf:params:xml:ns:domain-1.0</objURI>
      <objURI>urn:ietf:params:xml:ns:contact-1.0</objURI>
      <svcExtension>
        <extURI>http://www.openprovider.nl/epp/xml/opprov-1.0</extURI>
      </svcExtension>
    </svcMenu>
    <dcp>
      <access>
        <all/>
      </access>
      <statement>
        <purpose>
          <admin/>
          <prov/>
        </purpose>
        <recipient>
          <ours/>
          <public/>
        </recipient>
        <retention>
          <stated/>
        </retention>
      </statement>
    </dcp>
  </greeting>
</epp>

Login

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>username</clID>
      <pw>password</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>
        <svcExtension>
          <extURI>urn:ietf:params:xml:ns:rgp-1.0</extURI>
          <extURI>http://www.openprovider.nl/epp/xml/opprov-1.0</extURI>
        </svcExtension>
      </svcs>
    </login>
    <clTRID>ABC-12345</clTRID>
  </command>
</epp>
Response
<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
  <response>
    <result code="1000">
      <msg>Command completed successfully</msg>
    </result>
    <trID>
      <clTRID>ABC-12345</clTRID>
      <svTRID>41E31A2F-1B6A-4BFA-AE07-00A4DE8FCC0C</svTRID>
    </trID>
  </response>
</epp>

Important: together with the response, the server returns a cookie session_id which must be used in all following requests to the server until closing the session.

Logout

Request
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
  <command>
    <logout/>
    <clTRID>83EE2B34-2385-11DE-9267-8000000019CE</clTRID>
  </command>
</epp>
Response
<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
  <response>
    <result code="1500">
      <msg>Command completed successfully; ending session</msg>
    </result>
    <trID>
      <clTRID>83EE2B34-2385-11DE-9267-8000000019CE</clTRID>
      <svTRID>180372ED-5E05-4718-8A73-40B37AE37D62</svTRID>
    </trID>
  </response>
</epp>

Domain

Check

Request
<?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.net</domain:name>
        <domain:name>example.org</domain:name>
      </domain:check>
    </check>
    <clTRID>C68D3D5A-2F3C-11DE-8EF9-80000000DC4F</clTRID>
  </command>
</epp>
Response
<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
  <response>
    <result code="1000">
      <msg>Command completed successfully</msg>
    </result>
    <resData xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
      <domain:chkData>
        <domain:cd>
          <domain:name avail="1">example.net</domain:name>
        </domain:cd>
        <domain:cd>
          <domain:name avail="0">example.org</domain:name>
          <domain:reason>Domain name not available</domain:reason>
        </domain:cd>
      </domain:chkData>
    </resData>
    <trID>
      <clTRID>C68D3D5A-2F3C-11DE-8EF9-80000000DC4F</clTRID>
      <svTRID>B3E22269-EE9E-4E32-82C0-54C02400E396</svTRID>
    </trID>
  </response>
</epp>

Create

Request
<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
  <command>
    <create>
      <domain:create xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
        <domain:name>example.com</domain:name>
        <domain:period unit="y">1</domain:period>
        <domain:ns>
          <domain:hostAttr>
            <domain:hostName>ns1.example.com</domain:hostName>
            <domain:hostAddr ip="v6">2607:f0d0:1002:51::4</domain:hostAddr>
          </domain:hostAttr>
          <domain:hostAttr>
            <domain:hostName>ns2.example.com</domain:hostName>
            <domain:hostAddr ip="v4">123.123.123.123</domain:hostAddr>
          </domain:hostAttr>
        </domain:ns>
        <domain:registrant>FL902041-US</domain:registrant>
        <domain:contact type="admin">FL902041-US</domain:contact>
        <domain:contact type="tech">FL902041-US</domain:contact>
        <domain:authInfo>
          <domain:pw/>
        </domain:authInfo>
      </domain:create>
    </create>
    <extension>
      <op:ext xmlns:op="http://www.openprovider.nl/epp/xml/opprov-1.0">
        <op:create>
          <op:domain>
            <op:promoCode>PROMO2</op:promoCode>
            <op:useDomicile>false</op:useDomicile>
            <op:nsGroup></op:nsGroup>
            <op:comments>any comment here</op:comments>
            <op:autorenew>default</op:autorenew>
            <op:nsTemplateName></op:nsTemplateName>
          </op:domain>
        </op:create>
      </op:ext>
    </extension>
    <clTRID>3F169D90-411F-11DE-84A7-80000000274B</clTRID>
  </command>
</epp>
  • <domain:pw> parameter is required by the EPP protocol, but is ignored by Openprovider
  • <domain:contact>: the only supported contact types are admin and tech
  • <op:autorenew>: accepted values: on, off, default
  • <op:nsTemplateName>: can be used if <op:nsGroup> is dns-openprovider


Response
<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
  <response>
    <result code="1000">
      <msg>Command completed successfully</msg>
    </result>
    <resData xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
      <domain:creData xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
        <domain:name>example.com</domain:name>
        <domain:crDate>2012-07-17T14:41:03.0Z</domain:crDate>
        <domain:exDate>2012-07-29T14:41:03.0Z</domain:exDate>
      </domain:creData>
    </resData>
    <trID>
      <clTRID>3F169D90-411F-11DE-84A7-80000000274B</clTRID>
      <svTRID>6CEB9B8B-63CE-4925-BB69-C4BF89012266</svTRID>
    </trID>
  </response>
</epp>

Delete

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>example.com</domain:name>
      </domain:delete>
    </delete>
    <clTRID>734ABADA-3015-11DE-A6A7-800000008EDE</clTRID>
  </command>
</epp>
Response
<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
  <response>
    <resultcode="1000">
      <msg>Command completed successfully</msg>
    </result>
    <trID>
      <clTRID>734ABADA-3015-11DE-A6A7-800000008EDE</clTRID>
      <svTRID>77FC94EA-3015-11DE-9878-8D01B5F06CC6</svTRID>
    </trID>
  </response>
</epp>

Restore

Openprovider implements Domain Registry Grace Period Mapping for the Extensible Provisioning Protocol (EPP) partially for restore procedure. The EPP response on <domain:info> command for deleted domains that can be still restored has an additional extension section <rgp:infData/>, containing value pendingDelete:

<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
  <response>
    <result code="1000">
      <msg>Command completed successfully</msg>
    </result>
    <resData xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
      <domain:infData>
        ...
      </domain:infData>
    </resData>
    <extension>
      ...
      <rgp:infData xmlns:rgp="urn:ietf:params:xml:ns:rgp-1.0">
        <rgp:rgpStatus s="pendingDelete"/>
      </rgp:infData>
      ...
  </extension>
</epp>
Request
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<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>example.com</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>6A464E50-300A-11DE-B776-80000000AE6H</clTRID>
  </command>
</epp>

<domain:add/>, <domain:rem/> and <domain:chg/> must not contain any elements in it.

Reply
<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
  <response>
    <result code="1000">
      <msg>Command completed successfully</msg>
    </result>
    <trID>
      <clTRID>6A464E50-300A-11DE-B776-80000000AE6H</clTRID>
      <svTRID>7A7534DB-F45F-4E70-84D5-ABA480A5D101</svTRID>
    </trID>
  </response>
</epp>

Info

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>example.com</domain:name>
      </domain:info>
    </info>
    <clTRID>3F169D90-411F-11DE-84A7-80000000274B</clTRID>
  </command>
</epp>
Reply
<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
  <response>
    <result code="1000">
      <msg>Command completed successfully</msg>
    </result>
    <resData xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
      <domain:infData>
        <domain:name>example.com</domain:name>
        <domain:roid>762473_DOMAIN-OPENPROV</domain:roid>
        <domain:status s="ok"/>
        <domain:registrant>OT001234-NL</domain:registrant>
        <domain:contact type="admin">OM901234-US</domain:contact>
        <domain:contact type="tech">DD01234-NL</domain:contact>
        <domain:ns>
          <domain:hostAttr>
            <domain:hostName>ns1.example.com</domain:hostName>
            <domain:hostAddr ip="v4">123.123.123.123</domain:hostAddr>
          </domain:hostAttr>
          <domain:hostAttr>
            <domain:hostName>ns2.example.com</domain:hostName>
            <domain:hostAddr ip="v4">234.234.234.234</domain:hostAddr>
          </domain:hostAttr>
        </domain:ns>
        <domain:clID>username</domain:clID>
        <domain:crDate>2012-03-28T14:08:53.0Z</domain:crDate>
        <domain:exDate>2013-03-28T12:08:54.0Z</domain:exDate>
        <domain:authInfo>
          <domain:pw>AUTHCODE</domain:pw>
        </domain:authInfo>
      </domain:infData>
    </resData>
    <extension>
      <op:ext xmlns:op="http://www.openprovider.nl/epp/xml/opprov-1.0">
        <op:resData>
          <op:infData>
            <op:domain>
              <op:isLocked>false</op:isLocked>
              <op:reDate>2012-03-28T14:08:49.0Z</op:reDate>
              <op:renewalDate>2013-03-28T12:08:54.0Z</op:renewalDate>
              <op:canRenew>true</op:canRenew>
              <op:autorenew>default</op:autorenew>
              <op:useDomicile>false</op:useDomicile>
            </op:domain>
          </op:infData>
        </op:resData>
      </op:ext>
    </extension>
    <trID>
      <clTRID>3F169D90-411F-11DE-84A7-80000000274B</clTRID>
      <svTRID>CDAE7C10-A3D0-4EA7-B290-2E1A380A0690</svTRID>
    </trID>
  </response>
</epp>

Renew

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>example.com</domain:name>
        <domain:curExpDate>2012-02-18</domain:curExpDate>
        <domain:period unit="y">1</domain:period>
      </domain:renew>
    </renew>
    <clTRID>EF1F57D0-3013-11DE-8D9E-8000000041FC</clTRID>
  </command>
</epp>
  • <domain:curExpDate/> is required by EPP protocol but not used by current version of Openprovider software
Response
<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
  <response>
    <result code="1000">
      <msg>Command completed successfully</msg>
    </result>
    <resData>
      <domain:renData xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
        <domain:name>example.com</domain:name>
        <domain:exDate>2012-02-18T16:02:04.0Z</domain:exDate>
      </domain:renData>
    </resData>
    <trID>
      <clTRID>EF1F57D0-3013-11DE-8D9E-8000000041FC</clTRID>
      <svTRID>F7F750BE-3014-11DE-A523-A02790CC78DB</svTRID>
    </trID>
  </response>
</epp>

Transfer

Request Transfer

Request
<?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:op="http://www.openprovider.nl/epp/xml/opprov-1.0">
  <command>
    <transfer op="request">
      <domain:transfer>
        <domain:name>example.de</domain:name>
        <domain:authInfo>
          <domain:pw>AUTHCODE</domain:pw>
        </domain:authInfo>
      </domain:transfer>
    </transfer>
    <extension>
      <op:ext>
        <op:transfer>
          <op:domain>
            <op:registrant>FL902042-US</op:registrant>
            <op:contact type="admin">FL902042-US</op:contact>
            <op:contact type="tech">FL902042-US</op:contact>
            <op:ns>
              <domain:hostAttr>
                <domain:hostName>ns1.example.de</domain:hostName>
                <domain:hostAddr ip="v6">2607:f0d0:1002:51::4</domain:hostAddr>
              </domain:hostAttr>
              <domain:hostAttr>
                <domain:hostName>ns2.example.de</domain:hostName>
                <domain:hostAddr ip="v4">123.123.123.123</domain:hostAddr>
              </domain:hostAttr>
            </op:ns>
            <op:autorenew>on</op:autorenew>
            <op:nsGroup></op:nsGroup>
            <op:useDomicile>true</op:useDomicile>
            <op:comments>ANY COMMENT  HERE</op:comments>
            <op:promoCode>PROMOCODE</op:promoCode>
            <op:nsTemplateName></op:nsTemplateName>
          </op:domain>
        </op:transfer>
      </op:ext>
    </extension>
    <clTRID>EF1F57D0-3013-11DE-8D9E-8000000041FC</clTRID>
  </command>
</epp>
  • <domain:contact>: the only supported contact types are admin and tech
  • <op:autorenew>: accepted values: on, off, default
  • <op:nsTemplateName>: can be used if <op:nsGroup> is dns-openprovider
Reply
<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
  <response>
    <result code="1000">
      <msg>Command completed successfully</msg>
    </result>
    <resData xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
      <domain:trnData>
        <domain:name>example.de</domain:name>
        <domain:trStatus>pending</domain:trStatus>
        <domain:reID>username</domain:reID>
        <domain:reDate>2012-08-17T11:21:13.0Z</domain:reDate>
        <domain:acID>UNSUPPORTED</domain:acID>
        <domain:acDate>2012-08-17T11:21:13.0Z</domain:acDate>
        <domain:exDate>2012-08-17T11:21:13.0Z</domain:exDate>
      </domain:trnData>
    </resData>
    <trID>
      <clTRID>EF1F57D0-3013-11DE-8D9E-8000000041FC</clTRID>
      <svTRID>BE4FAFBF-177D-4632-9CE0-F5C02C4AAFB7</svTRID>
    </trID>
  </response>
</epp>
  • Not supported output parameters: acID, acDate, exDate
  • trStatus is restricted to 3 values:
    • serverApproved: the transfer is approved
    • pending
    • serverCancelled: the transfer is rejected or cancelled

Cancel Transfer

Not available

Approve Transfer

Request
<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
  <command>
    <transfer op="approve">
      <domain:transfer xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
        <domain:name>example.com</domain:name>
      </domain:transfer>
    </transfer>
    <clTRID>EF1F57D0-3013-11DE-8D9E-8000000041FC</clTRID>
  </command>
</epp>
Reply
<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
  <response>
    <result code="1000">
      <msg>Command completed successfully</msg>
    </result>
    <trID>
      <clTRID>EF1F57D0-3013-11DE-8D9E-8000000041FC</clTRID>
      <svTRID>DCE0BD68-769B-4EA4-AFF1-CC40DFEC578D</svTRID>
    </trID>
  </response>
</epp>

Query Transfer Status

Request
<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
  <command>
    <transfer op="query">
      <domain:transfer xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
        <domain:name>example.com</domain:name>
      </domain:transfer>
    </transfer>
    <clTRID>EF1F57D0-3013-11DE-8D9E-8000000041FC</clTRID>
  </command>
</epp>
Reply
<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
  <response>
    <result code="1000">
      <msg>Command completed successfully</msg>
    </result>
    <resData xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
      <domain:trnData>
        <domain:name>example.com</domain:name>
        <domain:trStatus>serverApproved</domain:trStatus>
        <domain:reID>username</domain:reID>
        <domain:reDate>2012-07-17T14:41:04.0Z</domain:reDate>
        <domain:acID>UNSUPPORTED</domain:acID>
        <domain:acDate>2012-07-17T14:41:21.0Z</domain:acDate>
        <domain:exDate>2012-07-17T14:41:21.0Z</domain:exDate>
      </domain:trnData>
    </resData>
    <trID>
      <clTRID>EF1F57D0-3013-11DE-8D9E-8000000041FC</clTRID>
      <svTRID>31ED84C0-CADA-45BA-87A1-85238465CF30</svTRID>
    </trID>
  </response>
</epp>
  • Not supported output parameters: acID, acDate, exDate
  • trStatus is restricted to 3 values:
    • serverApproved: the transfer is approved
    • pending
    • serverCancelled: the transfer is rejected or cancelled

Update

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>example.com</domain:name>
        <domain:add>
          <domain:ns>
            <domain:hostObj>ns1.example.net</domain:hostObj>
          </domain:ns>
          <domain:contact type="tech">DD004372-NL</domain:contact>
          <domain:status s="clientTransferProhibited"/>
        </domain:add>
        <domain:rem>
          <domain:ns>
            <domain:hostObj>ns1.example.com</domain:hostObj>
          </domain:ns>
          <domain:contact type="tech">JL901992-NL</domain:contact>
        </domain:rem>
        <domain:chg>
          <domain:registrant>OT000288-NL</domain:registrant>
          <domain:authInfo>
            <domain:pw/>
          </domain:authInfo>
        </domain:chg>
      </domain:update>
    </update>
    <extension>
      <op:ext xmlns:op="http://www.openprovider.nl/epp/xml/opprov-1.0">
        <op:update>
          <op:domain>
            <op:chg>
              <op:autorenew>on</op:autorenew>
              <op:useDomicile>false</op:useDomicile>
              <op:comments>Custom comment</op:comments>
              <op:nsGroup></op:nsGroup>
              <op:resetAuthCode>true</op:resetAuthCode>
            </op:chg>
          </op:domain>
        </op:update>
      </op:ext>
    </extension>
    <clTRID>6A464E50-300A-11DE-B776-80000000AE6H</clTRID>
  </command>
</epp>
Response
<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
  <response>
    <result code="1000">
      <msg>Command completed successfully</msg>
    </result>
    <trID>
      <clTRID>6A464E50-300A-11DE-B776-80000000AE6H</clTRID>
      <svTRID>E4509728-38CC-462F-BF9C-D7AFDB5420DF</svTRID>
    </trID>
  </response>
</epp>
  • <contact:pw/> element is NOT used but required by EPP protocol, leave it blank

Contact

Check

Request
<?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>
    <check>
      <contact:check xmlns:contact="urn:ietf:params:xml:ns:contact-1.0">
      <contact:id>IB000543-NL</contact:id>
      <contact:id>IB000544-NL</contact:id>
      </contact:check>
    </check>
    <clTRID>30F11A90-2FFB-11DE-ADDE-80000000D51D</clTRID>
  </command>
</epp>
Response
<?xml -version="1.0" encoding="UTF-8"?>
<epp -xmlns="urn:ietf:params:xml:ns:epp-1.0">
  <response>
    <result code="1000">
      <msg>Command completed successfully</msg>
    </result>
    <resData xmlns:contact="urn:ietf:params:xml:ns:contact-1.0">
      <contact:chkData>
        <contact:cd>
          <contact:id avail="0">IB000543-NL</contact:id>
        </contact:cd>
        <contact:cd>
          <contact:id avail="1">IB000544-NL</contact:id>
        </contact:cd>
      </contact:chkData>
    </resData>
    <trID>
      <clTRID>30F11A90-2FFB-11DE-ADDE-80000000D51D</clTRID>
      <svTRID>32C1BC3A-2FFB-11DE-B49B-B7731FA00EDE</svTRID>
    </trID>
  </response>
</epp>

Create

Request
<?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>IGNORED</contact:id>
        <contact:postalInfo type="int">
          <contact:name>John Doe</contact:name>
          <contact:org>Example Inc.</contact:org>
          <contact:addr>
            <contact:street>Main street 15</contact:street>
            <contact:city>Rotterdam</contact:city>
            <contact:sp>Zuid-Holland</contact:sp>
            <contact:pc>3024 BN</contact:pc>
            <contact:cc>NL</contact:cc>
          </contact:addr>
        </contact:postalInfo>
        <contact:voice>+31.104482299</contact:voice>
        <contact:fax>+31.102440250</contact:fax>
        <contact:email>jdoe@example.com</contact:email>
        <contact:authInfo>
          <contact:pw/>
        </contact:authInfo>
      </contact:create>
    </create>
    <extension>
      <op:ext xmlns:op="http://www.openprovider.nl/epp/xml/opprov-1.0">
        <op:create>
          <op:contact>
            <op:vat>NL09507882B01</op:vat>
            <op:comments>Custom comment</op:comments>
            <op:gender>male</op:gender>
            <op:birthDate>1982-10-23</op:birthDate>
            <op:birthCity>Amsterdam</op:birthCity>
            <op:birthCountry>NL</op:birthCountry>
            <op:birthAddress>Hoofdstraat 32</op:birthAddress>
            <op:birthState>Nood-Holland</op:birthState>
            <op:birthZipcode>1000 AA</op:birthZipcode>
            <op:companyRegistrationCity>Amsterdam</op:companyRegistrationCity>
            <op:companyRegistrationNumber>123456</op:companyRegistrationNumber>
            <op:companyRegistrationSubscriptionDate>2011-10-10</op:companyRegistrationSubscriptionDate>
            <op:headquartersAddress></op:headquartersAddress>
            <op:headquartersCity></op:headquartersCity>
            <op:headquartersCountry></op:headquartersCountry>
            <op:headquartersState></op:headquartersState>
            <op:headquartersZipcode></op:headquartersZipcode>
            <op:socialSecurityNumber></op:socialSecurityNumber>
            <op:passportNumber></op:passportNumber>
          </op:contact>
        </op:create>
      </op:ext>
    </extension>
    <clTRID>30FC8ABC-2FFE-11DE-9786-80000000A8C5</clTRID>
  </command>
</epp> 
  • <contact:postalInfo> type attribute is restricted to only one value: int
  • <contact:id> is ignored by Openprovider
  • <contact:pw> is ignored by Openprovider
  • <contact:disclose> is ignored by Openprovider
Response
<?xmlversion="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
  <response>
    <result code="1000">
      <msg>Command completed successfully</msg>
    </result>
    <resData>
      <contact:creData xmlns:contact="urn:ietf:params:xml:ns:contact-1.0">
        <contact:id>IB000545-NL</contact:id>
        <contact:crDate>2012-07-23T11:59:29.0Z</contact:crDate>
      </contact:creData>
    </resData>
    <trID>
      <clTRID>30FC8ABC-2FFE-11DE-9786-80000000A8C5</clTRID>
      <svTRID>331E69A0-2FFE-11DE-B163-D0A51393EAB9</svTRID>
    </trID>
  </response>
</epp>


Delete

Request
<?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>
    <delete>
      <contact:delete 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>IB000545-NL</contact:id>
      </contact:delete>
    </delete>
    <clTRID>FDB67388-2FFE-11DE-970B-80000000568C</clTRID>
  </command>
</epp>
Response
<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
  <response>
    <resultcode="1000">
      <msg>Command completed successfully</msg>
    </result>
    <trId>
      <clTRID>FDB67388-2FFE-11DE-970B-80000000568C</clTRID>
      <svTRID>29B5C6C2-3005-11DE-9BD1-C9EF1D79318A</svTRID>
    </trId>
  </response>
</epp>


Info

Request
<?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>
    <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>IB000545-NL</contact:id>
      </contact:info>
    </info>
    <clTRID>6662D288-2FFE-11DE-A0EB-80000000AAB4</clTRID>
  </command>
</epp>
Response
<?xml version="1.0" -encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
  <response>
    <result code="1000">
      <msg>Command completed successfully</msg>
    </result>
    <resData>
      <contact:infData xmlns:contact="urn:ietf:params:xml:ns:contact-1.0">
        <contact:id>IB000545-NL</contact:id>
        <contact:roid>495726825335031_CONTACT-OPENPROV</contact:roid>
        <contact:status s="ok"/>
        <contact:postalInfo>
          <contact:name>John Doe</contact:name>
          <contact:org>Example Inc.</contact:org>
          <contact:addr>
            <contact:street>Main Street 15</contact:street>
            <contact:city>Rotterdam</contact:city>
            <contact:sp>Zuid-Holland</contact:sp>
            <contact:pc>3024 BN</contact:pc>
            <contact:cc>NL</contact:cc>
          </contact:addr>
        </contact:postalInfo>
        <contact:voice>+31.104482299</contact:voice>
        <contact:fax>+31.102440250</contact:fax>
        <contact:email>jdoe@example.com</contact:email>
        <contact:clID>username</contact:clID>
        <contact:crID>UNSUPPORTED</contact:crID>
        <contact:crDate>2012-07-20T07:59:26.0Z</contact:crDate>
        <contact:upID>username</contact:upID>
        <contact:upDate>2012-07-20T07:59:26.0Z</contact:upDate>
      </contact:infData>
    </resData>
    <extension>
      <op:ext xmlns:op="http://www.openprovider.nl/epp/xml/opprov-1.0">
        <op:resData>
          <op:infData>
            <op:contact>
              <op:gender>male</op:gender>
              <op:birthAddress></op:birthAddress>
              <op:birthCity></op:birthCity>
              <op:birthCountry></op:birthCountry>
              <op:birthDate>1982-10-23</op:birthDate>
              <op:birthState></op:birthState>
              <op:birthZipcode></op:birthZipcode>
              <op:companyRegistrationCity>Amsterdam</op:companyRegistrationCity>
              <op:companyRegistrationNumber>123456</op:companyRegistrationNumber>
              <op:companyRegistrationSubscriptionDate>2011-10-10</op:companyRegistrationSubscriptionDate>
              <op:headquartersAddress></op:headquartersAddress>
              <op:headquartersCity></op:headquartersCity>
              <op:headquartersCountry></op:headquartersCountry>
              <op:headquartersState></op:headquartersState>
              <op:headquartersZipcode></op:headquartersZipcode>
              <op:passportNumber></op:passportNumber>
              <op:socialSecurityNumber></op:socialSecurityNumber>
            </op:contact>
          </op:infData>
        </op:resData>
      </op:ext>
    </extension>
    <trId>
      <clTRID>6662D288-2FFE-11DE-A0EB-80000000AAB4</clTRID>
      <svTRID>6BFBA8FA-2FFE-11DE-A1D9-ED9826062824</svTRID>
    </trId>
  </response>
</epp>
  • Not supported output values: crID, crDate, upDate

Transfer

Not available

Update

Request
<?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>
    <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>IB000545-NL</contact:id>
        <contact:chg>
          <contact:postalInfo type="int">
            <contact:org/>
            <contact:addr>
              <contact:street>Street 18</contact:street>
              <contact:city>Amsterdam</contact:city>
              <contact:sp>NH</contact:sp>
              <contact:pc>1000 AA</contact:pc>
              <contact:cc>NL</contact:cc>
            </contact:addr>
          </contact:postalInfo>
          <contact:voice>+31.201234567</contact:voice>
          <contact:fax/>
        </contact:chg>
      </contact:update>
    </update>
    <extension>
      <op:ext xmlns:op="http://www.openprovider.nl/epp/xml/opprov-1.0">
        <op:update>
          <op:contact>
            <op:chg>
              <op:vat>NL123245443B01</op:vat>
              <op:comments></op:comments>
              <op:birthAddress></op:birthAddress>
              <op:birthCity></op:birthCity>
              <op:birthCountry></op:birthCountry>
              <op:birthDate>1982-10-23</op:birthDate>
              <op:birthState></op:birthState>
              <op:birthZipcode></op:birthZipcode>
              <op:companyRegistrationCity></op:companyRegistrationCity>
              <op:companyRegistrationNumber></op:companyRegistrationNumber>
              <op:companyRegistrationSubscriptionDate>2011-10-10</op:companyRegistrationSubscriptionDate>
              <op:headquartersAddress></op:headquartersAddress>
              <op:headquartersCity></op:headquartersCity>
              <op:headquartersCountry></op:headquartersCountry>
              <op:headquartersState></op:headquartersState>
              <op:headquartersZipcode></op:headquartersZipcode>
              <op:passportNumber></op:passportNumber>
              <op:socialSecurityNumber></op:socialSecurityNumber>
            </op:chg>
          </op:contact>
        </op:update>
      </op:ext>
    </extension>
    <clTRID>C69B3942-2FFE-11DE-A4BB-8000000034E6</clTRID>
  </command>
</epp>
  • <contact:postalInfo> type attribute is restricted to only one value: int
  • <contact:status> and it's attributes are ignored by Openprovider
  • <contact:pw> is ignored by Openprovider but required by EPP protocol, leave it blank
  • <contact:disclose> is ignored by Openprovider
Response
<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
  <response>
    <result code="1000">
      <msg>Command completed successfully</msg>
    </result>
    <trId>
      <clTRID>C69B3942-2FFE-11DE-A4BB-8000000034E6</clTRID>
      <svTRID>D70E91A2-2FFE-11DE-9BEA-D9241CA305BD</svTRID>
    </trId>
  </response>
</epp>


Host

Not available

Poll

REQ

Request

<?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>
    <poll op="req"/>
    <clTRID>96ABFF8A-2385-11DE-A5FC-8000000002DF</clTRID>
  </command>
</epp>

Reply

Every reply message will contain a section <op:polData/> that includes the following required fields:

  • <op:action/> stands for action on the domain:
    • create - domain registration
    • trade - incoming trade of domain
    • outgoing_trade - outgoing trade of domain
    • transfer - incoming trade of domain
    • outgoing_transfer - outgoing trade of domain
    • delete - domain deletion
    • update - update domain's information
  • <op:status/> stands for a status of the operation:
    • complete - operation completed successfully
    • pending - operation in progress
    • onhold - server is waiting for operation issuer input
    • reject - operation is rejected by server or registry
    • error - operation failed because of errors
    • cancel - operation is cancelled by issuer

More information can be found in the optional elements:

  • <op:transaction/> - transaction alphabetic ID
  • <op:title/> - transaction title
  • <op:description/> - short transaction description
  • <op:registryMessage/> - registry message containing more information
  • <op:comments/> - can contain Openprovider's comments, advices, instructions
  • <op:attachment/> - attachment element(s) can contain any base64 encoded documents received from registry


Reply (CREATE)
<?xml version="1.0" encoding="UTF-8"?>
<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="1" id="129">
      <qDate>2012-08-05T12:42:04.0Z</qDate>
      <msg>TRANSACTION</msg>
    </msgQ>
    <resData>
      <domain:creData xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
        <domain:name>example.com</domain:name>
        <domain:crDate>2012-08-01T20:30:20.0Z</domain:crDate>
        <domain:exDate>2013-08-31T20:40:20.0Z</domain:exDate>
      </domain:creData>
    </resData>
    <extension>
      <op:ext xmlns:op="http://www.openprovider.nl/epp/xml/opprov-1.0">
        <op:resData>
          <op:creData>
            <op:domain>
              <op:polData>
                <op:action>ACTION</op:action>
                <op:status>STATUS</op:status>
                <op:transaction>TRANSACTION</op:transaction>
                <op:title>MESSAGE TITLE</op:title>
                <op:description>MESSAGE DESCRIPTION</op:description>
                <op:registryMessage>REGISTRY MESSAGE</op:registryMessage>
                <op:attachment>
                  <op:name>FILE NAME</op:name>
                  <op:body>BASE64 ENCODED FILE CONTENT</op:body>
                </op:attachment>
              </op:polData>
            </op:domain>
          </op:creData>
        </op:resData>
      </op:ext>
    </extension>
    <trId>
      <clTRID>96ABFF8A-2385-11DE-A5FC-8000000002DF</clTRID>
      <svTRID>D0D58AF1-E771-4D0E-8653-8B58ED909DE7</svTRID>
    </trId>
  </response>
</epp>
Reply (UPDATE/DELETE)
<?xml version="1.0" encoding="UTF-8"?>
<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="4" id="132">
      <qDate>2012-08-05T12:42:06.0Z</qDate>
      <msg>TRANSACTION</msg>
    </msgQ>
    <resData>
      <domain:panData xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
        <domain:name paResult="0">example.nl</domain:name>
        <domain:paTRID>
          <clTRID>6A464E50-300A-11DE-B776-80000000AE6H</clTRID>
          <svTRID>733582A7-1428-4F1C-8A02-CAEC83A58F8E</svTRID>
        </domain:paTRID>
        <domain:paDate>2012-08-05T12:42:05.0Z</domain:paDate>
      </domain:panData>
    </resData>
    <extension>
      <op:ext xmlns:op="http://www.openprovider.nl/epp/xml/opprov-1.0">
        <op:resData>
          <op:panData>
            <op:domain>
              <op:polData>
                <op:action>ACTION</op:action>
                <op:status>STATUS</op:status>
                <op:transaction>TRANSACTION</op:transaction>
                <op:title>MESSAGE TITLE</op:title>
                <op:description>MESSAGE DESCRIPTION</op:description>
                <op:registryMessage>REGISTRY MESSAGE</op:registryMessage>
                <op:attachment>
                  <op:name>FILE NAME</op:name>
                  <op:body>BASE64 ENCODED FILE CONTENT</op:body>
                </op:attachment>
              </op:polData>
            </op:domain>
          </op:panData>
        </op:resData>
      </op:ext>
    </extension>
    <trId>
      <clTRID>96ABFF8A-2385-11DE-A5FC-8000000002DF</clTRID>
      <svTRID>09826A4F-4620-44CC-B73C-400D03FEAFC3</svTRID>
    </trId>
  </response>
</epp>
Reply (TRANSFER)
<?xml version="1.0" encoding="UTF-8"?>
<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="3" id="135">
      <qDate>2012-08-05T14:44:40.0Z</qDate>
      <msg>TRANSACTION</msg>
    </msgQ>
    <resData>
      <domain:trnData>
        <domain:name>example.nl</domain:name>
        <domain:trStatus>serverCancelled</domain:trStatus>
        <domain:reID>username</domain:reID>
        <domain:reDate>2012-09-01T20:30:20.0Z</domain:reDate>
        <domain:acID>UNSUPPORTED</domain:acID>
        <domain:acDate>2012-08-05T14:44:43.0Z</domain:acDate>
        <domain:exDate>2013-10-31T20:40:20.0Z</domain:exDate>
      </domain:trnData>
    </resData>
    <extension>
      <op:ext xmlns:op="http://www.openprovider.nl/epp/xml/opprov-1.0">
        <op:resData>
          <op:trnData>
            <op:domain>
              <op:polData>
                <op:action>ACTION</op:action>
                <op:status>STATUS</op:status>
                <op:transaction>TRANSACTION</op:transaction>
                <op:title>MESSAGE TITLE</op:title>
                <op:description>MESSAGE DESCRIPTION</op:description>
                <op:registryMessage>REGISTRY MESSAGE</op:registryMessage>
                <op:attachment>
                <op:name>FILE NAME</op:name>
                <op:body>BASE64 ENCODED FILE CONTENT</op:body>
                </op:attachment>
              </op:polData>
            </op:domain>
          </op:trnData>
        </op:resData>
      </op:ext>
    </extension>
    <trId>
      <clTRID>96ABFF8A-2385-11DE-A5FC-8000000002DF</clTRID>
      <svTRID>09826A4F-4620-44CC-B73C-400D03FEAFC3</svTRID>
    </trId>
  </response>
</epp>


Reply (TRADE)
<?xml version="1.0" encoding="UTF-8"?>
<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="3" id="131">
      <qDate>2012-08-05T12:42:06.0Z</qDate>
      <msg>TRANSACTION</msg>
    </msgQ>
    <extension>
      <op:ext xmlns:op="http://www.openprovider.nl/epp/xml/opprov-1.0">
        <op:resData>
          <op:trdData>
            <op:domain>
              <op:name>example.nl</op:name>
              <op:trStatus>pending</op:trStatus>
              <op:reID>username</op:reID>
              <op:reDate>2012-08-01T20:30:20.0Z</op:reDate>
              <op:acID>UNSUPPORTED</op:acID>
              <op:acDate>2012-08-05T12:42:08.0Z</op:acDate>
              <op:exDate>2013-10-31T20:40:20.0Z</op:exDate>
              <op:polData>
                <op:action>ACTION</op:action>
                <op:status>STATUS</op:status>
                <op:transaction>TRANSACTION</op:transaction>
                <op:title>MESSAGE TITLE</op:title>
                <op:description>MESSAGE DESCRIPTION</op:description>
                <op:registryMessage>REGISTRY MESSAGE</op:registryMessage>
                <op:attachment>
                  <op:name>FILE NAME</op:name>
                  <op:body>BASE64 ENCODED FILE CONTENT</op:body>
                </op:attachment>
              </op:polData>
            </op:domain>
          </op:trdData>
        </op:resData>
      </op:ext>
    </extension>
    <trId>
      <clTRID>96ABFF8A-2385-11DE-A5FC-8000000002DF</clTRID>
      <svTRID>F83DDF05-F54C-44DD-A55E-172CA7EE2819</svTRID>
    </trId>
  </response>
</epp>
Reply (OUTGOING TRANSFER/TRADE)
<?xml version="1.0" encoding="UTF-8"?>
<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="3" id="140">
      <qDate>2012-08-05T14:57:14.0Z</qDate>
      <msg>TRANSACTION</msg>
    </msgQ>
    <resData xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
      <domain:infData>
        <domain:name>example.nl</domain:name>
        <domain:roid>140_DOMAIN-OPENPROV</domain:roid>
        <domain:status s="inactive"/>
        <domain:clID>username</domain:clID>
      </domain:infData>
    </resData>
    <extension>
      <op:ext xmlns:op="http://www.openprovider.nl/epp/xml/opprov-1.0">
        <op:resData>
          <op:infData>
            <op:domain>
              <op:polData>
                <op:action>ACTION</op:action>
                <op:status>STATUS</op:status>
                <op:transaction>TRANSACTION</op:transaction>
                <op:title>MESSAGE TITLE</op:title>
                <op:description>MESSAGE DESCRIPTION</op:description>
                <op:registryMessage>REGISTRY MESSAGE</op:registryMessage>
                <op:attachment>
                  <op:name>FILE NAME</op:name>
                  <op:body>BASE64 ENCODED FILE CONTENT</op:body>
                </op:attachment>
              </op:polData>
            </op:domain>
          </op:infData>
        </op:resData>
      </op:ext>
    </extension>
    <trId>
      <clTRID>96ABFF8A-2385-11DE-A5FC-8000000002DF</clTRID>
      <svTRID>4C094AED-DC31-49D1-A462-AB68C5956C3E</svTRID>
    </trId>
  </response>
</epp>

ACK

Request
<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
  <command>
    <poll op="ack" msgID="71"/>
    <clTRID>ABC-12346</clTRID>
  </command>
</epp>
Reply (queue has messages)
<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
  <response>
    <result code="1000">
      <msg>Command completed successfully</msg>
    </result>
    <msgQ count="1" id="70"/>
    <trId>
      <clTRID>ABC-12346</clTRID>
      <svTRID>CBCEC8DB-F1B4-40DB-9B4D-E21EF4DCB2B6</svTRID>
    </trId>
  </response>
</epp>
Reply (queue empty)
<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
  <response>
    <result code="1300">
      <msg>Command completed successfully; no messages</msg>
    </result>
    <trId>
      <clTRID>ABC-12346</clTRID>
      <svTRID>4931F00A-F5DB-4709-A377-95C30F4CF4FF</svTRID>
    </trId>
  </response>
</epp>
Views
Personal tools