.UA - наш дiм. Зробимо його кращим!


RDAP

Registration Data Access Protocol (RDAP) - це протокол доступу до реєстраційних даних із реєстра доменних імен. Він є наступником протоколу WHOIS. На відміну від WHOIS, RDAP надає дані в машиночитаному форматі JavaScript Object Notation (JSON). RDAP базується на веб-службах RESTful API з використанням протоколу HTTPs.

Призначений для отримання інформації про зареєстровані в Реєстрі об'єкти:

Формат запитів до сервісу RDAP

Запити щодо доменів і інших об'єктів, що обслуговується Реєстром, мають бути надіслані на server https:://rdap.eunic.net.ua наступним чином:

  • https://rdap.eunic.net.ua/help – запит щодо інформації про сервіс RDAP
  • https://rdap.eunic.net.ua/domain/<domain> - запит щодо доменного імені
  • https://rdap.eunic.net.ua/nameserver/<hostname> - запит щодо імені хоста (DNS-сервера)
  • https://rdap.eunic.net.ua/entity/<registrar> - запит щодо реєстратора доменного імені
  • https://rdap.eunic.net.ua/entity/<contact-id> - запит щодо контакту доменного імені

Клієнти можуть звертатися до сервера за протоколом HTTPs з використанням GET та HEAD методів, сервер на них формує відповіді. Запити з використанням інших методів не обробляються.

Допустимий заголовок Accept: у HTTP-запиті: Accept: application/rdap+json

Якщо сервер має інформацію за отриманим запитом, він повертає код відповіді 200 OK та об'єкт відповіді JSON (RFC9083).

Якщо сервер не має інформації, що відповідає на запит, він повертає код відповіді 404 Not found.

Якщо на сервері немає інформації, яка є відповіддю на запит, але відомо, де інформація може бути знайдена, сервер повертає відповідь перенаправлення (3xx) із заголовком Location, що містить URL-адресу HTTP(S), що вказує на інший сервер, який може мати запитувану інформацію.

Якщо у запиті до сервера є додаткові параметри, вони ігноруються сервером.

Кодування запитів та відповідей сервера - UTF-8

Документація до сервісу RDAP

  • RFC7480 HTTP Usage in the Registration Data Access Protocol (RDAP).
  • RFC7481 Security Services for the Registration Data Access Protocol (RDAP).
  • RFC9082 Registration Data Access Protocol (RDAP) Query Format.
  • RFC9083 JSON Responses for the Registration Data Access Protocol (RDAP).
  • RFC7095 jCard: The JSON Format for vCard
  • RFC6350 vCard Format Specification
  • RFC6868 Parameter Value Encoding in iCalendar and vCard
  • RFC8605 vCard Format Extensions: ICANN Extensions for the Registration Data Access Protocol (RDAP)
  • RFC8056 Extensible Provisioning Protocol (EPP) and Registration Data Access Protocol (RDAP) Status Mapping

HTTP Status Codes

В залежності від результата обробки запиту сервер поверне код відповіді:

  • 200 OK - об'єкт знайдено, інформація передана в тілі відповіді
  • 302 Found - сервер направив запит до іншого авторитетного сервера RDAP
  • 404 Not Found - об'єкт не зареєстрований в реєстрі
  • 400 Bad Request - некоректний запит - сервер не прийняв його
  • 405 Method Not Allowed - сервер приймає лише запити GET та HEAD
  • 429 Too Many Requests - перевишено ліміт запитів до сервера
  • 403 Forbidden - клієнт заблокований через зловживання
  • 501 Not Implemented - домен не обслуговується Реєстром і не має інформації про службу RDAP, яка є авторитетною.
  • 500 Internal Server Error - помилка сервера

Інформація про домен:

Запит:

https://rdap.eunic.net.ua/domain/<domain>

Приклад відповіді в форматі JSON:

"rdapConformance":
["rdap_level_0"],
"objectClassName":
"domain",
- тип об'єкта - domain
"handle":
"example.ua",
- ідентіфікатор об'єкта - доменне ім'я
"ldhName":
"example.ua",
- доменне ім'я
"unicodeName":
"",
- доменне ім'я в UNICODE (якщо доменне ім'я в punicode)
"nameservers":
[…]
- масив DNS-серверів
"entities":
[…]
- масив даних щодо реєстратора та контактів домену
"status":
[…]
"secureDNS":
{…}
- інформація щодо DNSSEC
"events":
[…]
- масив подій (дати створення, закінчення реєстрації, останної зміни)
"links":
[…]
- посилання на об'єкт
"remarks":
[…]
- примітки (номер ліцензії для доменів .UA, тощо)
"port43":
"whois.ua"
- whois сервер

Інформація про хост (DNS server):

Запит:

https://rdap.eunic.net.ua/nameserver/<hostname>

Приклад відповіді в форматі JSON:

