ISNIC EPP Interface Specification

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 - 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 ISP's (unregistered ISP's also for that matter) and the registrants themselves (those with enough technical skills). Which means there are no sponsoring clients on domains, hosts or contacts. 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 contact ISNIC to get access to the EPP server.

Our EPP API replaces the deprecated SOAP API documentation.

We are building this EPP interface to serve our ISP's so please send any comments, bug reports or questions to api-support@isnic.is.

Production environment

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

Development environment

The EPP server is running at epp-dev.isnic.is port 700 with web interface at epp-dev.isnic.is port 443 (See epp-dev version of this page for upcoming changes).

Document history

1.9.17 - 2015-05-12 - First version running on epp-dev.isnic.is
axeladdinfo domain
axeladdinfo contact
axeladdpoll
axeladdcreate domain
axeladdcreate host
axeladddelete domain
axeladddelete host
axeladdcreate contact
axeladdrenew domain
axelupdaterenamed creditCardID to cardID in domain extension, since we mainly use this for prepaid accounts
1.9.18.17 - 2015-07-29 - Fixing errors reported in login and response and added new functionality
axelfixErrors occurring before login where not being handled correctly
axelfixDefault msg in result was not being set correctly after refactor to allow custom msg
axeladdcheck domain
axeladdcheck host
axeladdinfo host
axeladdupdate host
axeladdupdate domain supports change registrant
axeladdupdate domain supports add/removal nameservers
axeladdupdate domain supports add/removal of 'clientHold' status
axeladdupdate domain supports add/removal of contacts
axeladdupdate domain supports add/removal of dsdata
axeladdupdate contact
axelfixuse *.isnic.is cert and allow clients to use standard certificate authorities
axeladdgraceful exit on SIGHUP
einarfixMessages with empty cl_trid caused an internal server error
einarfixPoll response did not include the message itself
einarfixcreate contact was not working
einarfixFix thread safety issue which caused server to stop responding to requests
1.9.19.10 - 2015-10-15 - Misc fixes
axelfixdo not return domain name with prepended garbage in poll request for domain delete
axeladdadd registry initiated 'pending action notification' messages for status changes, domain delete and redelegations
axelfixmissing elements in our extended schemas
axeladdadd xml sequence examples to our epp interface specification
axeladdadd updateType to domain extension to better control master nameserver
axeladdadd custom list extension to fetch 'my' list (list of domains associated with logged in user)
axelfixstop using fax field on contacts
axelfixFix "2500 Command failed error" for domain:info when looking up pendingCreate domains
axeladddomain:info now returns pendingCreate domains
axelfixFix "2500 Command failed error" for contact:info when looking up nonexistent contact
axeladdcontact:info now returns pendingCreate contacts
axelfixunder certain conditions utf8 does not work, causing "Invalid character, are you by any change sending utf8 encoded strings into latin-1 containers?" errors
1.9.20.6 - 2015-11-20 - Misc fixes 2, added account:info
axelfixfix bug where domains with more then 56 letters cannot be registered
einarfixFix a backend issue which caused updates to a contacts postcode to be ignored
einaraddAdd account extension and account:info action to list all accounts for logged in user
einarfixcontact:create no longer returns error 2302 when creating a duplicate contact. Instead it returns 1000 and the creData of the existing contact in resData
einarfixaccount:info caused a server info if an account held a balance that caused an error when casting from float to double
einarfixcontact:create always returned a server error, unless the contact already existed. The contacts were created though, so another call to contact:create would return success
einarfixcontact:create did not handle contact type correctly
1.9.21.1 - 2015-12-02 - Misc fixes
einarfixContacts with undisclosed addresses caused illegal response xml to be returned
einarfixContacts with extensions in the phone numbers caused illegal response xml to be returned
einarfixContacts where being created with the default create date of 1970-01-01
einarfixContacts were created with status pendingCreate, not okUnconfirmed as intended
1.9.22.2 - 2016-04-25 - Prepare longer period, fix bugs
axeladdPrepare backend to allow 1,2 and 3 years period in domain:create and 1,2,3,4 and 5 years in domain:renew
axelfixstop adding newline to msg elements
axelfixFix bug renData:exDate is not returned in domain:renew
axelfixFix error messages in domain:update change add/rem contacts
1.9.22.3 - 2016-12-29 - Update libphonenumber
axelfixUpdate libphonenumber
1.9.22.4 - 2017-04-04 - Fix nullpointer in domain:update, update libphonenumber
axelfixUpdate libphonenumber to 8.4.0
axelfixFix NPE in domain:update when in dnssec extenstion remType.all is not set
1.9.22.5 - 2017-04-10 - Capability to cancel domain delete
axeladdAdd update:domain rgp:update:restore to cancel domain delete
1.9.23 - 2017-08-05 - Fix bugs
axelfixfix bug causing cltrid not being updated between actions
axelfixfix bug session leakage
1.9.24 - 2017-08-07 - Fix bugs
axelfixfix 'internal server error' in info:contact when contact is legacy contact with no email
axeladdreturn trnData notification messages when contacts of domains are changed
1.9.25 - 2017-08-07 - Update libphonenumber
axelfixUpdate libphonenumber to 8.8.1
1.9.26 - 2017-09-27 - No functional change
axelfixFix logs
axelfixUpdate libphonenumber to 8.8.2
1.9.27 - 2017-11-03 - No functional change
axelfixInternal ratelimit changes
axelfixUpdate libphonenumber to 8.8.5
1.9.28 - 2017-11-08 - No functional change
axelfixReturn better error msg when logging out when not logged in

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">					

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.

Info

Domain

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>dev-parking00.isnic.is</domain:hostObj>
S:                     <domain:hostObj>dev-parking02.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

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>false</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

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 in favour of https://rdap.isnic.is/rdap/rdap/help

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 are delivered when an asyncronous 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. For testing purposes on the development environment create creditcard number: VISA, 4571999400007492, CVC 150, (exp. date any date in the future). After card has been created use the ID of the entity in cardID variable of 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

Contacts are created with status "okUnconfirmed" status and ISNIC sends an email to confirm the registration. The contact is usable as a registrant and billing contact when the status is "okUnconfirmed".

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:         <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="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:         <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_0c2b943f</clTRID>
S:             <svTRID>bf2cde29584c15226d8fb28894ab29a3</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 domain create for info about cardID used 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

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

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 old SOAP API and 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).

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

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>

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. The contact itself is the sponsoring client

Host

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