Table of Contents

ISNIC EPP Interface Specification

Introduction

First of all the .is ccTLD is not operated as registry/registrar (shared registry system). ISNIC is proud of allowing registrants, with enough technical skills, to contact the registry directly, via the self service retro looking website. This means that we are going to have to jump through some awkward hoops when implementing EPP (as defined in RFC5730 which is based upon RFC3375 which is defined for "shared registries") between the .is registry and its service providers (ISNIC Service Provider - DNSP/ISP, actually registered DNS hosting providers for .is domains). But with some assumptions and standard operating procedures this "should" work.

So there are no registrars providing interfaces to ISNIC only registered DNSPs (unregistered DNSPs also for that matter) and the registrants themselves (those with enough technical skills). Which means there are no sponsoring clients on domains or hosts. The closest ISNIC has to a sponsoring client is the admin contact. This also means there are no contact transfers. Domains objects do not have subordinate connections to host objects (yet).

If you (and your company) are up to operating under these restrictions and understand what the implications are, feel free to create a contact and add ip addresses or subnets and request access to the EPP server.

We are building this EPP interface to serve our DNSPs (ISPs) so please send any comments, bug reports or questions to api-support@isnic.is.

Environments

Client certificates are required for both production and sandbox and they must be issued by a certificate authority accepted by the major browsers. Full chain must be sent along. Self signed client certificates are not accepted. When you have a client certificate issued you can test it with the command:

openssl s_client -host epp.sandbox.isnic.is -port 700 -cert cert.pem -key privkey.pem -CAfile chain.pem
Production

The EPP server is running at epp.isnic.is port 700.

Sandbox

The EPP server is running at epp.sandbox.isnic.is port 700.
Web interface at https://www.sandbox.isnic.is (See version of this page for upcoming changes).

Domains on sandbox are quietly marked deleted when they expire. Host objects are quietly marked deleted 1 year after creation if not connected to any domain. Contacts are cleaned up if they are not connected to any objects anymore. Even though data on sandbox is purged please do not use personal identifiable information.

Requirements for access

  1. Written contract with ISNIC or paid at least one domain registration or annual renewal fee
  2. Show competency in our sandbox environment by performing the operations:
    1. login
    2. poll req and poll ack
    3. create:domain
    4. renew:domain

Changelog

Show complete changelog.

VersionDateTypeDescription
1.10.132023-03-28fixDependencies
1.10.13 (bakend only)2023-06-01updateDeprecate cancel paper invoices
1.10.142023-07-04updateDependencies
Backend2023-08-24updateAdd period to domain:create
Backend2023-09-07updateRemove backup card
Total 5 items.

Schemas from RFC's

Note: These are modified versions with "annotation/documentation" elements about the intricacies of .is and suggested workarounds.

contact-1.0.xsd [raw]
domain-1.0.xsd [raw]
host-1.0.xsd [raw]
secDNS-1.1.xsd [raw]
rgp-1.0.xsd [raw]

Schemas for .is extensions

is-ext-contact-1.0.xsd [raw]
is-ext-domain-1.0.xsd [raw]
is-ext-host-1.0.xsd [raw]
is-ext-list-1.0.xsd [raw]
is-ext-account-1.0.xsd [raw]

Note about our examples below

All our examples have the epp elemant definition replaced to increase readability.

C: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" xmlns:is-ext-contact="urn:is.isnic:xml:ns:is-ext-contact-1.0" xmlns:secDNS="urn:ietf:params:xml:ns:secDNS-1.1" xmlns:is-ext-domain="urn:is.isnic:xml:ns:is-ext-domain-1.0" xmlns:ns7="urn:ietf:params:xml:ns:eppcom-1.0" xmlns:is-ext-host="urn:is.isnic:xml:ns:is-ext-host-1.0" xmlns:domain="urn:ietf:params:xml:ns:domain-1.0" xmlns:contact="urn:ietf:params:xml:ns:contact-1.0" xmlns:host="urn:ietf:params:xml:ns:host-1.0">		
					

is replaced by

C: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
C:   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">					

Payment types

For create:domain and renew we use the createType and renewType extensions to set which payment method to use.

For testing purposes on the sandbox environment contact access you can create ISNIC prepaid dev card by clicking "Click to create top up dev card" button. To add funds click "Add funds to dev card".

On production large providers generally use prepayments to minimize errors in payment gateways and to get a monthly summary invoice. A prepaid account is created by going to Creditcards and click "Top up account". Since there is a minor bug in our extenstion schema (not nillable and integer) when using cardID that is prepaid use cardCVC=1.

After deposits have been made the balance can be fetched by calling info:account.


Below is a list of things that are known to deviate from standard EPP. When there are discrepancies between this list and our schemas then the schemas have precedence.

Login

Note: the standard schemas only allows passwords to be 6 to 16 characters long, but the web interface actually allows 72 characters. So do not set the password length shorter then 6 and longer then 16 characters if you intend to use the contact to login to EPP.

Note: that this function is rate limited at 20 requests per 10 min.

Info

Domain

Note: that this function is rate limited at 50 requests per 30 min. Also note the rate limit does not apply when looking up domains connected to current logged in contact.

C: <?xml version="1.0" encoding="UTF-8" standalone="no"?> 
C: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" 
C:   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
C:     <command>
C:         <info>
C:             <domain:info>
C:                 <domain:name>isnic.is</domain:name>
C:             </domain:info>
C:         </info>
C:         <clTRID>dummy_session_53efe319</clTRID>
C:     </command>
C: </epp>
S: <?xml version="1.0" encoding="UTF-8" standalone="no"?> 
S: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" 
S:   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
S:     <response>
S:         <result code="1000">
S:             <msg lang="en">Command completed successfully</msg>
S:         </result>
S:         <resData>
S:             <domain:infData>
S:                 <domain:name>isnic.is</domain:name>
S:                 <domain:roid>5125D-IS</domain:roid>
S:                 <domain:status s="ok"/>
S:                 <domain:registrant>ISHM-IS</domain:registrant>
S:                 <domain:contact type="billing">ISHM-IS</domain:contact>
S:                 <domain:contact type="tech">ISHM-IS</domain:contact>
S:                 <domain:contact type="admin">ISHM-IS</domain:contact>
S:                 <domain:ns>
S:                     <domain:hostObj>ns1.isnic.is</domain:hostObj>
S:                     <domain:hostObj>ns2.isnic.is</domain:hostObj>
S:                     <domain:hostObj>ns3.isnic.is</domain:hostObj>
S:                 </domain:ns>
S:                 <domain:clID>ISHM-IS</domain:clID>
S:                 <domain:crDate>1999-03-16T00:00:01.000Z</domain:crDate>
S:                 <domain:exDate>2020-01-01T00:00:00.000Z</domain:exDate>
S:             </domain:infData>
S:         </resData>
S:         <extension>
S:             <is-ext-domain:infData>
S:                 <is-ext-domain:contact type="zone">ISHM-IS</is-ext-domain:contact>
S:             </is-ext-domain:infData>
S:             <secDNS:infData>
S:                 <secDNS:dsData>
S:                     <secDNS:keyTag>15411</secDNS:keyTag>
S:                     <secDNS:alg>8</secDNS:alg>
S:                     <secDNS:digestType>2</secDNS:digestType>
S:                     <secDNS:digest>3D123E3042028CFD12313A6D47C693048826123B08CB79BA0123DED167A412383</secDNS:digest>
S:                 </secDNS:dsData>
S:             </secDNS:infData>
S:         </extension>
S:         <trID>
S:             <clTRID>dummy_session_53efe319</clTRID>
S:             <svTRID>7cb3d1b9784cffbe5cbeeab810a1ed29</svTRID>
S:         </trID>
S:     </response>
S: </epp>

