<!-- 
RSS generated by JIRA (1001.0.0-SNAPSHOT#100246-sha1:7a5c50119eb0633d306e14180817ddef5e80c75d) at Thu Feb 08 23:15:32 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-1736] SPIKE: When used by clients, JSON schemas with &quot;additionalProperties: false&quot; fail on optional properties</title>
                <link>https://folio-org.atlassian.net/browse/FOLIO-1736</link>
                <project id="10290" key="FOLIO">FOLIO</project>
                    <description>&lt;p&gt;&lt;b&gt;Problem&lt;/b&gt;:&lt;/p&gt;

&lt;p&gt;When a new &lt;b&gt;optional&lt;/b&gt; property is added to the JSON Schema that describes a server-side entity we assume backwards compatibility (minor version increment).&lt;/p&gt;

&lt;p&gt;However, if the very same JSON Schema definition file is used by the client the deserialization will fail due to the fact that FOLIO schemas include &lt;tt&gt;additionalProperties: false&lt;/tt&gt; setting.&lt;/p&gt;

&lt;p&gt;There is a mismatch here that needs to be addressed, some potential approaches include:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;change versioning policy so that even optional properties are considered breaking changes&lt;/li&gt;
	&lt;li&gt;keep separate versions of schemas between servers and clients with the client version being more relaxed&lt;/li&gt;
	&lt;li&gt;override &quot;additionalProperties: false&quot; when any given schema is used in the client context&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;We need to decide on the approach and document it on dev.folio.org&lt;/p&gt;</description>
                <environment></environment>
        <key id="81117">FOLIO-1736</key>
            <summary>SPIKE: When used by clients, JSON schemas with &quot;additionalProperties: false&quot; fail on optional properties</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="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="10000">Won&apos;t Do</resolution>
                                                        <assignee accountid="-1">Unassigned</assignee>
                                                                <reporter accountid="557058:b8e64633-1f7c-402d-9caf-9959a5ba5d0d">Jakub Skoczen</reporter>
                                    <labels>
                            <label>platform-backlog</label>
                    </labels>
                <created>Fri, 25 Jan 2019 11:14:13 +0000</created>
                <updated>Wed, 25 Jan 2023 14:39:52 +0000</updated>
                            <resolved>Wed, 25 Jan 2023 14:39:52 +0000</resolved>
                                                                        <due></due>
                            <votes>0</votes>
                                    <watches>3</watches>
                                                                <comments>
                                                            <comment id="194689" author="5ee89462f7aa140abd82d11d" created="Mon, 11 Feb 2019 13:34:45 +0000"  >&lt;p&gt;When a module only consumes the data from the changed schema it can ignore the new property and having a minor version increment is fine. In this case the module should disable the &lt;tt&gt;additionalProperties: false&lt;/tt&gt; validation.&lt;/p&gt;

&lt;p&gt;When a module acts as a decorator that reads the data, makes some changes (like adding referenced records), and outputs them, the schema for the output needs to be extended by the new property. Both input and output validation should be updated to the new schema and should use the &lt;tt&gt;additionalProperties: false&lt;/tt&gt; validation.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10003">
                    <name>Relates</name>
                                                                <inwardlinks description="relates to">
                                        <issuelink>
            <issuekey id="81116">FOLIO-1735</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="35391">MODUSERBL-64</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="35358">MODUSERBL-89</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="35390">MODUSERBL-65</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="79913">FOLIO-1718</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="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|hzx3o9:hzzw</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_10020" key="com.pyxis.greenhopper.jira:gh-sprint">
                        <customfieldname>Sprint</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue id="994">CP: ready for planning</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_10044" key="com.atlassian.jira.plugin.system.customfieldtypes:float">
                        <customfieldname>Story Points</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>3.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                <customfield id="customfield_10024" key="com.atlassian.jira.ext.charting:firstresponsedate">
                        <customfieldname>[CHART] Date of First Response</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Mon, 11 Feb 2019 13:34:45 +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>