diff --git a/core/src/main/java/google/registry/rdap/RdapActionBase.java b/core/src/main/java/google/registry/rdap/RdapActionBase.java index 4ccc734e4..2b23be750 100644 --- a/core/src/main/java/google/registry/rdap/RdapActionBase.java +++ b/core/src/main/java/google/registry/rdap/RdapActionBase.java @@ -55,7 +55,7 @@ import java.util.Optional; import org.joda.time.DateTime; /** - * Base RDAP (new WHOIS) action for all requests. + * Base RDAP action for all requests. * * @see RFC 9082: Registration Data Access Protocol * (RDAP) Query Format @@ -138,7 +138,7 @@ public abstract class RdapActionBase implements Runnable { // RFC7480 4.2 - servers receiving an RDAP request return an entity with a Content-Type header // containing the RDAP-specific JSON media type. response.setContentType(RESPONSE_MEDIA_TYPE); - // RDAP Technical Implementation Guide 1.13 - when responding to RDAP valid requests, we MUST + // RDAP Technical Implementation Guide 1.14 - when responding to RDAP valid requests, we MUST // include the Access-Control-Allow-Origin, which MUST be "*" unless otherwise specified. response.setHeader(ACCESS_CONTROL_ALLOW_ORIGIN, "*"); try { diff --git a/core/src/main/java/google/registry/rdap/RdapAutnumAction.java b/core/src/main/java/google/registry/rdap/RdapAutnumAction.java index 30b9da327..bb1ef8fed 100644 --- a/core/src/main/java/google/registry/rdap/RdapAutnumAction.java +++ b/core/src/main/java/google/registry/rdap/RdapAutnumAction.java @@ -26,7 +26,7 @@ import google.registry.request.auth.Auth; import jakarta.inject.Inject; /** - * RDAP (new WHOIS) action for RDAP autonomous system number requests. + * RDAP action for RDAP autonomous system number requests. * *
This feature is not implemented because it's only necessary for address registries like * ARIN, not domain registries. diff --git a/core/src/main/java/google/registry/rdap/RdapDataStructures.java b/core/src/main/java/google/registry/rdap/RdapDataStructures.java index 2947dcf2c..6bb2a3410 100644 --- a/core/src/main/java/google/registry/rdap/RdapDataStructures.java +++ b/core/src/main/java/google/registry/rdap/RdapDataStructures.java @@ -41,14 +41,13 @@ final class RdapDataStructures { // Conformance to RFC 9083 jsonArray.add("rdap_level_0"); - // Conformance to the RDAP Response Profile V2.1 + // Conformance to the RDAP Response Profile V2.2 (February 2024) + // (see section 1.2) + jsonArray.add("icann_rdap_response_profile_1"); + + // Conformance to the RDAP Technical Implementation Guide V2.2 (February 2024) // (see section 1.3) - jsonArray.add("icann_rdap_response_profile_0"); - - // Conformance to the RDAP Technical Implementation Guide V2.1 - // (see section 1.14) - jsonArray.add("icann_rdap_technical_implementation_guide_0"); - + jsonArray.add("icann_rdap_technical_implementation_guide_1"); return jsonArray; } } diff --git a/core/src/main/java/google/registry/rdap/RdapDomainAction.java b/core/src/main/java/google/registry/rdap/RdapDomainAction.java index 681abc858..6b96b3ec2 100644 --- a/core/src/main/java/google/registry/rdap/RdapDomainAction.java +++ b/core/src/main/java/google/registry/rdap/RdapDomainAction.java @@ -36,7 +36,7 @@ import google.registry.request.auth.Auth; import jakarta.inject.Inject; import java.util.Optional; -/** RDAP (new WHOIS) action for domain requests. */ +/** RDAP action for domain requests. */ @Action( service = GaeService.PUBAPI, path = "/rdap/domain/", diff --git a/core/src/main/java/google/registry/rdap/RdapDomainSearchAction.java b/core/src/main/java/google/registry/rdap/RdapDomainSearchAction.java index 28cd8c91c..7917feaa8 100644 --- a/core/src/main/java/google/registry/rdap/RdapDomainSearchAction.java +++ b/core/src/main/java/google/registry/rdap/RdapDomainSearchAction.java @@ -51,6 +51,7 @@ import google.registry.request.Parameter; import google.registry.request.auth.Auth; import google.registry.util.NonFinalForTesting; import jakarta.inject.Inject; +import jakarta.persistence.Query; import jakarta.persistence.criteria.CriteriaBuilder; import java.net.InetAddress; import java.util.Comparator; @@ -60,17 +61,15 @@ import java.util.stream.Stream; import org.hibernate.Hibernate; /** - * RDAP (new WHOIS) action for domain search requests. + * RDAP action for domain search requests. * - *
All commands and responses conform to the RDAP spec as defined in RFCs 7480 through 7485. + *
All commands and responses conform to the RDAP spec as defined in STD 95 and its RFCs. * * @see RFC 9082: Registration Data Access Protocol * (RDAP) Query Format * @see RFC 9083: JSON Responses for the Registration * Data Access Protocol (RDAP) */ -// TODO: This isn't required by the RDAP Technical Implementation Guide, and hence should be -// deleted, at least until it's actually required. @Action( service = GaeService.PUBAPI, path = "/rdap/domains", @@ -442,7 +441,7 @@ public class RdapDomainSearchAction extends RdapSearchActionBase { replicaTm() .transact( () -> { - jakarta.persistence.Query query = + Query query = replicaTm() .getEntityManager() .createNativeQuery(queryBuilder.toString()) diff --git a/core/src/main/java/google/registry/rdap/RdapEntityAction.java b/core/src/main/java/google/registry/rdap/RdapEntityAction.java index e0c29dfd3..91bf592c6 100644 --- a/core/src/main/java/google/registry/rdap/RdapEntityAction.java +++ b/core/src/main/java/google/registry/rdap/RdapEntityAction.java @@ -37,14 +37,12 @@ import jakarta.inject.Inject; import java.util.Optional; /** - * RDAP (new WHOIS) action for entity (contact and registrar) requests. the ICANN operational - * profile dictates that the "handle" for registrars is to be the IANA registrar ID: + * RDAP action for entity (contact and registrar) requests. the ICANN operational profile dictates + * that the "handle" for registrars is to be the IANA registrar ID: * - *
2.8.3. Registries MUST support lookup for entities with the registrar role within other - * objects using the handle (as described in 3.1.5 of RFC 9082). The handle of the entity with the - * registrar role MUST be equal to IANA Registrar ID. The entity with the registrar role in the RDAP - * response MUST contain a publicIDs member to identify the IANA Registrar ID from the IANA’s - * Registrar ID registry. The type value of the publicID object MUST be equal to IANA Registrar ID. + *
2.4.1.Registry RDAP servers MUST support Registrar object lookup using an entity path request + * for entities with the registrar role using the handle (as described in 3.1.5 of RFC9082) where + * the handle of the entity with the registrar role is be [sic] equal to the IANA Registrar ID. */ @Action( service = GaeService.PUBAPI, @@ -104,7 +102,7 @@ public class RdapEntityAction extends RdapActionBase { // query, it MUST reply with 404 response code. // // Note we don't do RFC7480 5.3 - returning a different code if we wish to say "this info - // exists but we don't want to show it to you", because we DON'T wish to say that. + // exists, but we don't want to show it to you", because we DON'T wish to say that. throw new NotFoundException(pathSearchString + " not found"); } } diff --git a/core/src/main/java/google/registry/rdap/RdapEntitySearchAction.java b/core/src/main/java/google/registry/rdap/RdapEntitySearchAction.java index 1c55d1d9e..c5f8745ef 100644 --- a/core/src/main/java/google/registry/rdap/RdapEntitySearchAction.java +++ b/core/src/main/java/google/registry/rdap/RdapEntitySearchAction.java @@ -49,9 +49,9 @@ import java.util.List; import java.util.Optional; /** - * RDAP (new WHOIS) action for entity (contact and registrar) search requests. + * RDAP action for entity (contact and registrar) search requests. * - *
All commands and responses conform to the RDAP spec as defined in RFCs 7480 through 7485. + *
All commands and responses conform to the RDAP spec as defined in STD 95 and its RFCs. * *
The RDAP specification lumps contacts and registrars together and calls them "entities", which
* is confusing for us, because "entity" means something else in SQL. But here, when we use the
@@ -76,8 +76,6 @@ import java.util.Optional;
* @see RFC 9083: JSON Responses for the Registration
* Data Access Protocol (RDAP)
*/
-// TODO: This isn't required by the RDAP Technical Implementation Guide, and hence should be
-// deleted, at least until it's actually required.
@Action(
service = GaeService.PUBAPI,
path = "/rdap/entities",
diff --git a/core/src/main/java/google/registry/rdap/RdapHelpAction.java b/core/src/main/java/google/registry/rdap/RdapHelpAction.java
index 1d7849fe2..9b64bf875 100644
--- a/core/src/main/java/google/registry/rdap/RdapHelpAction.java
+++ b/core/src/main/java/google/registry/rdap/RdapHelpAction.java
@@ -28,7 +28,7 @@ import google.registry.request.auth.Auth;
import jakarta.inject.Inject;
import java.util.Optional;
-/** RDAP (new WHOIS) action for help requests. */
+/** RDAP action for help requests. */
@Action(
service = GaeService.PUBAPI,
path = RdapHelpAction.PATH,
diff --git a/core/src/main/java/google/registry/rdap/RdapIcannStandardInformation.java b/core/src/main/java/google/registry/rdap/RdapIcannStandardInformation.java
index c1b3479b3..103a38237 100644
--- a/core/src/main/java/google/registry/rdap/RdapIcannStandardInformation.java
+++ b/core/src/main/java/google/registry/rdap/RdapIcannStandardInformation.java
@@ -22,26 +22,18 @@ import google.registry.rdap.RdapDataStructures.Remark;
/**
* This file contains boilerplate required by the ICANN RDAP Profile.
*
- * @see RDAP
- * Operational Profile for gTLD Registries and Registrars
+ * @see
+ * RDAP Response Profile
*/
public class RdapIcannStandardInformation {
- /** Required by ICANN RDAP Profile section 1.4.10. */
- private static final Notice CONFORMANCE_NOTICE =
- Notice.builder()
- .setDescription(
- "This response conforms to the RDAP Operational Profile for gTLD Registries and"
- + " Registrars version 1.0")
- .build();
-
- /** Required by ICANN RDAP Profile section 1.5.18. */
+ /** Required by RDAP Response Profile section 2.6.3. */
private static final Notice DOMAIN_STATUS_CODES_NOTICE =
Notice.builder()
.setTitle("Status Codes")
.setDescription(
- "For more information on domain status codes, please visit"
- + " https://icann.org/epp")
+ "For more information on domain status codes, please visit https://icann.org/epp")
.addLink(
Link.builder()
.setRel("glossary")
@@ -50,7 +42,7 @@ public class RdapIcannStandardInformation {
.build())
.build();
- /** Required by ICANN RDAP Response Profile section 2.11. */
+ /** Required by RDAP Response Profile section 2.10. */
private static final Notice INACCURACY_COMPLAINT_FORM_NOTICE =
Notice.builder()
.setTitle("RDDS Inaccuracy Complaint Form")
@@ -79,28 +71,16 @@ public class RdapIcannStandardInformation {
/** Boilerplate notices required by domain responses. */
static final ImmutableList Also mentioned in the RDAP Technical Implementation Guide 3.6.
- *
- * @see Questions about
- * the ICANN RDAP Profile
- */
+ /** Required by the RDAP Technical Implementation Guide 3.6. */
static final Remark SUMMARY_DATA_REMARK =
Remark.builder()
.setTitle("Incomplete Data")
@@ -109,14 +89,7 @@ public class RdapIcannStandardInformation {
.setType(Remark.Type.OBJECT_TRUNCATED_UNEXPLAINABLE)
.build();
- /**
- * Required by ICANN RDAP Profile section 1.4.8, as corrected by Gustavo Lozano of ICANN.
- *
- * Also mentioned in the RDAP Technical Implementation Guide 3.5.
- *
- * @see Questions about
- * the ICANN RDAP Profile
- */
+ /** Required by the RDAP Technical Implementation Guide 3.5. */
static final Notice TRUNCATED_RESULT_SET_NOTICE =
Notice.builder()
.setTitle("Search Policy")
@@ -148,7 +121,9 @@ public class RdapIcannStandardInformation {
/**
* Included when requester is not logged in as the owner of the contact being returned.
*
- * Format required by ICANN RDAP Response Profile 15feb19 section 2.7.4.3.
+ * >Note: if we were keeping this around, we'd want/need to implement the official RDAP redaction spec for contacts.
+ * We are getting rid of contacts in 2025 though so this should be unnecessary.
*/
static final Remark CONTACT_PERSONAL_DATA_HIDDEN_DATA_REMARK =
Remark.builder()
@@ -169,10 +144,9 @@ public class RdapIcannStandardInformation {
/**
* Included in ALL contact responses, even if the user is authorized.
*
- * Format required by ICANN RDAP Response Profile 15feb19 section 2.7.5.3.
- *
- * NOTE that unlike other redacted fields, there's no allowance to give the email to authorized
- * users or allow for registrar consent.
+ * >Note: if we were keeping this around, we'd want/need to implement the official RDAP redaction spec for contacts.
+ * We are getting rid of contacts in 2025 though so this should be unnecessary.
*/
static final Remark CONTACT_EMAIL_REDACTED_FOR_DOMAIN =
Remark.builder()
diff --git a/core/src/main/java/google/registry/rdap/RdapIpAction.java b/core/src/main/java/google/registry/rdap/RdapIpAction.java
index a5f6c3826..36d468cb4 100644
--- a/core/src/main/java/google/registry/rdap/RdapIpAction.java
+++ b/core/src/main/java/google/registry/rdap/RdapIpAction.java
@@ -26,7 +26,7 @@ import google.registry.request.auth.Auth;
import jakarta.inject.Inject;
/**
- * RDAP (new WHOIS) action for RDAP IP address requests.
+ * RDAP action for RDAP IP address requests.
*
* This feature is not implemented because it's only necessary for address registries like
* ARIN, not domain registries.
diff --git a/core/src/main/java/google/registry/rdap/RdapJsonFormatter.java b/core/src/main/java/google/registry/rdap/RdapJsonFormatter.java
index 192463827..be794e31d 100644
--- a/core/src/main/java/google/registry/rdap/RdapJsonFormatter.java
+++ b/core/src/main/java/google/registry/rdap/RdapJsonFormatter.java
@@ -221,7 +221,7 @@ public class RdapJsonFormatter {
* Map of EPP event values to the RDAP equivalents.
*
* Only has entries for optional events, either stated as optional in the RDAP Response Profile
- * 15feb19, or not mentioned at all but thought to be useful anyway.
+ * section 2.3.2, or not mentioned at all but thought to be useful anyway.
*
* Any required event should be added elsewhere, preferably without using HistoryEntries (so
* that we don't need to load HistoryEntries for "summary" responses).
@@ -292,8 +292,8 @@ public class RdapJsonFormatter {
* Creates a JSON object for a {@link Domain}.
*
* NOTE that domain searches aren't in the spec yet - they're in the RFC 9082 that describes
- * the query format, but they aren't in the RDAP Technical Implementation Guide 15feb19, meaning
- * we don't have to implement them yet and the RDAP Response Profile doesn't apply to them.
+ * the query format, but they aren't in the RDAP Technical Implementation Guide, meaning we don't
+ * have to implement them yet and the RDAP Response Profile doesn't apply to them.
*
* We're implementing domain searches anyway, BUT we won't have the response for searches
* conform to the RDAP Response Profile.
@@ -307,9 +307,9 @@ public class RdapJsonFormatter {
if (outputDataType != OutputDataType.FULL) {
builder.remarksBuilder().add(RdapIcannStandardInformation.SUMMARY_DATA_REMARK);
}
- // RDAP Response Profile 15feb19 section 2.1 discusses the domain name.
+ // RDAP Response Profile section 2.1 discusses the domain name.
builder.setLdhName(domain.getDomainName());
- // RDAP Response Profile 15feb19 section 2.2:
+ // RDAP Response Profile section 2.2:
// The domain handle MUST be the ROID
builder.setHandle(domain.getRepoId());
// If this is a summary (search result) - we'll return now. Since there's no requirement for
@@ -317,9 +317,9 @@ public class RdapJsonFormatter {
if (outputDataType == OutputDataType.SUMMARY) {
return builder.build();
}
- // RDAP Response Profile 15feb19 section 2.3.1:
+ // RDAP Response Profile section 2.3.1:
// The domain object in the RDAP response MUST contain the following events:
- // [registration, expiration, last update of RDAP database]
+ // [registration, expiration]
builder
.eventsBuilder()
.add(
@@ -333,14 +333,18 @@ public class RdapJsonFormatter {
.setEventAction(EventAction.EXPIRATION)
.setEventDate(domain.getRegistrationExpirationTime())
.build(),
+ // RDAP response profile section 1.5:
+ // The topmost object in the RDAP response MUST contain an event of "eventAction" type
+ // "last update of RDAP database" with a value equal to the timestamp when the RDAP
+ // database was last updated
Event.builder()
.setEventAction(EventAction.LAST_UPDATE_OF_RDAP_DATABASE)
.setEventDate(getRequestTime())
.build());
- // RDAP Response Profile 15feb19 section 2.3.2 discusses optional events. We add some of those
+ // RDAP Response Profile section 2.3.2 discusses optional events. We add some of those
// here. We also add a few others we find interesting.
builder.eventsBuilder().addAll(makeOptionalEvents(domain));
- // RDAP Response Profile 15feb19 section 2.4.1:
+ // RDAP Response Profile section 2.4.1:
// The domain object in the RDAP response MUST contain an entity with the Registrar role.
//
// See {@link createRdapRegistrarEntity} for details of section 2.4 conformance
@@ -378,8 +382,6 @@ public class RdapJsonFormatter {
// RDAP Response Profile 2.6.3, must have a notice about statuses. That is in {@link
// RdapIcannStandardInformation#domainBoilerplateNotices}
- // Kick off the database loads of the nameservers that we will need, so it can load
- // asynchronously while we load and process the contacts.
ImmutableSet This object can be INTERNAL to the Domain and Nameserver responses, with requirements
- * discussed in the RDAP Response Profile 15feb19 sections 2.4 (internal to Domain) and 4.3
- * (internal to Namesever)
+ * discussed in the RDAP Response Profile sections 2.4 (internal to Domain) and 4.3 (internal to
+ * Namesever)
*
* @param registrar the registrar object from which the RDAP response
* @param outputDataType whether to generate FULL, SUMMARY, or INTERNAL data.
@@ -755,7 +754,6 @@ public class RdapJsonFormatter {
//
// Write the minimum, meaning only ABUSE for INTERNAL registrars, nothing for SUMMARY and
// everything for FULL.
- //
if (outputDataType != OutputDataType.SUMMARY) {
ImmutableList Only has entries for optional events that won't be shown in "SUMMARY" versions of these
- * objects. These are either stated as optional in the RDAP Response Profile 15feb19, or not
- * mentioned at all but thought to be useful anyway.
+ * objects. These are either stated as optional in the RDAP Response Profile, or not mentioned at
+ * all but thought to be useful anyway.
*
* Any required event should be added elsewhere, preferably without using HistoryEntries (so
* that we don't need to load HistoryEntries for "summary" responses).
@@ -974,7 +972,7 @@ public class RdapJsonFormatter {
lastChangeTime = modificationTime;
}
}
- // RDAP Response Profile 15feb19 section 2.3.2.2:
+ // RDAP Response Profile section 2.3.2.2:
// The event of eventAction type last changed MUST be omitted if the domain name has not been
// updated since it was created
if (lastChangeTime.isAfter(creationTime)) {
@@ -991,7 +989,7 @@ public class RdapJsonFormatter {
/**
* Creates a vCard address entry: array of strings specifying the components of the address.
*
- * Rdap Response Profile 3.1.1: MUST contain the following fields: Street, City, Country Rdap
+ * RDAP Response Profile 3.1.1: MUST contain the following fields: Street, City, Country Rdap
* Response Profile 3.1.2: optional fields: State/Province, Postal Code, Fax Number
*
* @see RFC 7095: jCard: The JSON Format for
diff --git a/core/src/main/java/google/registry/rdap/RdapNameserverAction.java b/core/src/main/java/google/registry/rdap/RdapNameserverAction.java
index d61da7aac..82608a0dd 100644
--- a/core/src/main/java/google/registry/rdap/RdapNameserverAction.java
+++ b/core/src/main/java/google/registry/rdap/RdapNameserverAction.java
@@ -33,7 +33,7 @@ import google.registry.request.auth.Auth;
import jakarta.inject.Inject;
import java.util.Optional;
-/** RDAP (new WHOIS) action for nameserver requests. */
+/** RDAP action for nameserver requests. */
@Action(
service = GaeService.PUBAPI,
path = "/rdap/nameserver/",
@@ -48,7 +48,7 @@ public class RdapNameserverAction extends RdapActionBase {
@Override
public RdapNameserver getJsonObjectForResource(String pathSearchString, boolean isHeadRequest) {
- // RDAP Technical Implementation Guide 2.2.1 - we must support A-label (Punycode) and U-label
+ // RDAP Technical Implementation Guide 2.1.1 - we must support A-label (Punycode) and U-label
// (Unicode) formats. canonicalizeName will transform Unicode to Punycode so we support both.
pathSearchString = canonicalizeName(pathSearchString);
// The RDAP syntax is /rdap/nameserver/ns1.mydomain.com.
diff --git a/core/src/main/java/google/registry/rdap/RdapNameserverSearchAction.java b/core/src/main/java/google/registry/rdap/RdapNameserverSearchAction.java
index 1a98a4628..c7fef6248 100644
--- a/core/src/main/java/google/registry/rdap/RdapNameserverSearchAction.java
+++ b/core/src/main/java/google/registry/rdap/RdapNameserverSearchAction.java
@@ -47,9 +47,9 @@ import java.util.List;
import java.util.Optional;
/**
- * RDAP (new WHOIS) action for nameserver search requests.
+ * RDAP action for nameserver search requests.
*
- * All commands and responses conform to the RDAP spec as defined in RFCs 7480 through 7485.
+ * All commands and responses conform to the RDAP spec as defined in STD 95 and its RFCs.
*
* @see RFC 9082: Registration Data Access Protocol
* (RDAP) Query Format
diff --git a/core/src/main/java/google/registry/rdap/RdapObjectClasses.java b/core/src/main/java/google/registry/rdap/RdapObjectClasses.java
index 1a54e0fb1..1328f2457 100644
--- a/core/src/main/java/google/registry/rdap/RdapObjectClasses.java
+++ b/core/src/main/java/google/registry/rdap/RdapObjectClasses.java
@@ -45,11 +45,7 @@ import java.util.Optional;
/** Object Classes defined in RFC 9083 section 5. */
final class RdapObjectClasses {
- /**
- * Temporary implementation of VCards.
- *
- * Will create a better implementation soon.
- */
+ /** Rough implementation of VCards. */
@RestrictJsonNames({})
@AutoValue
public abstract static class Vcard implements Jsonable {
@@ -140,8 +136,8 @@ final class RdapObjectClasses {
public enum BoilerplateType {
DOMAIN(RdapIcannStandardInformation.DOMAIN_BOILERPLATE_NOTICES),
DOMAIN_BLOCKED_BY_BSA(RdapIcannStandardInformation.DOMAIN_BLOCKED_BY_BSA_BOILERPLATE_NOTICES),
- NAMESERVER(RdapIcannStandardInformation.NAMESERVER_AND_ENTITY_BOILERPLATE_NOTICES),
- ENTITY(RdapIcannStandardInformation.NAMESERVER_AND_ENTITY_BOILERPLATE_NOTICES),
+ NAMESERVER(ImmutableList.of()),
+ ENTITY(ImmutableList.of()),
OTHER(ImmutableList.of());
@SuppressWarnings("ImmutableEnumChecker") // immutable lists are, in fact, immutable
@@ -173,8 +169,8 @@ final class RdapObjectClasses {
* The Top Level JSON reply, Adds the required top-level boilerplate to a ReplyPayloadBase.
*
* RFC 9083 specifies that the top-level object should include an entry indicating the
- * conformance level. ICANN RDAP spec for 15feb19 mandates several additional entries, in sections
- * 2.6.3, 2.11 of the Response Profile and 3.3, 3.5, of the Technical Implementation Guide.
+ * conformance level. The RDAP spec mandates several additional entries, in sections 2.6.3, 2.10
+ * of the Response Profile and 3.3, 3.5, of the Technical Implementation Guide.
*/
@AutoValue
@RestrictJsonNames({})
@@ -353,7 +349,7 @@ final class RdapObjectClasses {
*
* Takes care of the name and unicode field.
*
- * See RDAP Response Profile 15feb19 sections 2.1 and 4.1.
+ * See RDAP Response Profile sections 2.1 and 4.1.
*
* Note the ldhName field is only required for non-IDN names or IDN names when the query was an
* A-label. It is optional for IDN names when the query was a U-label. Because we don't want to
@@ -471,7 +467,7 @@ final class RdapObjectClasses {
}
/**
- * an integer representing the signature lifetime in seconds to be used when creating the RRSIG
+ * An integer representing the signature lifetime in seconds to be used when creating the RRSIG
* DS record in the parent zone [RFC5910].
*
* Note that although it isn't given as optional in RFC 9083, in RFC5910 it's mentioned as
diff --git a/core/src/main/java/google/registry/rdap/RdapSearchActionBase.java b/core/src/main/java/google/registry/rdap/RdapSearchActionBase.java
index 2daa836c8..6d05ee9cb 100644
--- a/core/src/main/java/google/registry/rdap/RdapSearchActionBase.java
+++ b/core/src/main/java/google/registry/rdap/RdapSearchActionBase.java
@@ -44,7 +44,7 @@ import java.util.Objects;
import java.util.Optional;
/**
- * Base RDAP (new WHOIS) action for domain, nameserver and entity search requests.
+ * Base RDAP action for domain, nameserver and entity search requests.
*
* @see RFC 9082: Registration Data Access Protocol
* (RDAP) Query Format
@@ -155,7 +155,6 @@ public abstract class RdapSearchActionBase extends RdapActionBase {
*/
Based on RFC 9082 4.1. Must contains only alphanumeric plus dots and hyphens. A single
- * whildcard asterix is allowed - but if exists must be the last character of a domain name label
+ * Based on RFC 9082 4.1. Must contain only alphanumeric plus dots and hyphens. A single
+ * wildcard asterix is allowed - but if exists must be the last character of a domain name label
* (so exam* and exam*.com are allowed, but exam*le.com isn't allowd)
*
* The prefix is in group(1), and the suffix without the dot (if it exists) is in group(4). If
@@ -123,7 +123,7 @@ public final class RdapSearchPattern {
* Creates a SearchPattern using the provided domain search pattern in LDH format.
*
* The domain search pattern can have a single wildcard asterix that can match 0 or more
- * charecters. If such an asterix exists - it must be at the end of a domain label.
+ * characters. If such an asterix exists - it must be at the end of a domain label.
*
* @param searchQuery the string containing the partial match pattern
* @throws UnprocessableEntityException if {@code pattern} does not meet the requirements of RFC
@@ -150,7 +150,7 @@ public final class RdapSearchPattern {
* Creates a SearchPattern using the provided domain search pattern in LDH or Unicode format.
*
* The domain search pattern can have a single wildcard asterix that can match 0 or more
- * charecters. If such an asterix exists - it must be at the end of a domain label.
+ * characters. If such an asterix exists - it must be at the end of a domain label.
*
* In theory, according to RFC 9082 4.1 - we should make some checks about partial matching in
* unicode queries. We don't, but we might want to just disable partial matches for unicode inputs
diff --git a/core/src/main/java/google/registry/rdap/RdapUtils.java b/core/src/main/java/google/registry/rdap/RdapUtils.java
index d925d4f9c..6ceca11e1 100644
--- a/core/src/main/java/google/registry/rdap/RdapUtils.java
+++ b/core/src/main/java/google/registry/rdap/RdapUtils.java
@@ -37,7 +37,7 @@ public final class RdapUtils {
*
* Used for RDAP Technical Implementation Guide 2.4.2 - search of registrar by the fn element.
*
- * For convenience, we use case insensitive search.
+ * For convenience, we use case-insensitive search.
*/
static Optional