C: <?xml version="1.0" encoding="UTF-8" standalone="no"?> 
C: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" 
C:   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
C:     <command>
C:         <info>
C:             <domain:info>
C:                 <domain:name>idontexist123123.is</domain:name>
C:             </domain:info>
C:         </info>
C:         <clTRID>dummy_session_e5ccc6df</clTRID>
C:     </command>
C: </epp>
S: <?xml version="1.0" encoding="UTF-8" standalone="no"?> 
S: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" 
S:   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
S:     <response>
S:         <result code="2303">
S:             <msg lang="en">Domain 'idontexist123123.is' doesn't exists
S: </msg>
S:         </result>
S:         <trID>
S:             <clTRID>dummy_session_e5ccc6df</clTRID>
S:             <svTRID>15a2a509eb125a2aac83c09315f521b9</svTRID>
S:         </trID>
S:     </response>
S: </epp>

C: <?xml version="1.0" encoding="UTF-8" standalone="no"?> 
C: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" 
C:   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
C:     <command>
C:         <info>
C:             <domain:info>
C:                 <domain:name>isnicpending.is</domain:name>
C:             </domain:info>
C:         </info>
C:         <clTRID>dummy_session_8629280f</clTRID>
C:     </command>
C: </epp>
S: <?xml version="1.0" encoding="UTF-8" standalone="no"?> 
S: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" 
S:   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
S:     <response>
S:         <result code="1000">
S:             <msg lang="en">Command completed successfully</msg>
S:         </result>
S:         <resData>
S:             <domain:infData>
S:                 <domain:name>isnicpending.is</domain:name>
S:                 <domain:roid>82943D-IS</domain:roid>
S:                 <domain:status s="pendingCreate"/>
S:                 <domain:registrant>TEST-IS</domain:registrant>
S:                 <domain:contact type="billing">TEST2-IS</domain:contact>
S:                 <domain:contact type="tech">TEST2-IS</domain:contact>
S:                 <domain:contact type="admin">TEST2-IS</domain:contact>
S:                 <domain:ns>
S:                     <domain:hostObj>parking01.sandbox.isnic.is</domain:hostObj>
S:                     <domain:hostObj>parking02.sandbox.isnic.is</domain:hostObj>
S:                 </domain:ns>
S:                 <domain:clID>TEST2-IS</domain:clID>
S:                 <domain:crDate>2014-07-01T16:11:16.000Z</domain:crDate>
S:                 <domain:upDate>2014-07-01T16:11:16.000Z</domain:upDate>
S:                 <domain:exDate>2014-07-01T16:11:16.000Z</domain:exDate>
S:             </domain:infData>
S:         </resData>
S:         <extension>
S:             <is-ext-domain:infData>
S:                 <is-ext-domain:contact type="zone">ISHM-IS</is-ext-domain:contact>
S:             </is-ext-domain:infData>
S:         </extension>
S:         <trID>
S:             <clTRID>dummy_session_8629280f</clTRID>
S:             <svTRID>15a2a509eb125a2aac83c09315f521b9</svTRID>
S:         </trID>
S:     </response>
S: </epp>

Contact

Note: that this function is rate limited at 50 requests per 30 min.

C: <?xml version="1.0" encoding="UTF-8" standalone="no"?> 
C: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" 
C:   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
C:     <command>
C:         <info>
C:             <contact:info>
C:                 <contact:id>ISHM-IS</contact:id>
C:             </contact:info>
C:         </info>
C:         <clTRID>dummy_session_a122fcfb</clTRID>
C:     </command>
C: </epp>
S: <?xml version="1.0" encoding="UTF-8" standalone="no"?> 
S: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" 
S:   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
S:     <response>
S:         <result code="1000">
S:             <msg lang="en">Command completed successfully</msg>
S:         </result>
S:         <resData>
S:             <contact:infData>
S:                 <contact:id>ISHM-IS</contact:id>
S:                 <contact:roid>1232C-IS</contact:roid>
S:                 <contact:status s="serverDeleteProhibited"/>
S:                 <contact:status s="serverTransferProhibited"/>
S:                 <contact:postalInfo type="int">
S:                     <contact:name>ISNIC Hostmaster</contact:name>
S:                     <contact:addr>
S:                         <contact:street>Katrínartúni 2</contact:street>
S:                         <contact:city>Reykjavík</contact:city>
S:                         <contact:sp/>
S:                         <contact:pc>105</contact:pc>
S:                         <contact:cc>IS</contact:cc>
S:                     </contact:addr>
S:                 </contact:postalInfo>
S:                 <contact:voice>+354.5782030</contact:voice>
S:                 <contact:email>regdebug@isnic.is</contact:email>
S:                 <contact:clID>ISHM-IS</contact:clID>
S:                 <contact:crID>ISHM-IS</contact:crID>
S:                 <contact:crDate>2002-05-15T03:09:37Z</contact:crDate>
S:             </contact:infData>
S:         </resData>
S:         <extension>
S:             <is-ext-contact:infData>
S:                 <is-ext-contact:type>role</is-ext-contact:type>
S:                 <is-ext-contact:status s="ok"/>
S:                 <is-ext-contact:autoUpdateFromNationalRegistry>false</is-ext-contact:autoUpdateFromNationalRegistry>
S:                 <is-ext-contact:cancelPaper>true</is-ext-contact:cancelPaper>
S:             </is-ext-contact:infData>
S:         </extension>
S:         <trID>
S:             <clTRID>dummy_session_a122fcfb</clTRID>
S:             <svTRID>7cb3d1b9784cffbe5cbeeab810a1ed29</svTRID>
S:         </trID>
S:     </response>
S: </epp>

C: <?xml version="1.0" encoding="UTF-8" standalone="no"?> 
C: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" 
C:   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
C:     <command>
C:         <info>
C:             <contact:info>
C:                 <contact:id>PENDING-IS</contact:id>
C:             </contact:info>
C:         </info>
C:         <clTRID>dummy_session_733b4130</clTRID>
C:     </command>
C: </epp>
S: <?xml version="1.0" encoding="UTF-8" standalone="no"?> 
S: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" 
S:   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
S:     <response>
S:         <result code="1000">
S:             <msg lang="en">Command completed successfully</msg>
S:         </result>
S:         <resData>
S:             <contact:infData>
S:                 <contact:id>PENDING-IS</contact:id>
S:                 <contact:roid>77428C-IS</contact:roid>
S:                 <contact:status s="pendingCreate"/>
S:                 <contact:postalInfo type="int">
S:                     <contact:name>Test Testson</contact:name>
S:                     <contact:addr>
S:                         <contact:street>Test Street 2</contact:street>
S:                         <contact:city>Reykjavík</contact:city>
S:                         <contact:sp/>
S:                         <contact:pc>101</contact:pc>
S:                         <contact:cc>NI</contact:cc>
S:                     </contact:addr>
S:                 </contact:postalInfo>
S:                 <contact:voice>+354.8888888</contact:voice>
S:                 <contact:email>pending@isnic.is</contact:email>
S:                 <contact:clID>PENDING-IS</contact:clID>
S:                 <contact:crID>PENDING-IS</contact:crID>
S:                 <contact:crDate>2014-02-18T09:50:38Z</contact:crDate>
S:                 <contact:upID>ISHM-IS</contact:upID>
S:                 <contact:upDate>2014-02-18T09:50:38Z</contact:upDate>
S:             </contact:infData>
S:         </resData>
S:         <extension>
S:             <is-ext-contact:infData>
S:                 <is-ext-contact:type>person</is-ext-contact:type>
S:                 <is-ext-contact:status s="pendingCreate"/>
S:                 <is-ext-contact:autoUpdateFromNationalRegistry>true</is-ext-contact:autoUpdateFromNationalRegistry>
S:                 <is-ext-contact:cancelPaper>true</is-ext-contact:cancelPaper>
S:             </is-ext-contact:infData>
S:         </extension>
S:         <trID>
S:             <clTRID>dummy_session_733b4130</clTRID>
S:             <svTRID>78c32aefb2c18b6e991f8903c9b19c2a</svTRID>
S:         </trID>
S:     </response>
S: </epp>

Host

Note: that this function is rate limited at 1500 requests per hour.

