Hi Scott,

On Wed, Oct 09, 2024 at 11:57:09AM +0000, Hollenbeck, Scott wrote:
> In another thread focused on the extensions draft, I was asked
> "Would you like regext to revisit Reverse Search?" That prompted me
> to take another look at the draft. It currently defines five
> extension identifiers (two for path segments, two for result data
> structures, and one for something else) for this single extension,
> none of which are used as described in Standard 95.
> 
> I don't understand why it's insufficient to register a single
> extension identifier, such as "rs", that can be used as a prefix for
> the path segment and result data structures. Using examples from the
> draft, that single identifier could be used like this:
> 
> rs_ips?name=XXXX
> rs_autnums?handle=XXXX
> rs_autnums?name=XXXX
> rs_ips/rirSearch1/<relation>/<IP address>
> rs_autnums/rirSearch1/<relation>/<autonomous system number or range>
> rs_domains/rirSearch1/<relation>/<domain name>
> "rs_ipSearchResults: []"
> "rs_autnumSearchResults: []"

It's true that the draft could take this approach instead.  There are
several reasons why we went with the multiple-identifier approach:

 - Basic IP and ASN searches are a unique category of functionality,
   because the core documents define the object classes, but without
   the searches.  Prefixing the basic searches with "rs_" (or similar)
   may be confusing for users who would expect consistency with the
   other core object types in this respect.

 - Reverse search registrations
   
(https://www.iana.org/assignments/rdap-reverse-search/rdap-reverse-search.xhtml)
   contain two resource types:

   "searchable-resource-type":  It MUST be one of the resource types for
      search defined in Section 3.2 of [RFC9082] (i.e., "domains",
      "nameservers", and "entities") or a resource type extension.

   "related-resource-type":  It MUST be one of the resource types for
      lookup defined in Section 3.1 of [RFC9082] (i.e., "domain",
      "nameserver", "entity", "ip", and "autnum") or a resource type
      extension.

   Because these two values are used as path segments, an extension
   defining a new resource type (object class) for use with reverse
   search must register singular and plural forms as extension
   identifiers.  This is fine for a completely new object type, but
   for IP objects and ASNs, the singular form is already defined
   without a prefix.  If a prefixed form (e.g. "rs_ips") has to be
   used for the searchable resource type, that could be confusing for
   users.  (This is very similar to the previous point.)

 - If the document defines a single extension identifier, and uses
   that as a path prefix, a user could accidentally infer that the
   extension itself defines or has some control over the core object
   type, even though that's not the case.

Although this approach goes against some of the text from 9082 and
9083, there are a couple of reasons why we thought that that would be
OK in this situation:

 - Per earlier comments, RFC 9536 (reverse search) uses its bare
   identifier as a path segment, and RFC 9537 (redacted) uses its bare
   identifier as a response member, so there was some precedent for
   the usage here.

 - Also per earlier comments, it's difficult to see how bare extension
   identifiers in paths or responses could cause problems in practice.
   It's true (e.g.) that there could be a client that, in reliance on
   section 6 of RFC 9082, rejects a user's attempted RDAP requests
   where the request path is non-standard and does not begin with an
   extension identifier followed by an underscore, but that would be
   an exceptionally strict approach to take, given that the client can
   simply send the request to the server and see what happens.  With
   the response members, the constraints are SHOULDs, and clients are
   to ignore unrecognised JSON members in any event, so it doesn't
   seem like bare identifiers would cause any issues there either.  On
   the server side, as you noted, as long as requests can be handled
   unambiguously, there shouldn't be any (operational/practical)
   problems.

> There is no collision with the "ip" and "autnum" path segments from
> 9082 because those values are singular.  This draft uses the plural
> forms "ips" and "autnums".

Just in case others are reading this and wondering why plurals are
used, it's because they give consistency with the core specifications,
which use "domains", "nameservers", and "entities" for the paths for
the basic searches for those object types. 

> If there's some reason that the above is invalid, please explain
> why. The "rirSearch1" identifier appears in path segments and the
> rdapConformance data structure, but I don't see how it actually
> identifies an extension element unless it's intended to disambiguate
> the "domains" search collision I noted above. If that's the case,
> use of the extension prefix to create "rs_domains" would avoid the
> collision entirely.

That's right, but in that case we would probably still use the
extension identifier under the basic search paths anyway, to simplify
the registration of subsequent extensions under those basic searches.

(Assuming that this document progresses past WGLC with the current
approach, we'll include details about this issue in the shepherd
writeup, per your request.)

-Tom

_______________________________________________
regext mailing list -- regext@ietf.org
To unsubscribe send an email to regext-le...@ietf.org

Reply via email to