<!-- 
RSS generated by JIRA (1001.0.0-SNAPSHOT#100246-sha1:7a5c50119eb0633d306e14180817ddef5e80c75d) at Thu Feb 08 23:09:53 UTC 2024

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary add field=key&field=summary to the URL of your request.
-->
<rss version="0.92" >
<channel>
    <title>FOLIO Jira</title>
    <link>https://folio-org.atlassian.net</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-us</language>    <build-info>
        <version>1001.0.0-SNAPSHOT</version>
        <build-number>100246</build-number>
        <build-date>07-02-2024</build-date>
    </build-info>

<item>
            <title>[FOLIO-972] The regex pattern for UUID in schemas does not completely allow mixed-case characters</title>
                <link>https://folio-org.atlassian.net/browse/FOLIO-972</link>
                <project id="10290" key="FOLIO">FOLIO</project>
                    <description>&lt;p&gt;To ensure good API docs i regularly run &apos;raml-cop&apos;. It ensures that RAMLs and schema are well-configured and it validates the examples.&lt;/p&gt;

&lt;p&gt;I am finding UUIDs in examples that are not matching their defined regex. Investigation shows that that pattern does not allow fully mixed-case UUIDs.&lt;/p&gt;</description>
                <environment></environment>
        <key id="80433">FOLIO-972</key>
            <summary>The regex pattern for UUID in schemas does not completely allow mixed-case characters</summary>
                <type id="10001" iconUrl="https://folio-org.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10303?size=medium">Bug</type>
                                            <priority id="10002" iconUrl="https://dev.folio.org/assets/jira-priority/jira-p3.svg">P3</priority>
                        <status id="6" iconUrl="https://folio-org.atlassian.net/images/icons/statuses/closed.png" description="The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.">Closed</status>
                    <statusCategory id="3" key="done" colorName="green"/>
                                    <resolution id="10003">Done</resolution>
                                                        <assignee accountid="-1">Unassigned</assignee>
                                                                <reporter accountid="61cd0ca0bce5e00069e98be7">David Crossley</reporter>
                                    <labels>
                            <label>raml</label>
                    </labels>
                <created>Thu, 7 Dec 2017 06:20:07 +0000</created>
                <updated>Fri, 12 Jun 2020 10:43:34 +0000</updated>
                            <resolved>Fri, 12 Jun 2020 10:43:34 +0000</resolved>
                                                                        <due></due>
                            <votes>0</votes>
                                    <watches>6</watches>
                                                    <timespent seconds="38400">1 day, 2 hours, 40 minutes</timespent>
                                <comments>
                                                            <comment id="190987" author="61cd0ca0bce5e00069e98be7" created="Thu, 7 Dec 2017 06:22:07 +0000"  >&lt;p&gt;Some investigation:&lt;/p&gt;

&lt;p&gt;Searched Jira for &quot;uuid regex&quot;: 
    &lt;span class=&quot;jira-issue-macro resolved&quot; data-jira-key=&quot;FOLIO-399&quot; &gt;
                &lt;a href=&quot;https://folio-org.atlassian.net/browse/FOLIO-399&quot; class=&quot;jira-issue-macro-key issue-link&quot;  title=&quot;primary keys / resource creation&quot; &gt;
            &lt;img class=&quot;icon&quot; src=&quot;https://folio-org.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10318?size=medium&quot; /&gt;
            FOLIO-399
        &lt;/a&gt;
                                                    &lt;span class=&quot;aui-lozenge aui-lozenge-subtle aui-lozenge-success jira-macro-single-issue-export-pdf&quot;&gt;Closed&lt;/span&gt;
            &lt;/span&gt;
 
    &lt;span class=&quot;jira-issue-macro resolved&quot; data-jira-key=&quot;FOLIO-592&quot; &gt;
                &lt;a href=&quot;https://folio-org.atlassian.net/browse/FOLIO-592&quot; class=&quot;jira-issue-macro-key issue-link&quot;  title=&quot;meta-data section in FOLIO records (createdDate, updatedDate, creator, etc)&quot; &gt;
            &lt;img class=&quot;icon&quot; src=&quot;https://folio-org.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10318?size=medium&quot; /&gt;
            FOLIO-592
        &lt;/a&gt;
                                                    &lt;span class=&quot;aui-lozenge aui-lozenge-subtle aui-lozenge-success jira-macro-single-issue-export-pdf&quot;&gt;Closed&lt;/span&gt;
            &lt;/span&gt;
 
    &lt;span class=&quot;jira-issue-macro resolved&quot; data-jira-key=&quot;UIREQ-1&quot; &gt;
                &lt;a href=&quot;https://folio-org.atlassian.net/browse/UIREQ-1&quot; class=&quot;jira-issue-macro-key issue-link&quot;  title=&quot;Requests: View Request Details v1&quot; &gt;
            &lt;img class=&quot;icon&quot; src=&quot;https://folio-org.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10309?size=medium&quot; /&gt;
            UIREQ-1
        &lt;/a&gt;
                                                    &lt;span class=&quot;aui-lozenge aui-lozenge-subtle aui-lozenge-success jira-macro-single-issue-export-pdf&quot;&gt;Closed&lt;/span&gt;
            &lt;/span&gt;
&lt;/p&gt;

&lt;p&gt;Scanned all repositories. There are two unique patterns:&lt;/p&gt;

&lt;p&gt;A:&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;
^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[1-5][a-fA-F0-9]{3}-[89abAB][a-fA-F0-9]{3}-[a-fA-F0-9]{12}$
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;That is only used in&lt;br/&gt;
&lt;a href=&quot;https://github.com/folio-org/mod-circulation/blob/master/ramls/circulation.raml&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;mod-circulation/ramls/circulation.raml&lt;/a&gt;&lt;br/&gt;
where it defines the queryParameters for various IDs.&lt;/p&gt;

&lt;p&gt;B:&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;
^[a-f0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;That is used in the shared raml-util at&lt;br/&gt;
&lt;a href=&quot;https://github.com/folio-org/raml/blob/master/schemas/metadata.schema&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;raml/schemas/metadata.schema&lt;/a&gt;&lt;br/&gt;
and in other schemas for mod-circulation mod-circulation-storage mod-finance mod-orders mod-vendors&lt;/p&gt;

&lt;p&gt;In mod-circulation mod-circulation-storage and in the raml-util, the examples all use lower-case UUIDs.&lt;br/&gt;
So they do satisfy pattern B.&lt;/p&gt;

&lt;p&gt;That regex B does allow mixed-case characters, except for the first portion of the UUID. &lt;br/&gt;
Is that for any specific reason or just an omission?&lt;/p&gt;

&lt;p&gt;This is what causes the raml-cop complaints in the examples of those other modules, where they do have mixed-case UUIDs, and it chokes on the upper-case in the first portion.&lt;/p&gt;

&lt;p&gt;Should pattern B be amended?&lt;/p&gt;</comment>
                                                            <comment id="189013" author="63e2a2771b13d42998e4e706" created="Thu, 7 Dec 2017 10:25:04 +0000"  >&lt;p&gt;&lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=61cd0ca0bce5e00069e98be7&quot; class=&quot;user-hover&quot; rel=&quot;61cd0ca0bce5e00069e98be7&quot; data-account-id=&quot;61cd0ca0bce5e00069e98be7&quot; accountid=&quot;61cd0ca0bce5e00069e98be7&quot; rel=&quot;noreferrer&quot;&gt;David Crossley&lt;/a&gt; Yeah, I think the B style regular expression should be amended to allow uppercase letters in the first section (I don&apos;t recall if there was a reason not to, so it was likely an omission) and the A style use replaced by the amended B style.&lt;/p&gt;

&lt;p&gt;I did a little digging this morning, my interpretation (have quoted what I think is the relevant bit below) of the &lt;a href=&quot;http://www.itu.int/rec/T-REC-X.667/en&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;specification&lt;/a&gt; is that we should generate UUID representations with lowercase letters, yet accept representations with either case (and treat them equivalently I think?) which fits with allowing them in the regular expression.&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;&lt;b&gt;6.5.4&lt;/b&gt; Software generating the hexadecimal representation of a UUID shall not use upper case letters.&lt;br/&gt;
NOTE &#8211; It is recommended that the hexadecimal representation used in all human-readable formats be restricted to lower-case letters. Software processing this representation is, however, required to accept both upper and lower case letters as specified in 6.5.2.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;Aside: can you point me at some of the examples which fail raml-cop, I just ran it on mod-inventory, mod-inventory-storage, mod-circulation and mod-circulation storage and it validated. Do you run it with different parameters? I wonder if the scripts miss some interfaces.&lt;/p&gt;</comment>
                                                            <comment id="189018" author="5f8314dfbdef80006f6f572d" created="Thu, 7 Dec 2017 13:36:10 +0000"  >&lt;p&gt;Good catch &lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=61cd0ca0bce5e00069e98be7&quot; class=&quot;user-hover&quot; rel=&quot;61cd0ca0bce5e00069e98be7&quot; data-account-id=&quot;61cd0ca0bce5e00069e98be7&quot; accountid=&quot;61cd0ca0bce5e00069e98be7&quot; rel=&quot;noreferrer&quot;&gt;David Crossley&lt;/a&gt;!!&lt;/p&gt;</comment>
                                                            <comment id="189020" author="61cd0ca0bce5e00069e98be7" created="Fri, 8 Dec 2017 06:02:30 +0000"  >&lt;p&gt;Marc, all of your examples do pass because they are all lower-case. Try twiddling request.json &quot;id&quot; first segment to see a failure.&lt;/p&gt;

&lt;p&gt;No, there are no other parameters to raml-cop.&lt;/p&gt;</comment>
                                                            <comment id="189022" author="61cd0ca0bce5e00069e98be7" created="Fri, 8 Dec 2017 06:03:02 +0000"  >&lt;p&gt;That is my understanding of UUIDs too. So that (amended) pattern B will ensure a UUID-like string, whereas pattern A ensures a real one.&lt;/p&gt;

&lt;p&gt;I will go ahead and fix that pattern B in the schemas of those various repositories.&lt;/p&gt;

&lt;p&gt;It also involves updating the raml-util in each, with the shared metadata.schema file. Marc, for your repositories, please update that when you are ready.&lt;/p&gt;</comment>
                                                            <comment id="189024" author="61cd0ca0bce5e00069e98be7" created="Mon, 11 Dec 2017 01:45:40 +0000"  >&lt;p&gt;Fixed that pattern B in raml/schemas/metadata.schema and awaiting merge of its &lt;a href=&quot;https://github.com/folio-org/raml/pull/44&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;raml/pull/44&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And fixed in mod-circulation mod-circulation-storage mod-finance mod-vendors.&lt;/p&gt;

&lt;p&gt;Awaiting merge of &quot;dev&quot; branch in mod-orders.&lt;/p&gt;</comment>
                                                            <comment id="189026" author="61cd0ca0bce5e00069e98be7" created="Mon, 11 Dec 2017 01:46:52 +0000"  >&lt;p&gt;&lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=63e2a2771b13d42998e4e706&quot; class=&quot;user-hover&quot; rel=&quot;63e2a2771b13d42998e4e706&quot; data-account-id=&quot;63e2a2771b13d42998e4e706&quot; accountid=&quot;63e2a2771b13d42998e4e706&quot; rel=&quot;noreferrer&quot;&gt;Marc Johnson&lt;/a&gt;, not yet touched the use of pattern A in mod-circulation/ramls/circulation.raml&lt;br/&gt;
Leaving that to you.&lt;/p&gt;</comment>
                                                            <comment id="189028" author="61cd0ca0bce5e00069e98be7" created="Mon, 11 Dec 2017 01:47:49 +0000"  >&lt;p&gt;While investigating this i found that many repositories still just use &quot;string&quot; and no pattern to restrict for IDs. I gather from the linked issues that this is a gradual transition.&lt;/p&gt;</comment>
                                                            <comment id="189030" author="63e2a2771b13d42998e4e706" created="Mon, 11 Dec 2017 09:47:26 +0000"  >&lt;p&gt;&lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=61cd0ca0bce5e00069e98be7&quot; class=&quot;user-hover&quot; rel=&quot;61cd0ca0bce5e00069e98be7&quot; data-account-id=&quot;61cd0ca0bce5e00069e98be7&quot; accountid=&quot;61cd0ca0bce5e00069e98be7&quot; rel=&quot;noreferrer&quot;&gt;David Crossley&lt;/a&gt; Yeah, it is my understanding that retro-fitting UUID validation to existing ID properties is intended to be a gradual thing, given that it is a compatibility breaking change to an interface (even though we should be using valid UUIDs in those properties)&lt;/p&gt;</comment>
                                                            <comment id="189032" author="557058:b8e64633-1f7c-402d-9caf-9959a5ba5d0d" created="Fri, 12 Jun 2020 10:43:34 +0000"  >&lt;p&gt;&lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=61cd0ca0bce5e00069e98be7&quot; class=&quot;user-hover&quot; rel=&quot;61cd0ca0bce5e00069e98be7&quot; data-account-id=&quot;61cd0ca0bce5e00069e98be7&quot; accountid=&quot;61cd0ca0bce5e00069e98be7&quot; rel=&quot;noreferrer&quot;&gt;David Crossley&lt;/a&gt; assuming this is done.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10003">
                    <name>Relates</name>
                                            <outwardlinks description="relates to">
                                        <issuelink>
            <issuekey id="80194">FOLIO-592</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="80098">FOLIO-399</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="81206">FOLIO-2034</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="25659">UIREQ-1</issuekey>
        </issuelink>
                            </outwardlinks>
                                                        </issuelinktype>
                    </issuelinks>
                <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                <customfield id="customfield_10000" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummarycf">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10057" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>Development Team</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10144"><![CDATA[Core: Platform]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_10019" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0|hzy4m7:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_10020" key="com.pyxis.greenhopper.jira:gh-sprint">
                        <customfieldname>Sprint</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_10024" key="com.atlassian.jira.ext.charting:firstresponsedate">
                        <customfieldname>[CHART] Date of First Response</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Thu, 7 Dec 2017 10:25:04 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10025" key="com.atlassian.jira.ext.charting:timeinstatus">
                        <customfieldname>[CHART] Time in Status</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                    </customfields>
    </item>
</channel>
</rss>