<!-- 
RSS generated by JIRA (1001.0.0-SNAPSHOT#100246-sha1:7a5c50119eb0633d306e14180817ddef5e80c75d) at Fri Feb 09 00:13:35 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>[MODOAIPMH-1] OAI-PMH: Define API</title>
                <link>https://folio-org.atlassian.net/browse/MODOAIPMH-1</link>
                <project id="10151" key="MODOAIPMH">mod-oai-pmh</project>
                    <description>&lt;p&gt;1. RAML&lt;br/&gt;
2. Schemas&lt;br/&gt;
3. RMB&lt;br/&gt;
4. Module Descriptor&lt;/p&gt;

&lt;p&gt;At the end of this story we&apos;ll have a skeleton in place with stub methods&lt;/p&gt;</description>
                <environment></environment>
        <key id="64657">MODOAIPMH-1</key>
            <summary>OAI-PMH: Define API</summary>
                <type id="10005" iconUrl="https://folio-org.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10309?size=medium">Story</type>
                            <parent id="10625">UXPROD-993</parent>
                                    <priority id="10001" iconUrl="https://dev.folio.org/assets/jira-priority/jira-p2.svg">P2</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="5af5ecdb772036612ff61cf1">Hkaplanian</assignee>
                                                                <reporter accountid="5af5ecdb772036612ff61cf1">Hkaplanian</reporter>
                                    <labels>
                            <label>sprint48</label>
                    </labels>
                <created>Fri, 28 Sep 2018 17:19:36 +0000</created>
                <updated>Wed, 14 Nov 2018 11:21:57 +0000</updated>
                            <resolved>Fri, 12 Oct 2018 13:18:47 +0000</resolved>
                                                    <fixVersion>1.0.0</fixVersion>
                                        <due></due>
                            <votes>0</votes>
                                    <watches>4</watches>
                                                                                                            <comments>
                                                            <comment id="157130" author="5cf6c546b87c300f36eb7b9a" created="Fri, 5 Oct 2018 13:03:06 +0000"  >&lt;p&gt;&lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=5cf6c546b87c300f36eb7b9a&quot; class=&quot;user-hover&quot; rel=&quot;5cf6c546b87c300f36eb7b9a&quot; data-account-id=&quot;5cf6c546b87c300f36eb7b9a&quot; accountid=&quot;5cf6c546b87c300f36eb7b9a&quot; rel=&quot;noreferrer&quot;&gt;Craig McNally&lt;/a&gt; check with Vince to see if the backend module needs to follow the oai-pmh spec, or if the API can be split up into various endpoints...&lt;/p&gt;</comment>
                                                            <comment id="157131" author="5cf6c546b87c300f36eb7b9a" created="Fri, 5 Oct 2018 14:00:20 +0000"  >&lt;p&gt;I discussed with Vince and we agree it makes sense to split up the API into multiple endpoints.  One thing that occurred to me was that doing so allows for fine-grained permissions, whereas using a single endpoint would only allow for all-or-nothing permissions.&lt;/p&gt;

&lt;p&gt;The endpoints should be as RESTful as possible...&lt;/p&gt;

&lt;p&gt;e.g. &lt;tt&gt;GET /oai2?verb=GetRecord&lt;/tt&gt; on the edge should map to something like &lt;tt&gt;GET /record&lt;/tt&gt; in the module.&lt;/p&gt;</comment>
                                                            <comment id="157132" author="712020:1b666af5-3f06-4de1-a8ec-5d6d52541b8e" created="Tue, 9 Oct 2018 10:33:24 +0000"  >&lt;p&gt;Hi &lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=5cf6c546b87c300f36eb7b9a&quot; class=&quot;user-hover&quot; rel=&quot;5cf6c546b87c300f36eb7b9a&quot; data-account-id=&quot;5cf6c546b87c300f36eb7b9a&quot; accountid=&quot;5cf6c546b87c300f36eb7b9a&quot; rel=&quot;noreferrer&quot;&gt;Craig McNally&lt;/a&gt;,&lt;/p&gt;

&lt;p&gt;I&apos;ve got a couple of questions about response part of the OAI-PMH endpoints.&lt;/p&gt;

&lt;p&gt;&lt;ins&gt;Edge API&lt;/ins&gt;&lt;br/&gt;
The specification does not provide strict rules as to how to utilize HTTP codes. Generally (and looking at other implementations, e.g. &lt;a href=&quot;http://export.arxiv.org/oai2?verb=nastyVerb&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;http://export.arxiv.org/oai2?verb=nastyVerb&lt;/a&gt;), &quot;200 OK&quot; is usually utilized in all scenarios. In event of an error, the body includes the &lt;b&gt;XML&lt;/b&gt; response containing OAI-PMH error element with OAI specific error code.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Do we want/need to follow this approach in edge API?&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;ins&gt;Back-end module API&lt;/ins&gt;&lt;br/&gt;
With an intention to make the back-end endpoints as RESTful as possible, there are at least 2 ways to return errors to Edge module:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;always return &quot;200 OK&quot; status code with OAI-PMH XML in the response (error element with OAI-PMH error code)&lt;/li&gt;
	&lt;li&gt;return different status codes for specific error cases (e.g. 400 for badResumptionToken, 404 for idDoesNotExist, etc.) with OAI-PMH XML in the response (error element with OAI-PMH error code)
	&lt;ul&gt;
		&lt;li&gt;XML body is still required here, because &lt;b&gt;not&lt;/b&gt; all OAI codes clearly map to specific HTTP codes so that Edge can translate it.&lt;/li&gt;
	&lt;/ul&gt;
	&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&lt;b&gt;What would be the preferable option here?&lt;/b&gt;&lt;/p&gt;
</comment>
                                                            <comment id="157133" author="5cf6c546b87c300f36eb7b9a" created="Tue, 9 Oct 2018 12:00:05 +0000"  >&lt;p&gt;My gut feeling is that we should return applicable 4XX/5XX response codes,  I&apos;ll take a look at the error codes and try to provide advice on error code -&amp;gt; http status code mappings...  e.g.&lt;/p&gt;

&lt;p&gt;400 for badVerb, badResumptionToken, badArgument&lt;br/&gt;
404 for idDoesNotExist, noRecordsMatch&lt;br/&gt;
422 for cannotDisseminateFormat, noMetadataFormats&lt;br/&gt;
501 for noSetHierarchy - should never happen in our case since we do support sets (at least the &quot;all&quot; set initially)&lt;/p&gt;</comment>
                                                            <comment id="157134" author="712020:1b666af5-3f06-4de1-a8ec-5d6d52541b8e" created="Fri, 12 Oct 2018 11:34:37 +0000"  >&lt;p&gt;Hi &lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=5af5ecdb772036612ff61cf1&quot; class=&quot;user-hover&quot; rel=&quot;5af5ecdb772036612ff61cf1&quot; data-account-id=&quot;5af5ecdb772036612ff61cf1&quot; accountid=&quot;5af5ecdb772036612ff61cf1&quot; rel=&quot;noreferrer&quot;&gt;Hkaplanian&lt;/a&gt;,&lt;br/&gt;
the story is completed and ready for review.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10003">
                    <name>Relates</name>
                                            <outwardlinks description="relates to">
                                        <issuelink>
            <issuekey id="10253">UXPROD-350</issuekey>
        </issuelink>
                            </outwardlinks>
                                                        </issuelinktype>
                    </issuelinks>
                <attachments>
                    </attachments>
                <subtasks>
                            <subtask id="64647">MODOAIPMH-3</subtask>
                            <subtask id="64649">MODOAIPMH-4</subtask>
                            <subtask id="64652">MODOAIPMH-5</subtask>
                            <subtask id="64656">MODOAIPMH-6</subtask>
                    </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="10185"><![CDATA[Thunderjet]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10014" key="com.pyxis.greenhopper.jira:gh-epic-link">
                        <customfieldname>Epic Link</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue key="$xmlutils.escape($text)">OAI-PMH Support</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            <customfield id="customfield_10019" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0|hzyyo7:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_10020" key="com.pyxis.greenhopper.jira:gh-sprint">
                        <customfieldname>Sprint</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue id="1628">oai-pmh - sprint 48</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_10044" key="com.atlassian.jira.plugin.system.customfieldtypes:float">
                        <customfieldname>Story Points</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>8.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                <customfield id="customfield_10024" key="com.atlassian.jira.ext.charting:firstresponsedate">
                        <customfieldname>[CHART] Date of First Response</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Fri, 5 Oct 2018 13:03:06 +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>