Add an "about" link to registrars in RDAP (#2771)

From the response profile:
2.4.6. Registrar URL - The entity with the registrar role in the RDAP response
MUST contain a links member [RFC9083]. The links object MUST contain
the elements: value, identical to the the RDAP Base URL for the
Registrar as provided in the IANA “Registrar IDs” registry (i.e.,
https://www.iana.org/assignments/registrar-ids); rel:about, and href
containing the Registrar URL. Note: in cases where the Registry Operator
acts as sponsoring Registrar (e.g., IANA Registrar ID 9999), the href shall
contain a URL from the Registry.
This commit is contained in:
gbrodman
2025-07-08 14:54:07 +00:00
committed by GitHub
parent b27b077638
commit f34aec8b56
37 changed files with 302 additions and 77 deletions
@@ -379,6 +379,7 @@ public abstract class JpaTransactionManagerExtension
.setPassword("foo-BAR2")
.setPhoneNumber("+1.3334445555")
.setPhonePasscode("12345")
.setRdapBaseUrls(ImmutableSet.of("https://rdap.newregistrar.com/"))
.setRegistryLockAllowed(false)
.build();
}
@@ -393,6 +394,7 @@ public abstract class JpaTransactionManagerExtension
.setPassword("password2")
.setPhoneNumber("+1.2223334444")
.setPhonePasscode("22222")
.setRdapBaseUrls(ImmutableSet.of("https://rdap.theregistrar.com/"))
.setRegistryLockAllowed(true)
.build();
}
@@ -84,9 +84,7 @@ public final class FullFieldsTestEntityHelper {
.setFaxNumber("+1.2125551213")
.setEmailAddress("contact-us@example.com")
.setWhoisServer("whois.example.com")
.setRdapBaseUrls(
ImmutableSet.of(
"https://rdap.example.com/withSlash/", "https://rdap.example.com/withoutSlash"))
.setRdapBaseUrls(ImmutableSet.of("https://rdap.example.com/withSlash/"))
.setUrl("http://my.fake.url")
.build();
}
@@ -25,12 +25,6 @@
"type": "application/rdap+json",
"rel": "related",
"value": "%REQUEST_URL%"
},
{
"href": "https://rdap.example.com/withoutSlash/domain/%DOMAIN_PUNYCODE_NAME_1%",
"type": "application/rdap+json",
"rel": "related",
"value": "%REQUEST_URL%"
}
],
"events": [
@@ -122,6 +116,12 @@
"type": "application/rdap+json",
"rel": "self",
"value": "%REQUEST_URL%"
},
{
"rel": "about",
"href": "http://my.fake.url",
"type": "text/html",
"value": "https://rdap.example.com/withSlash/"
}
],
"vcardArray" : [
@@ -15,6 +15,12 @@
"rel": "self",
"type": "application/rdap+json",
"value": "https://example.tld/rdap/domain/addgraceperiod.lol"
},
{
"rel": "about",
"href": "http://my.fake.url",
"type": "text/html",
"value": "https://rdap.theregistrar.com/"
}
],
"publicIds": [
@@ -128,6 +134,12 @@
"rel": "self",
"type": "application/rdap+json",
"value": "https://example.tld/rdap/domain/addgraceperiod.lol"
},
{
"href": "https://rdap.theregistrar.com/domain/addgraceperiod.lol",
"rel": "related",
"type": "application/rdap+json",
"value": "https://example.tld/rdap/domain/addgraceperiod.lol"
}
],
"nameservers": [
@@ -15,6 +15,12 @@
"rel": "self",
"type": "application/rdap+json",
"value": "https://example.tld/rdap/domain/autorenew.lol"
},
{
"rel": "about",
"href": "http://my.fake.url",
"type": "text/html",
"value": "https://rdap.theregistrar.com/"
}
],
"publicIds": [
@@ -132,6 +138,12 @@
"rel": "self",
"type": "application/rdap+json",
"value": "https://example.tld/rdap/domain/autorenew.lol"
},
{
"href": "https://rdap.theregistrar.com/domain/autorenew.lol",
"rel": "related",
"type": "application/rdap+json",
"value": "https://example.tld/rdap/domain/autorenew.lol"
}
],
"nameservers": [
@@ -25,12 +25,6 @@
"type": "application/rdap+json",
"rel": "related",
"value": "https://example.tld/rdap/domains"
},
{
"href": "https://rdap.example.com/withoutSlash/domain/%DOMAIN_PUNYCODE_NAME_1%",
"type": "application/rdap+json",
"rel": "related",
"value": "https://example.tld/rdap/domains"
}
],
"events": [
@@ -105,6 +99,12 @@
"type": "application/rdap+json",
"rel": "self",
"value": "https://example.tld/rdap/domains"
},
{
"rel": "about",
"href": "http://my.fake.url",
"type": "text/html",
"value": "https://rdap.example.com/withSlash/"
}
],
"vcardArray" : [
@@ -26,12 +26,6 @@
"type": "application/rdap+json",
"rel": "related",
"value": "%REQUEST_URL%"
},
{
"href": "https://rdap.example.com/withoutSlash/domain/%DOMAIN_PUNYCODE_NAME_1%",
"type": "application/rdap+json",
"rel": "related",
"value": "%REQUEST_URL%"
}
],
"events": [
@@ -117,6 +111,12 @@
"type": "application/rdap+json",
"rel": "self",
"value": "%REQUEST_URL%"
},
{
"rel": "about",
"href": "http://my.fake.url",
"type": "text/html",
"value": "https://rdap.example.com/withSlash/"
}
],
"vcardArray" : [
@@ -15,6 +15,12 @@
"rel": "self",
"type": "application/rdap+json",
"value": "https://example.tld/rdap/domain/renew.lol"
},
{
"rel": "about",
"href": "http://my.fake.url",
"type": "text/html",
"value": "https://rdap.theregistrar.com/"
}
],
"publicIds": [
@@ -128,6 +134,12 @@
"rel": "self",
"type": "application/rdap+json",
"value": "https://example.tld/rdap/domain/renew.lol"
},
{
"href": "https://rdap.theregistrar.com/domain/renew.lol",
"rel": "related",
"type": "application/rdap+json",
"value": "https://example.tld/rdap/domain/renew.lol"
}
],
"nameservers": [
@@ -25,12 +25,6 @@
"type": "application/rdap+json",
"rel": "related",
"value": "https://example.tld/rdap/domain/cat.lol"
},
{
"href": "https://rdap.example.com/withoutSlash/domain/%DOMAIN_PUNYCODE_NAME_1%",
"type": "application/rdap+json",
"rel": "related",
"value": "https://example.tld/rdap/domain/cat.lol"
}
],
"events": [
@@ -112,6 +106,12 @@
"href" : "https://example.tld/rdap/entity/1",
"type" : "application/rdap+json",
"value": "https://example.tld/rdap/domain/cat.lol"
},
{
"rel": "about",
"href": "http://my.fake.url",
"type": "text/html",
"value": "https://rdap.example.com/withSlash/"
}
],
"publicIds" : [
@@ -25,12 +25,6 @@
"type": "application/rdap+json",
"rel": "related",
"value": "https://example.tld/rdap/domain/cat.lol"
},
{
"href": "https://rdap.example.com/withoutSlash/domain/%DOMAIN_PUNYCODE_NAME_1%",
"type": "application/rdap+json",
"rel": "related",
"value": "https://example.tld/rdap/domain/cat.lol"
}
],
"events": [
@@ -112,6 +106,12 @@
"href" : "https://example.tld/rdap/entity/1",
"type" : "application/rdap+json",
"value": "https://example.tld/rdap/domain/cat.lol"
},
{
"rel": "about",
"href": "http://my.fake.url",
"type": "text/html",
"value": "https://rdap.example.com/withSlash/"
}
],
"publicIds" : [
@@ -15,6 +15,12 @@
"rel": "self",
"type": "application/rdap+json",
"value": "https://example.tld/rdap/domain/redemption.lol"
},
{
"rel": "about",
"href": "http://my.fake.url",
"type": "text/html",
"value": "https://rdap.theregistrar.com/"
}
],
"publicIds": [
@@ -128,6 +134,12 @@
"rel": "self",
"type": "application/rdap+json",
"value": "https://example.tld/rdap/domain/redemption.lol"
},
{
"href": "https://rdap.theregistrar.com/domain/redemption.lol",
"rel": "related",
"type": "application/rdap+json",
"value": "https://example.tld/rdap/domain/redemption.lol"
}
],
"nameservers": [
@@ -25,12 +25,6 @@
"type": "application/rdap+json",
"rel": "related",
"value": "%REQUEST_URL%"
},
{
"href": "https://rdap.example.com/withoutSlash/domain/%DOMAIN_PUNYCODE_NAME_1%",
"type": "application/rdap+json",
"rel": "related",
"value": "%REQUEST_URL%"
}
],
"events": [
@@ -112,6 +106,12 @@
"href" : "https://example.tld/rdap/entity/1",
"type" : "application/rdap+json",
"value": "%REQUEST_URL%"
},
{
"rel": "about",
"href": "http://my.fake.url",
"type": "text/html",
"value": "https://rdap.example.com/withSlash/"
}
],
"publicIds" : [
@@ -15,6 +15,12 @@
"rel": "self",
"type": "application/rdap+json",
"value": "https://example.tld/rdap/domain/transfer.lol"
},
{
"rel": "about",
"href": "http://my.fake.url",
"type": "text/html",
"value": "https://rdap.theregistrar.com/"
}
],
"publicIds": [
@@ -128,6 +134,12 @@
"rel": "self",
"type": "application/rdap+json",
"value": "https://example.tld/rdap/domain/transfer.lol"
},
{
"href": "https://rdap.theregistrar.com/domain/transfer.lol",
"rel": "related",
"type": "application/rdap+json",
"value": "https://example.tld/rdap/domain/transfer.lol"
}
],
"nameservers": [
@@ -26,12 +26,6 @@
"type": "application/rdap+json",
"rel": "related",
"value": "%REQUEST_URL%"
},
{
"href": "https://rdap.example.com/withoutSlash/domain/%DOMAIN_PUNYCODE_NAME_1%",
"type": "application/rdap+json",
"rel": "related",
"value": "%REQUEST_URL%"
}
],
"events": [
@@ -115,6 +109,12 @@
"type": "application/rdap+json",
"rel": "self",
"value": "%REQUEST_URL%"
},
{
"rel": "about",
"href": "http://my.fake.url",
"type": "text/html",
"value": "https://rdap.example.com/withSlash/"
}
],
"vcardArray" : [
@@ -26,12 +26,6 @@
"type": "application/rdap+json",
"rel": "related",
"value": "https://example.tld/rdap/domains"
},
{
"href": "https://rdap.example.com/withoutSlash/domain/%DOMAIN_PUNYCODE_NAME_1%",
"type": "application/rdap+json",
"rel": "related",
"value": "https://example.tld/rdap/domains"
}
],
"events": [
@@ -115,6 +109,12 @@
"href" : "https://example.tld/rdap/entity/1",
"type" : "application/rdap+json",
"value": "https://example.tld/rdap/domains"
},
{
"rel": "about",
"href": "http://my.fake.url",
"type": "text/html",
"value": "https://rdap.example.com/withSlash/"
}
],
"publicIds" : [
@@ -39,6 +39,12 @@
"href" : "https://example.tld/rdap/entity/1",
"type" : "application/rdap+json",
"value": "%REQUEST_URL%"
},
{
"rel": "about",
"href": "http://my.fake.url",
"type": "text/html",
"value": "https://rdap.theregistrar.com/"
}
],
"publicIds" :
@@ -36,6 +36,12 @@
"href" : "https://example.tld/rdap/entity/1",
"type" : "application/rdap+json",
"value": "%REQUEST_URL%"
},
{
"rel": "about",
"href": "http://my.fake.url",
"type": "text/html",
"value": "https://rdap.theregistrar.com/"
}
],
"publicIds" :
@@ -42,6 +42,12 @@
"href" : "https://example.tld/rdap/entity/1",
"type" : "application/rdap+json",
"value": "%REQUEST_URL%"
},
{
"rel": "about",
"href": "http://my.fake.url",
"type": "text/html",
"value": "https://rdap.theregistrar.com/"
}
],
"publicIds" :
@@ -40,6 +40,12 @@
"href" : "https://example.tld/rdap/entity/1",
"type" : "application/rdap+json",
"value": "%REQUEST_URL%"
},
{
"rel": "about",
"href": "http://my.fake.url",
"type": "text/html",
"value": "https://rdap.theregistrar.com/"
}
],
"publicIds" :
@@ -11,6 +11,12 @@
"href": "https://example.tld/rdap/entity/301",
"type": "application/rdap+json",
"value": "https://example.tld/rdap/entities"
},
{
"rel": "about",
"href": "http://my.fake.url",
"type": "text/html",
"value": "https://rdap.example.com/withSlash/"
}
],
"publicIds":
@@ -69,6 +75,12 @@
"href": "https://example.tld/rdap/entity/302",
"type": "application/rdap+json",
"value": "https://example.tld/rdap/entities"
},
{
"rel": "about",
"href": "http://my.fake.url",
"type": "text/html",
"value": "https://rdap.example.com/withSlash/"
}
],
"publicIds":
@@ -127,6 +139,12 @@
"href": "https://example.tld/rdap/entity/303",
"type": "application/rdap+json",
"value": "https://example.tld/rdap/entities"
},
{
"rel": "about",
"href": "http://my.fake.url",
"type": "text/html",
"value": "https://rdap.example.com/withSlash/"
}
],
"publicIds":
@@ -185,6 +203,12 @@
"href": "https://example.tld/rdap/entity/304",
"type": "application/rdap+json",
"value": "https://example.tld/rdap/entities"
},
{
"rel": "about",
"href": "http://my.fake.url",
"type": "text/html",
"value": "https://rdap.example.com/withSlash/"
}
],
"publicIds":
@@ -15,6 +15,12 @@
"href": "https://example.tld/rdap/entity/%REGISTRAR_HANDLE_1%",
"type" : "application/rdap+json",
"value": "%REQUEST_URL%"
},
{
"rel": "about",
"href": "http://my.fake.url",
"type": "text/html",
"value": "https://rdap.example.com/withSlash/"
}
],
"publicIds" :
@@ -6,6 +6,14 @@
],
"objectClassName" : "entity",
"handle" : "%REGISTRAR_HANDLE_1%",
"links" : [
{
"rel": "about",
"href": "http://my.fake.url",
"type": "text/html",
"value": "https://rdap.example.com/withSlash/"
}
],
"status" : ["%STATUS_1%"],
"roles" : ["registrar"],
"events": [
@@ -64,9 +64,9 @@
"links" :
[
{
"rel" : "self",
"rel": "self",
"href": "https://example.tld/rdap/entity/0002-ROID",
"type" : "application/rdap+json",
"type": "application/rdap+json",
"value": "https://example.tld/rdap/entities"
}
],
@@ -182,6 +182,12 @@
"href": "https://example.tld/rdap/entity/301",
"type" : "application/rdap+json",
"value": "https://example.tld/rdap/entities"
},
{
"rel": "about",
"href": "http://my.fake.url",
"type": "text/html",
"value": "https://rdap.example.com/withSlash/"
}
],
"publicIds" :
@@ -11,6 +11,12 @@
"href": "https://example.tld/rdap/entity/301",
"type" : "application/rdap+json",
"value": "https://example.tld/rdap/entities"
},
{
"rel": "about",
"href": "http://my.fake.url",
"type": "text/html",
"value": "https://rdap.example.com/withSlash/"
}
],
"publicIds" :
@@ -69,6 +75,12 @@
"href": "https://example.tld/rdap/entity/302",
"type" : "application/rdap+json",
"value": "https://example.tld/rdap/entities"
},
{
"rel": "about",
"href": "http://my.fake.url",
"type": "text/html",
"value": "https://rdap.example.com/withSlash/"
}
],
"publicIds" :
@@ -127,6 +139,12 @@
"href": "https://example.tld/rdap/entity/303",
"type" : "application/rdap+json",
"value": "https://example.tld/rdap/entities"
},
{
"rel": "about",
"href": "http://my.fake.url",
"type": "text/html",
"value": "https://rdap.example.com/withSlash/"
}
],
"publicIds" :
@@ -185,6 +203,12 @@
"href": "https://example.tld/rdap/entity/304",
"type" : "application/rdap+json",
"value": "https://example.tld/rdap/entities"
},
{
"rel": "about",
"href": "http://my.fake.url",
"type": "text/html",
"value": "https://rdap.example.com/withSlash/"
}
],
"publicIds" :
@@ -21,11 +21,6 @@
"rel" : "related",
"href" : "https://rdap.example.com/withSlash/domain/cat.xn--q9jyb4c",
"type" : "application/rdap+json"
},
{
"rel" : "related",
"href" : "https://rdap.example.com/withoutSlash/domain/cat.xn--q9jyb4c",
"type" : "application/rdap+json"
}
],
"events": [
@@ -112,6 +107,12 @@
"rel" : "self",
"href" : "https://example.tld/rdap/entity/1",
"type" : "application/rdap+json"
},
{
"rel": "about",
"href": "http://my.fake.url",
"type": "text/html",
"value": "https://rdap.example.com/withSlash/"
}
],
"publicIds" :
@@ -21,11 +21,6 @@
"href": "https://rdap.example.com/withSlash/domain/cat.xn--q9jyb4c",
"type": "application/rdap+json",
"rel": "related"
},
{
"href": "https://rdap.example.com/withoutSlash/domain/cat.xn--q9jyb4c",
"type": "application/rdap+json",
"rel": "related"
}
],
"events": [
@@ -109,6 +104,12 @@
"rel": "self",
"href": "https://example.tld/rdap/entity/1",
"type": "application/rdap+json"
},
{
"rel": "about",
"href": "http://my.fake.url",
"type": "text/html",
"value": "https://rdap.example.com/withSlash/"
}
],
"publicIds": [
@@ -22,11 +22,6 @@
"href": "https://rdap.example.com/withSlash/domain/fish.xn--q9jyb4c",
"type": "application/rdap+json",
"rel": "related"
},
{
"href": "https://rdap.example.com/withoutSlash/domain/fish.xn--q9jyb4c",
"type": "application/rdap+json",
"rel": "related"
}
],
"events": [
@@ -60,6 +55,12 @@
"rel": "self",
"href": "https://example.tld/rdap/entity/1",
"type": "application/rdap+json"
},
{
"rel": "about",
"href": "http://my.fake.url",
"type": "text/html",
"value": "https://rdap.example.com/withSlash/"
}
],
"publicIds":
@@ -34,6 +34,12 @@
"rel" : "self",
"href" : "https://example.tld/rdap/entity/1",
"type" : "application/rdap+json"
},
{
"rel": "about",
"href": "http://my.fake.url",
"type": "text/html",
"value": "https://rdap.example.com/withSlash/"
}
],
"publicIds" :
@@ -30,6 +30,12 @@
"rel": "self",
"href": "https://example.tld/rdap/entity/1",
"type": "application/rdap+json"
},
{
"rel": "about",
"href": "http://my.fake.url",
"type": "text/html",
"value": "https://rdap.example.com/withSlash/"
}
],
"publicIds":
@@ -30,6 +30,12 @@
"rel": "self",
"href": "https://example.tld/rdap/entity/1",
"type": "application/rdap+json"
},
{
"rel": "about",
"href": "http://my.fake.url",
"type": "text/html",
"value": "https://rdap.example.com/withSlash/"
}
],
"publicIds":
@@ -29,6 +29,12 @@
"rel" : "self",
"href" : "https://example.tld/rdap/entity/1",
"type" : "application/rdap+json"
},
{
"rel": "about",
"href": "http://my.fake.url",
"type": "text/html",
"value": "https://rdap.example.com/withSlash/"
}
],
"publicIds" :
@@ -29,6 +29,12 @@
"rel" : "self",
"href" : "https://example.tld/rdap/entity/1",
"type" : "application/rdap+json"
},
{
"rel": "about",
"href": "http://my.fake.url",
"type": "text/html",
"value": "https://rdap.example.com/withSlash/"
}
],
"publicIds" :
@@ -29,6 +29,12 @@
"rel" : "self",
"href" : "https://example.tld/rdap/entity/1",
"type" : "application/rdap+json"
},
{
"rel": "about",
"href": "http://my.fake.url",
"type": "text/html",
"value": "https://rdap.example.com/withSlash/"
}
],
"publicIds" :
@@ -9,6 +9,12 @@
"rel" : "self",
"href" : "https://example.tld/rdap/entity/1",
"type" : "application/rdap+json"
},
{
"rel": "about",
"href": "http://my.fake.url",
"type": "text/html",
"value": "https://rdap.example.com/withSlash/"
}
],
"events": [
@@ -8,6 +8,12 @@
"rel" : "self",
"href" : "https://example.tld/rdap/entity/1",
"type" : "application/rdap+json"
},
{
"rel": "about",
"href": "http://my.fake.url",
"type": "text/html",
"value": "https://rdap.example.com/withSlash/"
}
],
"events": [