C: <?xml version="1.0" encoding="UTF-8" standalone="no"?> 
C: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" 
C:   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
C:     <command>
C:         <info>
C:             <host:info>
C:                 <host:name>ns1.isnic.is</host:name>
C:             </host:info>
C:         </info>
C:         <clTRID>dummy_session_946dd162</clTRID>
C:     </command>
C: </epp>
S: <?xml version="1.0" encoding="UTF-8" standalone="no"?> 
S: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" 
S:   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
S:     <response>
S:         <result code="1000">
S:             <msg lang="en">Command completed successfully</msg>
S:         </result>
S:         <resData>
S:             <host:infData>
S:                 <host:name>ns1.isnic.is</host:name>
S:                 <host:roid>1234H-IS</host:roid>
S:                 <host:status s="ok"/>
S:                 <host:addr ip="v4">193.4.58.91</host:addr>
S:                 <host:clID>ISHM-IS</host:clID>
S:                 <host:crID>ISHM-IS</host:crID>
S:                 <host:crDate>2004-05-27T15:43:43Z</host:crDate>
S:                 <host:upID>ISHM-IS</host:upID>
S:                 <host:upDate>2014-09-24T16:48:43Z</host:upDate>
S:             </host:infData>
S:         </resData>
S:         <trID>
S:             <clTRID>dummy_session_946dd162</clTRID>
S:             <svTRID>301aef62810ebcdf21db844419db8ea1</svTRID>
S:         </trID>
S:     </response>
S: </epp>

C: <?xml version="1.0" encoding="UTF-8" standalone="no"?> 
C: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" 
C:   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
C:     <command>
C:         <info>
C:             <host:info>
C:                 <host:name>ns123123.isnic.is</host:name>
C:             </host:info>
C:         </info>
C:         <clTRID>dummy_session_757c0487</clTRID>
C:     </command>
C: </epp>
S: <?xml version="1.0" encoding="UTF-8" standalone="no"?> 
S: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" 
S:   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
S:     <response>
S:         <result code="2303">
S:             <msg lang="en">Host 'ns123123.isnic.is' doesn't exists
S: </msg>
S:         </result>
S:         <trID>
S:             <clTRID>dummy_session_757c0487</clTRID>
S:             <svTRID>301aef62810ebcdf21db844419db8ea1</svTRID>
S:         </trID>
S:     </response>
S: </epp>

List

Will be deprecated (okt. 1. 2018) in favour of RDAP

Used to fetch generic lists

C: <?xml version="1.0" encoding="UTF-8" standalone="no"?> 
C: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" 
C:   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
C:     <command>
C:         <info>
C:             <is-ext-list:info>
C:                 <is-ext-list:listName>my</is-ext-list:listName>
C:             </is-ext-list:info>
C:         </info>
C:         <clTRID>dummy_session_8745fa95</clTRID>
C:     </command>
C: </epp>
S: <?xml version="1.0" encoding="UTF-8" standalone="no"?> 
S: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" 
S:   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
S:     <response>
S:         <result code="1000">
S:             <msg lang="en">OK</msg>
S:         </result>
S:         <resData>
S:             <is-ext-list:infData>
S:                 <is-ext-list:myList>
S:                     <is-ext-list:name>test123.is</is-ext-list:name>
S:                     <is-ext-list:status s="ok"/>
S:                     <is-ext-list:registrant>TEST-IS</is-ext-list:registrant>
S:                     <is-ext-list:admin>TEST-IS</is-ext-list:admin>
S:                     <is-ext-list:billing>TEST-IS</is-ext-list:billing>
S:                     <is-ext-list:tech>TEST-IS</is-ext-list:tech>
S:                 </is-ext-list:myList>
S:                 <is-ext-list:myList>
S:                     <is-ext-list:name>test124.is</is-ext-list:name>
S:                     <is-ext-list:status s="hold"/>
S:                     <is-ext-list:registrant>TEST-IS</is-ext-list:registrant>
S:                     <is-ext-list:admin>TEST-IS</is-ext-list:admin>
S:                     <is-ext-list:billing>TEST-IS</is-ext-list:billing>
S:                     <is-ext-list:tech>TEST-IS</is-ext-list:tech>
S:                 </is-ext-list:myList>
S:             </is-ext-list:infData>
S:         </resData>
S:         <trID>
S:             <clTRID>dummy_session_8745fa95</clTRID>
S:             <svTRID>cf201d9b6cba338f8493b80fb35a9dac</svTRID>
S:         </trID>
S:     </response>
S: </epp>

Account

Used to fetch contacts accounts

C: <?xml version="1.0" encoding="UTF-8" standalone="no"?> 
C: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" 
C:   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
C:     <command>
C:         <info>
C:             <is-ext-account:info/>
C:         </info>
C:         <clTRID>dummy_session_7f9a7d69</clTRID>
C:     </command>
C: </epp>
S: <?xml version="1.0" encoding="UTF-8" standalone="no"?> 
S: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" 
S:   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
S:     <response>
S:         <result code="1000">
S:             <msg lang="en">Command completed successfully</msg>
S:         </result>
S:         <resData>
S:             <is-ext-account:infData>
S:                 <is-ext-account:account>
S:                     <is-ext-account:id>20658</is-ext-account:id>
S:                     <is-ext-account:contactHandle>TEST-IS</is-ext-account:contactHandle>
S:                     <is-ext-account:allowedContactHandles>
S:                         <is-ext-account:contact>TEST-IS</is-ext-account:contact>
S:                     </is-ext-account:allowedContactHandles>
S:                     <is-ext-account:owner>Test Testson</is-ext-account:owner>
S:                     <is-ext-account:expireYear>2017</is-ext-account:expireYear>
S:                     <is-ext-account:expireMonth>1</is-ext-account:expireMonth>
S:                     <is-ext-account:brand>ISNICPP</is-ext-account:brand>
S:                     <is-ext-account:currency>ISK</is-ext-account:currency>
S:                     <is-ext-account:balance>0</is-ext-account:balance>
S:                     <is-ext-account:backupAccountID>0</is-ext-account:backupAccountID>
S:                 </is-ext-account:account>
S:                 <is-ext-account:account>
S:                     <is-ext-account:id>20659</is-ext-account:id>
S:                     <is-ext-account:contactHandle>TEST-IS</is-ext-account:contactHandle>
S:                     <is-ext-account:allowedContactHandles>
S:                         <is-ext-account:contact>TEST-IS</is-ext-account:contact>
S:                     </is-ext-account:allowedContactHandles>
S:                     <is-ext-account:number>XXXX-XXXX-XXXX-0000</is-ext-account:number>
S:                     <is-ext-account:owner>Test Testson</is-ext-account:owner>
S:                     <is-ext-account:expireYear>2017</is-ext-account:expireYear>
S:                     <is-ext-account:expireMonth>1</is-ext-account:expireMonth>
S:                     <is-ext-account:brand>VISA</is-ext-account:brand>
S:                     <is-ext-account:balance>0</is-ext-account:balance>
S:                     <is-ext-account:backupAccountID>0</is-ext-account:backupAccountID>
S:                 </is-ext-account:account>
S:             </is-ext-account:infData>
S:         </resData>
S:         <trID>
S:             <clTRID>dummy_session_7f9a7d69</clTRID>
S:             <svTRID>37c9c6d8653f3952fde649c366dc344f</svTRID>
S:         </trID>
S:     </response>
S: </epp>

Poll

No deviations as of yet, should follow standard.

Messages with code 9301 - WARNING_PROCESS_WAITING are delivered when an asynchronous process is stuck and needs manual intervention. For example registrant needs to confirm domain transfers and domain delete or there is a billing problem in domain create.