"rdapConformance":
["rdap_level_0"],
"objectClassName":
"nameserver",
- тип об'єкта - nameserver
"handle":
"ns1.example.ua",
- ідентіфікатор об'єкта - ім'я хоста
"ldhName":
"ns1.example.ua",
- ім'я хоста
"unicodeName":
"",
- ім'я хоста в UNICODE (якщо доменне ім'я в punicode)
"ipAddresses":
{…}
- IP-адреси хоста
"entities":
[…]
- масив даних щодо реєстратора, що супроводжує об'єкт
"status":
[…]
"events":
[…]
- масив подій (дати створення, останної зміни)
"links":
[…]
- посилання на об'єкт

Інформація про реєстратора:

Запит:

https://rdap.eunic.net.ua/entity/<registrar>

Приклад відповіді в форматі JSON:

"rdapConformance":
["rdap_level_0"],
"objectClassName":
"entity",
- тип об'єкта - entity
"handle":
"ua.xxxxxx",
- ідентифікатор реєстратора
"roles":
["registrar"]
- роль: реєстратор
"vcardArray":
[…]
- масив даних щодо реєстратора
"status":
["active"]
- статус реєстратора

Інформація про контакт домену:

Запит:

https://rdap.eunic.net.ua/entity/<contact-id>

Приклад відповіді в форматі JSON:

"rdapConformance":
["rdap_level_0"],
"objectClassName":
"entity",
- тип об'єкта - entity
"handle":
"",
- ідентифікатор контакта не відображається у відповіді
"roles":
[…]
- масив типов ролей контакта в домені
"vcardArray":
[…]
- масив даних щодо контакта
"status":
[…]
"entities":
[…]
- масив даних щодо реєстратора, що супроводжує об'єкт
"events":
[…]
- масив подій (дати створення, останної зміни)
"remarks":
[…]
- примітки (повідомлення в разі закриття деяких даних)

Варіанти "roles": ["registrant", "administrative", "technical"].

  • "registrant" - реєстрант домену
  • "technical" - технічний контакт доменного об'єкта
  • "administrative" - адміністративний контакт доменного об'єкту

В окремому запиті entity element "roles" не використовується, тільки в інформації по домену.


Опис елементів відповіді:

