<!-- 
RSS generated by JIRA (1001.0.0-SNAPSHOT#100246-sha1:7a5c50119eb0633d306e14180817ddef5e80c75d) at Thu Feb 08 23:23:26 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-2814] Investigate use of &quot;id&quot; keyword and &quot;$ref&quot; keyword in JSON Schema</title>
                <link>https://folio-org.atlassian.net/browse/FOLIO-2814</link>
                <project id="10290" key="FOLIO">FOLIO</project>
                    <description>&lt;p&gt;The current set of JSON Schema files have no &quot;id&quot; keyword, and use the &quot;$ref&quot; keyword with a relative pathname to link between parent schema and child schema files.&lt;/p&gt;

&lt;p&gt;That configuration does operate successfully with the current RAML Module Builder RMB, and with the &quot;lint-raml&quot; facility in FOLIO CI to assess the RAML/JSON Schema.&lt;/p&gt;

&lt;p&gt;That &quot;lint-raml&quot; facility uses the &quot;raml-1-parser&quot; (i.e. &lt;a href=&quot;https://github.com/raml-org/raml-js-parser-2&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;raml-js-parser-2&lt;/a&gt; current version v1.1.67) and its dependency, the schema validator &lt;a href=&quot;https://github.com/zaggino/z-schema&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;z-schema&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;z-schema can also be &lt;a href=&quot;https://dev.folio.org/guides/module-descriptor/#maintenance&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;used independently&lt;/a&gt; to validate these schema, and to assess examples against their schema.&lt;/p&gt;

&lt;p&gt;However &lt;a href=&quot;https://github.com/ajv-validator/ajv&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;ajv&lt;/a&gt; cannot be utilised, as it requires &quot;id&quot; keyword in the schema.&lt;/p&gt;

&lt;p&gt;Also the new AMF tools for processing RAML/Schema (see 
    &lt;span class=&quot;jira-issue-macro resolved&quot; data-jira-key=&quot;FOLIO-2792&quot; &gt;
                &lt;a href=&quot;https://folio-org.atlassian.net/browse/FOLIO-2792&quot; class=&quot;jira-issue-macro-key issue-link&quot;  title=&quot;Investigate AMF &amp;quot;validate&amp;quot; facility to ensure reliable project RAML/Schema files&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-2792
        &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;
 e.g. amf-client-js and webapi-parser) seem to require &quot;id&quot; keywords in some cases.&lt;/p&gt;

&lt;p&gt;Conduct some investigations to potentially improve this situation.&lt;/p&gt;</description>
                <environment></environment>
        <key id="80024">FOLIO-2814</key>
            <summary>Investigate use of &quot;id&quot; keyword and &quot;$ref&quot; keyword in JSON Schema</summary>
                <type id="10003" iconUrl="https://folio-org.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10318?size=medium">Task</type>
                                            <priority id="10005" iconUrl="https://dev.folio.org/assets/jira-priority/tbd.svg">TBD</priority>
                        <status id="3" iconUrl="https://folio-org.atlassian.net/images/icons/statuses/inprogress.png" description="This issue is being actively worked on at the moment by the assignee.">In Progress</status>
                    <statusCategory id="4" key="indeterminate" colorName="yellow"/>
                                    <resolution id="-1">Unresolved</resolution>
                                                        <assignee accountid="61cd0ca0bce5e00069e98be7">David Crossley</assignee>
                                                                <reporter accountid="61cd0ca0bce5e00069e98be7">David Crossley</reporter>
                                    <labels>
                            <label>raml</label>
                    </labels>
                <created>Thu, 1 Oct 2020 06:54:13 +0000</created>
                <updated>Fri, 9 Oct 2020 04:19:41 +0000</updated>
                                                                                <due></due>
                            <votes>0</votes>
                                    <watches>1</watches>
                                                                <comments>
                                                            <comment id="190841" author="61cd0ca0bce5e00069e98be7" created="Fri, 9 Oct 2020 04:17:56 +0000"  >&lt;p&gt;The use of &quot;$ref&quot; to link between parent and child JSON Schema has been a bane of our project.&lt;/p&gt;

&lt;p&gt;There are many other FOLIO Jira tickets related to this general issue about &quot;$ref&quot;. They are difficult to find with Jira limited search. This &lt;a href=&quot;https://folio-org.atlassian.net/issues/?jql=text%20~%20%22%24ref%22%20and%20text%20~%20%22schema%22&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;search gets close&lt;/a&gt;.&lt;br/&gt;
To assist, here are some of the main ones (no special order): 
    &lt;span class=&quot;jira-issue-macro resolved&quot; data-jira-key=&quot;RMB-203&quot; &gt;
                &lt;a href=&quot;https://folio-org.atlassian.net/browse/RMB-203&quot; class=&quot;jira-issue-macro-key issue-link&quot;  title=&quot;$ref should follow the JSON schema spec&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;
            RMB-203
        &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;RMB-56&quot; &gt;
                &lt;a href=&quot;https://folio-org.atlassian.net/browse/RMB-56&quot; class=&quot;jira-issue-macro-key issue-link&quot;  title=&quot;Dereference $ref in RAML schema&quot; &gt;
            &lt;img class=&quot;icon&quot; src=&quot;https://folio-org.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10322?size=medium&quot; /&gt;
            RMB-56
        &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-1220&quot; &gt;
                &lt;a href=&quot;https://folio-org.atlassian.net/browse/FOLIO-1220&quot; class=&quot;jira-issue-macro-key issue-link&quot;  title=&quot;Ensure that all necessary schemas are declared in RAML files&quot; &gt;
            &lt;img class=&quot;icon&quot; src=&quot;https://folio-org.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10303?size=medium&quot; /&gt;
            FOLIO-1220
        &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;RMB-30&quot; &gt;
                &lt;a href=&quot;https://folio-org.atlassian.net/browse/RMB-30&quot; class=&quot;jira-issue-macro-key issue-link&quot;  title=&quot;Trouble with a schema file referring to another schema in raml-util&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;
            RMB-30
        &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-573&quot; &gt;
                &lt;a href=&quot;https://folio-org.atlassian.net/browse/FOLIO-573&quot; class=&quot;jira-issue-macro-key issue-link&quot;  title=&quot;Use a consistent method for RAML to refer to a parent JSON schema which refers to another JSON schema&quot; &gt;
            &lt;img class=&quot;icon&quot; src=&quot;https://folio-org.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10303?size=medium&quot; /&gt;
            FOLIO-573
        &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-1040&quot; &gt;
                &lt;a href=&quot;https://folio-org.atlassian.net/browse/FOLIO-1040&quot; class=&quot;jira-issue-macro-key issue-link&quot;  title=&quot;Tidy and clarify shared raml-util and each raml-using repo&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-1040
        &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;There are also many other places that refer to the complexities of &quot;$ref&quot; and &quot;id&quot;. This is a list of some:&lt;br/&gt;
&lt;a href=&quot;https://github.com/ajv-validator/ajv#ref&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;https://github.com/ajv-validator/ajv#ref&lt;/a&gt; &#8211; Combining schemas with $ref&lt;br/&gt;
&lt;a href=&quot;https://github.com/json-schema-org/json-schema-spec/issues/66&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;https://github.com/json-schema-org/json-schema-spec/issues/66&lt;/a&gt; &#8211; Determine behavior of $ref&lt;br/&gt;
&lt;a href=&quot;https://github.com/json-schema-org/json-schema-spec/issues/160&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;https://github.com/json-schema-org/json-schema-spec/issues/160&lt;/a&gt; &#8211; Simplify schema re-use&lt;/p&gt;</comment>
                                                            <comment id="190845" author="61cd0ca0bce5e00069e98be7" created="Fri, 9 Oct 2020 04:18:38 +0000"  >&lt;p&gt;With the aforementioned FOLIO tickets, we settled on the use of &quot;pathname&quot; and avoiding the use of dotdots (&quot;../&quot;) &amp;#8211; so child schema would be below their parent schema.&lt;/p&gt;

&lt;p&gt;One aspect that helped, is to have the shared &quot;&lt;a href=&quot;https://github.com/folio-org/raml&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;raml-util&lt;/a&gt;&quot; submodule inside the &quot;ramls&quot; directory (i.e. ramls/raml-util).&lt;/p&gt;

&lt;p&gt;Now there are also various other shared RAML/Schema git submodules, so it has become even more complex.&lt;/p&gt;</comment>
                                                            <comment id="190848" author="61cd0ca0bce5e00069e98be7" created="Fri, 9 Oct 2020 04:19:41 +0000"  >&lt;p&gt;Adding &quot;id&quot; keyword to schema is difficult in some cases where the same schema is referenced from different places.&lt;/p&gt;

&lt;p&gt;So handling that task in small chunks.&lt;/p&gt;

&lt;p&gt;One that was easier to handle was 
    &lt;span class=&quot;jira-issue-macro resolved&quot; data-jira-key=&quot;OKAPI-914&quot; &gt;
                &lt;a href=&quot;https://folio-org.atlassian.net/browse/OKAPI-914&quot; class=&quot;jira-issue-macro-key issue-link&quot;  title=&quot;Enable standalone schema validation of ModuleDescriptor&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;
            OKAPI-914
        &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;
 for schema related to ModuleDescriptor etc. That set of schema is self-contained. Now ajv validator can be used there.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10003">
                    <name>Relates</name>
                                            <outwardlinks description="relates to">
                                        <issuelink>
            <issuekey id="54279">OKAPI-914</issuekey>
        </issuelink>
                            </outwardlinks>
                                                                <inwardlinks description="relates to">
                                        <issuelink>
            <issuekey id="81798">FOLIO-2792</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </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="10155"><![CDATA[FOLIO DevOps]]></customfieldvalue>

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

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_10020" key="com.pyxis.greenhopper.jira:gh-sprint">
                        <customfieldname>Sprint</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    </customfields>
    </item>
</channel>
</rss>