C: <?xml version="1.0" encoding="UTF-8" standalone="no"?> 
C: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" 
C:   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
C:     <command>
C:         <poll op="req"/>
C:         <clTRID>dummy_session_6b2fdc8f</clTRID>
C:     </command>
C: </epp>
S: <?xml version="1.0" encoding="UTF-8" standalone="no"?> 
S: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" 
S:   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
S:     <response>
S:         <result code="1301">
S:             <msg lang="en">Command completed successfully; ack to dequeue</msg>
S:         </result>
S:         <msgQ count="1" id="64">
S:             <qDate>2015-10-07T09:31:32Z</qDate>
S:             <msg lang="en">Domain created</msg>
S:         </msgQ>
S:         <resData>
S:             <domain:panData>
S:                 <domain:name paResult="true">epp-99b83e98.is</domain:name>
S:                 <domain:paTRID>
S:                     <clTRID>dummy_session_de55c779</clTRID>
S:                     <svTRID>bed6342f132bc130194ea9b03de06c68</svTRID>
S:                 </domain:paTRID>
S:                 <domain:paDate>2015-08-11T11:51:25Z</domain:paDate>
S:             </domain:panData>
S:         </resData>
S:         <trID>
S:             <clTRID>dummy_session_6b2fdc8f</clTRID>
S:             <svTRID>a392e5e7ccdcfb5e585b1f25846a5e2b</svTRID>
S:         </trID>
S:     </response>
S: </epp>

C: <?xml version="1.0" encoding="UTF-8" standalone="no"?> 
C: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" 
C:   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
C:     <command>
C:         <poll op="req"/>
C:         <clTRID>dummy_session_6b2fdc9f</clTRID>
C:     </command>
C: </epp>
S: <?xml version="1.0" encoding="UTF-8" standalone="no"?> 
S: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" 
S:   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
S:     <response>
S:         <result code="1301">
S:             <msg lang="en">Command completed successfully; ack to dequeue</msg>
S:         </result>
S:         <msgQ count="1" id="42">
S:             <qDate>2015-10-07T15:57:01Z</qDate>
S:             <msg lang="en">
			{
				"msg":"Domain creation errors: No NS records found for domain TEST.IS on nameserver 193.4.58.91; ",
				"code":9301,
				"domain_name":"test.is",
				"domain_paTRID":{
					"clTRID":"dummy_session_734c6bf0",
					"svTRID":"7cb3d1b9784cffbe5cbeeab810a1ed29"
				}
			}
		</msg>
S:         </msgQ>
S:         <trID>
S:             <clTRID>dummy_session_6b2fdc9f</clTRID>
S:             <svTRID>05f845988f739ac6fee5a8adbf0c0fe5</svTRID>
S:         </trID>
S:     </response>
S: </epp>

C: <?xml version="1.0" encoding="UTF-8" standalone="no"?> 
C: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" 
C:   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
C:     <command>
C:         <poll op="ack" msgID="64"/>
C:         <clTRID>dummy_session_199aa521</clTRID>
C:     </command>
C: </epp>
S: <?xml version="1.0" encoding="UTF-8" standalone="no"?> 
S: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" 
S:   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
S:     <response>
S:         <result code="1000">
S:             <msg lang="en">Command completed successfully</msg>
S:         </result>
S:         <msgQ count="1" id="64">
S:             <qDate>2015-10-07T09:31:32Z</qDate>
S:             <msg lang="en">Domain created</msg>
S:         </msgQ>
S:         <resData>
S:             <domain:panData>
S:                 <domain:name paResult="true">epp-99b83e98.is</domain:name>
S:                 <domain:paTRID>
S:                     <clTRID>dummy_session_de55c779</clTRID>
S:                     <svTRID>bed6342f132bc130194ea9b03de06c68</svTRID>
S:                 </domain:paTRID>
S:                 <domain:paDate>2015-08-11T11:51:25Z</domain:paDate>
S:             </domain:panData>
S:         </resData>
S:         <trID>
S:             <clTRID>dummy_session_199aa521</clTRID>
S:             <svTRID>a392e5e7ccdcfb5e585b1f25846a5e2b</svTRID>
S:         </trID>
S:     </response>
S: </epp>

C: <?xml version="1.0" encoding="UTF-8" standalone="no"?> 
C: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" 
C:   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
C:     <command>
C:         <poll op="req"/>
C:         <clTRID>dummy_session_b05ef1b1</clTRID>
C:     </command>
C: </epp>
S: <?xml version="1.0" encoding="UTF-8" standalone="no"?> 
S: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" 
S:   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
S:     <response>
S:         <result code="1300">
S:             <msg lang="en">Command completed successfully; no messages</msg>
S:         </result>
S:         <trID>
S:             <clTRID>dummy_session_b05ef1b1</clTRID>
S:             <svTRID>a392e5e7ccdcfb5e585b1f25846a5e2b</svTRID>
S:         </trID>
S:     </response>
S: </epp>

Create

Domain

There is no subordinate connection between domain and host objects, yet. Create with ds records is not yet supported, work around is to add ds records after create. After domain is created it will be returned in domain:info with status='pendingCreate'. But before it gets status='active' there is a possiblilty that some manual actions must be taken. These problems will be notified via message with code 9301 - WARNING_PROCESS_WAITING. See payment type for info about cardID in the ISNIC extension.

C: <?xml version="1.0" encoding="UTF-8" standalone="no"?> 
C: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" 
C:   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
C:     <command>
C:         <create>
C:             <domain:create>
C:                 <domain:name>xn--snic-upa.is</domain:name>
C:                 <domain:registrant>ISHM-IS</domain:registrant>
C:                 <domain:contact type="admin">ISHM-IS</domain:contact>
C:                 <domain:contact type="billing">ISHM-IS</domain:contact>
C:                 <domain:contact type="tech">ISHM-IS</domain:contact>
C:                 <domain:authInfo>
C:                     <domain:pw/>
C:                 </domain:authInfo>
C:             </domain:create>
C:         </create>
C:         <extension>
C:             <is-ext-domain:create>
C:                 <is-ext-domain:cardID>121212</is-ext-domain:cardID>
C:                 <is-ext-domain:cardCVC>123</is-ext-domain:cardCVC>
C:             </is-ext-domain:create>
C:         </extension>
C:         <clTRID>dummy_session_394fa6f6</clTRID>
C:     </command>
C: </epp>
S: <?xml version="1.0" encoding="UTF-8" standalone="no"?> 
S: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" 
S:   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
S:     <response>
S:         <result code="2302">
S:             <msg lang="en">The domain ísnic.is is not available for registration
S: </msg>
S:         </result>
S:         <trID>
S:             <clTRID>dummy_session_394fa6f6</clTRID>
S:             <svTRID>7cb3d1b9784cffbe5cbeeab810a1ed29</svTRID>
S:         </trID>
S:     </response>
S: </epp>

C: <?xml version="1.0" encoding="UTF-8" standalone="no"?> 
C: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" 
C:   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
C:     <command>
C:         <create>
C:             <domain:create>
C:                 <domain:name>xn--snic-upa.is</domain:name>
C:                 <domain:registrant>ISHM-IS</domain:registrant>
C:                 <domain:contact type="admin">ISHM-IS</domain:contact>
C:                 <domain:contact type="billing">ISHM-IS</domain:contact>
C:                 <domain:contact type="tech">ISHM-IS</domain:contact>
C:                 <domain:authInfo>
C:                     <domain:pw/>
C:                 </domain:authInfo>
C:             </domain:create>
C:         </create>
C:         <extension>
C:             <is-ext-domain:create>
C:                 <is-ext-domain:cardID>121212</is-ext-domain:cardID>
C:                 <is-ext-domain:cardCVC>123</is-ext-domain:cardCVC>
C:             </is-ext-domain:create>
C:         </extension>
C:         <clTRID>dummy_session_734c6bf0</clTRID>
C:     </command>
C: </epp>
S: <?xml version="1.0" encoding="UTF-8" standalone="no"?> 
S: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" 
S:   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
S:     <response>
S:         <result code="1001">
S:             <msg lang="en">Domain 'epp-ca51dbff.is' queued for creation
S: </msg>
S:         </result>
S:         <trID>
S:             <clTRID>dummy_session_734c6bf0</clTRID>
S:             <svTRID>7cb3d1b9784cffbe5cbeeab810a1ed29</svTRID>
S:         </trID>
S:     </response>
S: </epp>

