Remove Contact objects in RDAP output (#2811)

Note: this still includes "contacts" for registrars, which are actually
a different concept that we call RegistrarPoc. That's different from
"Contact" objects, e.g. registrant.
This commit is contained in:
gbrodman
2025-08-22 20:25:20 +00:00
committed by GitHub
parent bdaab9daa5
commit e8a475f48b
71 changed files with 383 additions and 5977 deletions
@@ -341,11 +341,10 @@ class RegistrarTest extends EntityTestCase {
.setTypes(ImmutableSet.of(RegistrarPoc.Type.TECH, RegistrarPoc.Type.ABUSE))
.build());
abuseAdminContact = DatabaseHelper.loadByKey(abuseAdminContact.createVKey());
ImmutableSortedSet<RegistrarPoc> techContacts =
registrar.getContactsOfType(RegistrarPoc.Type.TECH);
ImmutableSortedSet<RegistrarPoc> techContacts = registrar.getPocsOfType(RegistrarPoc.Type.TECH);
assertThat(techContacts).containsExactly(newTechContact, newTechAbuseContact).inOrder();
ImmutableSortedSet<RegistrarPoc> abuseContacts =
registrar.getContactsOfType(RegistrarPoc.Type.ABUSE);
registrar.getPocsOfType(RegistrarPoc.Type.ABUSE);
assertThat(abuseContacts).containsExactly(newTechAbuseContact, abuseAdminContact).inOrder();
}
@@ -319,27 +319,6 @@ have failed to comply with these terms.",
return putNext("REGISTRAR_HANDLE_", handle, "STATUS_", status);
}
JsonFileBuilder addContact(String handle) {
return putNext("CONTACT_HANDLE_", handle);
}
JsonFileBuilder addFullContact(
String handle,
@Nullable String status,
@Nullable String fullName,
@Nullable String address) {
if (fullName != null) {
putNext("CONTACT_FULLNAME_", fullName);
}
if (address != null) {
putNext("CONTACT_ADDRESS_", address);
}
if (status != null) {
putNext("STATUS_", status);
}
return putNext("CONTACT_HANDLE_", handle);
}
JsonFileBuilder setNextQuery(String nextQuery) {
return put("NEXT_QUERY", nextQuery);
}
@@ -16,7 +16,6 @@ package google.registry.rdap;
import static com.google.common.truth.Truth.assertThat;
import static google.registry.bsa.persistence.BsaTestingUtils.persistBsaLabel;
import static google.registry.model.EppResourceUtils.loadByForeignKey;
import static google.registry.testing.DatabaseHelper.createTld;
import static google.registry.testing.DatabaseHelper.persistActiveDomain;
import static google.registry.testing.DatabaseHelper.persistDomainWithDependentResources;
@@ -35,7 +34,6 @@ import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import com.google.gson.JsonObject;
import google.registry.model.contact.Contact;
import google.registry.model.domain.Domain;
import google.registry.model.domain.GracePeriod;
import google.registry.model.domain.Period;
@@ -50,7 +48,6 @@ import google.registry.rdap.RdapMetrics.SearchType;
import google.registry.rdap.RdapMetrics.WildcardType;
import google.registry.rdap.RdapSearchResults.IncompletenessWarningType;
import google.registry.request.Action;
import google.registry.testing.FullFieldsTestEntityHelper;
import java.util.Optional;
import org.joda.time.DateTime;
import org.junit.jupiter.api.BeforeEach;
@@ -64,46 +61,22 @@ class RdapDomainActionTest extends RdapActionBaseTestCase<RdapDomainAction> {
super(RdapDomainAction.class);
}
private Contact registrantLol;
private Host host1;
@BeforeEach
void beforeEach() {
// lol
createTld("lol");
Registrar registrarLol = persistResource(makeRegistrar(
"evilregistrar", "Yes Virginia <script>", Registrar.State.ACTIVE));
Registrar registrarLol =
persistResource(
makeRegistrar("evilregistrar", "Yes Virginia <script>", Registrar.State.ACTIVE));
persistResources(makeRegistrarPocs(registrarLol));
registrantLol =
FullFieldsTestEntityHelper.makeAndPersistContact(
"5372808-ERL",
"Goblin Market",
"lol@cat.lol",
clock.nowUtc().minusYears(1),
registrarLol);
Contact adminContactLol =
FullFieldsTestEntityHelper.makeAndPersistContact(
"5372808-IRL",
"Santa Claus",
"BOFH@cat.lol",
clock.nowUtc().minusYears(2),
registrarLol);
Contact techContactLol =
FullFieldsTestEntityHelper.makeAndPersistContact(
"5372808-TRL", "The Raven", "bog@cat.lol", clock.nowUtc().minusYears(3), registrarLol);
host1 = makeAndPersistHost("ns1.cat.lol", "1.2.3.4", null, clock.nowUtc().minusYears(1));
Host host2 =
makeAndPersistHost(
"ns2.cat.lol", "bad:f00d:cafe:0:0:0:15:beef", clock.nowUtc().minusYears(2));
persistResource(
makeDomain(
"cat.lol",
registrantLol,
adminContactLol,
techContactLol,
host1,
host2,
registrarLol)
makeDomain("cat.lol", null, null, null, host1, host2, registrarLol)
.asBuilder()
.setCreationTimeForTest(clock.nowUtc().minusYears(3))
.setCreationRegistrarId("TheRegistrar")
@@ -115,29 +88,7 @@ class RdapDomainActionTest extends RdapActionBaseTestCase<RdapDomainAction> {
"ns2.dodo.lol", "bad:f00d:cafe:0:0:0:15:beef", clock.nowUtc().minusYears(2));
Domain domainDeleted =
persistResource(
makeDomain(
"dodo.lol",
FullFieldsTestEntityHelper.makeAndPersistContact(
"5372808-ERL",
"Goblin Market",
"lol@cat.lol",
clock.nowUtc().minusYears(1),
registrarLol),
FullFieldsTestEntityHelper.makeAndPersistContact(
"5372808-IRL",
"Santa Claus",
"BOFH@cat.lol",
clock.nowUtc().minusYears(2),
registrarLol),
FullFieldsTestEntityHelper.makeAndPersistContact(
"5372808-TRL",
"The Raven",
"bog@cat.lol",
clock.nowUtc().minusYears(3),
registrarLol),
host1,
hostDodo2,
registrarLol)
makeDomain("dodo.lol", null, null, null, host1, hostDodo2, registrarLol)
.asBuilder()
.setCreationTimeForTest(clock.nowUtc().minusYears(3))
.setCreationRegistrarId("TheRegistrar")
@@ -148,32 +99,8 @@ class RdapDomainActionTest extends RdapActionBaseTestCase<RdapDomainAction> {
Registrar registrarIdn =
persistResource(makeRegistrar("idnregistrar", "IDN Registrar", Registrar.State.ACTIVE));
persistResources(makeRegistrarPocs(registrarIdn));
Contact registrantIdn =
FullFieldsTestEntityHelper.makeAndPersistContact(
"5372808-ERL",
"Goblin Market",
"lol@cat.lol",
clock.nowUtc().minusYears(1),
registrarIdn);
Contact adminContactIdn =
FullFieldsTestEntityHelper.makeAndPersistContact(
"5372808-IRL",
"Santa Claus",
"BOFH@cat.lol",
clock.nowUtc().minusYears(2),
registrarIdn);
Contact techContactIdn =
FullFieldsTestEntityHelper.makeAndPersistContact(
"5372808-TRL", "The Raven", "bog@cat.lol", clock.nowUtc().minusYears(3), registrarIdn);
persistResource(
makeDomain(
"cat.みんな",
registrantIdn,
adminContactIdn,
techContactIdn,
host1,
host2,
registrarIdn)
makeDomain("cat.みんな", null, null, null, host1, host2, registrarIdn)
.asBuilder()
.setCreationTimeForTest(clock.nowUtc().minusYears(3))
.setCreationRegistrarId("TheRegistrar")
@@ -181,35 +108,12 @@ class RdapDomainActionTest extends RdapActionBaseTestCase<RdapDomainAction> {
// 1.tld
createTld("1.tld");
Registrar registrar1Tld = persistResource(
makeRegistrar("1tldregistrar", "Multilevel Registrar", Registrar.State.ACTIVE));
Registrar registrar1Tld =
persistResource(
makeRegistrar("1tldregistrar", "Multilevel Registrar", Registrar.State.ACTIVE));
persistResources(makeRegistrarPocs(registrar1Tld));
Contact registrant1Tld =
FullFieldsTestEntityHelper.makeAndPersistContact(
"5372808-ERL",
"Goblin Market",
"lol@cat.lol",
clock.nowUtc().minusYears(1),
registrar1Tld);
Contact adminContact1Tld =
FullFieldsTestEntityHelper.makeAndPersistContact(
"5372808-IRL",
"Santa Claus",
"BOFH@cat.lol",
clock.nowUtc().minusYears(2),
registrar1Tld);
Contact techContact1Tld =
FullFieldsTestEntityHelper.makeAndPersistContact(
"5372808-TRL", "The Raven", "bog@cat.lol", clock.nowUtc().minusYears(3), registrar1Tld);
persistResource(
makeDomain(
"cat.1.tld",
registrant1Tld,
adminContact1Tld,
techContact1Tld,
host1,
host2,
registrar1Tld)
makeDomain("cat.1.tld", null, null, null, host1, host2, registrar1Tld)
.asBuilder()
.setCreationTimeForTest(clock.nowUtc().minusYears(3))
.setCreationRegistrarId("TheRegistrar")
@@ -231,12 +135,9 @@ class RdapDomainActionTest extends RdapActionBaseTestCase<RdapDomainAction> {
.isEqualTo(
addDomainBoilerplateNotices(
jsonFileBuilder()
.addDomain("cat.lol", "C-LOL")
.addContact("4-ROID")
.addContact("6-ROID")
.addContact("2-ROID")
.addNameserver("ns1.cat.lol", "8-ROID")
.addNameserver("ns2.cat.lol", "A-ROID")
.addDomain("cat.lol", "6-LOL")
.addNameserver("ns1.cat.lol", "2-ROID")
.addNameserver("ns2.cat.lol", "4-ROID")
.addRegistrar("Yes Virginia <script>")
.load(expectedOutputFile)));
assertThat(response.getStatus()).isEqualTo(200);
@@ -274,67 +175,19 @@ class RdapDomainActionTest extends RdapActionBaseTestCase<RdapDomainAction> {
assertProperResponseForCatLol("cat.lol", "rdap_domain.json");
}
@Test
void testValidDomain_notLoggedIn_redactsAllContactInfo() {
assertProperResponseForCatLol("cat.lol", "rdap_domain_redacted_contacts_with_remark.json");
}
@Test
void testValidDomain_notLoggedIn_showsNoRegistrant_whenRegistrantDoesntExist() {
persistResource(
loadByForeignKey(Domain.class, "cat.lol", clock.nowUtc())
.get()
.asBuilder()
.setRegistrant(Optional.empty())
.build());
assertProperResponseForCatLol("cat.lol", "rdap_domain_no_registrant_with_remark.json");
}
@Test
void testValidDomain_notLoggedIn_containsNoContactEntities_whenNoContactsExist() {
persistResource(
loadByForeignKey(Domain.class, "cat.lol", clock.nowUtc())
.get()
.asBuilder()
.setRegistrant(Optional.empty())
.setContacts(ImmutableSet.of())
.build());
assertProperResponseForCatLol("cat.lol", "rdap_domain_no_contacts_exist_with_remark.json");
}
@Test
void testValidDomain_loggedIn_containsNoContactEntities_whenNoContactsExist() {
login("evilregistrar");
persistResource(
loadByForeignKey(Domain.class, "cat.lol", clock.nowUtc())
.get()
.asBuilder()
.setRegistrant(Optional.empty())
.setContacts(ImmutableSet.of())
.build());
assertProperResponseForCatLol("cat.lol", "rdap_domain_no_contacts_exist_with_remark.json");
}
@Test
void testValidDomain_loggedInAsOtherRegistrar_redactsAllContactInfo() {
login("idnregistrar");
assertProperResponseForCatLol("cat.lol", "rdap_domain_redacted_contacts_with_remark.json");
}
@Test
void testUpperCase_ignored() {
assertProperResponseForCatLol("CaT.lOl", "rdap_domain_redacted_contacts_with_remark.json");
assertProperResponseForCatLol("CaT.lOl", "rdap_domain.json");
}
@Test
void testTrailingDot_ignored() {
assertProperResponseForCatLol("cat.lol.", "rdap_domain_redacted_contacts_with_remark.json");
assertProperResponseForCatLol("cat.lol.", "rdap_domain.json");
}
@Test
void testQueryParameter_ignored() {
assertProperResponseForCatLol(
"cat.lol?key=value", "rdap_domain_redacted_contacts_with_remark.json");
assertProperResponseForCatLol("cat.lol?key=value", "rdap_domain.json");
}
@Test
@@ -345,12 +198,9 @@ class RdapDomainActionTest extends RdapActionBaseTestCase<RdapDomainAction> {
.isEqualTo(
addDomainBoilerplateNotices(
jsonFileBuilder()
.addDomain("cat.みんな", "1D-Q9JYB4C")
.addContact("19-ROID")
.addContact("1B-ROID")
.addContact("17-ROID")
.addNameserver("ns1.cat.lol", "8-ROID")
.addNameserver("ns2.cat.lol", "A-ROID")
.addDomain("cat.みんな", "B-Q9JYB4C")
.addNameserver("ns1.cat.lol", "2-ROID")
.addNameserver("ns2.cat.lol", "4-ROID")
.addRegistrar("IDN Registrar")
.load("rdap_domain_unicode.json")));
assertThat(response.getStatus()).isEqualTo(200);
@@ -364,12 +214,9 @@ class RdapDomainActionTest extends RdapActionBaseTestCase<RdapDomainAction> {
.isEqualTo(
addDomainBoilerplateNotices(
jsonFileBuilder()
.addDomain("cat.みんな", "1D-Q9JYB4C")
.addContact("19-ROID")
.addContact("1B-ROID")
.addContact("17-ROID")
.addNameserver("ns1.cat.lol", "8-ROID")
.addNameserver("ns2.cat.lol", "A-ROID")
.addDomain("cat.みんな", "B-Q9JYB4C")
.addNameserver("ns1.cat.lol", "2-ROID")
.addNameserver("ns2.cat.lol", "4-ROID")
.addRegistrar("IDN Registrar")
.load("rdap_domain_unicode.json")));
assertThat(response.getStatus()).isEqualTo(200);
@@ -383,12 +230,9 @@ class RdapDomainActionTest extends RdapActionBaseTestCase<RdapDomainAction> {
.isEqualTo(
addDomainBoilerplateNotices(
jsonFileBuilder()
.addDomain("cat.みんな", "1D-Q9JYB4C")
.addContact("19-ROID")
.addContact("1B-ROID")
.addContact("17-ROID")
.addNameserver("ns1.cat.lol", "8-ROID")
.addNameserver("ns2.cat.lol", "A-ROID")
.addDomain("cat.みんな", "B-Q9JYB4C")
.addNameserver("ns1.cat.lol", "2-ROID")
.addNameserver("ns2.cat.lol", "4-ROID")
.addRegistrar("IDN Registrar")
.load("rdap_domain_unicode.json")));
assertThat(response.getStatus()).isEqualTo(200);
@@ -402,12 +246,9 @@ class RdapDomainActionTest extends RdapActionBaseTestCase<RdapDomainAction> {
.isEqualTo(
addDomainBoilerplateNotices(
jsonFileBuilder()
.addDomain("cat.1.tld", "25-1_TLD")
.addContact("21-ROID")
.addContact("23-ROID")
.addContact("1F-ROID")
.addNameserver("ns1.cat.lol", "8-ROID")
.addNameserver("ns2.cat.lol", "A-ROID")
.addDomain("cat.1.tld", "D-1_TLD")
.addNameserver("ns1.cat.lol", "2-ROID")
.addNameserver("ns2.cat.lol", "4-ROID")
.addRegistrar("Multilevel Registrar")
.load("rdap_domain.json")));
assertThat(response.getStatus()).isEqualTo(200);
@@ -461,12 +302,9 @@ class RdapDomainActionTest extends RdapActionBaseTestCase<RdapDomainAction> {
.isEqualTo(
addDomainBoilerplateNotices(
jsonFileBuilder()
.addDomain("dodo.lol", "15-LOL")
.addContact("11-ROID")
.addContact("13-ROID")
.addContact("F-ROID")
.addNameserver("ns1.cat.lol", "8-ROID")
.addNameserver("ns2.dodo.lol", "D-ROID")
.addDomain("dodo.lol", "9-LOL")
.addNameserver("ns1.cat.lol", "2-ROID")
.addNameserver("ns2.dodo.lol", "7-ROID")
.addRegistrar("Yes Virginia <script>")
.load("rdap_domain_deleted.json")));
assertThat(response.getStatus()).isEqualTo(200);
@@ -481,12 +319,9 @@ class RdapDomainActionTest extends RdapActionBaseTestCase<RdapDomainAction> {
.isEqualTo(
addDomainBoilerplateNotices(
jsonFileBuilder()
.addDomain("dodo.lol", "15-LOL")
.addContact("11-ROID")
.addContact("13-ROID")
.addContact("F-ROID")
.addNameserver("ns1.cat.lol", "8-ROID")
.addNameserver("ns2.dodo.lol", "D-ROID")
.addDomain("dodo.lol", "9-LOL")
.addNameserver("ns1.cat.lol", "2-ROID")
.addNameserver("ns2.dodo.lol", "7-ROID")
.addRegistrar("Yes Virginia <script>")
.load("rdap_domain_deleted.json")));
assertThat(response.getStatus()).isEqualTo(200);
@@ -638,7 +473,7 @@ class RdapDomainActionTest extends RdapActionBaseTestCase<RdapDomainAction> {
String label, String tld, DateTime creationTime, DateTime expirationTime) {
return persistResource(
persistDomainWithDependentResources(
label, tld, registrantLol, clock.nowUtc(), creationTime, expirationTime)
label, tld, null, clock.nowUtc(), creationTime, expirationTime)
.asBuilder()
.addNameserver(host1.createVKey())
.build());
@@ -34,7 +34,6 @@ import com.google.common.collect.Range;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import google.registry.model.contact.Contact;
import google.registry.model.domain.Domain;
import google.registry.model.domain.Period;
import google.registry.model.host.Host;
@@ -68,9 +67,6 @@ class RdapDomainSearchActionTest extends RdapSearchActionTestCase<RdapDomainSear
private Domain domainCatExample;
private Domain domainIdn;
private Domain domainMultipart;
private Contact contact1;
private Contact contact2;
private Contact contact3;
private Host hostNs1CatLol;
private Host hostNs2CatLol;
private HashMap<String, Host> hostNameToHostMap = new HashMap<>();
@@ -131,15 +127,6 @@ class RdapDomainSearchActionTest extends RdapSearchActionTestCase<RdapDomainSear
persistResource(
makeRegistrar("evilregistrar", "Yes Virginia <script>", Registrar.State.ACTIVE));
persistResources(makeRegistrarPocs(registrar));
contact1 =
FullFieldsTestEntityHelper.makeAndPersistContact(
"5372808-ERL", "Goblin Market", "lol@cat.lol", clock.nowUtc().minusYears(1), registrar);
contact2 =
FullFieldsTestEntityHelper.makeAndPersistContact(
"5372808-IRL", "Santa Claus", "BOFH@cat.lol", clock.nowUtc().minusYears(2), registrar);
contact3 =
FullFieldsTestEntityHelper.makeAndPersistContact(
"5372808-TRL", "The Raven", "bog@cat.lol", clock.nowUtc().minusYears(3), registrar);
hostNs1CatLol =
addHostToMap(
FullFieldsTestEntityHelper.makeAndPersistHost(
@@ -150,14 +137,7 @@ class RdapDomainSearchActionTest extends RdapSearchActionTestCase<RdapDomainSear
"ns2.cat.lol", "bad:f00d:cafe:0:0:0:15:beef", clock.nowUtc().minusYears(2)));
domainCatLol =
persistResource(
makeDomain(
"cat.lol",
contact1,
contact2,
contact3,
hostNs1CatLol,
hostNs2CatLol,
registrar)
makeDomain("cat.lol", null, null, null, hostNs1CatLol, hostNs2CatLol, registrar)
.asBuilder()
.setSubordinateHosts(ImmutableSet.of("ns1.cat.lol", "ns2.cat.lol"))
.setCreationTimeForTest(clock.nowUtc().minusYears(3))
@@ -172,24 +152,9 @@ class RdapDomainSearchActionTest extends RdapSearchActionTestCase<RdapDomainSear
persistResource(
makeDomain(
"cat2.lol",
FullFieldsTestEntityHelper.makeAndPersistContact(
"6372808-ERL",
"Siegmund",
"siegmund@cat2.lol",
clock.nowUtc().minusYears(1),
registrar),
FullFieldsTestEntityHelper.makeAndPersistContact(
"6372808-IRL",
"Sieglinde",
"sieglinde@cat2.lol",
clock.nowUtc().minusYears(2),
registrar),
FullFieldsTestEntityHelper.makeAndPersistContact(
"6372808-TRL",
"Siegfried",
"siegfried@cat2.lol",
clock.nowUtc().minusYears(3),
registrar),
null,
null,
null,
addHostToMap(
FullFieldsTestEntityHelper.makeAndPersistHost(
"ns1.cat.example", "10.20.30.40", clock.nowUtc().minusYears(1))),
@@ -213,24 +178,9 @@ class RdapDomainSearchActionTest extends RdapSearchActionTestCase<RdapDomainSear
persistResource(
makeDomain(
"cat.example",
FullFieldsTestEntityHelper.makeAndPersistContact(
"7372808-ERL",
"Matthew",
"lol@cat.lol",
clock.nowUtc().minusYears(1),
registrar),
FullFieldsTestEntityHelper.makeAndPersistContact(
"7372808-IRL",
"Mark",
"BOFH@cat.lol",
clock.nowUtc().minusYears(2),
registrar),
FullFieldsTestEntityHelper.makeAndPersistContact(
"7372808-TRL",
"Luke",
"bog@cat.lol",
clock.nowUtc().minusYears(3),
registrar),
null,
null,
null,
hostNs1CatLol,
addHostToMap(
FullFieldsTestEntityHelper.makeAndPersistHost(
@@ -250,24 +200,9 @@ class RdapDomainSearchActionTest extends RdapSearchActionTestCase<RdapDomainSear
persistResource(
makeDomain(
"cat.みんな",
FullFieldsTestEntityHelper.makeAndPersistContact(
"8372808-ERL",
"(◕‿◕)",
"lol@cat.みんな",
clock.nowUtc().minusYears(1),
registrar),
FullFieldsTestEntityHelper.makeAndPersistContact(
"8372808-IRL",
"Santa Claus",
"BOFH@cat.みんな",
clock.nowUtc().minusYears(2),
registrar),
FullFieldsTestEntityHelper.makeAndPersistContact(
"8372808-TRL",
"The Raven",
"bog@cat.みんな",
clock.nowUtc().minusYears(3),
registrar),
null,
null,
null,
addHostToMap(
FullFieldsTestEntityHelper.makeAndPersistHost(
"ns1.cat.みんな", "1.2.3.5", clock.nowUtc().minusYears(1))),
@@ -289,24 +224,9 @@ class RdapDomainSearchActionTest extends RdapSearchActionTestCase<RdapDomainSear
persistResource(
makeDomain(
"cat.1.test",
FullFieldsTestEntityHelper.makeAndPersistContact(
"9372808-ERL",
"(◕‿◕)",
"lol@cat.みんな",
clock.nowUtc().minusYears(1),
registrar),
FullFieldsTestEntityHelper.makeAndPersistContact(
"9372808-IRL",
"Santa Claus",
"BOFH@cat.みんな",
clock.nowUtc().minusYears(2),
registrar),
FullFieldsTestEntityHelper.makeAndPersistContact(
"9372808-TRL",
"The Raven",
"bog@cat.みんな",
clock.nowUtc().minusYears(3),
registrar),
null,
null,
null,
addHostToMap(
FullFieldsTestEntityHelper.makeAndPersistHost(
"ns1.cat.1.test", "1.2.3.5", clock.nowUtc().minusYears(1))),
@@ -371,15 +291,15 @@ class RdapDomainSearchActionTest extends RdapSearchActionTestCase<RdapDomainSear
private JsonObject generateExpectedJsonForTwoDomainsNsReply() {
return jsonFileBuilder()
.addDomain("cat.example", "21-EXAMPLE")
.addDomain("cat.lol", "C-LOL")
.addDomain("cat.example", "F-EXAMPLE")
.addDomain("cat.lol", "6-LOL")
.load("rdap_domains_two.json");
}
private JsonObject generateExpectedJsonForTwoDomainsCatStarReplySql() {
return jsonFileBuilder()
.addDomain("cat.lol", "C-LOL")
.addDomain("cat2.lol", "17-LOL")
.addDomain("cat.lol", "6-LOL")
.addDomain("cat2.lol", "B-LOL")
.load("rdap_domains_two.json");
}
@@ -416,7 +336,7 @@ class RdapDomainSearchActionTest extends RdapSearchActionTestCase<RdapDomainSear
for (int i = numActiveDomains * numTotalDomainsPerActiveDomain; i >= 1; i--) {
String domainName = String.format("domain%d.lol", i);
Domain.Builder builder =
makeDomain(domainName, contact1, contact2, contact3, null, null, registrar)
makeDomain(domainName, null, null, null, null, null, registrar)
.asBuilder()
.setNameservers(hostKeys)
.setCreationTimeForTest(clock.nowUtc().minusYears(3))
@@ -442,13 +362,10 @@ class RdapDomainSearchActionTest extends RdapSearchActionTestCase<RdapDomainSear
requestType,
queryString,
jsonFileBuilder()
.addDomain("cat.lol", "C-LOL")
.addDomain("cat.lol", "6-LOL")
.addRegistrar("Yes Virginia <script>")
.addNameserver("ns1.cat.lol", "8-ROID")
.addNameserver("ns2.cat.lol", "A-ROID")
.addContact("4-ROID")
.addContact("6-ROID")
.addContact("2-ROID")
.addNameserver("ns1.cat.lol", "2-ROID")
.addNameserver("ns2.cat.lol", "4-ROID")
.setNextQuery(queryString)
.load(filename));
}
@@ -459,13 +376,10 @@ class RdapDomainSearchActionTest extends RdapSearchActionTestCase<RdapDomainSear
requestType,
queryString,
jsonFileBuilder()
.addDomain("cat2.lol", "17-LOL")
.addDomain("cat2.lol", "B-LOL")
.addRegistrar("Yes Virginia <script>")
.addNameserver("ns1.cat.example", "13-ROID")
.addNameserver("ns2.dog.lol", "15-ROID")
.addContact("F-ROID")
.addContact("11-ROID")
.addContact("D-ROID")
.addNameserver("ns1.cat.example", "7-ROID")
.addNameserver("ns2.dog.lol", "9-ROID")
.setNextQuery(queryString)
.load(filename));
}
@@ -573,7 +487,6 @@ class RdapDomainSearchActionTest extends RdapSearchActionTestCase<RdapDomainSear
action.registrarParam.isPresent(),
numDomainsRetrieved,
numHostsRetrieved,
Optional.empty(),
incompletenessWarningType);
}
@@ -747,8 +660,7 @@ class RdapDomainSearchActionTest extends RdapSearchActionTestCase<RdapDomainSear
@Test
void testDomainMatch_found_loggedInAsOtherRegistrar() {
login("otherregistrar");
runSuccessfulTestWithCatLol(
RequestType.NAME, "cat.lol", "rdap_domain_redacted_contacts_with_remark.json");
runSuccessfulTestWithCatLol(RequestType.NAME, "cat.lol", "rdap_domain.json");
verifyMetrics(SearchType.BY_DOMAIN_NAME, Optional.of(1L));
}
@@ -776,11 +688,11 @@ class RdapDomainSearchActionTest extends RdapSearchActionTestCase<RdapDomainSear
RequestType.NAME,
"cat.example",
jsonFileBuilder()
.addDomain("cat.example", "21-EXAMPLE")
.addDomain("cat.example", "F-EXAMPLE")
.addRegistrar("St. John Chrysostom")
.addNameserver("ns1.cat.lol", "8-ROID")
.addNameserver("ns2.external.tld", "1F-ROID")
.load("rdap_domain_redacted_contacts_with_remark.json"));
.addNameserver("ns1.cat.lol", "2-ROID")
.addNameserver("ns2.external.tld", "D-ROID")
.load("rdap_domain.json"));
verifyMetrics(SearchType.BY_DOMAIN_NAME, Optional.of(1L));
}
@@ -790,11 +702,11 @@ class RdapDomainSearchActionTest extends RdapSearchActionTestCase<RdapDomainSear
RequestType.NAME,
"cat.みんな",
jsonFileBuilder()
.addDomain("cat.みんな", "2D-Q9JYB4C")
.addDomain("cat.みんな", "15-Q9JYB4C")
.addRegistrar("みんな")
.addNameserver("ns1.cat.みんな", "29-ROID")
.addNameserver("ns2.cat.みんな", "2B-ROID")
.load("rdap_domain_unicode_no_contacts_with_remark.json"));
.addNameserver("ns1.cat.みんな", "11-ROID")
.addNameserver("ns2.cat.みんな", "13-ROID")
.load("rdap_domain_unicode_with_unicode_nameservers.json"));
// The unicode gets translated to ASCII before getting parsed into a search pattern.
metricPrefixLength = 15;
verifyMetrics(SearchType.BY_DOMAIN_NAME, Optional.of(1L));
@@ -806,11 +718,11 @@ class RdapDomainSearchActionTest extends RdapSearchActionTestCase<RdapDomainSear
RequestType.NAME,
"cat.xn--q9jyb4c",
jsonFileBuilder()
.addDomain("cat.みんな", "2D-Q9JYB4C")
.addDomain("cat.みんな", "15-Q9JYB4C")
.addRegistrar("みんな")
.addNameserver("ns1.cat.みんな", "29-ROID")
.addNameserver("ns2.cat.みんな", "2B-ROID")
.load("rdap_domain_unicode_no_contacts_with_remark.json"));
.addNameserver("ns1.cat.みんな", "11-ROID")
.addNameserver("ns2.cat.みんな", "13-ROID")
.load("rdap_domain_unicode_with_unicode_nameservers.json"));
verifyMetrics(SearchType.BY_DOMAIN_NAME, Optional.of(1L));
}
@@ -820,11 +732,11 @@ class RdapDomainSearchActionTest extends RdapSearchActionTestCase<RdapDomainSear
RequestType.NAME,
"cat.1.test",
jsonFileBuilder()
.addDomain("cat.1.test", "39-1_TEST")
.addDomain("cat.1.test", "1B-1_TEST")
.addRegistrar("1.test")
.addNameserver("ns1.cat.1.test", "35-ROID")
.addNameserver("ns2.cat.2.test", "37-ROID")
.load("rdap_domain_redacted_contacts_with_remark.json"));
.addNameserver("ns1.cat.1.test", "17-ROID")
.addNameserver("ns2.cat.2.test", "19-ROID")
.load("rdap_domain.json"));
verifyMetrics(SearchType.BY_DOMAIN_NAME, Optional.of(1L));
}
@@ -834,11 +746,11 @@ class RdapDomainSearchActionTest extends RdapSearchActionTestCase<RdapDomainSear
RequestType.NAME,
"ca*.1.test",
jsonFileBuilder()
.addDomain("cat.1.test", "39-1_TEST")
.addDomain("cat.1.test", "1B-1_TEST")
.addRegistrar("1.test")
.addNameserver("ns1.cat.1.test", "35-ROID")
.addNameserver("ns2.cat.2.test", "37-ROID")
.load("rdap_domain_redacted_contacts_with_remark.json"));
.addNameserver("ns1.cat.1.test", "17-ROID")
.addNameserver("ns2.cat.2.test", "19-ROID")
.load("rdap_domain.json"));
verifyMetrics(SearchType.BY_DOMAIN_NAME, Optional.of(1L));
}
@@ -910,10 +822,10 @@ class RdapDomainSearchActionTest extends RdapSearchActionTestCase<RdapDomainSear
.that(generateActualJson(RequestType.NAME, "cat.*"))
.isEqualTo(
jsonFileBuilder()
.addDomain("cat.1.test", "39-1_TEST")
.addDomain("cat.example", "21-EXAMPLE")
.addDomain("cat.lol", "C-LOL")
.addDomain("cat.みんな", "2D-Q9JYB4C")
.addDomain("cat.1.test", "1B-1_TEST")
.addDomain("cat.example", "F-EXAMPLE")
.addDomain("cat.lol", "6-LOL")
.addDomain("cat.みんな", "15-Q9JYB4C")
.load("rdap_domains_four_with_one_unicode.json"));
assertThat(response.getStatus()).isEqualTo(200);
verifyMetrics(SearchType.BY_DOMAIN_NAME, Optional.of(4L));
@@ -948,10 +860,10 @@ class RdapDomainSearchActionTest extends RdapSearchActionTestCase<RdapDomainSear
.that(generateActualJson(RequestType.NAME, "cat*"))
.isEqualTo(
jsonFileBuilder()
.addDomain("cat.1.test", "39-1_TEST")
.addDomain("cat.example", "21-EXAMPLE")
.addDomain("cat.lol", "C-LOL")
.addDomain("cat.みんな", "2D-Q9JYB4C")
.addDomain("cat.1.test", "1B-1_TEST")
.addDomain("cat.example", "F-EXAMPLE")
.addDomain("cat.lol", "6-LOL")
.addDomain("cat.みんな", "15-Q9JYB4C")
.setNextQuery("name=cat*&cursor=Y2F0LnhuLS1xOWp5YjRj")
.load("rdap_domains_four_with_one_unicode_truncated.json"));
assertThat(response.getStatus()).isEqualTo(200);
@@ -1031,7 +943,7 @@ class RdapDomainSearchActionTest extends RdapSearchActionTestCase<RdapDomainSear
verifyErrorMetrics(SearchType.BY_DOMAIN_NAME, Optional.of(2L), 404);
}
// TODO(b/27378695): reenable or delete this test
// TODO(b/27376E-95): reenable or delete this test
@Disabled
@Test
void testDomainMatchDomainInTestTld_notFound() {
@@ -1073,9 +985,9 @@ class RdapDomainSearchActionTest extends RdapSearchActionTestCase<RdapDomainSear
.that(generateActualJson(RequestType.NAME, "domain*.lol"))
.isEqualTo(
jsonFileBuilder()
.addDomain("domain100.lol", "AC-LOL")
.addDomain("domain150.lol", "7A-LOL")
.addDomain("domain200.lol", "48-LOL")
.addDomain("domain100.lol", "8E-LOL")
.addDomain("domain150.lol", "5C-LOL")
.addDomain("domain200.lol", "2A-LOL")
.addDomain("domainunused.lol", "unused-LOL")
.load("rdap_incomplete_domain_result_set.json"));
assertThat(response.getStatus()).isEqualTo(200);
@@ -1091,10 +1003,10 @@ class RdapDomainSearchActionTest extends RdapSearchActionTestCase<RdapDomainSear
runSuccessfulTestWithFourDomains(
RequestType.NAME,
"domain*.lol",
"4B-LOL",
"4A-LOL",
"49-LOL",
"48-LOL",
"2D-LOL",
"2C-LOL",
"2B-LOL",
"2A-LOL",
"rdap_nontruncated_domains.json");
verifyMetrics(SearchType.BY_DOMAIN_NAME, Optional.of(4L));
}
@@ -1105,10 +1017,10 @@ class RdapDomainSearchActionTest extends RdapSearchActionTestCase<RdapDomainSear
runSuccessfulTestWithFourDomains(
RequestType.NAME,
"domain*.lol",
"4C-LOL",
"4B-LOL",
"4A-LOL",
"49-LOL",
"2E-LOL",
"2D-LOL",
"2C-LOL",
"2B-LOL",
"name=domain*.lol&cursor=ZG9tYWluNC5sb2w%3D",
"rdap_domains_four_truncated.json");
verifyMetrics(SearchType.BY_DOMAIN_NAME, Optional.of(5L), IncompletenessWarningType.TRUNCATED);
@@ -1122,10 +1034,10 @@ class RdapDomainSearchActionTest extends RdapSearchActionTestCase<RdapDomainSear
.that(generateActualJson(RequestType.NAME, "*.lol"))
.isEqualTo(
jsonFileBuilder()
.addDomain("cat.lol", "C-LOL")
.addDomain("cat2.lol", "17-LOL")
.addDomain("domain1.lol", "4B-LOL")
.addDomain("domain2.lol", "4A-LOL")
.addDomain("cat.lol", "6-LOL")
.addDomain("cat2.lol", "B-LOL")
.addDomain("domain1.lol", "2D-LOL")
.addDomain("domain2.lol", "2C-LOL")
.setNextQuery("name=*.lol&cursor=ZG9tYWluMi5sb2w%3D")
.load("rdap_domains_four_truncated.json"));
verifyMetrics(SearchType.BY_DOMAIN_NAME, Optional.of(5L), IncompletenessWarningType.TRUNCATED);
@@ -1139,10 +1051,10 @@ class RdapDomainSearchActionTest extends RdapSearchActionTestCase<RdapDomainSear
runSuccessfulTestWithFourDomains(
RequestType.NAME,
"domain*.lol",
"50-LOL",
"4F-LOL",
"4E-LOL",
"4D-LOL",
"32-LOL",
"31-LOL",
"30-LOL",
"2F-LOL",
"name=domain*.lol&cursor=ZG9tYWluNC5sb2w%3D",
"rdap_domains_four_truncated.json");
verifyMetrics(SearchType.BY_DOMAIN_NAME, Optional.of(5L), IncompletenessWarningType.TRUNCATED);
@@ -1156,10 +1068,10 @@ class RdapDomainSearchActionTest extends RdapSearchActionTestCase<RdapDomainSear
.that(generateActualJson(RequestType.NAME, "domain*.lol"))
.isEqualTo(
jsonFileBuilder()
.addDomain("domain12.lol", "5A-LOL")
.addDomain("domain18.lol", "54-LOL")
.addDomain("domain24.lol", "4E-LOL")
.addDomain("domain30.lol", "48-LOL")
.addDomain("domain12.lol", "3C-LOL")
.addDomain("domain18.lol", "36-LOL")
.addDomain("domain24.lol", "30-LOL")
.addDomain("domain30.lol", "2A-LOL")
.setNextQuery("name=domain*.lol&cursor=ZG9tYWluMzAubG9s")
.load("rdap_domains_four_truncated.json"));
assertThat(response.getStatus()).isEqualTo(200);
@@ -1358,11 +1270,11 @@ class RdapDomainSearchActionTest extends RdapSearchActionTestCase<RdapDomainSear
RequestType.NS_LDH_NAME,
"ns1.cat.xn--q9jyb4c",
jsonFileBuilder()
.addDomain("cat.みんな", "2D-Q9JYB4C")
.addDomain("cat.みんな", "15-Q9JYB4C")
.addRegistrar("みんな")
.addNameserver("ns1.cat.みんな", "29-ROID")
.addNameserver("ns2.cat.みんな", "2B-ROID")
.load("rdap_domain_unicode_no_contacts_with_remark.json"));
.addNameserver("ns1.cat.みんな", "11-ROID")
.addNameserver("ns2.cat.みんな", "13-ROID")
.load("rdap_domain_unicode_with_unicode_nameservers.json"));
verifyMetrics(SearchType.BY_NAMESERVER_NAME, 1, 1);
}
@@ -1372,11 +1284,11 @@ class RdapDomainSearchActionTest extends RdapSearchActionTestCase<RdapDomainSear
RequestType.NS_LDH_NAME,
"ns1.cat.1.test",
jsonFileBuilder()
.addDomain("cat.1.test", "39-1_TEST")
.addDomain("cat.1.test", "1B-1_TEST")
.addRegistrar("1.test")
.addNameserver("ns1.cat.1.test", "35-ROID")
.addNameserver("ns2.cat.2.test", "37-ROID")
.load("rdap_domain_redacted_contacts_with_remark.json"));
.addNameserver("ns1.cat.1.test", "17-ROID")
.addNameserver("ns2.cat.2.test", "19-ROID")
.load("rdap_domain.json"));
verifyMetrics(SearchType.BY_NAMESERVER_NAME, 1, 1);
}
@@ -1386,11 +1298,11 @@ class RdapDomainSearchActionTest extends RdapSearchActionTestCase<RdapDomainSear
RequestType.NS_LDH_NAME,
"ns*.cat.1.test",
jsonFileBuilder()
.addDomain("cat.1.test", "39-1_TEST")
.addDomain("cat.1.test", "1B-1_TEST")
.addRegistrar("1.test")
.addNameserver("ns1.cat.1.test", "35-ROID")
.addNameserver("ns2.cat.2.test", "37-ROID")
.load("rdap_domain_redacted_contacts_with_remark.json"));
.addNameserver("ns1.cat.1.test", "17-ROID")
.addNameserver("ns2.cat.2.test", "19-ROID")
.load("rdap_domain.json"));
verifyMetrics(SearchType.BY_NAMESERVER_NAME, 1, 1);
}
@@ -1408,7 +1320,7 @@ class RdapDomainSearchActionTest extends RdapSearchActionTestCase<RdapDomainSear
verifyErrorMetrics(SearchType.BY_NAMESERVER_NAME, Optional.empty(), Optional.of(0L), 404);
}
// TODO(b/27378695): reenable or delete this test
// TODO(b/27376E-95): reenable or delete this test
@Disabled
@Test
void testNameserverMatchDomainsInTestTld_notFound() {
@@ -1531,10 +1443,10 @@ class RdapDomainSearchActionTest extends RdapSearchActionTestCase<RdapDomainSear
runSuccessfulTestWithFourDomains(
RequestType.NS_LDH_NAME,
"ns1.domain1.lol",
"4B-LOL",
"4A-LOL",
"49-LOL",
"48-LOL",
"2D-LOL",
"2C-LOL",
"2B-LOL",
"2A-LOL",
"rdap_nontruncated_domains.json");
verifyMetrics(SearchType.BY_NAMESERVER_NAME, Optional.of(4L), Optional.of(1L));
}
@@ -1545,10 +1457,10 @@ class RdapDomainSearchActionTest extends RdapSearchActionTestCase<RdapDomainSear
runSuccessfulTestWithFourDomains(
RequestType.NS_LDH_NAME,
"ns1.domain1.lol",
"4C-LOL",
"4B-LOL",
"4A-LOL",
"49-LOL",
"2E-LOL",
"2D-LOL",
"2C-LOL",
"2B-LOL",
"nsLdhName=ns1.domain1.lol&cursor=ZG9tYWluNC5sb2w%3D",
"rdap_domains_four_truncated.json");
verifyMetrics(
@@ -1564,10 +1476,10 @@ class RdapDomainSearchActionTest extends RdapSearchActionTestCase<RdapDomainSear
runSuccessfulTestWithFourDomains(
RequestType.NS_LDH_NAME,
"ns1.domain1.lol",
"50-LOL",
"4F-LOL",
"4E-LOL",
"4D-LOL",
"32-LOL",
"31-LOL",
"30-LOL",
"2F-LOL",
"nsLdhName=ns1.domain1.lol&cursor=ZG9tYWluNC5sb2w%3D",
"rdap_domains_four_truncated.json");
verifyMetrics(
@@ -1587,10 +1499,10 @@ class RdapDomainSearchActionTest extends RdapSearchActionTestCase<RdapDomainSear
.that(generateActualJson(RequestType.NS_LDH_NAME, "ns*.domain1.lol"))
.isEqualTo(
jsonFileBuilder()
.addDomain("domain1.lol", "8F-LOL")
.addDomain("domain2.lol", "8E-LOL")
.addDomain("domain3.lol", "8D-LOL")
.addDomain("domain4.lol", "8C-LOL")
.addDomain("domain1.lol", "71-LOL")
.addDomain("domain2.lol", "70-LOL")
.addDomain("domain3.lol", "6F-LOL")
.addDomain("domain4.lol", "6E-LOL")
.load("rdap_nontruncated_domains.json"));
assertThat(response.getStatus()).isEqualTo(200);
verifyMetrics(SearchType.BY_NAMESERVER_NAME, Optional.of(4L), Optional.of(36L));
@@ -1604,8 +1516,8 @@ class RdapDomainSearchActionTest extends RdapSearchActionTestCase<RdapDomainSear
.that(generateActualJson(RequestType.NS_LDH_NAME, "ns*.domain1.lol"))
.isEqualTo(
jsonFileBuilder()
.addDomain("domain1.lol", "97-LOL")
.addDomain("domain2.lol", "96-LOL")
.addDomain("domain1.lol", "79-LOL")
.addDomain("domain2.lol", "78-LOL")
.load("rdap_incomplete_domains.json"));
assertThat(response.getStatus()).isEqualTo(200);
verifyMetrics(
@@ -1671,9 +1583,7 @@ class RdapDomainSearchActionTest extends RdapSearchActionTestCase<RdapDomainSear
@Test
void testAddressMatchV6Address_foundOne() {
runSuccessfulTestWithCatLol(
RequestType.NS_IP,
"bad:f00d:cafe:0:0:0:15:beef",
"rdap_domain_redacted_contacts_with_remark.json");
RequestType.NS_IP, "bad:f00d:cafe:0:0:0:15:beef", "rdap_domain.json");
verifyMetrics(SearchType.BY_NAMESERVER_ADDRESS, 1, 1);
}
@@ -1683,7 +1593,7 @@ class RdapDomainSearchActionTest extends RdapSearchActionTestCase<RdapDomainSear
verifyErrorMetrics(SearchType.BY_NAMESERVER_ADDRESS, Optional.empty(), Optional.of(0L), 404);
}
// TODO(b/27378695): reenable or delete this test
// TODO(b/27376E-95): reenable or delete this test
@Disabled
@Test
void testAddressMatchDomainsInTestTld_notFound() {
@@ -1740,13 +1650,10 @@ class RdapDomainSearchActionTest extends RdapSearchActionTestCase<RdapDomainSear
.isEqualTo(
wrapInSearchReply(
jsonFileBuilder()
.addDomain("cat.lol", "C-LOL")
.addDomain("cat.lol", "6-LOL")
.addRegistrar("Yes Virginia <script>")
.addNameserver("ns1.cat.lol", "8-ROID")
.addNameserver("ns2.cat.lol", "A-ROID")
.addContact("4-ROID")
.addContact("6-ROID")
.addContact("2-ROID")
.addNameserver("ns1.cat.lol", "2-ROID")
.addNameserver("ns2.cat.lol", "4-ROID")
.load("rdap_domain.json")));
assertThat(response.getStatus()).isEqualTo(200);
verifyMetrics(SearchType.BY_NAMESERVER_ADDRESS, 1, 1);
@@ -1773,10 +1680,10 @@ class RdapDomainSearchActionTest extends RdapSearchActionTestCase<RdapDomainSear
runSuccessfulTestWithFourDomains(
RequestType.NS_IP,
"5.5.5.1",
"4B-LOL",
"4A-LOL",
"49-LOL",
"48-LOL",
"2D-LOL",
"2C-LOL",
"2B-LOL",
"2A-LOL",
"rdap_nontruncated_domains.json");
verifyMetrics(SearchType.BY_NAMESERVER_ADDRESS, 4, 1);
}
@@ -1787,10 +1694,10 @@ class RdapDomainSearchActionTest extends RdapSearchActionTestCase<RdapDomainSear
runSuccessfulTestWithFourDomains(
RequestType.NS_IP,
"5.5.5.1",
"4C-LOL",
"4B-LOL",
"4A-LOL",
"49-LOL",
"2E-LOL",
"2D-LOL",
"2C-LOL",
"2B-LOL",
"nsIp=5.5.5.1&cursor=ZG9tYWluNC5sb2w%3D",
"rdap_domains_four_truncated.json");
verifyMetrics(
@@ -1806,10 +1713,10 @@ class RdapDomainSearchActionTest extends RdapSearchActionTestCase<RdapDomainSear
runSuccessfulTestWithFourDomains(
RequestType.NS_IP,
"5.5.5.1",
"50-LOL",
"4F-LOL",
"4E-LOL",
"4D-LOL",
"32-LOL",
"31-LOL",
"30-LOL",
"2F-LOL",
"nsIp=5.5.5.1&cursor=ZG9tYWluNC5sb2w%3D",
"rdap_domains_four_truncated.json");
verifyMetrics(
@@ -18,7 +18,6 @@ import static com.google.common.truth.Truth.assertThat;
import static google.registry.testing.DatabaseHelper.createTld;
import static google.registry.testing.DatabaseHelper.persistResource;
import static google.registry.testing.DatabaseHelper.persistResources;
import static google.registry.testing.FullFieldsTestEntityHelper.makeAndPersistDeletedContact;
import static google.registry.testing.FullFieldsTestEntityHelper.makeDomain;
import static google.registry.testing.FullFieldsTestEntityHelper.makeHost;
import static google.registry.testing.FullFieldsTestEntityHelper.makeRegistrar;
@@ -26,8 +25,6 @@ import static google.registry.testing.FullFieldsTestEntityHelper.makeRegistrarPo
import static google.registry.testing.GsonSubject.assertAboutJson;
import static org.mockito.Mockito.verify;
import com.google.common.collect.ImmutableList;
import google.registry.model.contact.Contact;
import google.registry.model.host.Host;
import google.registry.model.registrar.Registrar;
import google.registry.rdap.RdapMetrics.EndpointType;
@@ -35,7 +32,6 @@ import google.registry.rdap.RdapMetrics.SearchType;
import google.registry.rdap.RdapMetrics.WildcardType;
import google.registry.rdap.RdapSearchResults.IncompletenessWarningType;
import google.registry.request.Action;
import google.registry.testing.FullFieldsTestEntityHelper;
import java.util.Optional;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@@ -43,19 +39,11 @@ import org.junit.jupiter.api.Test;
/** Unit tests for {@link RdapEntityAction}. */
class RdapEntityActionTest extends RdapActionBaseTestCase<RdapEntityAction> {
private static final String CONTACT_NAME = "(◕‿◕)";
private static final String CONTACT_ADDRESS = "\"1 Smiley Row\", \"Suite みんな\"";
RdapEntityActionTest() {
super(RdapEntityAction.class);
}
private Registrar registrarLol;
private Contact registrant;
private Contact adminContact;
private Contact techContact;
private Contact disconnectedContact;
private Contact deletedContact;
@BeforeEach
void beforeEach() {
@@ -64,34 +52,9 @@ class RdapEntityActionTest extends RdapActionBaseTestCase<RdapEntityAction> {
registrarLol = persistResource(makeRegistrar(
"evilregistrar", "Yes Virginia <script>", Registrar.State.ACTIVE, 101L));
persistResources(makeRegistrarPocs(registrarLol));
registrant =
FullFieldsTestEntityHelper.makeAndPersistContact(
"8372808-REG",
CONTACT_NAME,
"lol@cat.みんな",
ImmutableList.of("1 Smiley Row", "Suite みんな"),
clock.nowUtc(),
registrarLol);
adminContact =
FullFieldsTestEntityHelper.makeAndPersistContact(
"8372808-ADM",
CONTACT_NAME,
"lol@cat.みんな",
ImmutableList.of("1 Smiley Row", "Suite みんな"),
clock.nowUtc(),
registrarLol);
techContact =
FullFieldsTestEntityHelper.makeAndPersistContact(
"8372808-TEC",
CONTACT_NAME,
"lol@cat.みんな",
ImmutableList.of("1 Smiley Row", "Suite みんな"),
clock.nowUtc(),
registrarLol);
Host host1 = persistResource(makeHost("ns1.cat.lol", "1.2.3.4"));
Host host2 = persistResource(makeHost("ns2.cat.lol", "bad:f00d:cafe:0:0:0:15:beef"));
persistResource(
makeDomain("cat.lol", registrant, adminContact, techContact, host1, host2, registrarLol));
persistResource(makeDomain("cat.lol", null, null, null, host1, host2, registrarLol));
// xn--q9jyb4c
createTld("xn--q9jyb4c");
Registrar registrarIdn = persistResource(
@@ -106,21 +69,6 @@ class RdapEntityActionTest extends RdapActionBaseTestCase<RdapEntityAction> {
Registrar registrarDeleted = persistResource(
makeRegistrar("deletedregistrar", "Yes Virginia <script>", Registrar.State.PENDING, 104L));
persistResources(makeRegistrarPocs(registrarDeleted));
// other contacts
disconnectedContact =
FullFieldsTestEntityHelper.makeAndPersistContact(
"8372808-DIS",
CONTACT_NAME,
"lol@cat.みんな",
ImmutableList.of("1 Smiley Row", "Suite みんな"),
clock.nowUtc(),
registrarLol);
deletedContact =
makeAndPersistDeletedContact(
"8372808-DEL",
clock.nowUtc().minusYears(1),
registrarLol,
clock.nowUtc().minusMonths(6));
}
@Test
@@ -148,156 +96,6 @@ class RdapEntityActionTest extends RdapActionBaseTestCase<RdapEntityAction> {
assertThat(response.getStatus()).isEqualTo(404);
}
@Test
void testValidRegistrantContact_works() {
login("evilregistrar");
assertAboutJson()
.that(generateActualJson(registrant.getRepoId()))
.isEqualTo(
addPermanentBoilerplateNotices(
jsonFileBuilder()
.addFullContact(registrant.getRepoId(), null, CONTACT_NAME, CONTACT_ADDRESS)
.load("rdap_associated_contact.json")));
}
@Test
void testValidRegistrantContact_found_asAdministrator() {
loginAsAdmin();
assertAboutJson()
.that(generateActualJson(registrant.getRepoId()))
.isEqualTo(
addPermanentBoilerplateNotices(
jsonFileBuilder()
.addFullContact(registrant.getRepoId(), null, CONTACT_NAME, CONTACT_ADDRESS)
.load("rdap_associated_contact.json")));
}
@Test
void testValidRegistrantContact_found_notLoggedIn() {
assertAboutJson()
.that(generateActualJson(registrant.getRepoId()))
.isEqualTo(
addPermanentBoilerplateNotices(
jsonFileBuilder()
.addFullContact(registrant.getRepoId(), "active", CONTACT_NAME, CONTACT_ADDRESS)
.load("rdap_associated_contact_no_personal_data.json")));
}
@Test
void testValidRegistrantContact_found_loggedInAsOtherRegistrar() {
login("otherregistrar");
assertAboutJson()
.that(generateActualJson(registrant.getRepoId()))
.isEqualTo(
addPermanentBoilerplateNotices(
jsonFileBuilder()
.addFullContact(registrant.getRepoId(), "active", CONTACT_NAME, CONTACT_ADDRESS)
.load("rdap_associated_contact_no_personal_data.json")));
}
@Test
void testValidAdminContact_works() {
login("evilregistrar");
assertAboutJson()
.that(generateActualJson(adminContact.getRepoId()))
.isEqualTo(
addPermanentBoilerplateNotices(
jsonFileBuilder()
.addFullContact(adminContact.getRepoId(), null, CONTACT_NAME, CONTACT_ADDRESS)
.load("rdap_associated_contact.json")));
}
@Test
void testValidTechContact_works() {
login("evilregistrar");
assertAboutJson()
.that(generateActualJson(techContact.getRepoId()))
.isEqualTo(
addPermanentBoilerplateNotices(
jsonFileBuilder()
.addFullContact(techContact.getRepoId(), null, CONTACT_NAME, CONTACT_ADDRESS)
.load("rdap_associated_contact.json")));
}
@Test
void testValidDisconnectedContact_works() {
login("evilregistrar");
assertAboutJson()
.that(generateActualJson(disconnectedContact.getRepoId()))
.isEqualTo(
addPermanentBoilerplateNotices(
jsonFileBuilder()
.addFullContact(
disconnectedContact.getRepoId(), "active", CONTACT_NAME, CONTACT_ADDRESS)
.load("rdap_contact.json")));
}
@Test
void testDeletedContact_notFound() {
String repoId = deletedContact.getRepoId();
assertAboutJson()
.that(generateActualJson(repoId))
.isEqualTo(generateExpectedJsonError(repoId + " not found", 404));
assertThat(response.getStatus()).isEqualTo(404);
}
@Test
void testDeletedContact_notFound_includeDeletedSetFalse() {
action.includeDeletedParam = Optional.of(false);
String repoId = deletedContact.getRepoId();
assertAboutJson()
.that(generateActualJson(repoId))
.isEqualTo(generateExpectedJsonError(repoId + " not found", 404));
assertThat(response.getStatus()).isEqualTo(404);
}
@Test
void testDeletedContact_notFound_notLoggedIn() {
action.includeDeletedParam = Optional.of(true);
String repoId = deletedContact.getRepoId();
assertAboutJson()
.that(generateActualJson(repoId))
.isEqualTo(generateExpectedJsonError(repoId + " not found", 404));
assertThat(response.getStatus()).isEqualTo(404);
}
@Test
void testDeletedContact_notFound_loggedInAsDifferentRegistrar() {
login("idnregistrar");
action.includeDeletedParam = Optional.of(true);
String repoId = deletedContact.getRepoId();
assertAboutJson()
.that(generateActualJson(repoId))
.isEqualTo(generateExpectedJsonError(repoId + " not found", 404));
assertThat(response.getStatus()).isEqualTo(404);
}
@Test
void testDeletedContact_found_loggedInAsCorrectRegistrar() {
login("evilregistrar");
action.includeDeletedParam = Optional.of(true);
assertAboutJson()
.that(generateActualJson(deletedContact.getRepoId()))
.isEqualTo(
addPermanentBoilerplateNotices(
jsonFileBuilder()
.addContact(deletedContact.getRepoId())
.load("rdap_contact_deleted.json")));
}
@Test
void testDeletedContact_found_loggedInAsAdmin() {
loginAsAdmin();
action.includeDeletedParam = Optional.of(true);
assertAboutJson()
.that(generateActualJson(deletedContact.getRepoId()))
.isEqualTo(
addPermanentBoilerplateNotices(
jsonFileBuilder()
.addContact(deletedContact.getRepoId())
.load("rdap_contact_deleted.json")));
}
@Test
void testRegistrar_found() {
assertAboutJson()
@@ -412,18 +210,18 @@ class RdapEntityActionTest extends RdapActionBaseTestCase<RdapEntityAction> {
void testQueryParameter_ignored() {
login("evilregistrar");
assertAboutJson()
.that(generateActualJson(techContact.getRepoId() + "?key=value"))
.that(generateActualJson("101?key=value"))
.isEqualTo(
addPermanentBoilerplateNotices(
jsonFileBuilder()
.addFullContact(techContact.getRepoId(), null, CONTACT_NAME, CONTACT_ADDRESS)
.load("rdap_associated_contact.json")));
.addFullRegistrar("101", "Yes Virginia <script>", "active", null)
.load("rdap_registrar.json")));
assertThat(response.getStatus()).isEqualTo(200);
}
@Test
void testMetrics() {
generateActualJson(registrant.getRepoId());
generateActualJson("101");
verify(rdapMetrics)
.updateMetrics(
RdapMetrics.RdapMetricInformation.builder()
File diff suppressed because it is too large Load Diff
@@ -33,7 +33,6 @@ import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Maps;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import google.registry.model.contact.Contact;
import google.registry.model.domain.Domain;
import google.registry.model.eppcommon.StatusValue;
import google.registry.model.host.Host;
@@ -46,12 +45,9 @@ import google.registry.persistence.transaction.JpaTestExtensions;
import google.registry.persistence.transaction.JpaTestExtensions.JpaIntegrationTestExtension;
import google.registry.rdap.RdapJsonFormatter.OutputDataType;
import google.registry.rdap.RdapObjectClasses.BoilerplateType;
import google.registry.rdap.RdapObjectClasses.RdapEntity;
import google.registry.rdap.RdapObjectClasses.ReplyPayloadBase;
import google.registry.rdap.RdapObjectClasses.TopLevelReplyObject;
import google.registry.testing.FakeClock;
import google.registry.testing.FullFieldsTestEntityHelper;
import javax.annotation.Nullable;
import org.joda.time.DateTime;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@@ -77,10 +73,6 @@ class RdapJsonFormatterTest {
private Host hostNoAddresses;
private Host hostNotLinked;
private Host hostSuperordinatePendingTransfer;
@Nullable private Contact contactRegistrant;
private Contact contactAdmin;
private Contact contactTech;
private Contact contactNotLinked;
@BeforeEach
void beforeEach() {
@@ -95,35 +87,8 @@ class RdapJsonFormatterTest {
clock.setTo(DateTime.parse("2000-01-01T00:00:00Z"));
registrar = persistResource(registrar);
persistResources(makeMoreRegistrarContacts(registrar));
persistResources(makeMoreRegistrarPocs(registrar));
contactRegistrant =
FullFieldsTestEntityHelper.makeAndPersistContact(
"8372808-ERL", "(◕‿◕)", "lol@cat.みんな", null, clock.nowUtc().minusYears(1), registrar);
contactAdmin =
FullFieldsTestEntityHelper.makeAndPersistContact(
"8372808-IRL",
"Santa Claus",
null,
ImmutableList.of("Santa Claus Tower", "41st floor", "Suite みんな"),
clock.nowUtc().minusYears(2),
registrar);
contactTech =
FullFieldsTestEntityHelper.makeAndPersistContact(
"8372808-TRL",
"The Raven",
"bog@cat.みんな",
ImmutableList.of("Chamber Door", "upper level"),
clock.nowUtc().minusYears(3),
registrar);
contactNotLinked =
FullFieldsTestEntityHelper.makeAndPersistContact(
"8372808-QRL",
"The Wizard",
"dog@cat.みんな",
ImmutableList.of("Somewhere", "Over the Rainbow"),
clock.nowUtc().minusYears(4),
registrar);
hostIpv4 =
makeAndPersistHost(
"ns1.cat.みんな", "1.2.3.4", null, clock.nowUtc().minusYears(1), "unicoderegistrar");
@@ -154,14 +119,7 @@ class RdapJsonFormatterTest {
.asBuilder()
.setSuperordinateDomain(
persistResource(
makeDomain(
"dog.みんな",
contactRegistrant,
contactAdmin,
contactTech,
null,
null,
registrar)
makeDomain("dog.みんな", null, null, null, null, null, registrar)
.asBuilder()
.addStatusValue(StatusValue.PENDING_TRANSFER)
.setTransferData(
@@ -180,43 +138,21 @@ class RdapJsonFormatterTest {
.build());
domainFull =
persistResource(
makeDomain(
"cat.みんな",
contactRegistrant,
contactAdmin,
contactTech,
hostIpv4,
hostIpv6,
registrar)
makeDomain("cat.みんな", null, null, null, hostIpv4, hostIpv6, registrar)
.asBuilder()
.setCreationTimeForTest(clock.nowUtc().minusMonths(4))
.setLastEppUpdateTime(clock.nowUtc().minusMonths(3))
.build());
domainNoNameserversNoTransfers =
persistResource(
makeDomain(
"fish.みんな",
contactRegistrant,
contactRegistrant,
contactRegistrant,
null,
null,
registrar)
makeDomain("fish.みんな", null, null, null, null, null, registrar)
.asBuilder()
.setCreationTimeForTest(clock.nowUtc())
.setLastEppUpdateTime(null)
.build());
// Create an unused domain that references hostBoth and hostNoAddresses so that
// they will have "associated" (ie, StatusValue.LINKED) status.
persistResource(
makeDomain(
"dog.みんな",
contactRegistrant,
contactAdmin,
contactTech,
hostBoth,
hostNoAddresses,
registrar));
persistResource(makeDomain("dog.みんな", null, null, null, hostBoth, hostNoAddresses, registrar));
// history entries
// We create 3 "transfer approved" entries, to make sure we only save the last one
@@ -252,7 +188,7 @@ class RdapJsonFormatterTest {
clock.nowUtc().minusMonths(3)));
}
static ImmutableList<RegistrarPoc> makeMoreRegistrarContacts(Registrar registrar) {
static ImmutableList<RegistrarPoc> makeMoreRegistrarPocs(Registrar registrar) {
return ImmutableList.of(
new RegistrarPoc.Builder()
.setRegistrar(registrar)
@@ -365,88 +301,6 @@ class RdapJsonFormatterTest {
.isEqualTo(loadJson("rdapjson_host_pending_transfer.json"));
}
@Test
void testRegistrant() {
assertAboutJson()
.that(
rdapJsonFormatter
.createRdapContactEntity(
contactRegistrant,
ImmutableSet.of(RdapEntity.Role.REGISTRANT),
OutputDataType.FULL)
.toJson())
.isEqualTo(loadJson("rdapjson_registrant.json"));
}
@Test
void testRegistrant_summary() {
assertAboutJson()
.that(
rdapJsonFormatter
.createRdapContactEntity(
contactRegistrant,
ImmutableSet.of(RdapEntity.Role.REGISTRANT),
OutputDataType.SUMMARY)
.toJson())
.isEqualTo(loadJson("rdapjson_registrant_summary.json"));
}
@Test
void testRegistrant_loggedOut() {
rdapJsonFormatter.rdapAuthorization = RdapAuthorization.PUBLIC_AUTHORIZATION;
assertAboutJson()
.that(
rdapJsonFormatter
.createRdapContactEntity(
contactRegistrant,
ImmutableSet.of(RdapEntity.Role.REGISTRANT),
OutputDataType.FULL)
.toJson())
.isEqualTo(loadJson("rdapjson_registrant_logged_out.json"));
}
@Test
void testAdmin() {
assertAboutJson()
.that(
rdapJsonFormatter
.createRdapContactEntity(
contactAdmin, ImmutableSet.of(RdapEntity.Role.ADMIN), OutputDataType.FULL)
.toJson())
.isEqualTo(loadJson("rdapjson_admincontact.json"));
}
@Test
void testTech() {
assertAboutJson()
.that(
rdapJsonFormatter
.createRdapContactEntity(
contactTech, ImmutableSet.of(RdapEntity.Role.TECH), OutputDataType.FULL)
.toJson())
.isEqualTo(loadJson("rdapjson_techcontact.json"));
}
@Test
void testRolelessContact() {
assertAboutJson()
.that(
rdapJsonFormatter
.createRdapContactEntity(contactTech, ImmutableSet.of(), OutputDataType.FULL)
.toJson())
.isEqualTo(loadJson("rdapjson_rolelesscontact.json"));
}
@Test
void testUnlinkedContact() {
assertAboutJson()
.that(
rdapJsonFormatter
.createRdapContactEntity(contactNotLinked, ImmutableSet.of(), OutputDataType.FULL)
.toJson())
.isEqualTo(loadJson("rdapjson_unlinkedcontact.json"));
}
@Test
void testDomain_full() {
assertAboutJson()
@@ -481,7 +335,7 @@ class RdapJsonFormatterTest {
}
@Test
void testDomain_noNameserversNoTransfersMultipleRoleContact() {
void testDomain_noNameserversNoTransfers() {
assertAboutJson()
.that(
rdapJsonFormatter
@@ -37,7 +37,6 @@ class RdapMetricsTest {
RdapMetrics.responses.reset();
RdapMetrics.numberOfDomainsRetrieved.reset();
RdapMetrics.numberOfHostsRetrieved.reset();
RdapMetrics.numberOfContactsRetrieved.reset();
}
private RdapMetrics.RdapMetricInformation.Builder getBuilder() {
@@ -188,7 +187,6 @@ class RdapMetricsTest {
.and()
.hasNoOtherValues();
assertThat(RdapMetrics.numberOfHostsRetrieved).hasNoOtherValues();
assertThat(RdapMetrics.numberOfContactsRetrieved).hasNoOtherValues();
}
/**
@@ -225,7 +223,6 @@ class RdapMetricsTest {
ImmutableSet.of(10), "DOMAINS", "BY_NAMESERVER_NAME", "PREFIX_AND_SUFFIX", "2", "YES")
.and()
.hasNoOtherValues();
assertThat(RdapMetrics.numberOfContactsRetrieved).hasNoOtherValues();
}
/** Tests what would happen in a nameserver search for "*.cat.lol", which found no matches. */
@@ -254,10 +251,8 @@ class RdapMetricsTest {
ImmutableSet.of(0), "NAMESERVERS", "BY_NAMESERVER_NAME", "SUFFIX", "0", "NO")
.and()
.hasNoOtherValues();
assertThat(RdapMetrics.numberOfContactsRetrieved).hasNoOtherValues();
}
/** Tests what would happen in an entity search for "Mike*" which found 50 contacts. */
@Test
void testEntitySearchByNameWithWildcard() {
rdapMetrics.updateMetrics(
@@ -266,7 +261,6 @@ class RdapMetricsTest {
.setSearchType(SearchType.BY_FULL_NAME)
.setWildcardType(WildcardType.PREFIX)
.setPrefixLength(4)
.setNumContactsRetrieved(50)
.build());
assertThat(RdapMetrics.requests)
.hasValueForLabels(1, "ENTITIES", "NO", "NO", "PUBLIC", "GET")
@@ -279,10 +273,5 @@ class RdapMetricsTest {
.hasNoOtherValues();
assertThat(RdapMetrics.numberOfDomainsRetrieved).hasNoOtherValues();
assertThat(RdapMetrics.numberOfHostsRetrieved).hasNoOtherValues();
assertThat(RdapMetrics.numberOfContactsRetrieved)
.hasDataSetForLabels(
ImmutableSet.of(50), "ENTITIES", "BY_FULL_NAME", "PREFIX", "4", "NO")
.and()
.hasNoOtherValues();
}
}
@@ -131,20 +131,7 @@ class RdapNameserverSearchActionTest extends RdapSearchActionTestCase<RdapNamese
// create a domain so that we can use it as a test nameserver search string suffix
domainCatLol =
persistResource(
makeDomain(
"cat.lol",
persistResource(
FullFieldsTestEntityHelper.makeContact(
"5372808-ERL", "Goblin Market", "lol@cat.lol", registrar)),
persistResource(
FullFieldsTestEntityHelper.makeContact(
"5372808-IRL", "Santa Claus", "BOFH@cat.lol", registrar)),
persistResource(
FullFieldsTestEntityHelper.makeContact(
"5372808-TRL", "The Raven", "bog@cat.lol", registrar)),
hostNs1CatLol,
hostNs2CatLol,
registrar)
makeDomain("cat.lol", null, null, null, hostNs1CatLol, hostNs2CatLol, registrar)
.asBuilder()
.setSubordinateHosts(ImmutableSet.of("ns1.cat.lol", "ns2.cat.lol"))
.build());
@@ -203,7 +190,6 @@ class RdapNameserverSearchActionTest extends RdapSearchActionTestCase<RdapNamese
action.registrarParam.isPresent(),
Optional.empty(),
numHostsRetrieved,
Optional.empty(),
incompletenessWarningType);
}
@@ -802,7 +788,7 @@ class RdapNameserverSearchActionTest extends RdapSearchActionTestCase<RdapNamese
.that(generateActualJsonWithIp("5.5.5.1"))
.isEqualTo(
loadJsonFile(
"rdap_truncated_hosts.json", "QUERY", "ip=5.5.5.1&cursor=MTctUk9JRA%3D%3D"));
"rdap_truncated_hosts.json", "QUERY", "ip=5.5.5.1&cursor=MTQtUk9JRA%3D%3D"));
assertThat(response.getStatus()).isEqualTo(200);
verifyMetrics(5, IncompletenessWarningType.TRUNCATED);
}
@@ -814,7 +800,7 @@ class RdapNameserverSearchActionTest extends RdapSearchActionTestCase<RdapNamese
.that(generateActualJsonWithIp("5.5.5.1"))
.isEqualTo(
loadJsonFile(
"rdap_truncated_hosts.json", "QUERY", "ip=5.5.5.1&cursor=MTctUk9JRA%3D%3D"));
"rdap_truncated_hosts.json", "QUERY", "ip=5.5.5.1&cursor=MTQtUk9JRA%3D%3D"));
assertThat(response.getStatus()).isEqualTo(200);
// When searching by address and not including deleted, we don't need to search for extra
// matches.
@@ -78,7 +78,6 @@ public abstract class RdapSearchActionTestCase<A extends RdapSearchActionBase>
boolean registrarSpecified,
Optional<Long> numDomainsRetrieved,
Optional<Long> numHostsRetrieved,
Optional<Long> numContactsRetrieved,
IncompletenessWarningType incompletenessWarningType) {
RdapMetrics.RdapMetricInformation.Builder builder =
RdapMetrics.RdapMetricInformation.builder()
@@ -94,7 +93,6 @@ public abstract class RdapSearchActionTestCase<A extends RdapSearchActionBase>
.setIncompletenessWarningType(incompletenessWarningType);
numDomainsRetrieved.ifPresent(builder::setNumDomainsRetrieved);
numHostsRetrieved.ifPresent(builder::setNumHostsRetrieved);
numContactsRetrieved.ifPresent(builder::setNumContactsRetrieved);
verify(rdapMetrics).updateMetrics(builder.build());
}
}
@@ -39,12 +39,6 @@ class RdapTestHelper {
return GSON.fromJson(Joiner.on("\n").join(lines), JsonElement.class);
}
enum ContactNoticeType {
NONE,
DOMAIN,
CONTACT
}
static RdapJsonFormatter getTestRdapJsonFormatter(Clock clock) {
RdapJsonFormatter rdapJsonFormatter = new RdapJsonFormatter();
rdapJsonFormatter.rdapAuthorization = RdapAuthorization.PUBLIC_AUTHORIZATION;
@@ -587,7 +587,7 @@ public final class DatabaseHelper {
public static Domain persistDomainWithDependentResources(
String label,
String tld,
Contact contact,
@Nullable Contact contact,
DateTime now,
DateTime creationTime,
DateTime expirationTime) {
@@ -601,13 +601,16 @@ public final class DatabaseHelper {
.setCreationRegistrarId("TheRegistrar")
.setCreationTimeForTest(creationTime)
.setRegistrationExpirationTime(expirationTime)
.setRegistrant(Optional.of(contact.createVKey()))
.setContacts(
ImmutableSet.of(
DesignatedContact.create(Type.ADMIN, contact.createVKey()),
DesignatedContact.create(Type.TECH, contact.createVKey())))
.setAuthInfo(DomainAuthInfo.create(PasswordAuth.create("fooBAR")));
Duration addGracePeriodLength = Tld.get(tld).getAddGracePeriodLength();
if (contact != null) {
domainBuilder
.setRegistrant(Optional.of(contact.createVKey()))
.setContacts(
ImmutableSet.of(
DesignatedContact.create(Type.ADMIN, contact.createVKey()),
DesignatedContact.create(Type.TECH, contact.createVKey())));
}
if (creationTime.plus(addGracePeriodLength).isAfter(now)) {
domainBuilder.addGracePeriod(
GracePeriod.create(
@@ -1,56 +0,0 @@
{
"rdapConformance": [
"rdap_level_0",
"icann_rdap_response_profile_1",
"icann_rdap_technical_implementation_guide_1"
],
"objectClassName": "entity",
"handle": "%CONTACT_HANDLE_1%",
"status": ["active", "associated"],
"links": [
{
"rel": "self",
"href": "https://example.tld/rdap/entity/%CONTACT_HANDLE_1%",
"type": "application/rdap+json",
"value": "%REQUEST_URL%"
}
],
"events": [
{
"eventAction": "last update of RDAP database",
"eventDate": "2000-01-01T00:00:00.000Z"
}
],
"vcardArray":
[
"vcard",
[
["version", {}, "text", "4.0"],
["fn", {}, "text", "%CONTACT_FULLNAME_1%"],
["org", {}, "text", "GOOGLE INCORPORATED <script>"],
["adr", {}, "text",
[
"",
"",
[ %CONTACT_ADDRESS_1% ],
"KOKOMO",
"BM",
"31337",
"United States"
]
],
["tel", {"type": ["voice"]}, "uri", "tel:+1.2126660420"],
["tel", {"type": ["fax"]}, "uri", "tel:+1.2126660420"]
]
],
"remarks": [
{
"title": "EMAIL REDACTED FOR PRIVACY",
"type": "object redacted due to authorization",
"description": [
"Please query the RDDS service of the Registrar of Record identifies in this output for information on how to contact the Registrant of the queried domain name."
]
}
]
}
@@ -1,47 +0,0 @@
{
"rdapConformance": [
"rdap_level_0",
"icann_rdap_response_profile_1",
"icann_rdap_technical_implementation_guide_1"
],
"objectClassName" : "entity",
"handle" : "",
"events": [
{
"eventAction": "last update of RDAP database",
"eventDate": "2000-01-01T00:00:00.000Z"
}
],
"vcardArray": [
"vcard",
[
["version", {}, "text", "4.0"],
["fn", {}, "text", ""]
]
],
"remarks": [
{
"title": "REDACTED FOR PRIVACY",
"type": "object redacted due to authorization",
"links": [
{
"type":"text\/html",
"href": "https:\/\/github.com\/google\/nomulus\/blob\/master\/docs\/rdap.md#authentication",
"rel": "alternate",
"value": "%REQUEST_URL%"
}
],
"description": [
"Some of the data in this object has been removed.",
"Contact personal data is visible only to the owning registrar."
]
},
{
"title": "EMAIL REDACTED FOR PRIVACY",
"type": "object redacted due to authorization",
"description": [
"Please query the RDDS service of the Registrar of Record identifies in this output for information on how to contact the Registrant of the queried domain name."
]
}
]
}
@@ -1,56 +0,0 @@
{
"rdapConformance": [
"rdap_level_0",
"icann_rdap_response_profile_1",
"icann_rdap_technical_implementation_guide_1"
],
"objectClassName" : "entity",
"handle" : "%CONTACT_HANDLE_1%",
"status" : ["%STATUS_1%"],
"links" :
[
{
"rel" : "self",
"href": "https://example.tld/rdap/entity/%CONTACT_HANDLE_1%",
"type" : "application/rdap+json",
"value": "%REQUEST_URL%"
}
],
"events": [
{
"eventAction": "last update of RDAP database",
"eventDate": "2000-01-01T00:00:00.000Z"
}
],
"vcardArray" :
[
"vcard",
[
["version", {}, "text", "4.0"],
["fn", {}, "text", "%CONTACT_FULLNAME_1%"],
["org", {}, "text", "GOOGLE INCORPORATED <script>"],
["adr", {}, "text",
[
"",
"",
[ %CONTACT_ADDRESS_1% ],
"KOKOMO",
"BM",
"31337",
"United States"
]
],
["tel", {"type" : ["voice"]}, "uri", "tel:+1.2126660420"],
["tel", {"type" : ["fax"]}, "uri", "tel:+1.2126660420"]
]
],
"remarks": [
{
"title": "EMAIL REDACTED FOR PRIVACY",
"type": "object redacted due to authorization",
"description": [
"Please query the RDDS service of the Registrar of Record identifies in this output for information on how to contact the Registrant of the queried domain name."
]
}
]
}
@@ -1,42 +0,0 @@
{
"rdapConformance": [
"rdap_level_0",
"icann_rdap_response_profile_1",
"icann_rdap_technical_implementation_guide_1"
],
"objectClassName" : "entity",
"handle" : "%CONTACT_HANDLE_1%",
"status" : ["inactive"],
"links" :
[
{
"rel" : "self",
"href": "https://example.tld/rdap/entity/%CONTACT_HANDLE_1%",
"type" : "application/rdap+json",
"value": "%REQUEST_URL%"
}
],
"events":
[
{
"eventAction": "last update of RDAP database",
"eventDate": "2000-01-01T00:00:00.000Z"
}
],
"vcardArray" :
[
"vcard",
[
["version", {}, "text", "4.0"]
]
],
"remarks": [
{
"title": "EMAIL REDACTED FOR PRIVACY",
"type": "object redacted due to authorization",
"description": [
"Please query the RDDS service of the Registrar of Record identifies in this output for information on how to contact the Registrant of the queried domain name."
]
}
]
}
@@ -1,48 +0,0 @@
{
"rdapConformance": [
"rdap_level_0",
"icann_rdap_response_profile_1",
"icann_rdap_technical_implementation_guide_1"
],
"objectClassName" : "entity",
"handle" : "",
"events": [
{
"eventAction": "last update of RDAP database",
"eventDate": "2000-01-01T00:00:00.000Z"
}
],
"vcardArray": [
"vcard",
[
["version", {}, "text", "4.0"],
["fn", {}, "text", ""]
]
],
"remarks": [
{
"title": "REDACTED FOR PRIVACY",
"description": [
"Some of the data in this object has been removed.",
"Contact personal data is visible only to the owning registrar."
],
"type": "object redacted due to authorization",
"links" :
[
{
"rel" : "alternate",
"href" : "https://github.com/google/nomulus/blob/master/docs/rdap.md#authentication",
"type" : "text/html",
"value": "https://example.tld/rdap/entities"
}
]
},
{
"title": "EMAIL REDACTED FOR PRIVACY",
"type": "object redacted due to authorization",
"description": [
"Please query the RDDS service of the Registrar of Record identifies in this output for information on how to contact the Registrant of the queried domain name."
]
}
]
}
@@ -157,122 +157,6 @@
]
}
]
},
{
"objectClassName": "entity",
"handle": "%CONTACT_HANDLE_1%",
"roles": ["administrative"],
"links": [
{
"href": "https://example.tld/rdap/entity/%CONTACT_HANDLE_1%",
"type": "application/rdap+json",
"rel": "self",
"value": "%REQUEST_URL%"
}
],
"vcardArray": [
"vcard",
[
["version", {}, "text", "4.0"],
["fn", {}, "text", "Santa Claus"],
["org", {}, "text", "GOOGLE INCORPORATED <script>"],
["adr", {}, "text", ["", "", "123 Example Boulevard <script>", "KOKOMO", "BM", "31337", "United States"]],
["tel", {"type": ["voice"]}, "uri", "tel:+1.2126660420"],
["tel", {"type": ["fax"]}, "uri", "tel:+1.2126660420"]
]
],
"remarks": [
{
"title": "Incomplete Data",
"type": "object truncated due to unexplainable reasons",
"description": ["Summary data only. For complete data, send a specific query for the object."]
},
{
"title": "EMAIL REDACTED FOR PRIVACY",
"type": "object redacted due to authorization",
"description": [
"Please query the RDDS service of the Registrar of Record identifies in this output for information on how to contact the Registrant of the queried domain name."
]
}
]
},
{
"objectClassName": "entity",
"handle": "%CONTACT_HANDLE_2%",
"roles": ["technical"],
"links": [
{
"href": "https://example.tld/rdap/entity/%CONTACT_HANDLE_2%",
"type": "application/rdap+json",
"rel": "self",
"value": "%REQUEST_URL%"
}
],
"vcardArray": [
"vcard",
[
["version", {}, "text", "4.0"],
["fn", {}, "text", "The Raven"],
["org", {}, "text", "GOOGLE INCORPORATED <script>"],
["adr", {}, "text", ["", "", "123 Example Boulevard <script>", "KOKOMO", "BM", "31337", "United States"]],
["tel", {"type": ["voice"]}, "uri", "tel:+1.2126660420"],
["tel", {"type": ["fax"]}, "uri", "tel:+1.2126660420"]
]
],
"remarks": [
{
"title": "Incomplete Data",
"type": "object truncated due to unexplainable reasons",
"description": ["Summary data only. For complete data, send a specific query for the object."]
},
{
"title": "EMAIL REDACTED FOR PRIVACY",
"type": "object redacted due to authorization",
"description": [
"Please query the RDDS service of the Registrar of Record identifies in this output for information on how to contact the Registrant of the queried domain name."
]
}
]
},
{
"objectClassName": "entity",
"handle": "%CONTACT_HANDLE_3%",
"roles": [
"registrant"
],
"links": [
{
"href": "https://example.tld/rdap/entity/%CONTACT_HANDLE_3%",
"type": "application/rdap+json",
"rel": "self",
"value": "%REQUEST_URL%"
}
],
"vcardArray": [
"vcard",
[
["version", {}, "text", "4.0"],
["fn", {}, "text", "Goblin Market"],
["org", {}, "text", "GOOGLE INCORPORATED <script>"],
["adr", {}, "text", ["", "", "123 Example Boulevard <script>", "KOKOMO", "BM", "31337", "United States"]],
["tel", {"type": ["voice"]}, "uri", "tel:+1.2126660420"],
["tel", {"type": ["fax"]}, "uri", "tel:+1.2126660420"]
]
],
"remarks": [
{
"title": "Incomplete Data",
"type": "object truncated due to unexplainable reasons",
"description": ["Summary data only. For complete data, send a specific query for the object."]
},
{
"title": "EMAIL REDACTED FOR PRIVACY",
"type": "object redacted due to authorization",
"description": [
"Please query the RDDS service of the Registrar of Record identifies in this output for information on how to contact the Registrant of the queried domain name."
]
}
]
}
]
}
@@ -58,57 +58,6 @@
]
]
]
},
{
"objectClassName": "entity",
"handle": "",
"remarks": [
{
"description": [
"Some of the data in this object has been removed.",
"Contact personal data is visible only to the owning registrar."
],
"links": [
{
"href": "https://github.com/google/nomulus/blob/master/docs/rdap.md#authentication",
"rel": "alternate",
"type": "text/html",
"value": "https://example.tld/rdap/domain/addgraceperiod.lol"
}
],
"title": "REDACTED FOR PRIVACY",
"type": "object redacted due to authorization"
},
{
"description": [
"Please query the RDDS service of the Registrar of Record identifies in this output for information on how to contact the Registrant of the queried domain name."
],
"title": "EMAIL REDACTED FOR PRIVACY",
"type": "object redacted due to authorization"
}
],
"roles": [
"administrative",
"technical",
"registrant"
],
"vcardArray": [
"vcard",
[
[
"version",
{},
"text",
"4.0"
],
[
"fn",
{},
"text",
""
]
]
]
}
],
"events": [
@@ -126,7 +75,7 @@
"eventDate": "2000-01-01T00:00:00.000Z"
}
],
"handle": "28-LOL",
"handle": "10-LOL",
"ldhName": "addgraceperiod.lol",
"links": [
{
@@ -145,7 +94,7 @@
"nameservers": [
{
"objectClassName": "nameserver",
"handle": "8-ROID",
"handle": "2-ROID",
"ldhName": "ns1.cat.lol",
"links": [
{
@@ -58,57 +58,6 @@
]
]
]
},
{
"objectClassName": "entity",
"handle": "",
"remarks": [
{
"description": [
"Some of the data in this object has been removed.",
"Contact personal data is visible only to the owning registrar."
],
"links": [
{
"href": "https://github.com/google/nomulus/blob/master/docs/rdap.md#authentication",
"rel": "alternate",
"type": "text/html",
"value": "https://example.tld/rdap/domain/autorenew.lol"
}
],
"title": "REDACTED FOR PRIVACY",
"type": "object redacted due to authorization"
},
{
"description": [
"Please query the RDDS service of the Registrar of Record identifies in this output for information on how to contact the Registrant of the queried domain name."
],
"title": "EMAIL REDACTED FOR PRIVACY",
"type": "object redacted due to authorization"
}
],
"roles": [
"administrative",
"technical",
"registrant"
],
"vcardArray": [
"vcard",
[
[
"version",
{},
"text",
"4.0"
],
[
"fn",
{},
"text",
""
]
]
]
}
],
"events": [
@@ -130,7 +79,7 @@
"eventDate": "1999-12-31T00:00:00.000Z"
}
],
"handle": "28-LOL",
"handle": "10-LOL",
"ldhName": "autorenew.lol",
"links": [
{
@@ -149,7 +98,7 @@
"nameservers": [
{
"objectClassName": "nameserver",
"handle": "8-ROID",
"handle": "2-ROID",
"ldhName": "ns1.cat.lol",
"links": [
{
@@ -146,120 +146,6 @@
]
}
]
},
{
"objectClassName": "entity",
"handle": "%CONTACT_HANDLE_1%",
"roles": ["administrative"],
"links": [
{
"href": "https://example.tld/rdap/entity/%CONTACT_HANDLE_1%",
"type": "application/rdap+json",
"rel": "self",
"value": "%REQUEST_URL%"
}
],
"vcardArray": [
"vcard",
[
["version", {}, "text", "4.0"],
["fn", {}, "text", "Sieglinde"],
["org", {}, "text", "GOOGLE INCORPORATED <script>"],
["adr", {}, "text", [ "", "", "123 Example Boulevard <script>", "KOKOMO", "BM", "31337", "United States" ] ],
["tel", { "type": [ "voice" ] }, "uri", "tel:+1.2126660420"],
["tel", { "type": [ "fax" ] }, "uri", "tel:+1.2126660420"]
]
],
"remarks": [
{
"title": "Incomplete Data",
"type": "object truncated due to unexplainable reasons",
"description": ["Summary data only. For complete data, send a specific query for the object."]
},
{
"title": "EMAIL REDACTED FOR PRIVACY",
"type": "object redacted due to authorization",
"description": [
"Please query the RDDS service of the Registrar of Record identifies in this output for information on how to contact the Registrant of the queried domain name."
]
}
]
},
{
"objectClassName": "entity",
"handle": "%CONTACT_HANDLE_2%",
"roles": ["technical"],
"links": [
{
"href": "https://example.tld/rdap/entity/%CONTACT_HANDLE_2%",
"type": "application/rdap+json",
"rel": "self",
"value": "%REQUEST_URL%"
}
],
"vcardArray": [
"vcard",
[
["version", {}, "text", "4.0"],
["fn", {}, "text", "Siegfried"],
["org", {}, "text", "GOOGLE INCORPORATED <script>"],
["adr", {}, "text", [ "", "", "123 Example Boulevard <script>", "KOKOMO", "BM", "31337", "United States" ] ],
["tel", { "type": [ "voice" ] }, "uri", "tel:+1.2126660420"],
["tel", { "type": [ "fax" ] }, "uri", "tel:+1.2126660420"]
]
],
"remarks": [
{
"title": "Incomplete Data",
"type": "object truncated due to unexplainable reasons",
"description": ["Summary data only. For complete data, send a specific query for the object."]
},
{
"title": "EMAIL REDACTED FOR PRIVACY",
"type": "object redacted due to authorization",
"description": [
"Please query the RDDS service of the Registrar of Record identifies in this output for information on how to contact the Registrant of the queried domain name."
]
}
]
},
{
"objectClassName": "entity",
"handle": "%CONTACT_HANDLE_3%",
"roles": ["registrant"],
"links": [
{
"href": "https://example.tld/rdap/entity/%CONTACT_HANDLE_3%",
"type": "application/rdap+json",
"rel": "self",
"value": "%REQUEST_URL%"
}
],
"vcardArray": [
"vcard",
[
["version", {}, "text", "4.0"],
["fn", {}, "text", "Siegmund"],
["org", {}, "text", "GOOGLE INCORPORATED <script>"],
["adr", {}, "text", [ "", "", "123 Example Boulevard <script>", "KOKOMO", "BM", "31337", "United States" ] ],
["tel", { "type": [ "voice" ] }, "uri", "tel:+1.2126660420"],
["tel", { "type": [ "fax" ] }, "uri", "tel:+1.2126660420"]
]
],
"remarks": [
{
"title": "Incomplete Data",
"type": "object truncated due to unexplainable reasons",
"description": ["Summary data only. For complete data, send a specific query for the object."]
},
{
"title": "EMAIL REDACTED FOR PRIVACY",
"type": "object redacted due to authorization",
"description": [
"Please query the RDDS service of the Registrar of Record identifies in this output for information on how to contact the Registrant of the queried domain name."
]
}
]
}
],
"secureDNS": {
@@ -152,120 +152,6 @@
]
}
]
},
{
"objectClassName": "entity",
"handle": "%CONTACT_HANDLE_1%",
"roles": ["administrative"],
"links": [
{
"href": "https://example.tld/rdap/entity/%CONTACT_HANDLE_1%",
"type": "application/rdap+json",
"rel": "self",
"value": "%REQUEST_URL%"
}
],
"vcardArray": [
"vcard",
[
["version", {}, "text", "4.0"],
["fn", {}, "text", "Santa Claus"],
["org", {}, "text", "GOOGLE INCORPORATED <script>"],
["adr", {}, "text", ["", "", "123 Example Boulevard <script>", "KOKOMO", "BM", "31337", "United States"]],
["tel", {"type": ["voice"]}, "uri", "tel:+1.2126660420"],
["tel", {"type": ["fax"]}, "uri", "tel:+1.2126660420" ]
]
],
"remarks": [
{
"title": "Incomplete Data",
"type": "object truncated due to unexplainable reasons",
"description": ["Summary data only. For complete data, send a specific query for the object."]
},
{
"title": "EMAIL REDACTED FOR PRIVACY",
"type": "object redacted due to authorization",
"description": [
"Please query the RDDS service of the Registrar of Record identifies in this output for information on how to contact the Registrant of the queried domain name."
]
}
]
},
{
"objectClassName": "entity",
"roles": ["technical"],
"handle": "%CONTACT_HANDLE_2%",
"links": [
{
"href": "https://example.tld/rdap/entity/%CONTACT_HANDLE_2%",
"type": "application/rdap+json",
"rel": "self",
"value": "%REQUEST_URL%"
}
],
"vcardArray": [
"vcard",
[
["version", {}, "text", "4.0"],
["fn", {}, "text", "The Raven"],
["org", {}, "text", "GOOGLE INCORPORATED <script>"],
["adr", {}, "text", ["", "", "123 Example Boulevard <script>", "KOKOMO", "BM", "31337", "United States"]],
["tel", { "type": [ "voice" ] }, "uri", "tel:+1.2126660420"],
["tel", { "type": [ "fax" ] }, "uri", "tel:+1.2126660420"]
]
],
"remarks": [
{
"title": "Incomplete Data",
"type": "object truncated due to unexplainable reasons",
"description": ["Summary data only. For complete data, send a specific query for the object."]
},
{
"title": "EMAIL REDACTED FOR PRIVACY",
"type": "object redacted due to authorization",
"description": [
"Please query the RDDS service of the Registrar of Record identifies in this output for information on how to contact the Registrant of the queried domain name."
]
}
]
},
{
"objectClassName": "entity",
"handle": "%CONTACT_HANDLE_3%",
"roles": ["registrant"],
"links": [
{
"href": "https://example.tld/rdap/entity/%CONTACT_HANDLE_3%",
"type": "application/rdap+json",
"rel": "self",
"value": "%REQUEST_URL%"
}
],
"vcardArray": [
"vcard",
[
["version", {}, "text", "4.0"],
["fn", {}, "text", "Goblin Market"],
["org", {}, "text", "GOOGLE INCORPORATED <script>"],
["adr", {}, "text", ["", "", "123 Example Boulevard <script>", "KOKOMO", "BM", "31337", "United States"]],
["tel", { "type": [ "voice" ] }, "uri", "tel:+1.2126660420"],
["tel", { "type": [ "fax" ] }, "uri", "tel:+1.2126660420"]
]
],
"remarks": [
{
"title": "Incomplete Data",
"type": "object truncated due to unexplainable reasons",
"description": ["Summary data only. For complete data, send a specific query for the object."]
},
{
"title": "EMAIL REDACTED FOR PRIVACY",
"type": "object redacted due to authorization",
"description": [
"Please query the RDDS service of the Registrar of Record identifies in this output for information on how to contact the Registrant of the queried domain name."
]
}
]
}
],
"secureDNS": {
@@ -58,57 +58,6 @@
]
]
]
},
{
"objectClassName": "entity",
"handle": "",
"remarks": [
{
"description": [
"Some of the data in this object has been removed.",
"Contact personal data is visible only to the owning registrar."
],
"links": [
{
"href": "https://github.com/google/nomulus/blob/master/docs/rdap.md#authentication",
"rel": "alternate",
"type": "text/html",
"value": "https://example.tld/rdap/domain/renew.lol"
}
],
"title": "REDACTED FOR PRIVACY",
"type": "object redacted due to authorization"
},
{
"description": [
"Please query the RDDS service of the Registrar of Record identifies in this output for information on how to contact the Registrant of the queried domain name."
],
"title": "EMAIL REDACTED FOR PRIVACY",
"type": "object redacted due to authorization"
}
],
"roles": [
"administrative",
"technical",
"registrant"
],
"vcardArray": [
"vcard",
[
[
"version",
{},
"text",
"4.0"
],
[
"fn",
{},
"text",
""
]
]
]
}
],
"events": [
@@ -126,7 +75,7 @@
"eventDate": "2000-01-01T00:00:00.000Z"
}
],
"handle": "28-LOL",
"handle": "10-LOL",
"ldhName": "renew.lol",
"links": [
{
@@ -145,7 +94,7 @@
"nameservers": [
{
"objectClassName": "nameserver",
"handle": "8-ROID",
"handle": "2-ROID",
"ldhName": "ns1.cat.lol",
"links": [
{
@@ -1,233 +0,0 @@
{
"rdapConformance": [
"rdap_level_0",
"icann_rdap_response_profile_1",
"icann_rdap_technical_implementation_guide_1"
],
"objectClassName": "domain",
"handle": "%DOMAIN_HANDLE_1%",
"ldhName": "%DOMAIN_PUNYCODE_NAME_1%",
"status": [
"client delete prohibited",
"client renew prohibited",
"client transfer prohibited",
"server update prohibited"
],
"links": [
{
"href": "https://example.tld/rdap/domain/%DOMAIN_PUNYCODE_NAME_1%",
"type": "application/rdap+json",
"rel": "self",
"value": "https://example.tld/rdap/domain/cat.lol"
},
{
"href": "https://rdap.example.com/withSlash/domain/%DOMAIN_PUNYCODE_NAME_1%",
"type": "application/rdap+json",
"rel": "related",
"value": "https://example.tld/rdap/domain/cat.lol"
}
],
"events": [
{
"eventAction": "registration",
"eventActor": "TheRegistrar",
"eventDate": "1997-01-01T00:00:00.000Z"
},
{
"eventAction": "expiration",
"eventDate": "2110-10-08T00:44:59.000Z"
},
{
"eventAction": "last update of RDAP database",
"eventDate": "2000-01-01T00:00:00.000Z"
},
{
"eventAction": "last changed",
"eventDate": "2009-05-29T20:13:00.000Z"
}
],
"nameservers": [
{
"objectClassName": "nameserver",
"handle": "%NAMESERVER_HANDLE_1%",
"ldhName": "%NAMESERVER_NAME_1%",
"links": [
{
"href": "https://example.tld/rdap/nameserver/%NAMESERVER_NAME_1%",
"type": "application/rdap+json",
"rel": "self",
"value": "https://example.tld/rdap/domain/cat.lol"
}
],
"remarks": [
{
"title": "Incomplete Data",
"type": "object truncated due to unexplainable reasons",
"description": ["Summary data only. For complete data, send a specific query for the object."]
}
]
},
{
"objectClassName": "nameserver",
"handle": "%NAMESERVER_HANDLE_2%",
"ldhName": "%NAMESERVER_NAME_2%",
"links": [
{
"href": "https://example.tld/rdap/nameserver/%NAMESERVER_NAME_2%",
"type": "application/rdap+json",
"rel": "self",
"value": "https://example.tld/rdap/domain/cat.lol"
}
],
"remarks": [
{
"title": "Incomplete Data",
"type": "object truncated due to unexplainable reasons",
"description": ["Summary data only. For complete data, send a specific query for the object."]
}
]
}
],
"secureDNS" : {
"delegationSigned": true,
"zoneSigned":true,
"dsData":[
{"algorithm":2,"digest":"DEADFACE","digestType":3,"keyTag":1}
]
},
"entities": [
{
"objectClassName" : "entity",
"handle" : "1",
"roles" : ["registrar"],
"links" : [
{
"rel" : "self",
"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" : [
{
"type" : "IANA Registrar ID",
"identifier" : "1"
}
],
"vcardArray" : [
"vcard",
[
["version", {}, "text", "4.0"],
["fn", {}, "text", "%REGISTRAR_FULL_NAME_1%"]
]
],
"entities" : [
{
"objectClassName":"entity",
"roles":["abuse"],
"status":["active"],
"vcardArray": [
"vcard",
[
["version",{},"text","4.0"],
["fn",{},"text","Jake Doe"],
["tel",{"type":["voice"]},"uri","tel:+1.2125551216"],
["tel",{"type":["fax"]},"uri","tel:+1.2125551216"],
["email",{},"text","jakedoe@example.com"]
]
]
}
],
"remarks": [
{
"title": "Incomplete Data",
"description": [
"Summary data only. For complete data, send a specific query for the object."
],
"type": "object truncated due to unexplainable reasons"
}
]
},
{
"objectClassName": "entity",
"handle": "",
"roles":["administrative"],
"remarks": [
{
"title":"REDACTED FOR PRIVACY",
"type":"object redacted due to authorization",
"description": [
"Some of the data in this object has been removed.",
"Contact personal data is visible only to the owning registrar."
],
"links":[
{
"href":"https://github.com/google/nomulus/blob/master/docs/rdap.md#authentication",
"rel":"alternate",
"type":"text/html",
"value": "https://example.tld/rdap/domain/cat.lol"
}
]
},
{
"title":"EMAIL REDACTED FOR PRIVACY",
"type":"object redacted due to authorization",
"description": [
"Please query the RDDS service of the Registrar of Record identifies in this output for information on how to contact the Registrant of the queried domain name."
]
}
],
"vcardArray":[
"vcard",
[
["version", {}, "text", "4.0"],
["fn", {}, "text", ""]
]
]
},
{
"objectClassName":"entity",
"handle":"",
"remarks":[
{
"title":"REDACTED FOR PRIVACY",
"type":"object redacted due to authorization",
"description":[
"Some of the data in this object has been removed.",
"Contact personal data is visible only to the owning registrar."
],
"links":[
{
"href":"https://github.com/google/nomulus/blob/master/docs/rdap.md#authentication",
"rel":"alternate",
"type":"text/html",
"value": "https://example.tld/rdap/domain/cat.lol"
}
]
},
{
"description":[
"Please query the RDDS service of the Registrar of Record identifies in this output for information on how to contact the Registrant of the queried domain name."
],
"title":"EMAIL REDACTED FOR PRIVACY",
"type":"object redacted due to authorization"
}
],
"roles": ["technical"],
"vcardArray": [
"vcard",
[
["version", {}, "text", "4.0"],
["fn", {}, "text", ""]
]
]
}
]
}
@@ -58,57 +58,6 @@
]
]
]
},
{
"objectClassName": "entity",
"handle": "",
"remarks": [
{
"description": [
"Some of the data in this object has been removed.",
"Contact personal data is visible only to the owning registrar."
],
"links": [
{
"href": "https://github.com/google/nomulus/blob/master/docs/rdap.md#authentication",
"rel": "alternate",
"type": "text/html",
"value": "https://example.tld/rdap/domain/redemption.lol"
}
],
"title": "REDACTED FOR PRIVACY",
"type": "object redacted due to authorization"
},
{
"description": [
"Please query the RDDS service of the Registrar of Record identifies in this output for information on how to contact the Registrant of the queried domain name."
],
"title": "EMAIL REDACTED FOR PRIVACY",
"type": "object redacted due to authorization"
}
],
"roles": [
"administrative",
"technical",
"registrant"
],
"vcardArray": [
"vcard",
[
[
"version",
{},
"text",
"4.0"
],
[
"fn",
{},
"text",
""
]
]
]
}
],
"events": [
@@ -126,7 +75,7 @@
"eventDate": "2000-01-01T00:00:00.000Z"
}
],
"handle": "28-LOL",
"handle": "10-LOL",
"ldhName": "redemption.lol",
"links": [
{
@@ -145,7 +94,7 @@
"nameservers": [
{
"objectClassName": "nameserver",
"handle": "8-ROID",
"handle": "2-ROID",
"ldhName": "ns1.cat.lol",
"links": [
{
@@ -1,271 +0,0 @@
{
"rdapConformance": [
"rdap_level_0",
"icann_rdap_response_profile_1",
"icann_rdap_technical_implementation_guide_1"
],
"objectClassName": "domain",
"handle": "%DOMAIN_HANDLE_1%",
"ldhName": "%DOMAIN_PUNYCODE_NAME_1%",
"status": [
"client delete prohibited",
"client renew prohibited",
"client transfer prohibited",
"server update prohibited"
],
"links": [
{
"href": "https://example.tld/rdap/domain/%DOMAIN_PUNYCODE_NAME_1%",
"type": "application/rdap+json",
"rel": "self",
"value": "%REQUEST_URL%"
},
{
"href": "https://rdap.example.com/withSlash/domain/%DOMAIN_PUNYCODE_NAME_1%",
"type": "application/rdap+json",
"rel": "related",
"value": "%REQUEST_URL%"
}
],
"events": [
{
"eventAction": "registration",
"eventActor": "TheRegistrar",
"eventDate": "1997-01-01T00:00:00.000Z"
},
{
"eventAction": "expiration",
"eventDate": "2110-10-08T00:44:59.000Z"
},
{
"eventAction": "last update of RDAP database",
"eventDate": "2000-01-01T00:00:00.000Z"
},
{
"eventAction": "last changed",
"eventDate": "2009-05-29T20:13:00.000Z"
}
],
"nameservers": [
{
"objectClassName": "nameserver",
"handle": "%NAMESERVER_HANDLE_1%",
"ldhName": "%NAMESERVER_NAME_1%",
"links": [
{
"href": "https://example.tld/rdap/nameserver/%NAMESERVER_NAME_1%",
"type": "application/rdap+json",
"rel": "self",
"value": "%REQUEST_URL%"
}
],
"remarks": [
{
"title": "Incomplete Data",
"type": "object truncated due to unexplainable reasons",
"description": ["Summary data only. For complete data, send a specific query for the object."]
}
]
},
{
"objectClassName": "nameserver",
"handle": "%NAMESERVER_HANDLE_2%",
"ldhName": "%NAMESERVER_NAME_2%",
"links": [
{
"href": "https://example.tld/rdap/nameserver/%NAMESERVER_NAME_2%",
"type": "application/rdap+json",
"rel": "self",
"value": "%REQUEST_URL%"
}
],
"remarks": [
{
"title": "Incomplete Data",
"type": "object truncated due to unexplainable reasons",
"description": ["Summary data only. For complete data, send a specific query for the object."]
}
]
}
],
"secureDNS" : {
"delegationSigned": true,
"zoneSigned":true,
"dsData":[
{"algorithm":2,"digest":"DEADFACE","digestType":3,"keyTag":1}
]
},
"entities": [
{
"objectClassName" : "entity",
"handle" : "1",
"roles" : ["registrar"],
"links" : [
{
"rel" : "self",
"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" : [
{
"type" : "IANA Registrar ID",
"identifier" : "1"
}
],
"vcardArray" : [
"vcard",
[
["version", {}, "text", "4.0"],
["fn", {}, "text", "%REGISTRAR_FULL_NAME_1%"]
]
],
"entities" : [
{
"objectClassName":"entity",
"roles":["abuse"],
"status":["active"],
"vcardArray": [
"vcard",
[
["version",{},"text","4.0"],
["fn",{},"text","Jake Doe"],
["tel",{"type":["voice"]},"uri","tel:+1.2125551216"],
["tel",{"type":["fax"]},"uri","tel:+1.2125551216"],
["email",{},"text","jakedoe@example.com"]
]
]
}
],
"remarks": [
{
"title": "Incomplete Data",
"description": [
"Summary data only. For complete data, send a specific query for the object."
],
"type": "object truncated due to unexplainable reasons"
}
]
},
{
"objectClassName": "entity",
"handle": "",
"roles":["administrative"],
"remarks": [
{
"title":"REDACTED FOR PRIVACY",
"type":"object redacted due to authorization",
"description": [
"Some of the data in this object has been removed.",
"Contact personal data is visible only to the owning registrar."
],
"links":[
{
"href":"https://github.com/google/nomulus/blob/master/docs/rdap.md#authentication",
"rel":"alternate",
"type":"text/html",
"value": "%REQUEST_URL%"
}
]
},
{
"title":"EMAIL REDACTED FOR PRIVACY",
"type":"object redacted due to authorization",
"description": [
"Please query the RDDS service of the Registrar of Record identifies in this output for information on how to contact the Registrant of the queried domain name."
]
}
],
"vcardArray":[
"vcard",
[
["version", {}, "text", "4.0"],
["fn", {}, "text", ""]
]
]
},
{
"objectClassName":"entity",
"handle":"",
"remarks":[
{
"title":"REDACTED FOR PRIVACY",
"type":"object redacted due to authorization",
"description":[
"Some of the data in this object has been removed.",
"Contact personal data is visible only to the owning registrar."
],
"links":[
{
"href":"https://github.com/google/nomulus/blob/master/docs/rdap.md#authentication",
"rel":"alternate",
"type":"text/html",
"value": "%REQUEST_URL%"
}
]
},
{
"description":[
"Please query the RDDS service of the Registrar of Record identifies in this output for information on how to contact the Registrant of the queried domain name."
],
"title":"EMAIL REDACTED FOR PRIVACY",
"type":"object redacted due to authorization"
}
],
"roles": ["technical"],
"vcardArray": [
"vcard",
[
["version", {}, "text", "4.0"],
["fn", {}, "text", ""]
]
]
},
{
"objectClassName":"entity",
"handle":"",
"remarks":[
{
"title":"REDACTED FOR PRIVACY",
"type":"object redacted due to authorization",
"description":[
"Some of the data in this object has been removed.",
"Contact personal data is visible only to the owning registrar."
],
"links":[
{
"href":"https://github.com/google/nomulus/blob/master/docs/rdap.md#authentication",
"rel":"alternate",
"type":"text/html",
"value": "%REQUEST_URL%"
}
]
},
{
"title":"EMAIL REDACTED FOR PRIVACY",
"type":"object redacted due to authorization",
"description":[
"Please query the RDDS service of the Registrar of Record identifies in this output for information on how to contact the Registrant of the queried domain name."
]
}
],
"roles":["registrant"],
"vcardArray":[
"vcard",
[
["version", {}, "text", "4.0"],
["fn", {}, "text", ""]
]
]
}
]
}
@@ -58,57 +58,6 @@
]
]
]
},
{
"objectClassName": "entity",
"handle": "",
"remarks": [
{
"description": [
"Some of the data in this object has been removed.",
"Contact personal data is visible only to the owning registrar."
],
"links": [
{
"href": "https://github.com/google/nomulus/blob/master/docs/rdap.md#authentication",
"rel": "alternate",
"type": "text/html",
"value": "https://example.tld/rdap/domain/transfer.lol"
}
],
"title": "REDACTED FOR PRIVACY",
"type": "object redacted due to authorization"
},
{
"description": [
"Please query the RDDS service of the Registrar of Record identifies in this output for information on how to contact the Registrant of the queried domain name."
],
"title": "EMAIL REDACTED FOR PRIVACY",
"type": "object redacted due to authorization"
}
],
"roles": [
"administrative",
"technical",
"registrant"
],
"vcardArray": [
"vcard",
[
[
"version",
{},
"text",
"4.0"
],
[
"fn",
{},
"text",
""
]
]
]
}
],
"events": [
@@ -126,7 +75,7 @@
"eventDate": "2000-01-01T00:00:00.000Z"
}
],
"handle": "28-LOL",
"handle": "10-LOL",
"ldhName": "transfer.lol",
"links": [
{
@@ -145,7 +94,7 @@
"nameservers": [
{
"objectClassName": "nameserver",
"handle": "8-ROID",
"handle": "2-ROID",
"ldhName": "ns1.cat.lol",
"links": [
{
@@ -156,120 +156,6 @@
]
}
]
},
{
"objectClassName": "entity",
"handle": "%CONTACT_HANDLE_1%",
"roles": ["administrative"],
"links": [
{
"href": "https://example.tld/rdap/entity/%CONTACT_HANDLE_1%",
"type": "application/rdap+json",
"rel": "self",
"value": "%REQUEST_URL%"
}
],
"vcardArray": [
"vcard",
[
["version", {}, "text", "4.0"],
["fn", {}, "text", "Santa Claus"],
["org", {}, "text", "GOOGLE INCORPORATED <script>"],
["adr", {}, "text", [ "", "", "123 Example Boulevard <script>", "KOKOMO", "BM", "31337", "United States"]],
["tel", {"type": ["voice"]}, "uri", "tel:+1.2126660420"],
["tel", {"type": ["fax"]}, "uri", "tel:+1.2126660420" ]
]
],
"remarks": [
{
"title": "Incomplete Data",
"type": "object truncated due to unexplainable reasons",
"description": ["Summary data only. For complete data, send a specific query for the object."]
},
{
"title": "EMAIL REDACTED FOR PRIVACY",
"type": "object redacted due to authorization",
"description": [
"Please query the RDDS service of the Registrar of Record identifies in this output for information on how to contact the Registrant of the queried domain name."
]
}
]
},
{
"objectClassName": "entity",
"handle": "%CONTACT_HANDLE_2%",
"roles": ["technical"],
"links": [
{
"href": "https://example.tld/rdap/entity/%CONTACT_HANDLE_2%",
"type": "application/rdap+json",
"rel": "self",
"value": "%REQUEST_URL%"
}
],
"vcardArray": [
"vcard",
[
["version", {}, "text", "4.0"],
["fn", {}, "text", "The Raven"],
["org", {}, "text", "GOOGLE INCORPORATED <script>"],
["adr", {}, "text", ["", "", "123 Example Boulevard <script>", "KOKOMO", "BM", "31337", "United States"]],
["tel", {"type": ["voice"]}, "uri", "tel:+1.2126660420"],
["tel", {"type": ["fax"]}, "uri", "tel:+1.2126660420"]
]
],
"remarks": [
{
"title": "Incomplete Data",
"type": "object truncated due to unexplainable reasons",
"description": ["Summary data only. For complete data, send a specific query for the object."]
},
{
"title": "EMAIL REDACTED FOR PRIVACY",
"type": "object redacted due to authorization",
"description": [
"Please query the RDDS service of the Registrar of Record identifies in this output for information on how to contact the Registrant of the queried domain name."
]
}
]
},
{
"objectClassName": "entity",
"handle": "%CONTACT_HANDLE_3%",
"roles": ["registrant"],
"links": [
{
"href": "https://example.tld/rdap/entity/%CONTACT_HANDLE_3%",
"type": "application/rdap+json",
"rel": "self",
"value": "%REQUEST_URL%"
}
],
"vcardArray": [
"vcard",
[
["version", {}, "text", "4.0"],
["fn", {}, "text", "Goblin Market"],
["org", {}, "text", "GOOGLE INCORPORATED <script>"],
["adr", {}, "text", ["", "", "123 Example Boulevard <script>", "KOKOMO", "BM", "31337", "United States"]],
["tel", {"type": ["voice"]}, "uri", "tel:+1.2126660420"],
["tel", {"type": ["fax"]}, "uri", "tel:+1.2126660420"]
]
],
"remarks": [
{
"title": "Incomplete Data",
"type": "object truncated due to unexplainable reasons",
"description": ["Summary data only. For complete data, send a specific query for the object."]
},
{
"title": "EMAIL REDACTED FOR PRIVACY",
"type": "object redacted due to authorization",
"description": [
"Please query the RDDS service of the Registrar of Record identifies in this output for information on how to contact the Registrant of the queried domain name."
]
}
]
}
]
}
@@ -1,273 +0,0 @@
{
"rdapConformance": [
"rdap_level_0",
"icann_rdap_response_profile_1",
"icann_rdap_technical_implementation_guide_1"
],
"objectClassName": "domain",
"handle": "%DOMAIN_HANDLE_1%",
"ldhName": "%DOMAIN_PUNYCODE_NAME_1%",
"unicodeName": "%DOMAIN_UNICODE_NAME_1%",
"status": [
"client delete prohibited",
"client renew prohibited",
"client transfer prohibited",
"server update prohibited"
],
"links": [
{
"href": "https://example.tld/rdap/domain/%DOMAIN_PUNYCODE_NAME_1%",
"type": "application/rdap+json",
"rel": "self",
"value": "https://example.tld/rdap/domains"
},
{
"href": "https://rdap.example.com/withSlash/domain/%DOMAIN_PUNYCODE_NAME_1%",
"type": "application/rdap+json",
"rel": "related",
"value": "https://example.tld/rdap/domains"
}
],
"events": [
{
"eventAction": "registration",
"eventActor": "TheRegistrar",
"eventDate": "1997-01-01T00:00:00.000Z"
},
{
"eventAction": "expiration",
"eventDate": "2110-10-08T00:44:59.000Z"
},
{
"eventAction": "last update of RDAP database",
"eventDate": "2000-01-01T00:00:00.000Z"
},
{
"eventAction": "last changed",
"eventDate": "2009-05-29T20:13:00.000Z"
}
],
"nameservers": [
{
"objectClassName": "nameserver",
"handle": "%NAMESERVER_HANDLE_1%",
"ldhName": "%NAMESERVER_NAME_1%",
"unicodeName": "%NAMESERVER_UNICODE_NAME_1%",
"links": [
{
"href": "https://example.tld/rdap/nameserver/%NAMESERVER_NAME_1%",
"type": "application/rdap+json",
"rel": "self",
"value": "https://example.tld/rdap/domains"
}
],
"remarks": [
{
"title": "Incomplete Data",
"type": "object truncated due to unexplainable reasons",
"description": ["Summary data only. For complete data, send a specific query for the object."]
}
]
},
{
"objectClassName": "nameserver",
"handle": "%NAMESERVER_HANDLE_2%",
"ldhName": "%NAMESERVER_NAME_2%",
"unicodeName": "%NAMESERVER_UNICODE_NAME_2%",
"links": [
{
"href": "https://example.tld/rdap/nameserver/%NAMESERVER_NAME_2%",
"type": "application/rdap+json",
"rel": "self",
"value": "https://example.tld/rdap/domains"
}
],
"remarks": [
{
"title": "Incomplete Data",
"type": "object truncated due to unexplainable reasons",
"description": ["Summary data only. For complete data, send a specific query for the object."]
}
]
}
],
"secureDNS" : {
"delegationSigned": true,
"zoneSigned":true,
"dsData":[
{"algorithm":2,"digest":"DEADFACE","digestType":3,"keyTag":1}
]
},
"entities": [
{
"objectClassName" : "entity",
"handle" : "1",
"roles" : ["registrar"],
"links" : [
{
"rel" : "self",
"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" : [
{
"type" : "IANA Registrar ID",
"identifier" : "1"
}
],
"vcardArray" : [
"vcard",
[
["version", {}, "text", "4.0"],
["fn", {}, "text", "%REGISTRAR_FULL_NAME_1%"]
]
],
"entities" : [
{
"objectClassName":"entity",
"roles":["abuse"],
"status":["active"],
"vcardArray": [
"vcard",
[
["version",{},"text","4.0"],
["fn",{},"text","Jake Doe"],
["tel",{"type":["voice"]},"uri","tel:+1.2125551216"],
["tel",{"type":["fax"]},"uri","tel:+1.2125551216"],
["email",{},"text","jakedoe@example.com"]
]
]
}
],
"remarks": [
{
"title": "Incomplete Data",
"description": [
"Summary data only. For complete data, send a specific query for the object."
],
"type": "object truncated due to unexplainable reasons"
}
]
},
{
"objectClassName": "entity",
"handle": "",
"roles":["administrative"],
"remarks": [
{
"title":"REDACTED FOR PRIVACY",
"type":"object redacted due to authorization",
"description": [
"Some of the data in this object has been removed.",
"Contact personal data is visible only to the owning registrar."
],
"links":[
{
"href":"https://github.com/google/nomulus/blob/master/docs/rdap.md#authentication",
"rel":"alternate",
"type":"text/html",
"value": "https://example.tld/rdap/domains"
}
]
},
{
"title":"EMAIL REDACTED FOR PRIVACY",
"type":"object redacted due to authorization",
"description": [
"Please query the RDDS service of the Registrar of Record identifies in this output for information on how to contact the Registrant of the queried domain name."
]
}
],
"vcardArray":[
"vcard",
[
["version", {}, "text", "4.0"],
["fn", {}, "text", ""]
]
]
},
{
"objectClassName":"entity",
"handle":"",
"remarks":[
{
"title":"REDACTED FOR PRIVACY",
"type":"object redacted due to authorization",
"description":[
"Some of the data in this object has been removed.",
"Contact personal data is visible only to the owning registrar."
],
"links":[
{
"href":"https://github.com/google/nomulus/blob/master/docs/rdap.md#authentication",
"rel":"alternate",
"type":"text/html",
"value": "https://example.tld/rdap/domains"
}
]
},
{
"description":[
"Please query the RDDS service of the Registrar of Record identifies in this output for information on how to contact the Registrant of the queried domain name."
],
"title":"EMAIL REDACTED FOR PRIVACY",
"type":"object redacted due to authorization"
}
],
"roles": ["technical"],
"vcardArray": [
"vcard",
[
["version", {}, "text", "4.0"],
["fn", {}, "text", ""] ]
]
},
{
"objectClassName":"entity",
"handle":"",
"remarks":[
{
"title":"REDACTED FOR PRIVACY",
"type":"object redacted due to authorization",
"description":[
"Some of the data in this object has been removed.",
"Contact personal data is visible only to the owning registrar."
],
"links":[
{
"href":"https://github.com/google/nomulus/blob/master/docs/rdap.md#authentication",
"rel":"alternate",
"type":"text/html",
"value": "https://example.tld/rdap/domains"
}
]
},
{
"title":"EMAIL REDACTED FOR PRIVACY",
"type":"object redacted due to authorization",
"description":[
"Please query the RDDS service of the Registrar of Record identifies in this output for information on how to contact the Registrant of the queried domain name."
]
}
],
"roles":["registrant"],
"vcardArray":[
"vcard",
[
["version", {}, "text", "4.0"],
["fn", {}, "text", ""]
]
]
}
]
}
@@ -7,6 +7,7 @@
"objectClassName": "domain",
"handle": "%DOMAIN_HANDLE_1%",
"ldhName": "%DOMAIN_PUNYCODE_NAME_1%",
"unicodeName": "%DOMAIN_UNICODE_NAME_1%",
"status": [
"client delete prohibited",
"client renew prohibited",
@@ -18,13 +19,13 @@
"href": "https://example.tld/rdap/domain/%DOMAIN_PUNYCODE_NAME_1%",
"type": "application/rdap+json",
"rel": "self",
"value": "https://example.tld/rdap/domain/cat.lol"
"value": "https://example.tld/rdap/domains"
},
{
"href": "https://rdap.example.com/withSlash/domain/%DOMAIN_PUNYCODE_NAME_1%",
"type": "application/rdap+json",
"rel": "related",
"value": "https://example.tld/rdap/domain/cat.lol"
"value": "https://example.tld/rdap/domains"
}
],
"events": [
@@ -51,12 +52,13 @@
"objectClassName": "nameserver",
"handle": "%NAMESERVER_HANDLE_1%",
"ldhName": "%NAMESERVER_NAME_1%",
"unicodeName": "%NAMESERVER_UNICODE_NAME_1%",
"links": [
{
"href": "https://example.tld/rdap/nameserver/%NAMESERVER_NAME_1%",
"type": "application/rdap+json",
"rel": "self",
"value": "https://example.tld/rdap/domain/cat.lol"
"value": "https://example.tld/rdap/domains"
}
],
"remarks": [
@@ -71,12 +73,13 @@
"objectClassName": "nameserver",
"handle": "%NAMESERVER_HANDLE_2%",
"ldhName": "%NAMESERVER_NAME_2%",
"unicodeName": "%NAMESERVER_UNICODE_NAME_2%",
"links": [
{
"href": "https://example.tld/rdap/nameserver/%NAMESERVER_NAME_2%",
"type": "application/rdap+json",
"rel": "self",
"value": "https://example.tld/rdap/domain/cat.lol"
"value": "https://example.tld/rdap/domains"
}
],
"remarks": [
@@ -105,7 +108,7 @@
"rel" : "self",
"href" : "https://example.tld/rdap/entity/1",
"type" : "application/rdap+json",
"value": "https://example.tld/rdap/domain/cat.lol"
"value": "https://example.tld/rdap/domains"
},
{
"rel": "about",
@@ -1,139 +0,0 @@
{
"entitySearchResults":
[
{
"objectClassName" : "entity",
"handle" : "2-ROID",
"status" : ["active"],
"links" :
[
{
"rel" : "self",
"href": "https://example.tld/rdap/entity/2-ROID",
"type" : "application/rdap+json"
}
],
"remarks": [
{
"title": "Incomplete Data",
"description": [
"Summary data only. For complete data, send a specific query for the object."
],
"type": "object truncated due to unexplainable reasons"
}
],
"vcardArray" :
[
"vcard",
[
["version", {}, "text", "4.0"],
["fn", {}, "text", "Blinky (赤ベイ)"],
["org", {}, "text", "GOOGLE INCORPORATED <script>"],
["adr", {}, "text",
[
"",
"",
["123 Blinky St", "Blinkyland"],
"KOKOMO",
"BM",
"31337",
"United States"
]
],
["tel", {"type" : ["voice"]}, "uri", "tel:+1.2126660420"],
["tel", {"type" : ["fax"]}, "uri", "tel:+1.2126660420"],
["email", {}, "text", "blinky@b.tld"]
]
]
},
{
"objectClassName" : "entity",
"handle" : "2-Registrar",
"status" : ["active"],
"roles" : ["registrar"],
"links" :
[
{
"rel" : "self",
"href": "https://example.tld/rdap/entity/2-Registrar",
"type" : "application/rdap+json"
}
],
"remarks": [
{
"title": "Incomplete Data",
"description": [
"Summary data only. For complete data, send a specific query for the object."
],
"type": "object truncated due to unexplainable reasons"
}
],
"publicIds" :
[
{
"type" : "IANA Registrar ID",
"identifier" : "1"
}
],
"vcardArray" :
[
"vcard",
[
["version", {}, "text", "4.0"],
["fn", {}, "text", "Yes Virginia <script>"],
["adr", {}, "text",
[
"",
"",
"123 Example Boulevard <script>"
"Williamsburg <script>",
"NY",
"11211",
"United States"
]
],
["tel", {"type" : ["voice"]}, "uri", "tel:+1.2125551212"],
["tel", {"type" : ["fax"]}, "uri", "tel:+1.2125551213"],
["email", {}, "text", "contact-us@example.com"]
]
]
}
],
"rdapConformance": [
"rdap_level_0",
"icann_rdap_response_profile_1",
"icann_rdap_technical_implementation_guide_1"
],
"notices" :
[
{
"title" : "RDAP Terms of Service",
"description" :
[
"By querying our Domain Database, you are agreeing to comply with these terms so please read them carefully.",
"Any information provided is 'as is' without any guarantee of accuracy.",
"Please do not misuse the Domain Database. It is intended solely for query-based access.",
"Don't use the Domain Database to allow, enable, or otherwise support the transmission of mass unsolicited, commercial advertising or solicitations.",
"Don't access our Domain Database through the use of high volume, automated electronic processes that send queries or data to the systems of any ICANN-accredited registrar.",
"You may only use the information contained in the Domain Database for lawful purposes.",
"Do not compile, repackage, disseminate, or otherwise use the information contained in the Domain Database in its entirety, or in any substantial portion, without our prior written permission.",
"We may retain certain details about queries to our Domain Database for the purposes of detecting and preventing misuse.",
"We reserve the right to restrict or deny your access to the database if we suspect that you have failed to comply with these terms.",
"We reserve the right to modify this agreement at any time."
],
"links" :
[
{
"href": "https://example.tld/rdap/help/tos",
"rel": "self",
"type": "application/rdap+json"
},
{
"href": "https://www.example.tld/about/rdap/tos.html",
"rel": "alternate",
"type": "text/html"
}
]
}
]
}
@@ -1,158 +0,0 @@
{
"entitySearchResults":
[
{
"objectClassName" : "entity",
"handle" : "4-ROID",
"links" :
[
{
"rel" : "self",
"href": "https://example.tld/rdap/entity/4-ROID",
"type" : "application/rdap+json",
"value": "https://example.tld/rdap/entities"
}
],
"events": [
{
"eventAction": "last update of RDAP database",
"eventDate": "2000-01-01T00:00:00.000Z"
}
],
"remarks": [
{
"title": "Incomplete Data",
"description": [
"Summary data only. For complete data, send a specific query for the object."
],
"type": "object truncated due to unexplainable reasons"
},
{
"title": "EMAIL REDACTED FOR PRIVACY",
"type": "object redacted due to authorization",
"description": [
"Please query the RDDS service of the Registrar of Record identifies in this output for information on how to contact the Registrant of the queried domain name."
]
}
],
"vcardArray" :
[
"vcard",
[
["version", {}, "text", "4.0"],
["fn", {}, "text", "Blindly"],
["org", {}, "text", "GOOGLE INCORPORATED <script>"],
["adr", {}, "text",
[
"",
"",
["123 Blindly St", "Blindlyland"],
"KOKOMO",
"BM",
"31337",
"United States"
]
],
["tel", {"type" : ["voice"]}, "uri", "tel:+1.2126660420"],
["tel", {"type" : ["fax"]}, "uri", "tel:+1.2126660420"]
]
]
},
{
"objectClassName" : "entity",
"handle" : "2-ROID",
"links" :
[
{
"rel" : "self",
"href": "https://example.tld/rdap/entity/2-ROID",
"type" : "application/rdap+json",
"value": "https://example.tld/rdap/entities"
}
],
"events": [
{
"eventAction": "last update of RDAP database",
"eventDate": "2000-01-01T00:00:00.000Z"
}
],
"remarks": [
{
"title": "Incomplete Data",
"description": [
"Summary data only. For complete data, send a specific query for the object."
],
"type": "object truncated due to unexplainable reasons"
},
{
"title": "EMAIL REDACTED FOR PRIVACY",
"type": "object redacted due to authorization",
"description": [
"Please query the RDDS service of the Registrar of Record identifies in this output for information on how to contact the Registrant of the queried domain name."
]
}
],
"vcardArray" :
[
"vcard",
[
["version", {}, "text", "4.0"],
["fn", {}, "text", "Blinky (赤ベイ)"],
["org", {}, "text", "GOOGLE INCORPORATED <script>"],
["adr", {}, "text",
[
"",
"",
["123 Blinky St", "Blinkyland"],
"KOKOMO",
"BM",
"31337",
"United States"
]
],
["tel", {"type" : ["voice"]}, "uri", "tel:+1.2126660420"],
["tel", {"type" : ["fax"]}, "uri", "tel:+1.2126660420"]
]
]
}
],
"rdapConformance": [
"rdap_level_0",
"icann_rdap_response_profile_1",
"icann_rdap_technical_implementation_guide_1"
],
"notices" :
[
{
"title" : "RDAP Terms of Service",
"description" :
[
"By querying our Domain Database, you are agreeing to comply with these terms so please read them carefully.",
"Any information provided is 'as is' without any guarantee of accuracy.",
"Please do not misuse the Domain Database. It is intended solely for query-based access.",
"Don't use the Domain Database to allow, enable, or otherwise support the transmission of mass unsolicited, commercial advertising or solicitations.",
"Don't access our Domain Database through the use of high volume, automated electronic processes that send queries or data to the systems of any ICANN-accredited registrar.",
"You may only use the information contained in the Domain Database for lawful purposes.",
"Do not compile, repackage, disseminate, or otherwise use the information contained in the Domain Database in its entirety, or in any substantial portion, without our prior written permission.",
"We may retain certain details about queries to our Domain Database for the purposes of detecting and preventing misuse.",
"We reserve the right to restrict or deny your access to the database if we suspect that you have failed to comply with these terms.",
"We reserve the right to modify this agreement at any time."
],
"links" :
[
{
"href": "https://example.tld/rdap/help/tos",
"rel": "self",
"type": "application/rdap+json",
"value": "https://example.tld/rdap/entities"
},
{
"href": "https://www.example.tld/about/rdap/tos.html",
"rel": "terms-of-service",
"type": "text/html",
"value": "https://example.tld/rdap/entities"
}
]
}
]
}
@@ -1,272 +0,0 @@
{
"entitySearchResults":
[
{
"objectClassName" : "entity",
"handle" : "0001-ROID",
"links" :
[
{
"rel" : "self",
"href": "https://example.tld/rdap/entity/0001-ROID",
"type" : "application/rdap+json",
"value": "https://example.tld/rdap/entities"
}
],
"events": [
{
"eventAction": "last update of RDAP database",
"eventDate": "2000-01-01T00:00:00.000Z"
}
],
"remarks": [
{
"title": "Incomplete Data",
"description": [
"Summary data only. For complete data, send a specific query for the object."
],
"type": "object truncated due to unexplainable reasons"
},
{
"title": "EMAIL REDACTED FOR PRIVACY",
"type": "object redacted due to authorization",
"description": [
"Please query the RDDS service of the Registrar of Record identifies in this output for information on how to contact the Registrant of the queried domain name."
]
}
],
"vcardArray" :
[
"vcard",
[
["version", {}, "text", "4.0"],
["fn", {}, "text", "Entity 1"],
["org", {}, "text", "GOOGLE INCORPORATED <script>"],
["adr", {}, "text",
[
"",
"",
"123 Example Boulevard <script>",
"KOKOMO",
"BM",
"31337",
"United States"
]
],
["tel", {"type" : ["voice"]}, "uri", "tel:+1.2126660420"],
["tel", {"type" : ["fax"]}, "uri", "tel:+1.2126660420"]
]
]
},
{
"objectClassName" : "entity",
"handle" : "0002-ROID",
"links" :
[
{
"rel" : "self",
"href": "https://example.tld/rdap/entity/0002-ROID",
"type" : "application/rdap+json",
"value": "https://example.tld/rdap/entities"
}
],
"events": [
{
"eventAction": "last update of RDAP database",
"eventDate": "2000-01-01T00:00:00.000Z"
}
],
"remarks": [
{
"title": "Incomplete Data",
"description": [
"Summary data only. For complete data, send a specific query for the object."
],
"type": "object truncated due to unexplainable reasons"
},
{
"title": "EMAIL REDACTED FOR PRIVACY",
"type": "object redacted due to authorization",
"description": [
"Please query the RDDS service of the Registrar of Record identifies in this output for information on how to contact the Registrant of the queried domain name."
]
}
],
"vcardArray" :
[
"vcard",
[
["version", {}, "text", "4.0"],
["fn", {}, "text", "Entity 2"],
["org", {}, "text", "GOOGLE INCORPORATED <script>"],
["adr", {}, "text",
[
"",
"",
"123 Example Boulevard <script>",
"KOKOMO",
"BM",
"31337",
"United States"
]
],
["tel", {"type" : ["voice"]}, "uri", "tel:+1.2126660420"],
["tel", {"type" : ["fax"]}, "uri", "tel:+1.2126660420"]
]
]
},
{
"objectClassName" : "entity",
"handle" : "0003-ROID",
"links" :
[
{
"rel" : "self",
"href": "https://example.tld/rdap/entity/0003-ROID",
"type" : "application/rdap+json",
"value": "https://example.tld/rdap/entities"
}
],
"events": [
{
"eventAction": "last update of RDAP database",
"eventDate": "2000-01-01T00:00:00.000Z"
}
],
"remarks": [
{
"title": "Incomplete Data",
"description": [
"Summary data only. For complete data, send a specific query for the object."
],
"type": "object truncated due to unexplainable reasons"
},
{
"title": "EMAIL REDACTED FOR PRIVACY",
"type": "object redacted due to authorization",
"description": [
"Please query the RDDS service of the Registrar of Record identifies in this output for information on how to contact the Registrant of the queried domain name."
]
}
],
"vcardArray" :
[
"vcard",
[
["version", {}, "text", "4.0"],
["fn", {}, "text", "Entity 3"],
["org", {}, "text", "GOOGLE INCORPORATED <script>"],
["adr", {}, "text",
[
"",
"",
"123 Example Boulevard <script>",
"KOKOMO",
"BM",
"31337",
"United States"
]
],
["tel", {"type" : ["voice"]}, "uri", "tel:+1.2126660420"],
["tel", {"type" : ["fax"]}, "uri", "tel:+1.2126660420"]
]
]
},
{
"objectClassName" : "entity",
"handle" : "0004-ROID",
"links" :
[
{
"rel" : "self",
"href": "https://example.tld/rdap/entity/0004-ROID",
"type" : "application/rdap+json",
"value": "https://example.tld/rdap/entities"
}
],
"events": [
{
"eventAction": "last update of RDAP database",
"eventDate": "2000-01-01T00:00:00.000Z"
}
],
"remarks": [
{
"title": "Incomplete Data",
"description": [
"Summary data only. For complete data, send a specific query for the object."
],
"type": "object truncated due to unexplainable reasons"
},
{
"title": "EMAIL REDACTED FOR PRIVACY",
"type": "object redacted due to authorization",
"description": [
"Please query the RDDS service of the Registrar of Record identifies in this output for information on how to contact the Registrant of the queried domain name."
]
}
],
"vcardArray" :
[
"vcard",
[
["version", {}, "text", "4.0"],
["fn", {}, "text", "Entity 4"],
["org", {}, "text", "GOOGLE INCORPORATED <script>"],
["adr", {}, "text",
[
"",
"",
"123 Example Boulevard <script>",
"KOKOMO",
"BM",
"31337",
"United States"
]
],
["tel", {"type" : ["voice"]}, "uri", "tel:+1.2126660420"],
["tel", {"type" : ["fax"]}, "uri", "tel:+1.2126660420"]
]
]
}
],
"rdapConformance": [
"rdap_level_0",
"icann_rdap_response_profile_1",
"icann_rdap_technical_implementation_guide_1"
],
"notices" :
[
{
"title" : "RDAP Terms of Service",
"description" :
[
"By querying our Domain Database, you are agreeing to comply with these terms so please read them carefully.",
"Any information provided is 'as is' without any guarantee of accuracy.",
"Please do not misuse the Domain Database. It is intended solely for query-based access.",
"Don't use the Domain Database to allow, enable, or otherwise support the transmission of mass unsolicited, commercial advertising or solicitations.",
"Don't access our Domain Database through the use of high volume, automated electronic processes that send queries or data to the systems of any ICANN-accredited registrar.",
"You may only use the information contained in the Domain Database for lawful purposes.",
"Do not compile, repackage, disseminate, or otherwise use the information contained in the Domain Database in its entirety, or in any substantial portion, without our prior written permission.",
"We may retain certain details about queries to our Domain Database for the purposes of detecting and preventing misuse.",
"We reserve the right to restrict or deny your access to the database if we suspect that you have failed to comply with these terms.",
"We reserve the right to modify this agreement at any time."
],
"links" :
[
{
"href": "https://example.tld/rdap/help/tos",
"rel": "self",
"type": "application/rdap+json",
"value": "https://example.tld/rdap/entities"
},
{
"href": "https://www.example.tld/about/rdap/tos.html",
"rel": "terms-of-service",
"type": "text/html",
"value": "https://example.tld/rdap/entities"
}
]
}
]
}
@@ -3,7 +3,7 @@
[
{
"objectClassName" : "nameserver",
"handle" : "14-ROID",
"handle" : "11-ROID",
"ldhName" : "nsx1.cat.lol",
"links" :
[
@@ -36,7 +36,7 @@
},
{
"objectClassName" : "nameserver",
"handle" : "15-ROID",
"handle" : "12-ROID",
"ldhName" : "nsx2.cat.lol",
"links" :
[
@@ -69,7 +69,7 @@
},
{
"objectClassName" : "nameserver",
"handle" : "16-ROID",
"handle" : "13-ROID",
"ldhName" : "nsx3.cat.lol",
"links" :
[
@@ -102,7 +102,7 @@
},
{
"objectClassName" : "nameserver",
"handle" : "17-ROID",
"handle" : "14-ROID",
"ldhName" : "nsx4.cat.lol",
"links" :
[
@@ -1,293 +0,0 @@
{
"entitySearchResults":
[
{
"objectClassName": "entity",
"handle": "0001-ROID",
"links":
[
{
"rel": "self",
"href": "https://example.tld/rdap/entity/0001-ROID",
"type": "application/rdap+json",
"value": "https://example.tld/rdap/entities"
}
],
"events": [
{
"eventAction": "last update of RDAP database",
"eventDate": "2000-01-01T00:00:00.000Z"
}
],
"remarks": [
{
"title": "Incomplete Data",
"description": [
"Summary data only. For complete data, send a specific query for the object."
],
"type": "object truncated due to unexplainable reasons"
},
{
"title": "EMAIL REDACTED FOR PRIVACY",
"type": "object redacted due to authorization",
"description": [
"Please query the RDDS service of the Registrar of Record identifies in this output for information on how to contact the Registrant of the queried domain name."
]
}
],
"vcardArray":
[
"vcard",
[
["version", {}, "text", "4.0"],
["fn", {}, "text", "Entity 1"],
["org", {}, "text", "GOOGLE INCORPORATED <script>"],
["adr", {}, "text",
[
"",
"",
"123 Example Boulevard <script>",
"KOKOMO",
"BM",
"31337",
"United States"
]
],
["tel", {"type": ["voice"]}, "uri", "tel:+1.2126660420"],
["tel", {"type": ["fax"]}, "uri", "tel:+1.2126660420"]
]
]
},
{
"objectClassName": "entity",
"handle": "0002-ROID",
"links":
[
{
"rel": "self",
"href": "https://example.tld/rdap/entity/0002-ROID",
"type": "application/rdap+json",
"value": "https://example.tld/rdap/entities"
}
],
"events": [
{
"eventAction": "last update of RDAP database",
"eventDate": "2000-01-01T00:00:00.000Z"
}
],
"remarks": [
{
"title": "Incomplete Data",
"description": [
"Summary data only. For complete data, send a specific query for the object."
],
"type": "object truncated due to unexplainable reasons"
},
{
"title": "EMAIL REDACTED FOR PRIVACY",
"type": "object redacted due to authorization",
"description": [
"Please query the RDDS service of the Registrar of Record identifies in this output for information on how to contact the Registrant of the queried domain name."
]
}
],
"vcardArray":
[
"vcard",
[
["version", {}, "text", "4.0"],
["fn", {}, "text", "Entity 2"],
["org", {}, "text", "GOOGLE INCORPORATED <script>"],
["adr", {}, "text",
[
"",
"",
"123 Example Boulevard <script>",
"KOKOMO",
"BM",
"31337",
"United States"
]
],
["tel", {"type": ["voice"]}, "uri", "tel:+1.2126660420"],
["tel", {"type": ["fax"]}, "uri", "tel:+1.2126660420"]
]
]
},
{
"objectClassName": "entity",
"handle": "0003-ROID",
"links":
[
{
"rel": "self",
"href": "https://example.tld/rdap/entity/0003-ROID",
"type": "application/rdap+json",
"value": "https://example.tld/rdap/entities"
}
],
"events": [
{
"eventAction": "last update of RDAP database",
"eventDate": "2000-01-01T00:00:00.000Z"
}
],
"remarks": [
{
"title": "Incomplete Data",
"description": [
"Summary data only. For complete data, send a specific query for the object."
],
"type": "object truncated due to unexplainable reasons"
},
{
"title": "EMAIL REDACTED FOR PRIVACY",
"type": "object redacted due to authorization",
"description": [
"Please query the RDDS service of the Registrar of Record identifies in this output for information on how to contact the Registrant of the queried domain name."
]
}
],
"vcardArray":
[
"vcard",
[
["version", {}, "text", "4.0"],
["fn", {}, "text", "Entity 3"],
["org", {}, "text", "GOOGLE INCORPORATED <script>"],
["adr", {}, "text",
[
"",
"",
"123 Example Boulevard <script>",
"KOKOMO",
"BM",
"31337",
"United States"
]
],
["tel", {"type": ["voice"]}, "uri", "tel:+1.2126660420"],
["tel", {"type": ["fax"]}, "uri", "tel:+1.2126660420"]
]
]
},
{
"objectClassName": "entity",
"handle": "0004-ROID",
"links":
[
{
"rel": "self",
"href": "https://example.tld/rdap/entity/0004-ROID",
"type": "application/rdap+json",
"value": "https://example.tld/rdap/entities"
}
],
"events": [
{
"eventAction": "last update of RDAP database",
"eventDate": "2000-01-01T00:00:00.000Z"
}
],
"remarks": [
{
"title": "Incomplete Data",
"description": [
"Summary data only. For complete data, send a specific query for the object."
],
"type": "object truncated due to unexplainable reasons"
},
{
"title": "EMAIL REDACTED FOR PRIVACY",
"type": "object redacted due to authorization",
"description": [
"Please query the RDDS service of the Registrar of Record identifies in this output for information on how to contact the Registrant of the queried domain name."
]
}
],
"vcardArray":
[
"vcard",
[
["version", {}, "text", "4.0"],
["fn", {}, "text", "Entity 4"],
["org", {}, "text", "GOOGLE INCORPORATED <script>"],
["adr", {}, "text",
[
"",
"",
"123 Example Boulevard <script>",
"KOKOMO",
"BM",
"31337",
"United States"
]
],
["tel", {"type": ["voice"]}, "uri", "tel:+1.2126660420"],
["tel", {"type": ["fax"]}, "uri", "tel:+1.2126660420"]
]
]
}
],
"rdapConformance": [
"rdap_level_0",
"icann_rdap_response_profile_1",
"icann_rdap_technical_implementation_guide_1"
],
"notices":
[
{
"title": "Search Policy",
"type": "result set truncated due to unexplainable reasons",
"description":
[
"Search results per query are limited."
]
},
{
"title": "Navigation Links",
"links":
[
{
"type": "application/rdap+json",
"href": "https://example.tld/rdap/entities?%NAME%",
"rel": "next",
"value": "https://example.tld/rdap/entities"
}
],
"description": [ "Links to related pages." ]
},
{
"title": "RDAP Terms of Service",
"description":
[
"By querying our Domain Database, you are agreeing to comply with these terms so please read them carefully.",
"Any information provided is 'as is' without any guarantee of accuracy.",
"Please do not misuse the Domain Database. It is intended solely for query-based access.",
"Don't use the Domain Database to allow, enable, or otherwise support the transmission of mass unsolicited, commercial advertising or solicitations.",
"Don't access our Domain Database through the use of high volume, automated electronic processes that send queries or data to the systems of any ICANN-accredited registrar.",
"You may only use the information contained in the Domain Database for lawful purposes.",
"Do not compile, repackage, disseminate, or otherwise use the information contained in the Domain Database in its entirety, or in any substantial portion, without our prior written permission.",
"We may retain certain details about queries to our Domain Database for the purposes of detecting and preventing misuse.",
"We reserve the right to restrict or deny your access to the database if we suspect that you have failed to comply with these terms.",
"We reserve the right to modify this agreement at any time."
],
"links":
[
{
"href": "https://example.tld/rdap/help/tos",
"rel": "self",
"type": "application/rdap+json",
"value": "https://example.tld/rdap/entities"
},
{
"href": "https://www.example.tld/about/rdap/tos.html",
"rel": "terms-of-service",
"type": "text/html",
"value": "https://example.tld/rdap/entities"
}
]
}
]
}
@@ -3,7 +3,7 @@
[
{
"objectClassName" : "nameserver",
"handle" : "14-ROID",
"handle" : "11-ROID",
"ldhName" : "nsx1.cat.lol",
"links" :
[
@@ -36,7 +36,7 @@
},
{
"objectClassName" : "nameserver",
"handle" : "15-ROID",
"handle" : "12-ROID",
"ldhName" : "nsx2.cat.lol",
"links" :
[
@@ -69,7 +69,7 @@
},
{
"objectClassName" : "nameserver",
"handle" : "16-ROID",
"handle" : "13-ROID",
"ldhName" : "nsx3.cat.lol",
"links" :
[
@@ -102,7 +102,7 @@
},
{
"objectClassName" : "nameserver",
"handle" : "17-ROID",
"handle" : "14-ROID",
"ldhName" : "nsx4.cat.lol",
"links" :
[
@@ -1,300 +0,0 @@
{
"entitySearchResults":
[
{
"objectClassName" : "entity",
"handle" : "0001-ROID",
"links" :
[
{
"rel" : "self",
"href": "https://example.tld/rdap/entity/0001-ROID",
"type" : "application/rdap+json",
"value": "https://example.tld/rdap/entities"
}
],
"events": [
{
"eventAction": "last update of RDAP database",
"eventDate": "2000-01-01T00:00:00.000Z"
}
],
"remarks": [
{
"title": "Incomplete Data",
"description": [
"Summary data only. For complete data, send a specific query for the object."
],
"type": "object truncated due to unexplainable reasons"
},
{
"title": "EMAIL REDACTED FOR PRIVACY",
"type": "object redacted due to authorization",
"description": [
"Please query the RDDS service of the Registrar of Record identifies in this output for information on how to contact the Registrant of the queried domain name."
]
}
],
"vcardArray" :
[
"vcard",
[
["version", {}, "text", "4.0"],
["fn", {}, "text", "Entity 1"],
["org", {}, "text", "GOOGLE INCORPORATED <script>"],
["adr", {}, "text",
[
"",
"",
"123 Example Boulevard <script>",
"KOKOMO",
"BM",
"31337",
"United States"
]
],
["tel", {"type" : ["voice"]}, "uri", "tel:+1.2126660420"],
["tel", {"type" : ["fax"]}, "uri", "tel:+1.2126660420"]
]
]
},
{
"objectClassName" : "entity",
"handle" : "0002-ROID",
"links" :
[
{
"rel": "self",
"href": "https://example.tld/rdap/entity/0002-ROID",
"type": "application/rdap+json",
"value": "https://example.tld/rdap/entities"
}
],
"events": [
{
"eventAction": "last update of RDAP database",
"eventDate": "2000-01-01T00:00:00.000Z"
}
],
"remarks": [
{
"title": "Incomplete Data",
"description": [
"Summary data only. For complete data, send a specific query for the object."
],
"type": "object truncated due to unexplainable reasons"
},
{
"title": "EMAIL REDACTED FOR PRIVACY",
"type": "object redacted due to authorization",
"description": [
"Please query the RDDS service of the Registrar of Record identifies in this output for information on how to contact the Registrant of the queried domain name."
]
}
],
"vcardArray" :
[
"vcard",
[
["version", {}, "text", "4.0"],
["fn", {}, "text", "Entity 2"],
["org", {}, "text", "GOOGLE INCORPORATED <script>"],
["adr", {}, "text",
[
"",
"",
"123 Example Boulevard <script>",
"KOKOMO",
"BM",
"31337",
"United States"
]
],
["tel", {"type" : ["voice"]}, "uri", "tel:+1.2126660420"],
["tel", {"type" : ["fax"]}, "uri", "tel:+1.2126660420"]
]
]
},
{
"objectClassName" : "entity",
"handle" : "0003-ROID",
"links" :
[
{
"rel" : "self",
"href": "https://example.tld/rdap/entity/0003-ROID",
"type" : "application/rdap+json",
"value": "https://example.tld/rdap/entities"
}
],
"events": [
{
"eventAction": "last update of RDAP database",
"eventDate": "2000-01-01T00:00:00.000Z"
}
],
"remarks": [
{
"title": "Incomplete Data",
"description": [
"Summary data only. For complete data, send a specific query for the object."
],
"type": "object truncated due to unexplainable reasons"
},
{
"title": "EMAIL REDACTED FOR PRIVACY",
"type": "object redacted due to authorization",
"description": [
"Please query the RDDS service of the Registrar of Record identifies in this output for information on how to contact the Registrant of the queried domain name."
]
}
],
"vcardArray" :
[
"vcard",
[
["version", {}, "text", "4.0"],
["fn", {}, "text", "Entity 3"],
["org", {}, "text", "GOOGLE INCORPORATED <script>"],
["adr", {}, "text",
[
"",
"",
"123 Example Boulevard <script>",
"KOKOMO",
"BM",
"31337",
"United States"
]
],
["tel", {"type" : ["voice"]}, "uri", "tel:+1.2126660420"],
["tel", {"type" : ["fax"]}, "uri", "tel:+1.2126660420"]
]
]
},
{
"objectClassName" : "entity",
"handle" : "301",
"links" :
[
{
"rel" : "self",
"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" :
[
{
"type" : "IANA Registrar ID",
"identifier" : "301"
}
],
"events": [
{
"eventAction": "last update of RDAP database",
"eventDate": "2000-01-01T00:00:00.000Z"
}
],
"remarks": [
{
"title": "Incomplete Data",
"description": [
"Summary data only. For complete data, send a specific query for the object."
],
"type": "object truncated due to unexplainable reasons"
}
],
"vcardArray" :
[
"vcard",
[
["version", {}, "text", "4.0"],
["fn", {}, "text", "Entity 4"],
["adr", {}, "text",
[
"",
"",
"123 Example Boulevard <script>",
"Williamsburg <script>",
"NY",
"11211",
"United States"
]
],
["tel", {"type" : ["voice"]}, "uri", "tel:+1.2125551212"],
["tel", {"type" : ["fax"]}, "uri", "tel:+1.2125551213"],
["email", {}, "text", "contact-us@example.com"]
]
],
"roles" : ["registrar"]
}
],
"rdapConformance": [
"rdap_level_0",
"icann_rdap_response_profile_1",
"icann_rdap_technical_implementation_guide_1"
],
"notices" :
[
{
"title" : "Search Policy",
"type" : "result set truncated due to unexplainable reasons",
"description" :
[
"Search results per query are limited."
]
},
{
"title" : "Navigation Links",
"links" :
[
{
"type" : "application/rdap+json",
"href" : "https://example.tld/rdap/entities?%NAME%",
"rel" : "next",
"value": "https://example.tld/rdap/entities"
}
],
"description" : [ "Links to related pages." ]
},
{
"title" : "RDAP Terms of Service",
"description" :
[
"By querying our Domain Database, you are agreeing to comply with these terms so please read them carefully.",
"Any information provided is 'as is' without any guarantee of accuracy.",
"Please do not misuse the Domain Database. It is intended solely for query-based access.",
"Don't use the Domain Database to allow, enable, or otherwise support the transmission of mass unsolicited, commercial advertising or solicitations.",
"Don't access our Domain Database through the use of high volume, automated electronic processes that send queries or data to the systems of any ICANN-accredited registrar.",
"You may only use the information contained in the Domain Database for lawful purposes.",
"Do not compile, repackage, disseminate, or otherwise use the information contained in the Domain Database in its entirety, or in any substantial portion, without our prior written permission.",
"We may retain certain details about queries to our Domain Database for the purposes of detecting and preventing misuse.",
"We reserve the right to restrict or deny your access to the database if we suspect that you have failed to comply with these terms.",
"We reserve the right to modify this agreement at any time."
],
"links" :
[
{
"href": "https://example.tld/rdap/help/tos",
"rel": "self",
"type": "application/rdap+json",
"value": "https://example.tld/rdap/entities"
},
{
"href": "https://www.example.tld/about/rdap/tos.html",
"rel": "terms-of-service",
"type": "text/html",
"value": "https://example.tld/rdap/entities"
}
]
}
]
}
@@ -1 +0,0 @@
{"key":"value","rdapConformance":["rdap_level_0","icann_rdap_response_profile_1","icann_rdap_technical_implementation_guide_1"],"notices":[{"title":"RDAP Terms of Service","links":[{"href":"https:\/\/www.example.tld\/about\/rdap\/tos.html","rel":"alternate","type":"text\/html","value":"http:\/\/myserver.example.com\/help\/tos"}],"description":["By querying our Domain Database, you are agreeing to comply with these terms so please read them carefully.","Any information provided is 'as is' without any guarantee of accuracy.","Please do not misuse the Domain Database. It is intended solely for query-based access.","Don't use the Domain Database to allow, enable, or otherwise support the transmission of mass unsolicited, commercial advertising or solicitations.","Don't access our Domain Database through the use of high volume, automated electronic processes that send queries or data to the systems of any ICANN-accredited registrar.","You may only use the information contained in the Domain Database for lawful purposes.","Do not compile, repackage, disseminate, or otherwise use the information contained in the Domain Database in its entirety, or in any substantial portion, without our prior written permission.","We may retain certain details about queries to our Domain Database for the purposes of detecting and preventing misuse.","We reserve the right to restrict or deny your access to the database if we suspect that you have failed to comply with these terms.","We reserve the right to modify this agreement at any time."]}]}
@@ -1,52 +0,0 @@
{
"objectClassName" : "entity",
"handle" : "4-ROID",
"status" : ["active", "associated"],
"roles" : ["administrative"],
"links" :
[
{
"rel" : "self",
"href" : "https://example.tld/rdap/entity/4-ROID",
"type" : "application/rdap+json"
}
],
"events": [
{
"eventAction": "last update of RDAP database",
"eventDate": "2000-01-01T00:00:00.000Z"
}
],
"vcardArray" :
[
"vcard",
[
["version", {}, "text", "4.0"],
["fn", {}, "text", "Santa Claus"],
["org", {}, "text", "GOOGLE INCORPORATED <script>"],
["adr", {}, "text", [
"",
"",
[
"Santa Claus Tower",
"41st floor",
"Suite みんな"
],
"KOKOMO",
"BM",
"31337",
"United States"]],
["tel", {"type" : ["voice"]}, "uri", "tel:+1.2126660420"],
["tel", {"type" : ["fax"]}, "uri", "tel:+1.2126660420"]
]
],
"remarks": [
{
"title": "EMAIL REDACTED FOR PRIVACY",
"type": "object redacted due to authorization",
"description": [
"Please query the RDDS service of the Registrar of Record identifies in this output for information on how to contact the Registrant of the queried domain name."
]
}
]
}
@@ -1,6 +1,6 @@
{
"objectClassName" : "domain",
"handle" : "17-Q9JYB4C",
"handle" : "F-Q9JYB4C",
"ldhName" : "cat.xn--q9jyb4c",
"unicodeName" : "cat.みんな",
"status" :
@@ -51,7 +51,7 @@
[
{
"objectClassName" : "nameserver",
"handle" : "A-ROID",
"handle" : "2-ROID",
"ldhName" : "ns1.cat.xn--q9jyb4c",
"unicodeName" : "ns1.cat.みんな",
"links" : [
@@ -71,7 +71,7 @@
},
{
"objectClassName" : "nameserver",
"handle" : "C-ROID",
"handle" : "4-ROID",
"ldhName" : "ns2.cat.xn--q9jyb4c",
"unicodeName" : "ns2.cat.みんな",
"links" : [
@@ -139,143 +139,6 @@
"type": "object truncated due to unexplainable reasons"
}
]
},
{
"objectClassName" : "entity",
"handle" : "4-ROID",
"roles" : ["administrative"],
"links" :
[
{
"rel" : "self",
"href" : "https://example.tld/rdap/entity/4-ROID",
"type" : "application/rdap+json"
}
],
"vcardArray" :
[
"vcard",
[
["version", {}, "text", "4.0"],
["fn", {}, "text", "Santa Claus"],
["org", {}, "text", "GOOGLE INCORPORATED <script>"],
["adr", {}, "text", [
"",
"",
[
"Santa Claus Tower",
"41st floor",
"Suite みんな"
],
"KOKOMO",
"BM",
"31337",
"United States"]],
["tel", {"type" : ["voice"]}, "uri", "tel:+1.2126660420"],
["tel", {"type" : ["fax"]}, "uri", "tel:+1.2126660420"]
]
],
"remarks": [
{
"title": "Incomplete Data",
"type": "object truncated due to unexplainable reasons",
"description": ["Summary data only. For complete data, send a specific query for the object."]
},
{
"title": "EMAIL REDACTED FOR PRIVACY",
"type": "object redacted due to authorization",
"description": [
"Please query the RDDS service of the Registrar of Record identifies in this output for information on how to contact the Registrant of the queried domain name."
]
}
]
},
{
"objectClassName" : "entity",
"handle" : "6-ROID",
"roles" : ["technical"],
"links" :
[
{
"rel" : "self",
"href" : "https://example.tld/rdap/entity/6-ROID",
"type" : "application/rdap+json"
}
],
"vcardArray" :
[
"vcard",
[
["version", {}, "text", "4.0"],
["fn", {}, "text", "The Raven"],
["org", {}, "text", "GOOGLE INCORPORATED <script>"],
["adr", {}, "text", [
"",
"",
[
"Chamber Door",
"upper level"
],
"KOKOMO",
"BM",
"31337",
"United States"]],
["tel", {"type" : ["voice"]}, "uri", "tel:+1.2126660420"],
["tel", {"type" : ["fax"]}, "uri", "tel:+1.2126660420"]
]
],
"remarks": [
{
"title": "Incomplete Data",
"type": "object truncated due to unexplainable reasons",
"description": ["Summary data only. For complete data, send a specific query for the object."]
},
{
"title": "EMAIL REDACTED FOR PRIVACY",
"type": "object redacted due to authorization",
"description": [
"Please query the RDDS service of the Registrar of Record identifies in this output for information on how to contact the Registrant of the queried domain name."
]
}
]
},
{
"objectClassName" : "entity",
"handle" : "2-ROID",
"roles" : ["registrant"],
"links" :
[
{
"rel" : "self",
"href" : "https://example.tld/rdap/entity/2-ROID",
"type" : "application/rdap+json"
}
],
"vcardArray" :
[
"vcard",
[
["version", {}, "text", "4.0"],
["fn", {}, "text", "(◕‿◕)"],
["org", {}, "text", "GOOGLE INCORPORATED <script>"],
["tel", {"type" : ["voice"]}, "uri", "tel:+1.2126660420"],
["tel", {"type" : ["fax"]}, "uri", "tel:+1.2126660420"]
]
],
"remarks": [
{
"title": "Incomplete Data",
"type": "object truncated due to unexplainable reasons",
"description": ["Summary data only. For complete data, send a specific query for the object."]
},
{
"title": "EMAIL REDACTED FOR PRIVACY",
"type": "object redacted due to authorization",
"description": [
"Please query the RDDS service of the Registrar of Record identifies in this output for information on how to contact the Registrant of the queried domain name."
]
}
]
}
]
}
@@ -1,6 +1,6 @@
{
"objectClassName": "domain",
"handle": "17-Q9JYB4C",
"handle": "F-Q9JYB4C",
"ldhName": "cat.xn--q9jyb4c",
"unicodeName": "cat.みんな",
"status":
@@ -50,7 +50,7 @@
"nameservers": [
{
"objectClassName": "nameserver",
"handle": "A-ROID",
"handle": "2-ROID",
"ldhName": "ns1.cat.xn--q9jyb4c",
"unicodeName": "ns1.cat.みんな",
"links": [
@@ -70,7 +70,7 @@
},
{
"objectClassName": "nameserver",
"handle": "C-ROID",
"handle": "4-ROID",
"ldhName": "ns2.cat.xn--q9jyb4c",
"unicodeName": "ns2.cat.みんな",
"links": [
@@ -135,114 +135,6 @@
"type": "object truncated due to unexplainable reasons"
}
]
},
{
"objectClassName": "entity",
"handle": "",
"roles": ["administrative"],
"remarks": [
{
"title": "REDACTED FOR PRIVACY",
"type": "object redacted due to authorization",
"description": [
"Some of the data in this object has been removed.",
"Contact personal data is visible only to the owning registrar."
],
"links": [
{
"type": "text/html",
"href": "https://github.com/google/nomulus/blob/master/docs/rdap.md#authentication",
"rel": "alternate"
}
]
},
{
"title": "EMAIL REDACTED FOR PRIVACY",
"type": "object redacted due to authorization",
"description": [
"Please query the RDDS service of the Registrar of Record identifies in this output for information on how to contact the Registrant of the queried domain name."
]
}
],
"vcardArray": [
"vcard",
[
["version", {}, "text", "4.0"],
["fn", {}, "text", ""]
]
]
},
{
"objectClassName": "entity",
"handle": "",
"roles": ["technical"],
"remarks": [
{
"title": "REDACTED FOR PRIVACY",
"type": "object redacted due to authorization",
"description": [
"Some of the data in this object has been removed.",
"Contact personal data is visible only to the owning registrar."
],
"links": [
{
"type": "text/html",
"href": "https://github.com/google/nomulus/blob/master/docs/rdap.md#authentication",
"rel": "alternate"
}
]
},
{
"title": "EMAIL REDACTED FOR PRIVACY",
"type": "object redacted due to authorization",
"description": [
"Please query the RDDS service of the Registrar of Record identifies in this output for information on how to contact the Registrant of the queried domain name."
]
}
],
"vcardArray": [
"vcard",
[
["version", {}, "text", "4.0"],
["fn", {}, "text", ""]
]
]
},
{
"objectClassName": "entity",
"handle": "",
"roles": ["registrant"],
"remarks": [
{
"title": "REDACTED FOR PRIVACY",
"type": "object redacted due to authorization",
"description": [
"Some of the data in this object has been removed.",
"Contact personal data is visible only to the owning registrar."
],
"links": [
{
"type": "text/html",
"href": "https://github.com/google/nomulus/blob/master/docs/rdap.md#authentication",
"rel": "alternate"
}
]
},
{
"title": "EMAIL REDACTED FOR PRIVACY",
"type": "object redacted due to authorization",
"description": [
"Please query the RDDS service of the Registrar of Record identifies in this output for information on how to contact the Registrant of the queried domain name."
]
}
],
"vcardArray": [
"vcard",
[
["version", {}, "text", "4.0"],
["fn", {}, "text", ""]
]
]
}
]
}
@@ -1,6 +1,6 @@
{
"objectClassName": "domain",
"handle": "18-Q9JYB4C",
"handle": "10-Q9JYB4C",
"ldhName": "fish.xn--q9jyb4c",
"unicodeName": "fish.みんな",
"status":
@@ -87,42 +87,6 @@
"type": "object truncated due to unexplainable reasons"
}
]
},
{
"objectClassName": "entity",
"handle": "2-ROID",
"roles": ["administrative", "technical", "registrant"],
"links": [
{
"rel": "self",
"href": "https://example.tld/rdap/entity/2-ROID",
"type": "application/rdap+json"
}
],
"vcardArray": [
"vcard",
[
["version", {}, "text", "4.0"],
["fn", {}, "text", "(◕‿◕)"],
["org", {}, "text", "GOOGLE INCORPORATED <script>"],
["tel", {"type": ["voice"]}, "uri", "tel:+1.2126660420"],
["tel", {"type": ["fax"]}, "uri", "tel:+1.2126660420"]
]
],
"remarks": [
{
"title": "Incomplete Data",
"type": "object truncated due to unexplainable reasons",
"description": ["Summary data only. For complete data, send a specific query for the object."]
},
{
"title": "EMAIL REDACTED FOR PRIVACY",
"type": "object redacted due to authorization",
"description": [
"Please query the RDDS service of the Registrar of Record identifies in this output for information on how to contact the Registrant of the queried domain name."
]
}
]
}
]
}
@@ -1,6 +1,6 @@
{
"objectClassName": "domain",
"handle": "17-Q9JYB4C",
"handle": "F-Q9JYB4C",
"ldhName": "cat.xn--q9jyb4c",
"unicodeName": "cat.みんな",
"links": [
@@ -1,6 +1,6 @@
{
"objectClassName" : "nameserver",
"handle" : "E-ROID",
"handle" : "6-ROID",
"ldhName" : "ns3.cat.xn--q9jyb4c",
"unicodeName" : "ns3.cat.みんな",
"status" : ["active", "associated"],
@@ -1,6 +1,6 @@
{
"objectClassName" : "nameserver",
"handle" : "E-ROID",
"handle" : "6-ROID",
"ldhName" : "ns3.cat.xn--q9jyb4c",
"unicodeName" : "ns3.cat.みんな",
"links" :
@@ -1,6 +1,6 @@
{
"objectClassName": "nameserver",
"handle": "A-ROID",
"handle": "2-ROID",
"ldhName": "ns1.cat.xn--q9jyb4c",
"unicodeName": "ns1.cat.みんな",
"status": ["active", "associated"],
@@ -1,6 +1,6 @@
{
"objectClassName": "nameserver",
"handle": "C-ROID",
"handle": "4-ROID",
"ldhName": "ns2.cat.xn--q9jyb4c",
"unicodeName": "ns2.cat.みんな",
"status": ["active", "associated"],
@@ -1,6 +1,6 @@
{
"objectClassName" : "nameserver",
"handle" : "10-ROID",
"handle" : "8-ROID",
"ldhName" : "ns4.cat.xn--q9jyb4c",
"unicodeName" : "ns4.cat.みんな",
"status" : ["active", "associated"],
@@ -1,6 +1,6 @@
{
"objectClassName" : "nameserver",
"handle" : "12-ROID",
"handle" : "A-ROID",
"ldhName" : "ns5.cat.xn--q9jyb4c",
"unicodeName" : "ns5.cat.みんな",
"status" : ["active"],
@@ -1,6 +1,6 @@
{
"objectClassName" : "nameserver",
"handle" : "14-ROID",
"handle" : "C-ROID",
"ldhName" : "ns1.dog.xn--q9jyb4c",
"unicodeName" : "ns1.dog.みんな",
"status" : ["active", "pending transfer"],
@@ -1,18 +0,0 @@
{
"title" : "RDAP Help",
"description" :
[
"RDAP Help Topics (use \/help\/topic for information)",
"syntax",
"tos (Terms of Service)"
],
"links" :
[
{
"value" : "https://example.tld/rdap/help/index",
"rel" : "alternate",
"type" : "text/html",
"href" : "https://example.tld/rdap/about/rdap/index.html"
}
]
}
@@ -1,17 +0,0 @@
{
"title" : "RDAP Help",
"description" :
[
"RDAP Help Topics (use \/help\/topic for information)",
"syntax",
"tos (Terms of Service)"
],
"links" :
[
{
"rel" : "self",
"type" : "application/rdap+json",
"href" : "https://example.tld/rdap/help/index"
}
]
}
@@ -1,40 +0,0 @@
{
"objectClassName" : "entity",
"handle" : "2-ROID",
"status" : ["active", "associated"],
"roles" : ["registrant"],
"links" :
[
{
"rel" : "self",
"href" : "https://example.tld/rdap/entity/2-ROID",
"type" : "application/rdap+json"
}
],
"events": [
{
"eventAction": "last update of RDAP database",
"eventDate": "2000-01-01T00:00:00.000Z"
}
],
"vcardArray" : [
"vcard",
[
["version", {}, "text", "4.0"],
["fn", {}, "text", "(◕‿◕)"],
["org",{},"text","GOOGLE INCORPORATED <script>"],
["tel",{"type":["voice"]},"uri","tel:+1.2126660420"],
["tel",{"type":["fax"]},"uri","tel:+1.2126660420"]
]
],
"remarks": [
{
"title": "EMAIL REDACTED FOR PRIVACY",
"type": "object redacted due to authorization",
"description": [
"Please query the RDDS service of the Registrar of Record identifies in this output for information on how to contact the Registrant of the queried domain name."
]
}
]
}
@@ -1,42 +0,0 @@
{
"objectClassName" : "entity",
"handle" : "",
"roles" : ["registrant"],
"events": [
{
"eventAction": "last update of RDAP database",
"eventDate": "2000-01-01T00:00:00.000Z"
}
],
"vcardArray": [
"vcard",
[
["version", {}, "text", "4.0"],
["fn", {}, "text", ""]
]
],
"remarks": [
{
"title": "REDACTED FOR PRIVACY",
"type": "object redacted due to authorization",
"description": [
"Some of the data in this object has been removed.",
"Contact personal data is visible only to the owning registrar."
],
"links": [
{
"type": "text/html",
"href": "https://github.com/google/nomulus/blob/master/docs/rdap.md#authentication",
"rel": "alternate"
}
]
},
{
"title": "EMAIL REDACTED FOR PRIVACY",
"type": "object redacted due to authorization",
"description": [
"Please query the RDDS service of the Registrar of Record identifies in this output for information on how to contact the Registrant of the queried domain name."
]
}
]
}
@@ -1,37 +0,0 @@
{
"objectClassName" : "entity",
"handle" : "2-ROID",
"status" : ["active", "associated"],
"roles" : ["registrant"],
"links" :
[
{
"rel" : "self",
"href" : "entity/2-ROID",
"type" : "application/rdap+json"
}
],
"events": [
{
"eventAction": "registration",
"eventActor": "TheRegistrar",
"eventDate": "1999-01-01T00:00:00.000Z"
},
{
"eventAction": "last update of RDAP database",
"eventDate": "2000-01-01T00:00:00.000Z"
}
],
"vcardArray" :
[
"vcard",
[
["version", {}, "text", "4.0"],
["fn", {}, "text", "(◕‿◕)"],
["org", {}, "text", "GOOGLE INCORPORATED <script>"],
["tel", {"type" : ["voice"]}, "uri", "tel:+1.2126660420"],
["tel", {"type" : ["fax"]}, "uri", "tel:+1.2126660420"],
["email", {}, "text", "lol@cat.みんな"]
]
]
}
@@ -1,46 +0,0 @@
{
"objectClassName" : "entity",
"handle" : "2-ROID",
"roles" : ["registrant"],
"links" :
[
{
"rel" : "self",
"href" : "https://example.tld/rdap/entity/2-ROID",
"type" : "application/rdap+json"
}
],
"vcardArray" :
[
"vcard",
[
["version", {}, "text", "4.0"],
["fn", {}, "text", "(◕‿◕)"],
["org", {}, "text", "GOOGLE INCORPORATED <script>"],
["tel", {"type" : ["voice"]}, "uri", "tel:+1.2126660420"],
["tel", {"type" : ["fax"]}, "uri", "tel:+1.2126660420"]
]
],
"events": [
{
"eventAction": "last update of RDAP database",
"eventDate": "2000-01-01T00:00:00.000Z"
}
],
"remarks": [
{
"title": "Incomplete Data",
"description": [
"Summary data only. For complete data, send a specific query for the object."
],
"type": "object truncated due to unexplainable reasons"
},
{
"title": "EMAIL REDACTED FOR PRIVACY",
"type": "object redacted due to authorization",
"description": [
"Please query the RDDS service of the Registrar of Record identifies in this output for information on how to contact the Registrant of the queried domain name."
]
}
]
}
@@ -1,51 +0,0 @@
{
"objectClassName" : "entity",
"handle" : "2-ROID",
"status" : ["active", "associated"],
"roles" : ["registrant"],
"links" :
[
{
"rel" : "self",
"href" : "https://example.tld/rdap/entity/2-ROID",
"type" : "application/rdap+json"
}
],
"vcardArray" :
[
"vcard",
[
["version", {}, "text", "4.0"],
["fn", {}, "text", "(◕‿◕)"],
["org", {}, "text", "GOOGLE INCORPORATED <script>"],
["tel", {"type" : ["voice"]}, "uri", "tel:+1.2126660420"],
["tel", {"type" : ["fax"]}, "uri", "tel:+1.2126660420"],
["email", {}, "text", "lol@cat.みんな"]
]
],
"remarks": [
{
"title": "Incomplete Data",
"description": [
"Summary data only. For complete data, send a specific query for the object."
],
"type": "object truncated due to unexplainable reasons"
},
{
"title": "Redacted for Privacy",
"description": [
"Some of the data in this object has been removed.",
"Contact personal data is visible only to the owning registrar."
],
"type": "object redacted due to authorization",
"links" :
[
{
"rel" : "alternate",
"href" : "https://github.com/google/nomulus/blob/master/docs/rdap.md#authentication",
"type" : "text/html"
}
]
}
]
}
@@ -1,50 +0,0 @@
{
"objectClassName" : "entity",
"handle" : "6-ROID",
"status" : ["active", "associated"],
"links" :
[
{
"rel" : "self",
"href" : "https://example.tld/rdap/entity/6-ROID",
"type" : "application/rdap+json"
}
],
"events": [
{
"eventAction": "last update of RDAP database",
"eventDate": "2000-01-01T00:00:00.000Z"
}
],
"vcardArray" :
[
"vcard",
[
["version", {}, "text", "4.0"],
["fn", {}, "text", "The Raven"],
["org", {}, "text", "GOOGLE INCORPORATED <script>"],
["adr", {}, "text", [
"",
"",
[
"Chamber Door",
"upper level"
],
"KOKOMO",
"BM",
"31337",
"United States"]],
["tel", {"type" : ["voice"]}, "uri", "tel:+1.2126660420"],
["tel", {"type" : ["fax"]}, "uri", "tel:+1.2126660420"]
]
],
"remarks": [
{
"title": "EMAIL REDACTED FOR PRIVACY",
"type": "object redacted due to authorization",
"description": [
"Please query the RDDS service of the Registrar of Record identifies in this output for information on how to contact the Registrant of the queried domain name."
]
}
]
}
@@ -1,51 +0,0 @@
{
"objectClassName" : "entity",
"handle" : "6-ROID",
"status" : ["active", "associated"],
"roles" : ["technical"],
"links" :
[
{
"rel" : "self",
"href" : "https://example.tld/rdap/entity/6-ROID",
"type" : "application/rdap+json"
}
],
"events": [
{
"eventAction": "last update of RDAP database",
"eventDate": "2000-01-01T00:00:00.000Z"
}
],
"vcardArray" :
[
"vcard",
[
["version", {}, "text", "4.0"],
["fn", {}, "text", "The Raven"],
["org", {}, "text", "GOOGLE INCORPORATED <script>"],
["adr", {}, "text", [
"",
"",
[
"Chamber Door",
"upper level"
],
"KOKOMO",
"BM",
"31337",
"United States"]],
["tel", {"type" : ["voice"]}, "uri", "tel:+1.2126660420"],
["tel", {"type" : ["fax"]}, "uri", "tel:+1.2126660420"]
]
],
"remarks": [
{
"title": "EMAIL REDACTED FOR PRIVACY",
"type": "object redacted due to authorization",
"description": [
"Please query the RDDS service of the Registrar of Record identifies in this output for information on how to contact the Registrant of the queried domain name."
]
}
]
}
@@ -1,50 +0,0 @@
{
"objectClassName" : "entity",
"handle" : "8-ROID",
"status" : ["active"],
"links" :
[
{
"rel" : "self",
"href" : "https://example.tld/rdap/entity/8-ROID",
"type" : "application/rdap+json"
}
],
"events": [
{
"eventAction": "last update of RDAP database",
"eventDate": "2000-01-01T00:00:00.000Z"
}
],
"vcardArray" :
[
"vcard",
[
["version", {}, "text", "4.0"],
["fn", {}, "text", "The Wizard"],
["org", {}, "text", "GOOGLE INCORPORATED <script>"],
["adr", {}, "text", [
"",
"",
[
"Somewhere",
"Over the Rainbow"
],
"KOKOMO",
"BM",
"31337",
"United States"]],
["tel", {"type" : ["voice"]}, "uri", "tel:+1.2126660420"],
["tel", {"type" : ["fax"]}, "uri", "tel:+1.2126660420"]
]
],
"remarks": [
{
"title": "EMAIL REDACTED FOR PRIVACY",
"type": "object redacted due to authorization",
"description": [
"Please query the RDDS service of the Registrar of Record identifies in this output for information on how to contact the Registrant of the queried domain name."
]
}
]
}