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 agents and dns service providers. But with some assumptions and standard operating procedures this "should" work.

So there are no registrars providing interfaces to ISNIC only registered DNSPs (DNS providers, 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 no longer required.

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. After being granted access to the sandbox 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.432025-12-16fixdependencies
1.10.442026-01-27fixDependencies
1.10.44 (backend only)2026-03-19updatehost:check now validates the hostname
1.10.44 (backend only)2026-03-19updateclient cert requirement dropped
1.10.452026-03-27fixDependencies

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 element 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.

Show example - Fetch domain info successfully with DNSSEC
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>
Show example - Fetch nonexistent domain info
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>
Show example - Fetch pendingCreate domain info successfully
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.

Show example - Fetch contact info successfully
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>
Show example - Fetch contact info successfully - pending
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.

  • The returned statuses have not been implemented, statusValueType, always set to 'ok'.
  • Sponsoring client is the admin contact for the host, infDataType.
Show example - Fetch host info successfully
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>
Show example - Fetch host info for host that does not exist
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

  • 'my': returns domains associated with currently logged in user
Show example - Fetch 'my' list
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

  • Fetches accounts that the currently logged in user has access to
  • Prepaid accounts (brand is ISNICPP) have no number element (card number)
  • Creditcards (brand is not ISNICPP) have no currency element
Show example - Fetch 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.

Show example - Poll - Domain create finishes successfully
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>
Show example - Poll - Domain create manual action needed (code 9301)
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>
Show example - Poll - Domain does not meet technical requirements (code 9302)
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:   <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" xmlns:is-ext-account="urn:is.isnic:xml:ns:is-ext-account-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: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" xmlns:is-ext-list="urn:is.isnic:xml:ns:is-ext-list-1.0">
S:   <response>
S:   <result code="1301">
S:         <msg lang="en">Command completed successfully; ack to dequeue</msg>
S:       </result>
S:       <msgQ count="1" id="38306">
S:         <qDate>2025-10-20T13:32:12Z</qDate>
S:         <msg lang="en">
				{
					"msg":"test error1
						test error2
						test error3",
					"code":9302,
					"domain_name":"pp.is",
					"failed_weeks":4
				}
			</msg>
S:       </msgQ>
S:       <trID>
S:         <clTRID>68f639dceff86</clTRID>
S:         <svTRID>8de9ee05b4abade87735dceafabcc9102ee1aeb4b51f82021234a1eb25f11bab</svTRID>
S:       </trID>
S:     </response>
S:   </epp>
Show example - Poll - Ack a message
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>
Show example - Poll - Req with no messages
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.

  • domain:ns must contain fully qualified names of host objects the domain is delegated to, host attributes are not allowed. If no ns is set the domain will be delegated to ISNIC's parking servers
  • Periods 1,2,3,4,5 years allowed
  • Domain extension.
Show example - Domain not available
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>
Show example - Domain queue for creation
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>
Show example - Domain already queued for creation
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 or Agents 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).

  • Id can be ignored, it is assigned when contact is created by the server. createType.
  • AuthInfo:pw is required and becomes the contacts password. createType.
  • Do not disclose is really just one boolean flag, discloseType.
  • If the contact is a duplicate of an existing contact, the existing contact is returned
  • Contact extension. It has come to our attention that some EPP users are not sending in this extension. It will be mandatory after 1. okt. 2018.
Show example - Create contact (person witheld from whois) with postal code missing error
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>
Show example - Create a duplicate of an existing 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:         <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>
Show example - Create contact (role not witheld from whois) with postal code missing error
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.

Show example - When not logged in as admin contact for 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:         <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>
Show example - Command completed successfully; action pending
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>
Show example - Cancel pending domain delete
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.

Show example - When not logged in as admin contact for 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:         <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.

Show example - Domain renewed
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.

Show example - Domain in use
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>
Show example - Check two domains in use and available
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.

Show example - Check 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:         <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>
Show example - Check two hosts
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).

  • Transfer a domain from one registrant to another, is an asynchronous function.
  • Updating the domain nameservers is an asynchronous function.
  • Updating the domain contacts is synchronous. (By updating the admin contact the domain is effectively being domain transferred.)
  • Adding or removing domain ds records is a synchronous function.
  • Adding "clientHold" status to a domain called "Stop service" on our website.
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.

  • Add and Remove
    • ns:hostObj (hostAttr not supported), all nameservers must be registered, async
    • status only 'clientHold' allowed to be added and removed
    • contacts, every domain must have one admin,billing and tech contact
    • secDNS.
  • Change
    • registrant, works as expected, async
    • authInfo is not supported
    • contactType, not required defaults to currently logged in user contactType.
Show example - Update domain registrant to current registrant error
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>
Show example - Update domain add nameserver already in queue error
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>
Show example - Update domain add one and remove all other nameservers, also set primary nameserver
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>
Show example - Update ds records on 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:         <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>
Show example - Update domain tech contact (poll notification sent to new and old 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:             <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.

  • Add and Remove
    • statuses not allowed
  • Change
    • postalInfo chgPostalInfoType
    • voice works as expected
    • fax is not used
    • email confirmation email is sent
    • authInfo works as expected
    • Do not disclose is really just one boolean flag, see discloseType.
    • chgType
      • mobile, not required defaults to currently logged in user chgType.
      • autoUpdateFromNationalRegistry, not required chgType.
      • cancelPaper always true since 2023-06-01 chgType.
      • lang, not required chgType.
  • updateType
    • oldPW, must be set for all contact updates updateType.
Show example - Update contact with invalid voice number
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>
Show example - Update contact with name
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.

  • Add and Remove
    • statuses, is not allowed
    • addr, should be standard except only 4 addresses are allowed
  • Change
    • name, is not allowed, workaround is delete and create new host
    • Host extension.

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.