C: <?xml version="1.0" encoding="UTF-8" standalone="no"?> 
C: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" 
C:   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
C:     <command>
C:         <poll op="req"/>
C:         <clTRID>dummy_session_6b2fdc8f</clTRID>
C:     </command>
C: </epp>
S: <?xml version="1.0" encoding="UTF-8" standalone="no"?> 
S: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" 
S:   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
S:     <response>
S:         <result code="1301">
S:             <msg lang="en">Command completed successfully; ack to dequeue</msg>
S:         </result>
S:         <msgQ count="1" id="64">
S:             <qDate>2015-10-07T09:31:32Z</qDate>
S:             <msg lang="en">Domain created</msg>
S:         </msgQ>
S:         <resData>
S:             <domain:panData>
S:                 <domain:name paResult="true">epp-99b83e98.is</domain:name>
S:                 <domain:paTRID>
S:                     <clTRID>dummy_session_de55c779</clTRID>
S:                     <svTRID>bed6342f132bc130194ea9b03de06c68</svTRID>
S:                 </domain:paTRID>
S:                 <domain:paDate>2015-08-11T11:51:25Z</domain:paDate>
S:             </domain:panData>
S:         </resData>
S:         <trID>
S:             <clTRID>dummy_session_6b2fdc8f</clTRID>
S:             <svTRID>a392e5e7ccdcfb5e585b1f25846a5e2b</svTRID>
S:         </trID>
S:     </response>
S: </epp>

C: <?xml version="1.0" encoding="UTF-8" standalone="no"?> 
C: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" 
C:   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
C:     <command>
C:         <poll op="req"/>
C:         <clTRID>dummy_session_6b2fdc9f</clTRID>
C:     </command>
C: </epp>
S: <?xml version="1.0" encoding="UTF-8" standalone="no"?> 
S: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" 
S:   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
S:     <response>
S:         <result code="1301">
S:             <msg lang="en">Command completed successfully; ack to dequeue</msg>
S:         </result>
S:         <msgQ count="1" id="42">
S:             <qDate>2015-10-07T15:57:01Z</qDate>
S:             <msg lang="en">
			{
				"msg":"Domain creation errors: No NS records found for domain TEST.IS on nameserver 193.4.58.91; ",
				"code":9301,
				"domain_name":"test.is",
				"domain_paTRID":{
					"clTRID":"dummy_session_734c6bf0",
					"svTRID":"7cb3d1b9784cffbe5cbeeab810a1ed29"
				}
			}
		</msg>
S:         </msgQ>
S:         <trID>
S:             <clTRID>dummy_session_6b2fdc9f</clTRID>
S:             <svTRID>05f845988f739ac6fee5a8adbf0c0fe5</svTRID>
S:         </trID>
S:     </response>
S: </epp>

C: <?xml version="1.0" encoding="UTF-8" standalone="no"?> 
C: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" 
C:   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
C:     <command>
C:         <create>
C:             <domain:create>
C:                 <domain:name>xn--snic-upa.is</domain:name>
C:                 <domain:registrant>ISHM-IS</domain:registrant>
C:                 <domain:contact type="admin">ISHM-IS</domain:contact>
C:                 <domain:contact type="billing">ISHM-IS</domain:contact>
C:                 <domain:contact type="tech">ISHM-IS</domain:contact>
C:                 <domain:authInfo>
C:                     <domain:pw/>
C:                 </domain:authInfo>
C:             </domain:create>
C:         </create>
C:         <extension>
C:             <is-ext-domain:create>
C:                 <is-ext-domain:cardID>121212</is-ext-domain:cardID>
C:                 <is-ext-domain:cardCVC>123</is-ext-domain:cardCVC>
C:             </is-ext-domain:create>
C:         </extension>
C:         <clTRID>dummy_session_6e358587</clTRID>
C:     </command>
C: </epp>
S: <?xml version="1.0" encoding="UTF-8" standalone="no"?> 
S: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" 
S:   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
S:     <response>
S:         <result code="2302">
S:             <msg lang="en">The domain epp-ca51dbff.is is already queued for registration
S: </msg>
S:         </result>
S:         <trID>
S:             <clTRID>dummy_session_6e358587</clTRID>
S:             <svTRID>7cb3d1b9784cffbe5cbeeab810a1ed29</svTRID>
S:         </trID>
S:     </response>
S: </epp>

Contact

When this function is used by a logged in contact that is an registered DNS Providers the contacts are created with status "okUnconfirmed" status and ISNIC sends an email to confirm the registration, otherwise contacts are created with status "pendingCreate". The contact is usable as a registrant and billing contact when the status is "okUnconfirmed". When a contact is "pendingCreate" the email must be confirmed by following a url sent in email after 3 days "pendingCreate" contacts are purged.

Contacts have a unique key constraint on (name, sid, street, city, pc, sp, cc, email, voice, mobile and your_reference).

C: <?xml version="1.0" encoding="UTF-8" standalone="no"?> 
C: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" 
C:   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
C:     <command>
C:         <create>
C:             <contact:create>
C:                 <contact:id>000</contact:id>
C:                 <contact:postalInfo type="int">
C:                     <contact:name>Jón Sveinsson</contact:name>
C:                     <contact:addr>
C:                         <contact:street>Aðalstræti 54</contact:street>
C:                         <contact:city>Akureyri</contact:city>
C:                         <contact:cc>is</contact:cc>
C:                     </contact:addr>
C:                 </contact:postalInfo>
C:                 <contact:voice>+354.4684162</contact:voice>
C:                 <contact:email>nonni@isnic.is</contact:email>
C:                 <contact:authInfo>
C:                     <contact:pw>ding_ding_dong</contact:pw>
C:                 </contact:authInfo>
C:                 <contact:disclose flag="false">
C:                     <contact:addr type="int"/>
C:                     <contact:voice />
C:                 </contact:disclose>
C:             </contact:create>
C:         </create>
C:         <extension>
C:             <is-ext-contact:create>
C:                 <is-ext-contact:type>person</is-ext-contact:type>
C:             </is-ext-contact:create>
C:         </extension>
C:         <clTRID>dummy_session_820394d7</clTRID>
C:     </command>
C: </epp>
S: <?xml version="1.0" encoding="UTF-8" standalone="no"?> 
S: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" 
S:   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
S:     <response>
S:         <result code="2306">
S:             <msg lang="en">pc - Postal code cannot be blank.
S: pc - Postal code must be specified
S: </msg>
S:         </result>
S:         <trID>
S:             <clTRID>dummy_session_820394d7</clTRID>
S:             <svTRID>e8e5840fa6bc97a22982f2b220431fe8</svTRID>
S:         </trID>
S:     </response>
S: </epp>

C: <?xml version="1.0" encoding="UTF-8" standalone="no"?> 
C: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" 
C:   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
C:     <command>
C:         <create>
C:             <contact:create>
C:                 <contact:id>000</contact:id>
C:                 <contact:postalInfo type="int">
C:                     <contact:name>Jón Sveinsson</contact:name>
C:                     <contact:addr>
C:                         <contact:street>Aðalstræti 54</contact:street>
C:                         <contact:city>Akureyri</contact:city>
C:                         <contact:cc>is</contact:cc>
C:                     </contact:addr>
C:                 </contact:postalInfo>
C:                 <contact:voice>+354.4684162</contact:voice>
C:                 <contact:email>nonni@isnic.is</contact:email>
C:                 <contact:authInfo>
C:                     <contact:pw>ding_ding_dong</contact:pw>
C:                 </contact:authInfo>
C:             </contact:create>
C:         </create>
C:         <is-ext-contact:create>
C:             <is-ext-contact:type>person</is-ext-contact:type>
C:         </is-ext-contact:create>
C:         <clTRID>dummy_session_e1d8cf36</clTRID>
C:     </command>
C: </epp>
S: <?xml version="1.0" encoding="UTF-8" standalone="no"?> 
S: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" 
S:   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
S:     <response>
S:         <result code="1000">
S:             <msg lang="en">Command completed successfully; Contact already exists</msg>
S:         </result>
S:         <resData>
S:             <contact:creData>
S:                 <contact:id>JJ100-IS</contact:id>
S:                 <contact:crDate>2010-11-03T15:25:20.000Z</contact:crDate>
S:             </contact:creData>
S:         </resData>
S:         <trID>
S:             <clTRID>dummy_session_e1d8cf36</clTRID>
S:             <svTRID>bf2cde29584c15226d8fb28894ab29a3</svTRID>
S:         </trID>
S:     </response>
S: </epp>