Загальні елементи, які можуть бути присутніми на всіх відповідях сервера:

  • rdapConformance – масив, що визначає специфікації JSON-документу.
    "rdapConformance":["rdap_level_0"]
  • objectClassName – тип об’єкту. Може приймати наступні значення: "domain", "nameserver", "entity"
  • links - масив посилань на об’єкти або документи. Відповідь сервера щодо об’єктів містить посилання, за яким він був або може бути отриманий.
    Приклад:
    "links":[
     {rel":"self",
      "value":"https://rdap.eunic.net.ua/domain/example.net.ua",
      "type":"application/rdap+json",
      "href":"https://rdap.eunic.net.ua/domain/example.net.ua"
     }]
    
  • notices та remarks - notices використовується для опису сервісу RDAP у відповіть на запит “/help” або для опису відповіді в цілому. Блок notices також містить посилання на web-сторінку з описом умов використання сервису. Блок remarks використовується для опису об’єктів. Приклад: Відповідь на /help:
    "notices":[
     {["title":"Terms of Use",
      "description":["See https://www.eunic.net.ua/rdap"]
     }]
    
    Інформація про те, що деякі дані в контактах скрито :
     "remarks":[
     {["title":"Data Policy",
      "description":["Some of the data in this object has been removed."]
     }]
    
    Номер ТМ в доменах другого рівня .UA
     "remarks":[
      {"description":["license: 9999999"]}
     ]
    
    Інформація про те, що домен є публічним
     "remarks":[
      {"description":["dom-public: YES"]}
     ]
    
  • events – містить масив елементів, що описують події щодо об’єкту.

    Кожна подія містить поля:

    • "eventAction" - назва
    • "eventDate" - дата
    • "eventActor" - ініціатор

    Значення поля eventAction для об’єктів domain:

    • "registration" - дата реєстрації доменного імені
    • "last changed" - дата останньої зміни в доменному імені
    • "expiration" - дата закінчення строку реєстрації доменного імені

    Значення поля eventAction для об’єктів nameserver та entity:

    • registration - дата реєстрації об’єкта в реєстрі
    • last changed - дата останньої зміни

    Для об’єктів entity-реєстратори блок events не використовується. Якщо ініціатор події Реєстр, то поле eventActor не зазначається.

  • Приклад:
     "events":[
      {"eventAction":"registration",
       "eventDate":"2010-09-01T08:01:01+03:00",
       "eventActor":"ua.xxxxxx"},
      {"eventAction":"last changed",
       "eventDate":"2023-11-02T21:15:29+02:00",
       "eventActor":"ua.xxxxxx"},
      {"eventAction":"expiration",
       "eventDate":"2024-09-01T08:01:01+03:00"}
     ]
    
  • status - масив рядків зі статусами об’єкту

    RFC8056 “Extensible Provisioning Protocol (EPP) and Registration Data Access Protocol (RDAP) Status Mapping” описує перетворення статусів EPP в RDAP.

    Статуси, що використовуються в EPP перетворюються наступним чином: (зазначено типи об’єктів, щодо яких може бути застосований статус. При цьому об’єкт “entity” призначений для контактів доменного імені та контакту реєстратора):

    EPPRDAPоб'єкти
    autoRenewGracePeriod"auto renew period"(domain)
    clientDeleteProhibited"client delete prohibited"(domain, entity, nameserver)
    clientHold"client hold"(domain)
    clientRenewProhibited"client renew prohibited"(domain)
    clientTransferProhibited"client transfer prohibited"(domain)
    clientUpdateProhibited"client update prohibited(domain, entity, nameserver)
    inactive"inactive"(domain)
    linked"associated"(entity, nameserver)
    ok"active"(domain, entity, nameserver)
    pendingCreate"pending create"(domain)
    pendingDelete"pending delete"(domain)
    pendingTransfer"pending transfer"(domain)
    pendingUpdate"pending update"(domain)
    redemptionPeriod"redemption period"(domain)
    serverDeleteProhibited"server delete prohibited"(domain, entity, nameserver)
    serverRenewProhibited"server renew prohibited"(domain)
    serverTransferProhibited"server transfer prohibited"(domain)
    serverUpdateProhibited"server update prohibited"(domain, entity, nameserver)
    serverHold"server hold"(domain)

    Окрім статусів EPP, для об'єктів “entity” - контакти доменів може застосовуватися статус “private”, якщо контакт містить інформацію, закриту реєстратором

    Приклад:
     "status":["active","associated","private"]
    

Опис елементів vcardArray - дані про реєстраторів і контакти доменів:

  • Опис елемента "vcardArray" об’єкту entity для реєстраторів

    Масив "vcardArray" містить елемент "vcard" - дані про реєстратора, представлені у форматі jCard (RFC7095): назва підприємства реєстратора, адреса для скарг, номер телефона, e-mail, url сайту

    Приклад:

     "vcardArray": [
      "vcard",[
       [ "version", {}, "text", "4.0" ],
       ["fn",{},"text","Orgname"],
       ["adr",{
         "type":"work",
         "label":"02000, Ukraine, Kyiv, Tarasa Shevchenka Ln, 1, 2"},
        "text",["","","","Kyiv","","","UA"]],
       ["tel",{"type":["voice"]},"uri","tel:+3804455555555"],
       ["email",{},"text","[email protected]"],
       ["url",{"type":"home"},"uri","https://example.ua/"]
      ]]
    
  • Опис елемента "vcardArray" об’єкту entity для контактів доменів

    Масив "vcardArray" містить елемент "vcard" - дані про контакт, представлені у форматі jCard (RFC7095): ім'я та/або назва організації, адреса, номер телефона, e-mail

    Приклад:

     "vcardArray": [
      "vcard",[
       [ "version", {}, "text", "4.0" ],
       ["fn",{},"text","Orgname"],
       ["fn",{"altid":"1"},"text","Name"],
       ["fn",{"altid":"2"},"text","Ім'я"],
       ["org",{"altid":"1"},
        "text",
        "OrgName"],
       ["org",{"altid":"2"},
        "text",
        "Назва організації"],
       ["adr",{"altid":"1"},
        "text",
        ["","building","the street","KYIV","","02000","Ukraine"]],
       ["adr",{"altid":"2"},
        "text",
        ["","будинок","вулиця","КИЇВ","","02000","Ukraine"]],
       ["tel",{"type": ["voice"]},"text","+380.445555555"],
       ["email",{},"text","[email protected]"]
      ]]
    
  • Деякі або всі дані контакта домену можуть бути закрити для перегляду реєстратором. В такому разі об'єкт доповнюється статусом "private" та елементом remarks:

     "remarks":[{
      "title":"Data Policy",
      "description":["Some of the data in this object has been removed."]
     }]
    
  • Екранування символів у текстових полях блоку vCard

    Якщо в текстових полях блоку vcard зустрічаються перераховані нижче спецсимволи, вони екрануються символом «\» (U+005E) згідно з RFC6868:

    • символ кінця строки представляється як “\n” (U+005E, U+006E)
    • символ зворотний слеш “\” (U+005E) замінюється на “\\” (U+005E, U+005E)
    • символ подвійна лапка “ (U+0022) замінюється на одиночну лапку ’ (U+0027)

DNSSEC

"secureDNS" - елемент об'єкту domain, що включає опис DS-записів домену (RFC4034). Блок завжди присутній в об'єкті, незалежно, чи є в реєстрі DS-записи для домену. Якщо DS-записів немає, то виводиться лише "delegationSigned":"false".

Масив складається з елементів:

  • "delegationSigned" : "true", є запис DS, "false", якщо записів немає
  • "dsData" - масив об'єктів, кожен з яких складається з наступних елементів:
    • "keyTag" - ціле число - значення keytag поля DNS DS запису
    • "algorithm" - ціле число - значення alg DNS DS запису
    • "digest" - рядок - значення поля digest DNS DS запису
    • "digestType" - ціле число - значення поля digest type DNS DS