Re: [regext] Extension Prefixes, JSON Values, and URI Path Segments

Pawel Kowalik <pawel.kowalik@ionos.com> Tue, 10 May 2022 08:17 UTC

Return-Path: <pawel.kowalik@ionos.com>
X-Original-To: regext@ietfa.amsl.com
Delivered-To: regext@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id CF021C159484 for <regext@ietfa.amsl.com>; Tue, 10 May 2022 01:17:44 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.887
X-Spam-Level:
X-Spam-Status: No, score=-1.887 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HTML_MESSAGE=0.001, HTTPS_HTTP_MISMATCH=0.1, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, URIBL_BLOCKED=0.001, URIBL_SBL_A=0.1] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=ionos.com
Received: from mail.ietf.org ([50.223.129.194]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id ZlzzCtSZZVB6 for <regext@ietfa.amsl.com>; Tue, 10 May 2022 01:17:40 -0700 (PDT)
Received: from mail-lj1-x229.google.com (mail-lj1-x229.google.com [IPv6:2a00:1450:4864:20::229]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id C1652C14F723 for <regext@ietf.org>; Tue, 10 May 2022 01:17:39 -0700 (PDT)
Received: by mail-lj1-x229.google.com with SMTP id m23so19939899ljc.0 for <regext@ietf.org>; Tue, 10 May 2022 01:17:39 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ionos.com; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=gZN0xgpq/i5KqC04+sx1iPav4TANu9qSEKSMk+BzUCQ=; b=hTAqyhKkReO6N65MQOprBgSHJSrnBObz6UxsLLTI2boVvVocX2y0rNNTdF3xlauNzE a56+bFjhQ3UqvEJajRcDpfT5Mv+/jshGLkjIKradUmOZbqH/5owMJMQpJ/KnYTRkWNB+ f8AzTGdFf/GOvHxKyRSAawZCLiW8h2pM35h5GI+ti4nnWrj+MHYexO1umP6kKLJ+PjsL vXLPG1m23mCdImTBIklPtZgT2aYEsyp5DegK9Gw4lgwWuDuEJxei9ojUTFZ4VK8e4dMH FltxtQ1zmY3w/EwQosQ8muZ/a+94cTNw5OnDjxS26lIAFBPzhUp8BOerK7VCU/obxNHp lrIQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=gZN0xgpq/i5KqC04+sx1iPav4TANu9qSEKSMk+BzUCQ=; b=FDb2MhmuAGn02yjel8JUzb2eFqFA+CBVrl4vVLzq0JbJjufDXCkwyuco/+kNHLqiAn XCyw2LtzLe5xbVilHQfOvkyQPwwvkBtqVO2lUSVM7i0huOIrNeLmWSPGiacEnCDTvSE0 VZI3FwissPTt29S9hM6pCFHD6BWNSxbZm1HL1YT7W2o4PAR5xfc1ed3jkdNxUDDZhGG9 JdKVBtvNUbK5owPN7CDOLo0MUEp7G857Pxaff70CYANr4OIlr7oeWrxm68hP0SEI8spL lwVga+hn/NA3+49zy975pqepm7wPGNgHQO/Kp8cmVJcn0pj+mfDDh5FtcvkDRGdKQplN LX5g==
X-Gm-Message-State: AOAM532zYxqz0XRfK9fQ+zW51ozvItZE+EtEcvh/7FqqN4K70hJX3bmu j23QNKoqKdv9ZOaHdvdDCMHOMZHbIBWclsQBWwJjuh2M6po=
X-Google-Smtp-Source: ABdhPJxvdom0lyCnsd6O5ZKc2bhWFfkvC8jJA0EHWnATETvwFabILH91QHkbFfGWd0UadEbTbuqxH8gCnWnZvPeBSlQ=
X-Received: by 2002:a2e:580b:0:b0:24f:4e25:f26d with SMTP id m11-20020a2e580b000000b0024f4e25f26dmr12854195ljb.346.1652170657120; Tue, 10 May 2022 01:17:37 -0700 (PDT)
MIME-Version: 1.0
References: <FB800EEF-D2F0-4AF3-85DA-17BAC919C296@arin.net> <d017d757-4f93-5288-72d7-1352822a559e@iit.cnr.it>
In-Reply-To: <d017d757-4f93-5288-72d7-1352822a559e@iit.cnr.it>
From: Pawel Kowalik <pawel.kowalik@ionos.com>
Date: Tue, 10 May 2022 10:17:16 +0200
Message-ID: <CANYDG0saCHuj6qQpS38ZMZxixee1NhpMynzzQkGFGNsbh5AxPQ@mail.gmail.com>
To: Mario Loffredo <mario.loffredo@iit.cnr.it>
Cc: Jasdip Singh <jasdips@arin.net>, "regext@ietf.org" <regext@ietf.org>
Content-Type: multipart/related; boundary="0000000000002075b705dea3f551"
Archived-At: <https://mailarchive.ietf.org/arch/msg/regext/WG6YLmv06StsRazfIpaWdiHD6VM>
Subject: Re: [regext] Extension Prefixes, JSON Values, and URI Path Segments
X-BeenThere: regext@ietf.org
X-Mailman-Version: 2.1.34
Precedence: list
List-Id: Registration Protocols Extensions <regext.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/regext>, <mailto:regext-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/regext/>
List-Post: <mailto:regext@ietf.org>
List-Help: <mailto:regext-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/regext>, <mailto:regext-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 10 May 2022 08:17:44 -0000

> Personally, I'm not in favor of the exact match between all the
aforementioned names and in a
> previous mail I had expressed my opinion about excluding the version
information from that match.

> It seemed to me that such approach could result in better versioning the
RDAP extensions,
> especially those ones (hopefully the most) that wouldn't break the REST
API contract.
I also support excluding the version information from the paths and field
names as a mandatory requirement.
If an extension provides successive version which would break the REST API
contract
it can always choose to include the version number to make a field distinct
from the previous number
(so as an MAY, not MUST).

Kind Regards,
Pawel


On Tue, 10 May 2022 at 10:05, Mario Loffredo <mario.loffredo@iit.cnr.it>
wrote:

> Hi folks,
>
> think we should converge to a widely shared solution as soon as possible.
> There are 4 ongoing drafts about RDAP extensions that are obviously
> involved (and partially blocked).
>
> Anyway, an unambiguous definition of the relationship between the
> extension identifier to be registered by IANA, the names of response
> extensions and URI path segments, and the rdapConformance tags is advisable
> for RDAP implementers.
>
> Personally, I'm not in favor of the exact match between all the
> aforementioned names and in a previous mail I had expressed my opinion
> about excluding the version information from that match.
>
> It seemed to me that such approach could result in better versioning the
> RDAP extensions, especially those ones (hopefully the most) that wouldn't
> break the REST API contract.
>
> Before James's post, I had interpreted that I was the only one supporting
> that approach, hence I had changed both rdap-reverse-search and
> rdap-jscontact.
>
>
> Best,
>
> Mario
>
>
> Il 06/05/2022 17:51, Jasdip Singh ha scritto:
>
> Hello James,
>
>
>
> Please see my comments, marked [JS2].
>
>
>
> Thanks,
>
> Jasdip
>
>
>
> *From: *"Gould, James" <jgould@verisign.com> <jgould@verisign.com>
> *Date: *Friday, May 6, 2022 at 9:25 AM
> *To: *Jasdip Singh <jasdips@arin.net> <jasdips@arin.net>,
> "regext@ietf.org" <regext@ietf.org> <regext@ietf.org> <regext@ietf.org>
> *Subject: *Re: Re: [regext] Extension Prefixes, JSON Values, and URI Path
> Segments
>
>
>
> Jasdip,
>
>
>
> Thanks, I include my responses embedded below prefixed by “JG2 - “.
>
>
>
> --
>
>
>
> JG
>
>
>
>
>
> *James Gould *Fellow Engineer
> jgould@Verisign.com
>
> 703-948-3271
> 12061 Bluemont Way
> Reston, VA 20190
>
> Verisign.com <http://verisigninc.com/>
>
>
>
> *From: *regext <regext-bounces@ietf.org> <regext-bounces@ietf.org> on
> behalf of Jasdip Singh <jasdips@arin.net> <jasdips@arin.net>
> *Date: *Thursday, May 5, 2022 at 6:45 PM
> *To: *"regext@ietf.org" <regext@ietf.org> <regext@ietf.org>
> <regext@ietf.org>
> *Subject: *[EXTERNAL] Re: [regext] Extension Prefixes, JSON Values, and
> URI Path Segments
>
>
>
> Hello James,
>
>
>
> Please find my comments below.
>
>
>
> Thanks,
>
> Jasdip
>
>
>
> *From: *"Gould, James" <jgould@verisign.com> <jgould@verisign.com>
> *Date: *Thursday, May 5, 2022 at 2:46 PM
> *To: *Jasdip Singh <jasdips@arin.net> <jasdips@arin.net>,
> "regext@ietf.org" <regext@ietf.org> <regext@ietf.org> <regext@ietf.org>
> *Subject: *Re: Re: [regext] Extension Prefixes, JSON Values, and URI Path
> Segments
>
>
>
>
>
> *From: *regext <regext-bounces@ietf.org> <regext-bounces@ietf.org> on
> behalf of Jasdip Singh <jasdips@arin.net> <jasdips@arin.net>
> *Date: *Thursday, May 5, 2022 at 1:53 PM
> *To: *"regext@ietf.org" <regext@ietf.org> <regext@ietf.org>
> <regext@ietf.org>
> *Subject: *[EXTERNAL] Re: [regext] Extension Prefixes, JSON Values, and
> URI Path Segments
>
>
>
> Hello James, Scott,
>
>
>
> Should the rdapConformance string not to be an exact match for the
> extension identifier registered with IANA? Per Tom’s earlier note [1], that
> seems to be the case for most, if not all, well-known extensions. If so,
> then the proposed rdapConformance “redacted_level_1_0” won’t match the
> proposed to-be-registered extension “redacted”.
>
>
>
> JG – Based on my read of the RFC language, I don’t believe the
> rdapConformance string needs to exactly match the list of URI path segments
> and JSON members associated with the extension.
>
>
>
> [JS] Though this is not explicitly written anywhere in the standard but
> the “majority” precedence turns out to be an exact match between a
> registered extension identifier and the related rdapConformance string (per
> Tom’s earlier note, all in section “-1” there follow this tight coupling
> whereas those in section “-2” (fred, artRecord, platformNS, and regType for
> centralnic) don’t. Further, section 8.1. RDAP Extensions Registry in RFC
> 7480 says: *“The extension identifier is used as a prefix in JSON names
> and as a prefix of path segments in RDAP URLs.”* That’s the most
> definitive guidance I could find. :)
>
>
>
> JG2 – I believe this is the deepest the discussion has gotten on the
> language of the RDAP Extension Registry and how it relates to the values
> used in the URI path segments, JSON members, and the RDAP Conformance.
> There is a mix of usage based on the lack of clarity in the RFCs.  I don’t
> believe the existing registrations violate the language of the RFCs and the
> proposal I posted to the list meets the language of the RFCs and doesn’t
> invalidate the existing registrations.  The lack of clarity may be an
> opportunity for an update to RFC 7480 for Section 6 “Extensibility” and
> Section 8.1 “RDAP Extensions Registry”.
>
>
>
>   As Tom’s earlier note highlights there is really a mix of prefixes and
> identifiers currently registered in the RDAP Extension Registry.
>
>
>
> [JS] That’s fair but fortunately it seems to me that the ones where the
> rdapConformance string does not match the extension identifier (section
> “-2” (fred, artRecord, platformNS, and regType) in Tom’s note are for one
> only entity (centralnic). The rest (section “-1” in that note) have an
> exact match between the extension identifier and the rdapConformance string.
>
>
>
> JG2 – I believe the best approach to take with this is to ensure that all
> the existing registrations don’t violate the language of the RFC and to
> consider what is the best path forward.  I don’t see any violations with
> the RFCs   Any proposal for moving forward cannot invalidate the existing
> registrations.  Is there a technical advantage to have a single extension
> identifier that exactly matches the URI path segments, JSON members, and
> RDAP Conformance?  I believe the RDAP Conformance provides the signaling
> with supporting an extension, which is represented by an extension
> identifier.  The URI path segments, and the JSON members associated with an
> extension are associated with the registered extension prefixes.  The
> proposal is for the extension to register a versioned identifier for use in
> the RDAP Conformance and zero or more prefixes that are used for the URI
> path segments and JSON members.  For draft-ietf-regext-rdap-redacted, this
> means two RDAP Extension Registry registrations (“redacted_level_1_0”
> identifier used in RDAP Conformance and “redacted” to be used for the JSON
> member).
>
>
>
>   Mixing the signaling in the rdapConformance member, which I believe can
> and should include versioning, with the naming of the URI path segments and
> JSON members is unnecessary coupling.
>
>
>
> [JS] Yah, this I believe is at the heart of our discussion. So far, the
> “majority” precedence seems to point to tighter coupling between the
> extension identifier and the rdapConformance string.
>
>
>
> JG2 - draft-ietf-regext-rdap-redacted is exposing the issue of the past
> coupling, where we’re taking a best practice used in the EPP extensions
> with the use of a pointed identifier.  The pointed version number is
> applicable for the RDAP Conformance for identity (e.g.,
> “redacted_level_0_2”) but is not useful or needed for the JSON member
> “redacted”.
>
>
>
>   For example, what if there is an extension that contains multiple URI
> path elements and JSON members.
>
>
>
> [JS] Turns out we have an exhibit for this precise use case:
> https://bitbucket.org/arin-specs/arin-rdap-originas/src/master/arin-rdap-originas.txt
> <https://secure-web.cisco.com/1Hj540aENSbHyX8Le_IgtTCRWi-6mHtn8E29mqDfuMX1f9EWwcksbghzxvRLcw2IKMh4hhaquRlFe3aEar9VUyiijtz5yzzqHxAhASM92dfGztsSUkBJ0Ehh0ArtRAMo55xggCtFqk8GXk9rTbZ-psckeu0sn8D-Gwpq1STZHfEvFyGV6Fc4Xf6UBNJLqkK6UjGQp0Em2sRfy88vVceek6fZs-CYxtBGYk4B3MNe0vMjPz70PnOmgpMdvvEKsBWbb/https%3A%2F%2Fbitbucket.org%2Farin-specs%2Farin-rdap-originas%2Fsrc%2Fmaster%2Farin-rdap-originas.txt>
> . “arin_originas0” though only is for one entity’s purposes (ARIN) but
> seems like a good example to emulate IMO.
>
>
>
> JG2 – The use of a versioned prefix identifier certainly works.  I
> question the value with having the URI path segment of
> arin_originas0_networksbyorigin and the JSON member
> “arin_originas0_networkSearchResults” instead of simply “networksbyorigin”
> and “networkSearchResults”, respectively.  In the world of XML, this feels
> like we’re merging the namespace URIs with the element names.  It may be
> more of an attempt to define an XML namespace prefix with the element name,
> but there is no clear requirement to include a version, which is handled by
> a namespace URI.  There is no clear separation between the namespace prefix
> and the element name, since both can use underbars.  It’s not well defined
> in the RFCs, clunky (not a technical term), and inflexible to cover a
> variety of use cases.  I would much prefer to ensure that the RDAP
> Conformance represents the versioned identifier and to decouple the
> registered prefixes for the URI path segments and JSON members.
>
>
>
>   We need to ensure that there is signaling of supporting the extension in
> the rdapConformance member and we need to ensure that there is no conflict
> with the URI path segments and the JSON members defined in the extension
> with other extensions.  This can be handled by having registrations for the
> prefix(es) and for the identifier used in the RDAP conformance .
>
>
>
> [JS] Totally agree with avoiding conflicts but AFAIK only extension
> identifiers are registered with IANA and rdapConformance strings “re-use”
> that registered string, exactly in case of tight coupling.
>
>
>
> JG2 – There is nothing in the RFC’s that require the tight coupling, so we
> should not include the tight coupling unless there is some technical
> advantage in doing so.
>
>
>
> [JS2] Yah, this is a good way to think through the benefits of tight
> coupling between a registered extension identifier and the related
> rdapConformance string.
>
>
>
> Section 4.1 RDAP Conformance in RFC 9083 says: “The data structure named
> "rdapConformance" is an array of strings, each providing a hint as to the
> *specifications* used in the construction of the response.” (italics mine)
>
> As we know, the way that happens is that an extension is registered with
> IANA, backed by a spec to alleviate any ambiguity. The above
> “specifications” phrase IMO connotes that tight coupling.
>
> So, let’s say an extension evolves sometime in the future ( hasn’t
> happened yet ;) ). I would wager one would register the next version of
> that extension, again backed by a new spec (perhaps, the previous spec
> altered with the changes).
>
> Now, section 8.1. RDAP Extensions Registry in RFC 7480 says: “*The
> extension identifier is used as a prefix in JSON names and as a prefix of
> path segments in RDAP URLs.*” That points to using the newly versioned
> extension identifier in the member names and URI paths. The rdapConformance
> string, matching the new extension identifier, would signal the new spec
> (provided as part of registering the new version of the extension with
> IANA), per its definition in section 4.1 RDAP Conformance in RFC 9083.
>
>
>
> As to the advantages of having versioned extension identifiers in member
> names and path segments, I can think of on both server and client sides.
> For a server, supporting old and new path segments affords a good
> transition path, providing grace period to clients to switch. As for a
> client, by calling a versioned path segment, it exactly knows which spec
> (registered with IANA) it is processing. (We earlier had a discussion on
> the “brittleness” risk and Mario had shared ways to allay that concern.)
>
>
>
> I also want to re-iterate what Tom had said earlier while discussing this
> vis-à-vis reverse search:
>
>
>
> “As well as guaranteeing that different extensions occupy different
> namespaces, which has other positive effects (e.g. a client seeing an
> unknown rdapConformance value could extract all fields/paths prefixed with
> that rdapConformance value from the response, for further review by a user).
>
> ...
>
> (Assuming the lunarNIC text is incorrect, possibly it can be addressed by
> an erratum, and even if the category 2 extensions can't be changed now, at
> least the set of extensions in that category doesn't have to expand.)”
>
>
>
> Further, shouldn’t the new fields and paths be prefixed with that exact
> same registered extension identifier? If not, then what happens to the
> “redacted” member name when the rdapConformance jumps to the next version,
> say, from redacted_level_1_0 to redacted_level_2_0, with a new child member
> (beside “name”, “path”, “pathLang”, “method”, and “reason”) ?
>
>
>
> JG - The rdapConformance value would reflect “redacted_level_2_0” that
> would then signal support for the new child member.  The “redacted” member
> name itself does not need to change since the version change is signaled
> with the RDAP Conformance value.
>
>
>
> Lastly, discounting strict “semantic versioning” and understanding how a
> minor version might help during the development of an extension, won’t
> simply registering a new extension with the major version help keep things
> simple for our purposes? Also, the “_level” sub-string in an extension
> identifier seems extraneous, no?
>
>
>
> JG – Are you proposing the use of the RDAP Conformance value of
> “redacted_level_1” instead of “redacted_level_1_0”?
>
>
>
> [JS] Yah, no minor version in extension identifier and thereby, in
> rdapConformance string.
>
>
>
> JG2 – Yes, I thought about dropping the trailing “_0”, which can be done.
>
>
>
>   Yes, I agree that the “_level” substring is somewhat extraneous, but it
> is consistent with the scheme used for RDAP with “rdap_level_0”.
>
>
>
> [JS] True but emulating “rdap_level_0” is somewhat tricky since AFAIK it
> is not considered an extension, per the IANA RDAP Extensions registry (
> https://www.iana.org/assignments/rdap-extensions/rdap-extensions.xhtml
> <https://secure-web.cisco.com/1Hnx8cWNS-EKfBU5kvD5UhYNw0qk2WZAYt0xGE_mXBPzb0aa8T88p0z7Wh2YO16-LVubR1a1Xjp9uth_tNRpyRpUAf6crsCzpVRoRS8IEoK9W3c_K18Qwic3AYlRtGEJKYu-gdLroJ5ffBStgA42DeWxUok4qPlXm5-0yGP6X6G6UWCtw0QHxd1e9ZMx7l9LFvOsfEIkh_exPWha-Zvncd1dfLpNil-bDNwaXSRX_w-oUuW81dNMbkxgcTh_V5dYS/https%3A%2F%2Fwww.iana.org%2Fassignments%2Frdap-extensions%2Frdap-extensions.xhtml>
> ).
>
>
>
> JG2 – The extension emulating the value used for the RDAP Conformance by
> the base RFC makes sense to me.  By decoupling the identifier and the
> prefixes of the extension, the identifier can more easily emulate the
> identifier used for the base RFC.
>
>
>
> Trying to reconcile various inputs thus far. :)
>
>
>
> Thanks,
>
> Jasdip
>
>
>
> [1] From Tom’s earlier note:
>
>
>
> - 1.
>
>     - rdapConformance is an exact match for the extension identifier
>
>     - 1.1
>
>         - New fields are prefixed with the extension identifier
>
>         - New paths are prefixed with the extension identifier
>
>             - arin_originas0
>
>     - 1.2
>
>         - New fields are prefixed with the extension identifier
>
>         - No new paths are defined
>
>             - cidr0
>
>             - paging
>
>             - sorting
>
>             - subsetting
>
>     - 1.3
>
>         - rdapConformance is an exact match for the extension identifier
>
>         - No new fields are defined
>
>         - No new paths are defined
>
>             - icann_rdap_response_profile_0
>
>             - icann_rdap_technical_implementation_guide_0
>
>             - nro_rdap_profile_0
>
>             - nro_rdap_profile_asn_flat_0
>
>             - nro_rdap_profile_asn_hierarchical_0
>
>             - rdap_objectTag
>
>             - redirect_with_content
>
>
>
> *From: *regext <regext-bounces@ietf.org> <regext-bounces@ietf.org> on
> behalf of "Gould, James" <jgould=40verisign.com@dmarc.ietf.org>
> <jgould=40verisign.com@dmarc.ietf.org>
> *Date: *Thursday, May 5, 2022 at 11:44 AM
> *To: *"shollenbeck=40verisign.com@dmarc.ietf.org"
> <shollenbeck=40verisign.com@dmarc.ietf.org>
> <shollenbeck=40verisign.com@dmarc.ietf.org>
> <shollenbeck=40verisign.com@dmarc.ietf.org>, "regext@ietf.org"
> <regext@ietf.org> <regext@ietf.org> <regext@ietf.org>
> *Subject: *Re: [regext] Extension Prefixes, JSON Values, and URI Path
> Segments
>
>
>
> Scott and I discussed this offline, and below is a proposal for the RDAP
> Extension Registry registrations that meets the language in the RFCs and
> ensures that there are no conflicts (RFC 7480 “ensure uniqueness of
> extension identifiers”) with the URI paths or JSON members for new RDAP
> extensions.
>
>
>
> 1.      Register any URI path or JSON member prefixes added by the
> extension.  The value may have a null suffix, so the exact value can be
> registered.
>
> a.      Supporting language in the RFCs
>
>                                                               i.      RFC
> 7480
>
> 1.  Prefixes and identifiers SHOULD only consist of the alphabetic
> US-ASCII characters A through Z in both uppercase and lowercase, the
> numerical digits 0 through 9, and the underscore character, and they SHOULD
> NOT begin with an underscore character, numerical digit, or the characters
> “xml”.  The following describes the production of JSON names in ABNF
> [RFC5234]:
>
> a.       name = ALPHA *( ALPHA / DIGIT / “_” )
>
>
>
>  i.      I would more clearly define a custom element (custom URI path or
> custom JSON member) using the ABNF, which does meet the existing RFC 7480
> ABNF:
>
> 1.      element = prefix [ suffix ]
>
> 2.      prefix = name
>
> 3.      suffix = “_” name
>
>                                                             ii.      RFC
> 9083
>
> 1.  When custom JSON values are inserted into responses, conformance to
> those custom specifications MUST use a string prefixed with the appropriate
> identifier from the IANA RDAP Extensions registry specified in [RFC7480]
>
> a.       This normative language is contained in the RDAP Conformance
> section of RFC 9083, but it does cover the JSON members use of the format
> defined above in RFC7480.
>
> b.      Plan for draft-ietf-regext-rdap-redacted
>
>                                                               i.      Registration
> of “redacted” (
> https://datatracker.ietf.org/doc/html/draft-ietf-regext-rdap-redacted#section-6.1
> <https://secure-web.cisco.com/1796EpAjawOweT0aWVjTWHSxJCnbUyYlGmlyFkmK3buAQC1FIBNewEjQWgGeyAxzVSH8p7Q_5Dmr75dHsKyfdoAL82rwCsL_9MwJnQAwjNrtQCOoA1JqRzP_KzmgT41ED2AYJ882jppsHHbQntAGIJNIQDO4anVSd0nQIgzvPX686uDh_ty-yEnkbg5W8n2ua5UBF6wglsmmsS-iJHmiIHI2Vgk-2vz5KDbjTLAVBjCSbSlN13bA3RgTE2axe4df1/https%3A%2F%2Fdatatracker.ietf.org%2Fdoc%2Fhtml%2Fdraft-ietf-regext-rdap-redacted%23section-6.1>)
> and the definition of the “redacted” member (
> https://datatracker.ietf.org/doc/html/draft-ietf-regext-rdap-redacted#section-4.2
> <https://secure-web.cisco.com/1iz7wZlK-1QyOwNfVHNW0ittCmdo9GWIFd-Q2pqFf3K2kh7an0wWWPVz-3vr8LI97wirgGHsSvAOPoq6fBvikLu6InzXXCjIG6Nmj_d_dX9-xMcJ8WpKVF1jOgMaTLU8aL1xn7yVCFm3hZKEPKE6gsWehMBye-a7AW_S0LbBtAAqoxln7IkalNDTFrRpa5PYfgnbUOGvFO1TF6RqgeIhkrABzMcMMbgrQUA1V8ImjAfOeBoXxbuPriMtOf_xD_V1m/https%3A%2F%2Fdatatracker.ietf.org%2Fdoc%2Fhtml%2Fdraft-ietf-regext-rdap-redacted%23section-4.2>
> )
>
> 1.      Register a versioned identifier for use as an RDAP conformance
> value.
>
> a.      Supporting language in the RFCs
>
>                                                               i.      RFC
> 9083
>
> 1.  When custom JSON values are inserted into responses, conformance to
> those custom specifications MUST use a string prefixed with the appropriate
> identifier from the IANA RDAP Extensions registry specified in [RFC7480]
>
> a.       This normative language is contained in the RDAP Conformation
> section of RFC 9083.  The unique identifier can and should be versioned to
> support future updates to the extension.  My recommendation is to use a
> pointed version with the major version set to ‘0’ prior to the draft
> completing WGLC (e.g., “0_1”, “0_2”, “0_N”).   The RDAP Conformance value
> specifies the extension and version supported in the response, where the
> specification defines the prefixes used for the extension URI paths and
> JSON members, and the prefixes are registered to ensure that there is no
> conflict with other extensions.  The RDAP Conformance pattern ABNF could be
> followed:
>
>
>
>  i.      identifier = name “_level_” version
>
>
>
>  ii.      version = DIGIT [ “_” DIGIT ]
>
> b.      Plan for draft-ietf-regext-rdap-redacted
>
>                                                               i.      Registration
> of “redacted_level_DIGIT_DIGIT”, where the RDAP Conformance value of
> “redacted_level_0.2” would be changed to “redacted_level_0_2” until it
> completes WGLC and then would be changed to “redacted_level_1_0”.
>
>
>
> --
>
>
>
> JG
>
>
>
>
>
> *James Gould *Fellow Engineer
> jgould@Verisign.com
>
> 703-948-3271
> 12061 Bluemont Way
> Reston, VA 20190
>
> Verisign.com
> <http://secure-web.cisco.com/1h_MeU-fxy9ww_l8QpyWEogFtgpt9pHmJtLD3prIBto2JjdEmAEDhV2TL_M1r3Din4fgET3PRKfP9eJPDwi-TcN491pg3117xwpYoDSWNXe4DKrUjzG6udUzjzGYuv-EtiMnmSWKUV-_ZnOPGV75wPWKTPAxcLpRQANCk9NkthLn2aSZijYXZywHbGVGfg7zHkGHTAFIcN7z6ESQ4ZeypWZOey8SLzuAtg4omZM_tHkv30DIMqiL0vmG8nWYI7B14/http%3A%2F%2Fverisigninc.com%2F>
>
>
>
> *From: *James Gould <jgould@verisign.com> <jgould@verisign.com>
> *Date: *Monday, May 2, 2022 at 9:42 AM
> *To: *"shollenbeck=40verisign.com@dmarc.ietf.org"
> <shollenbeck=40verisign.com@dmarc.ietf.org>
> <shollenbeck=40verisign.com@dmarc.ietf.org>
> <shollenbeck=40verisign.com@dmarc.ietf.org>, "regext@ietf.org"
> <regext@ietf.org> <regext@ietf.org> <regext@ietf.org>
> *Subject: *Re: [regext] Extension Prefixes, JSON Values, and URI Path
> Segments
>
>
>
> Scott,
>
>
>
> With the potential impacts to draft-ietf-regext-rdap-redacted, I did a
> review of the referenced RFC language for the Extension Prefixes, JSON
> Values, and URI Path Segments.  I provide my interpretation embedded below
> for consideration.  To provide a concrete example of the proposed changes
> to draft-ietf-regext-rdap-redacted, I list them below:
>
>
>
> 1.       For the Extension Prefix, I believe that we need to register the
> “redacted” Extension identifier in the RDAP Extensions Registry instead of
> the versioned value “redacted_X.X”.
>
> 2.       For the RDAP Conformance, as defined in Section 4.1 “RDAP
> Conformance”, I believe that we can follow the pattern of “rdap_level_0”,
> but leverage the pointed version number until the draft exits WGLC.
>
> a.       Change references of “redacted_0.1” to “redacted_level_0.1”;
> although I believe we will need to bump it up to “redacted_level_0.2” based
> on adding the Redaction by Replacement Value Method that will be included
> in draft-ietf-regext-rdap-redacted-04 .
>
> 3.       The “redacted” JSON response member will match the “redacted”
> extension identifier that will be registered in the RDAP Extensions
> Registry.
>
> a.       The language of RFC 9083 “MUST use a string prefixed with the
> appropriate identifier from the IANA RDAP Extensions registry specified in
> [RFC7480].”, I believe the RFC will be met since a registered prefix should
> be able to be combined with a NULL suffix, meaning the member can match the
> registered extension identifier.  The key is that there are no conflicts
> with the members returned in the response, which is handled by the
> registration of the “redacted” extension identifier.
>
>
>
> So, the only required changes to draft-ietf-regext-rdap-redacted is the
> extension identifier registered in the RDAP Extension Registry (“redacted”
> instead of “redacted_X.X”), and the RDAP Conformance value being changed to
> “redacted_level_X.X”.  The RDAP response member can remain “redacted”,
> since it will match the registered extension identifier (e.g., registered
> prefix with NULL suffix).
>
>
>
> --
>
>
>
> JG
>
>
>
>
>
>
>
> James Gould
>
> Fellow Engineer
>
> jgould@Verisign.com
> <applewebdata://13890C55-AAE8-4BF3-A6CE-B4BA42740803/jgould@Verisign.com>
> <applewebdata://13890C55-AAE8-4BF3-A6CE-B4BA42740803/jgould@Verisign.com>
>
>
>
> 703-948-3271
>
> 12061 Bluemont Way
>
> Reston, VA 20190
>
>
>
> Verisign.com <http://verisigninc.com/> <http://verisigninc.com/>
>
>
>
> On 4/28/22, 10:27 AM, "regext on behalf of Hollenbeck, Scott" <regext-bounces@ietf.org
> on behalf of shollenbeck=40verisign.com@dmarc.ietf.org>
> <regext-bounces@ietf.orgonbehalfofshollenbeck=40verisign.com@dmarc.ietf.org>
> wrote:
>
>
>
>     Since this topic is coming up in the reverse search discussion, but
> isn't
>
>     unique to reverse search, I thought it best to start another topic.
>
>
>
>     Section 6 of RFC 7480 introduces the concept of "an IANA registry for
> prefixes
>
>     used in JSON [RFC7159] data serialization and URI path segments (see
> Section
>
>     8)". "lunarNic" is given as an example in Section 8. I cannot, though,
> find
>
>     any mention of a MUST when it comes to using these prefixes for data
>
>     structures or URI path segments, though Section 8.1 says this:
>
>
>
>     "The extension identifier is used as a prefix in JSON names and as a
> prefix of
>
>     path segments in RDAP URLs."
>
>
>
>     RFC 9083 is more definitive. From Section 4.1:
>
>
>
>     "When custom JSON values are inserted into responses, conformance to
> those
>
>     custom specifications MUST use a string prefixed with the appropriate
>
>     identifier from the IANA RDAP Extensions registry specified in
> [RFC7480].  For
>
>     example, if the fictional Registry of the Moon wants to signify that
> their
>
>     JSON responses are conformant with their registered extensions, the
> string
>
>     used might be "lunarNIC_level_0"."
>
>
>
> JG – My interpretation is that the registered extension prefixes used in
> the URI path segments and JSON response members need to be used, but it
> doesn’t specify the suffix that must be used.  The suffix could be NULL,
> and therefore the URI path segment and the JSON response members can match
> the registered extension prefixes.  The reference to “lunarNIC_level_0”
> looks to be relevant for a rdapConformance value, since the rdapConformance
> member has the purpose of signaling conformance in the response, and not
> the names of the RDAP response members themselves.  I believe the goal is
> to ensure that there is no conflict in URI Path Segments and JSON response
> members, which is met based on ensuring to use registered extension
> prefixes, which and I believe most likely will have a null suffix for the
> path segments and JSON response members.
>
>
>
>     Note the use of MUST here. Section 5 of RFC 9082 contains similar text:
>
>
>
>     "Custom path segments can be created for objects not specified here
> using the
>
>     process described in Section 6 of "HTTP Usage in the Registration Data
> Access
>
>     Protocol (RDAP)" [RFC7480].
>
>
>
>     Custom path segments can be created by prefixing the segment with a
> unique
>
>     identifier followed by an underscore character (0x5F). For example, a
> custom
>
>     entity path segment could be created by prefixing "entity" with
> "custom_",
>
>     producing "custom_entity"."
>
>
>
> JG – This is not normative and covers a corner case of define a custom
> object of one that already exists.  Defining a new custom object (e.g.,
> “foo” for the Foo object or “bar” for the Bar object) that doesn’t already
> exist would not require the use of an underscore character, since there
> would be no conflict with other path segments.  The custom path segment
> would match the registered RDAP extension identifier.  A custom entity
> object would not be able to use the path segment “entity”, so instead it
> differentiates the entity path segment using it’s registered extension
> identifier prefix.
>
>
>
>     After re-reading all of this, my take is that extensions MUST tag new
> data
>
>     structures and path segments with the prefix that's registered with
> IANA. That
>
>     means I'm going to have to change the data structures and path
> segments in
>
>     draft-ietf-regext-rdap-openid (I'm probably going to change the
> prefixes to
>
>     something shorter to make them a bit less clunky). Other extension
>
>     authors/editors should review their documents and provide their own
>
>     assessments.
>
>
>
>     Scott
>
>
>
>     _______________________________________________
>
>     regext mailing list
>
>     regext@ietf.org
>
>
> https://secure-web.cisco.com/10mX5xspvc-CplH__kACOPD_MQa73oefUXn9viMqhxjrTvYuTo_t-S7CGnbci1ilq715uayoGpxBTFESCwtUSSzWUMi78Nv4FQfkTsB1MOO6UUM97ePFhV7zZJEmk0lKjItjm799a9SMSdp5Q0Hyfp_sGJDmES9vAI2uRMDbROH-cUeV8EeTbe8nLywXjQOndYdYzCrOCALfOj0sozHZ73hC-GtqysPlWX6PS1P6nVkxuMsRCuAcDcLzDFU0kTTKX/https%3A%2F%2Fwww.ietf.org%2Fmailman%2Flistinfo%2Fregext
>
>
>
> _______________________________________________
> regext mailing listregext@ietf.orghttps://www.ietf.org/mailman/listinfo/regext
>
> --
> Dr. Mario Loffredo
> Technological Unit “Digital Innovation”
> Institute of Informatics and Telematics (IIT)
> National Research Council (CNR)
> via G. Moruzzi 1, I-56124 PISA, Italy
> Phone: +39.0503153497
> Web: http://www.iit.cnr.it/mario.loffredo
>
> _______________________________________________
> regext mailing list
> regext@ietf.org
> https://www.ietf.org/mailman/listinfo/regext
>