C: <?xml version="1.0" encoding="UTF-8" standalone="no"?> 
C: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" 
C:   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
C:     <command>
C:         <create>
C:             <contact:create>
C:                 <contact:id>000</contact:id>
C:                 <contact:postalInfo type="int">
C:                     <contact:name>ISNIC - Internet á Íslandi hf</contact:name>
C:                     <contact:addr>
C:                         <contact:street>Katrínartúni 2</contact:street>
C:                         <contact:city>Reykjavík</contact:city>
C:                         <contact:cc>is</contact:cc>
C:                     </contact:addr>
C:                 </contact:postalInfo>
C:                 <contact:voice>+354.4684162</contact:voice>
C:                 <contact:email>nonni@isnic.is</contact:email>
C:                 <contact:authInfo>
C:                     <contact:pw>ding_ding_dong</contact:pw>
C:                 </contact:authInfo>
C:                 <contact:disclose flag="true">
C:                     <contact:addr type="int"/>
C:                     <contact:voice />
C:                 </contact:disclose>
C:             </contact:create>
C:         </create>
C:         <extension>
C:             <is-ext-contact:create>
C:                 <is-ext-contact:type>role</is-ext-contact:type>
C:                 <is-ext-contact:sid>6605952449</is-ext-contact:type>
C:             </is-ext-contact:create>
C:         </extension>
C:         <clTRID>dummy_session_820494d7</clTRID>
C:     </command>
C: </epp>
S: <?xml version="1.0" encoding="UTF-8" standalone="no"?> 
S: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" 
S:   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
S:     <response>
S:         <result code="2306">
S:             <msg lang="en">pc - Postal code cannot be blank.
S: pc - Postal code must be specified
S: </msg>
S:         </result>
S:         <trID>
S:             <clTRID>dummy_session_820494d7</clTRID>
S:             <svTRID>e8e5840fa6bc97a22982f2b220431fe8</svTRID>
S:         </trID>
S:     </response>
S: </epp>

Host

Sponsoring client is the host admin contact.

Delete

Domain

Sponsoring client is the domain admin contact.

C: <?xml version="1.0" encoding="UTF-8" standalone="no"?> 
C: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" 
C:   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
C:     <command>
C:         <delete>
C:             <domain:delete>
C:                 <domain:name>isnic.is</domain:name>
C:             </domain:delete>
C:         </delete>
C:         <clTRID>dummy_session_28954346</clTRID>
C:     </command>
C: </epp>
S: <?xml version="1.0" encoding="UTF-8" standalone="no"?> 
S: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" 
S:   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
S:     <response>
S:         <result code="2201">
S:             <msg lang="en">You are not admin contact for this domain</msg>
S:         </result>
S:         <trID>
S:             <clTRID>dummy_session_28954346</clTRID>
S:             <svTRID>7cb3d1b9784cffbe5cbeeab810a1ed29</svTRID>
S:         </trID>
S:     </response>
S: </epp>

C: <?xml version="1.0" encoding="UTF-8" standalone="no"?> 
C: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" 
C:   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
C:     <command>
C:         <delete>
C:             <domain:delete>
C:                 <domain:name>isnic.is</domain:name>
C:             </domain:delete>
C:         </delete>
C:         <clTRID>dummy_session_4562b0e5</clTRID>
C:     </command>
C: </epp>			
S: <?xml version="1.0" encoding="UTF-8" standalone="no"?> 
S: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" 
S:   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
S:     <response>
S:         <result code="1001">
S:             <msg lang="en">Command completed successfully; action pending</msg>
S:         </result>
S:         <trID>
S:             <clTRID>dummy_session_4562b0e5</clTRID>
S:             <svTRID>71439c0e13f03464e109be0487e0f59e</svTRID>
S:         </trID>
S:     </response>
S: </epp>

C: <?xml version="1.0" encoding="UTF-8" standalone="no"?> 
C: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" 
C:   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
C:     <command>
C:         <update>
C:             <domain:update>
C:                 <domain:name>isnic.is</domain:name>
C:             </domain:update>
C:         </update>
C:         <extension>
C:             <rgp:update>
C:                 <rgp:restore op="request"/>
C:             </rgp:update>
C:         </extension>
C:         <clTRID>dummy_session_cbcf6263</clTRID>
C:     </command>
C: </epp>
S: <?xml version="1.0" encoding="UTF-8" standalone="no"?> 
S: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" 
S:   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
S:     <response>
S:         <result code="1000">
S:             <msg lang="en">Domain delete for 'isnic.is' cancelled</msg>
S:         </result>
S:         <trID>
S:             <clTRID>dummy_session_cbcf6263</clTRID>
S:             <svTRID>71439c0e13f03464e109be0487e0f59e</svTRID>
S:         </trID>
S:     </response>
S: </epp>

Contact

Not supported, if contact is unused for some time it is automatically expired and then deleted.

Host

Sponsoring client is host admin contact.

C: <?xml version="1.0" encoding="UTF-8" standalone="no"?> 
C: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" 
C:   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
C:     <command>
C:         <delete>
C:             <host:delete>
C:                 <host:name>ns1.isnic.is</host:name>
C:             </host:delete>
C:         </delete>
C:         <clTRID>dummy_session_66875bb3</clTRID>
C:     </command>
C: </epp>
S: <?xml version="1.0" encoding="UTF-8" standalone="no"?> 
S: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" 
S:   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
S:     <response>
S:         <result code="2201">
S:             <msg lang="en">You are not the admin contact for the host 'ns1.isnic.is'
S: </msg>
S:         </result>
S:         <trID>
S:             <clTRID>dummy_session_66875bb3</clTRID>
S:             <svTRID>104da57851b9094b5092d7e9009b49a0</svTRID>
S:         </trID>
S:     </response>
S: </epp>

Renew

Domain

See payment type for info about cardID in the ISNIC extension.

C: <?xml version="1.0" encoding="UTF-8" standalone="no"?> 
C: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" 
C:   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
C:     <command>
C:         <renew>
C:             <domain:renew>
C:                 <domain:name>isnic.is</domain:name>
C:                 <domain:curExpDate>2015-01-01Z</domain:curExpDate>
C:             </domain:renew>
C:         </renew>
C:         <extension>
C:             <is-ext-domain:renew>
C:                 <is-ext-domain:cardID>12312</is-ext-domain:cardID>
C:                 <is-ext-domain:cardCVC>123</is-ext-domain:cardCVC>
C:             </is-ext-domain:renew>
C:         </extension>
C:         <clTRID>dummy_session_9ca08e38</clTRID>
C:     </command>
C: </epp>
S: <?xml version="1.0" encoding="UTF-8" standalone="no"?> 
S: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" 
S:   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
S:     <response>
S:         <result code="1000">
S:             <msg lang="en">Domain renewed
S: </msg>
S:         </result>
S:         <trID>
S:             <clTRID>dummy_session_9ca08e38</clTRID>
S:             <svTRID>dcc3c3d6ad2b368e2ef2f6923ec682e6</svTRID>
S:         </trID>
S:     </response>
S: </epp>

Check

Domain

Note: that this function is rate limited at 7200 requests per 30 min.

No deviations as of yet, should follow standard.

C: <?xml version="1.0" encoding="UTF-8" standalone="no"?> 
C: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" 
C:   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
C:     <command>
C:         <check>
C:             <domain:check>
C:                 <domain:name>isnic.is</domain:name>
C:             </domain:check>
C:         </check>
C:         <clTRID>dummy_session_e769af9c</clTRID>
C:     </command>
C: </epp>
S: <?xml version="1.0" encoding="UTF-8" standalone="no"?> 
S: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" 
S:   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
S:     <response>
S:         <result code="1000">
S:             <msg lang="en">Command completed successfully</msg>
S:         </result>
S:         <resData>
S:             <domain:chkData>
S:                 <domain:cd>
S:                     <domain:name avail="false">isnic.is</domain:name>
S:                     <domain:reason lang="en">In use</domain:reason>
S:                 </domain:cd>
S:             </domain:chkData>
S:         </resData>
S:         <trID>
S:             <clTRID>dummy_session_e769af9c</clTRID>
S:             <svTRID>4b45f6ac5f66cc11c6e2b46754243505</svTRID>
S:         </trID>
S:     </response>
S: </epp>

