Table of Contents

ISNIC REPP Interface Specification

🚧 Introduction

This work is currently experimental since the EPP over RESTful Transport is still a draft.

That means things can change and break at any given time.

To get access to REPP first create a contact and add ip addresses or subnets to your access control list and request access to the REPP. If you comply with requirements ISNIC will then migrate your contact over to the sandbox environment. Next you will need to perform lost password on the sandbox. Then you can issue a REPP API-KEY for access on the sandbox. When the minimum required testing against sandbox is done you contact ISNIC again to request access to the production environment. Finally you can issue a REPP API-KEY for production access.

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

Versions

Version Initial Release End-of-life
https://repp.isnic.is/v1 2023-12-05 TBD

Environments

Not yet

Requirements for access

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

Changelog

Show complete changelog.

VersionDateTypeDescription
02023-12-05addcheck:domain, poll, ack
Total 1 item.

Schemas from RFC's

See EPP documentation.

Poll

curl -u "YOURNIC-IS:API_KEY" https://repp.isnic.is/v1/messages
C: GET /v1/messages HTTP/2
C: Host: repp.isnic.is
C: Authorization: Basic 
C: Accept: */*

S: content-type: application/json
S:
S:
S: {
S:     "response": {
S:         "result": {
S:             "code": "1300",
S:             "content": {
S:                 "msg": {
S:                     "lang": "en",
S:                     "content": "Command completed successfully; no messages"
S:                 }
S:             }
S:         },
S:         "trID": {
S:             "clTRID": "client-fd87df87df998fd7fdf",
S:             "svTRID": "server-liejfliejfliejflefe"
S:         }
S:     }
S: }

C: GET /v1/messages HTTP/2
C: Host: repp.isnic.is
C: Authorization: Basic 
C: Accept: application/xml

S: content-type: application/xml
S:
S:
S: <?xml version="1.0" encoding="UTF-8"?>
S: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
S:   <response>
S:     <result code="1300">
S:       <msg lang="en">Command completed successfully; no messages</msg>
S:     </result>
S:     <trID>
S:       <clTRID>client-fd87df87df998fd7fdf</clTRID>
S:       <svTRID>server-liejfliejfliejflefe</svTRID>
S:     </trID>
S:   </response>
S: </epp>

C: DELETE /v1/messages/29520 HTTP/2
C: Host: repp.isnic.is
C: Authorization: Basic 
C: Accept: application/json

S: content-type: application/json
S: access-control-allow-origin: *
S:
S:
S: {
S:     "response": {
S:         "result": {
S:             "code": "1000",
S:             "content": {
S:                 "msg": {
S:                     "lang": "en",
S:                     "content": "Command completed successfully"
S:                 }
S:             }
S:         },
S:         "msgQ": {
S:             "count": "1",
S:             "id": "29539",
S:             "content": {
S:                 "qDate": "2023-12-06T13:21:38+00:00",
S:                 "msg": {
S:                     "lang": "en",
S:                     "content": "Domain created"
S:                 }
S:             }
S:         },
S:         "resData": {
S:             "domain:panData": {
S:                 "domain:name": {
S:                     "paResult": "true",
S:                     "content": "test.is"
S:                 },
S:                 "domain:paTRID": {
S:                     "clTRID": "client-liejfleijfleijfeef",
S:                     "svTRID": "server-ifjelifjelifjflief"
S:                 },
S:                 "domain:paDate": "2023-12-06T13:21:38+00:00"
S:             }
S:         },
S:         "trID": {
S:             "clTRID": "client-fd87df87df998fd7fdf",
S:             "svTRID": "server-liejfliejfliejflefe"
S:         }
S:     },
S:     "ns": {
S:         "domain": "urn:ietf:params:xml:ns:domain-1.0"
S:     }
S: }

Check

Domain

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

No deviations as of yet, should follow standard.

curl -u "YOURNIC-IS:API_KEY" -head https://repp.isnic.is/v1/domains/idontexist123.is
C: HEAD /v1/domains/idontexist123.is HTTP/2
C: Host: repp.isnic.is
C: Authorization: Basic <base64 of YOURNIC-IS:API-KEY>

S: repp-check-avail: 1
S: repp-check-reason: available
S: repp-result-code: 1000

curl -u "YOURNIC-IS:API_KEY" -head https://repp.isnic.is/v1/domains/isnic.is
C: HEAD /v1/domains/isnic.is HTTP/2
C: Host: repp.isnic.is
C: Authorization: Basic <base64 of YOURNIC-IS:API-KEY>

S: repp-check-avail: 0
S: repp-check-reason: active
S: repp-result-code: 1000