C: <?xml version="1.0" encoding="UTF-8" standalone="no"?> 
C: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" 
C:   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
C:     <command>
C:         <check>
C:             <domain:check>
C:                 <domain:name>isnic.is</domain:name>
C:                 <domain:name>thisdoesnotexist123123.is</domain:name>
C:             </domain:check>
C:         </check>
C:         <clTRID>dummy_session_9c886def</clTRID>
C:     </command>
C: </epp>
S: <?xml version="1.0" encoding="UTF-8" standalone="no"?> 
S: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" 
S:   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
S:     <response>
S:         <result code="1000">
S:             <msg lang="en">Command completed successfully</msg>
S:         </result>
S:         <resData>
S:             <domain:chkData>
S:                 <domain:cd>
S:                     <domain:name avail="false">isnic.is</domain:name>
S:                     <domain:reason lang="en">In use</domain:reason>
S:                 </domain:cd>
S:                 <domain:cd>
S:                     <domain:name avail="true">thisdoesnotexist123123.is</domain:name>
S:                 </domain:cd>
S:             </domain:chkData>
S:         </resData>
S:         <trID>
S:             <clTRID>dummy_session_9c886def</clTRID>
S:             <svTRID>4b45f6ac5f66cc11c6e2b46754243505</svTRID>
S:         </trID>
S:     </response>
S: </epp>

Contact

Not used, contact:id is auto assigned by server on contact create.

Host

Note: function is not rate limited.

No deviations as of yet, should follow standard.

C: <?xml version="1.0" encoding="UTF-8" standalone="no"?> 
C: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" 
C:   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
C:     <command>
C:         <check>
C:             <host:check>
C:                 <host:name>ns1.isnic.is</host:name>
C:             </host:check>
C:         </check>
C:         <clTRID>dummy_session_9763c040</clTRID>
C:     </command>
C: </epp>
S: <?xml version="1.0" encoding="UTF-8" standalone="no"?> 
S: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" 
S:   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
S:     <response>
S:         <result code="1000">
S:             <msg lang="en">Command completed successfully</msg>
S:         </result>
S:         <resData>
S:             <host:chkData>
S:                 <host:cd>
S:                     <host:name avail="false">ns1.isnic.is</host:name>
S:                     <host:reason lang="en">In use</host:reason>
S:                 </host:cd>
S:             </host:chkData>
S:         </resData>
S:         <trID>
S:             <clTRID>dummy_session_9763c040</clTRID>
S:             <svTRID>bf8f06c784928acc1d94a7a38f07f760</svTRID>
S:         </trID>
S:     </response>
S: </epp>

C: <?xml version="1.0" encoding="UTF-8" standalone="no"?> 
C: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" 
C:   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
C:     <command>
C:         <check>
C:             <host:check>
C:                 <host:name>ns1.isnic.is</host:name>
C:                 <host:name>fubididu.isnic.is</host:name>
C:             </host:check>
C:         </check>
C:         <clTRID>dummy_session_9cc2a674</clTRID>
C:     </command>
C: </epp>
S: <?xml version="1.0" encoding="UTF-8" standalone="no"?> 
S: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" 
S:   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
S:     <response>
S:         <result code="1000">
S:             <msg lang="en">Command completed successfully</msg>
S:         </result>
S:         <resData>
S:             <host:chkData>
S:                 <host:cd>
S:                     <host:name avail="false">ns1.isnic.is</host:name>
S:                     <host:reason lang="en">In use</host:reason>
S:                 </host:cd>
S:                 <host:cd>
S:                     <host:name avail="true">fubididu.isnic.is</host:name>
S:                     <host:reason lang="en">Host 'fubididu.isnic.is' not fou</host:reason>
S:                 </host:cd>
S:             </host:chkData>
S:         </resData>
S:         <trID>
S:             <clTRID>dummy_session_9cc2a674</clTRID>
S:             <svTRID>bf8f06c784928acc1d94a7a38f07f760</svTRID>
S:         </trID>
S:     </response>
S: </epp>

Update

Domain

In our backend for our web interface updating a domain is currently being done by a number of functions (processes).

Since defined in in RFC5730
EPP commands are atomic, so a command will either
succeed completely or fail completely.  Success and failure results
MUST NOT be mixed.
					
Instead of pre validating multiple commands and firing off multiple processes and then merging them back together, we require that the clients only update one "async" part of the domain at the time. We will throw an 2102 "Unimplemented option" error when for example the client tries to change the registrant (async) and updating ds records (sync).

When updating the registrant on a domain (which is asynchronous) the process needs to be confirmed by the registrant (if registrant has extended status='ok') else by the admin contact (if the registrant has the extended status=okUnconfirmed). If the process is not confirmed it will be notified via message with code 9301 - WARNING_PROCESS_WAITING. If the logged in EPP user is the old registrants sponsoring client the email confirm step is skipped.

C: <?xml version="1.0" encoding="UTF-8" standalone="no"?> 
C: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" 
C:   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
C:     <command>
C:         <update>
C:             <domain:update>
C:                 <domain:name>isnic.is</domain:name>
C:                 <domain:chg>
C:                     <domain:registrant>IIH70-IS</domain:registrant>
C:                 </domain:chg>
C:             </domain:update>
C:         </update>
C:         <clTRID>dummy_session_132a10d1</clTRID>
C:     </command>
C: </epp>
S: <?xml version="1.0" encoding="UTF-8" standalone="no"?> 
S: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" 
S:   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
S:     <response>
S:         <result code="2306">
S:             <msg lang="en">registrant - You can't transfer a domain to the current registrant
S: </msg>
S:         </result>
S:         <trID>
S:             <clTRID>dummy_session_132a10d1</clTRID>
S:             <svTRID>92d252c61be8412b8a5ab2e60e3b4eb6</svTRID>
S:         </trID>
S:     </response>
S: </epp>

C: <?xml version="1.0" encoding="UTF-8" standalone="no"?> 
C: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" 
C:   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
C:     <command>
C:         <update>
C:             <domain:update>
C:                 <domain:name>isnic.is</domain:name>
C:                 <domain:add>
C:                     <domain:ns>
C:                         <domain:hostObj>ns1.isnic.is</domain:hostObj>
C:                     </domain:ns>
C:                 </domain:add>
C:             </domain:update>
C:         </update>
C:         <clTRID>dummy_session_3a9bf9e9</clTRID>
C:     </command>
C: </epp>
S: <?xml version="1.0" encoding="UTF-8" standalone="no"?> 
S: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" 
S:   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
S:     <response>
S:         <result code="2002">
S:             <msg lang="en">Domain redelegation is already in queue
S: </msg>
S:         </result>
S:         <trID>
S:             <clTRID>dummy_session_3a9bf9e9</clTRID>
S:             <svTRID>38d7e695fbbdcf7037b4feba97bf5945</svTRID>
S:         </trID>
S:     </response>
S: </epp>

C: <?xml version="1.0" encoding="UTF-8" standalone="no"?> 
C: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" 
C:   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
C:     <command>
C:         <update>
C:             <domain:update>
C:                 <domain:name>isnic.is</domain:name>
C:                 <domain:add>
C:                     <domain:ns>
C:                         <domain:hostObj>aker123.isnic.is</domain:hostObj>
C:                     </domain:ns>
C:                 </domain:add>
C:             </domain:update>
C:         </update>
C:         <extension>
C:             <is-ext-domain:update>
C:                 <is-ext-domain:rem>
C:                     <is-ext-domain:ns_all>true</is-ext-domain:ns_all>
C:                 </is-ext-domain:rem>
C:                 <is-ext-domain:chg>
C:                     <is-ext-domain:master_ns>
C:                         <is-ext-domain:hostObj>aker123.isnic.is</is-ext-domain:hostObj>
C:                     </is-ext-domain:master_ns>
C:                 </is-ext-domain:chg>
C:             </is-ext-domain:update>
C:         </extension>
C:         <clTRID>dummy_session_dfc4ff67</clTRID>
C:     </command>
C: </epp>
S: <?xml version="1.0" encoding="UTF-8" standalone="no"?> 
S: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" 
S:   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
S:     <response>
S:         <result code="2306">
S:             <msg lang="en"> - Please specify two (ISNIC registered) nameservers
S: domain - Please specify two (ISNIC registered) nameservers
S: </msg>
S:         </result>
S:         <trID>
S:             <clTRID>dummy_session_dfc4ff67</clTRID>
S:             <svTRID>4d6a3c6787d8420eda3beb35d1bc8dd8</svTRID>
S:         </trID>
S:     </response>
S: </epp>

C: <?xml version="1.0" encoding="UTF-8" standalone="no"?> 
C: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" 
C:   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
C:     <command>
C:         <update>
C:             <domain:update>
C:                 <domain:name>isnic.is</domain:name>
C:             </domain:update>
C:         </update>
C:         <extension>
C:             <secDNS:update>
C:                 <secDNS:rem>
C:                     <secDNS:all>true</secDNS:all>
C:                 </secDNS:rem>
C:                 <secDNS:add>
C:                     <secDNS:dsData>
C:                         <secDNS:keyTag>39021</secDNS:keyTag>
C:                         <secDNS:alg>8</secDNS:alg>
C:                         <secDNS:digestType>2</secDNS:digestType>
C:                         <secDNS:digest>3D51512342028CFD91233A6D47C693128826D95B12CB79BA0087D12167A12283</secDNS:digest>
C:                     </secDNS:dsData>
C:                 </secDNS:add>
C:             </secDNS:update>
C:         </extension>
C:         <clTRID>dummy_session_6de1fafa</clTRID>
C:     </command>
C: </epp>
S: <?xml version="1.0" encoding="UTF-8" standalone="no"?> 
S: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" 
S:   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
S:     <response>
S:         <result code="1000">
S:             <msg lang="en">ds records updated
S: </msg>
S:         </result>
S:         <trID>
S:             <clTRID>dummy_session_6de1fafa</clTRID>
S:             <svTRID>92d252c61be8412b8a5ab2e60e3b4eb6</svTRID>
S:         </trID>
S:     </response>
S: </epp>

C: <?xml version="1.0" encoding="UTF-8" standalone="no"?> 
C: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" 
C:   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
C:     <command>
C:         <update>
C:             <domain:update>
C:                 <domain:name>isnic.is</domain:name>
C:                 <domain:add>
C:                     <domain:contact type="tech">TEST2-IS</domain:contact>
C:                 </domain:add>
C:                 <domain:rem>
C:                     <domain:contact type="tech">TEST-IS</domain:contact>
C:                 </domain:rem>
C:             </domain:update>
C:         </update>
C:         <clTRID>dummy_session_bc94bf82</clTRID>
C:     </command>
C: </epp>
S: <?xml version="1.0" encoding="UTF-8" standalone="no"?> 
S: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" 
S:   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
S:     <response>
S:         <result code="1000">
S:             <msg lang="en">contacts updated</msg>
S:         </result>
S:         <trID>
S:             <clTRID>dummy_session_bc94bf82</clTRID>
S:             <svTRID>92bae17c319b79c26c3fd5f9e722a2ad5b40b44aeefa3efa06a23c7038091d82</svTRID>
S:         </trID>
S:     </response>
S: </epp>
C: <?xml version="1.0" encoding="UTF-8" standalone="no"?> 
C: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" 
C:   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
C:     <command>
C:         <poll op="req"/>
C:         <clTRID>dummy_session_11111</clTRID>
C:     </command>
C: </epp>
S: <?xml version="1.0" encoding="UTF-8" standalone="no"?> 
S: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" 
S:   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
S:     <response>
S:         <result code="1301">
S:             <msg lang="en">Command completed successfully; ack to dequeue</msg>
S:         </result>
S:         <msgQ count="1" id="5528">
S:             <qDate>2017-09-06T17:58:47Z</qDate>
S:             <msg lang="en">'Transfer' completed, domain tech contact updated from TEST-IS to TEST2-IS successfully</msg>
S:         </msgQ>
S:         <resData>
S:             <domain:trnData>
S:                 <domain:name>isnic.is</domain:name>
S:                 <domain:trStatus>clientApproved</domain:trStatus>
S:                 <domain:reID>TEST2-IS</domain:reID>
S:                 <domain:reDate>2017-09-06T17:58:50Z</domain:reDate>
S:                 <domain:acID>TEST2-IS</domain:acID>
S:                 <domain:acDate>2017-09-06T17:58:50Z</domain:acDate>
S:             </domain:trnData>
S:         </resData>
S:         <trID>
S:             <clTRID>dummy_session_11111</clTRID>
S:             <svTRID>92bae17c319b79c26c3fd5f9e722a2ad5b40b44aeefa3efa06a23c7038091d82</svTRID>
S:         </trID>
S:     </response>
S: </epp>

Contact

Note: that this function is rate limited at 50 requests per 30 min.

C: <?xml version="1.0" encoding="UTF-8" standalone="no"?> 
C: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" 
C:   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
C:     <command>
C:         <update>
C:             <contact:update>
C:                 <contact:id>ISHM-IS</contact:id>
C:                 <contact:chg>
C:                     <contact:voice>+354.1</contact:voice>
C:                 </contact:chg>
C:             </contact:update>
C:         </update>
C:         <extension>
C:             <is-ext-contact:update>
C:                 <is-ext-contact:oldPW>1234</is-ext-contact:oldPW>
C:             </is-ext-contact:update>
C:         </extension>
C:         <clTRID>dummy_session_028eb2b6</clTRID>
C:     </command>
C: </epp>
S: <?xml version="1.0" encoding="UTF-8" standalone="no"?> 
S: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" 
S:   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
S:     <response>
S:         <result code="2306">
S:             <msg lang="en">voice - Telephone nr. invalid
S: </msg>
S:         </result>
S:         <trID>
S:             <clTRID>dummy_session_028eb2b6</clTRID>
S:             <svTRID>54571e0afa46213634a1c546b438bf63</svTRID>
S:         </trID>
S:     </response>
S: </epp>

C: <?xml version="1.0" encoding="UTF-8" standalone="no"?> 
C: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" 
C:   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
C:     <command>
C:         <update>
C:             <contact:update>
C:                 <contact:id>ISHM-IS</contact:id>
C:                 <contact:chg>
C:                     <contact:postalInfo type="int">
C:                         <contact:name>ISNIC Hostmaster</contact:name>
C:                     </contact:postalInfo>
C:                 </contact:chg>
C:             </contact:update>
C:         </update>
C:         <clTRID>dummy_session_6c811d80</clTRID>
C:     </command>
C: </epp>
S: <?xml version="1.0" encoding="UTF-8" standalone="no"?> 
S: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" 
S:   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
S:     <response>
S:         <result code="1000">
S:             <msg lang="en">Command completed successfully</msg>
S:         </result>
S:         <trID>
S:             <clTRID>dummy_session_6c811d80</clTRID>
S:             <svTRID>ab8e5bdda5b9f0b40468bccc2c5ffa285948522227be7da8d08d826ddbf65974</svTRID>
S:         </trID>
S:     </response>
S: </epp>

Host

There is no subordinate connection between domain and host objects (yet). All hosts (nameservers) must also be registered and all registered hosts have admin contact.

Transfer

Domain

Not implemented. Use update domain and update the admin contact or to change the registrant.

Contact

Not implemented.

By default the contact that registers a contact is the sponsoring client. If the contact is created on www.isnic.is the contact is the sponsoring client itself.

The contact can at anytime login to www.isnic.is and change the sponsoring client. That action will create a 'serverApproved' transfer notification.

Host

Not implemented. Use update host with extension to update the admin contact.