-
Proposal:
Hide
Start a "Validation" vocabulary with the following:
<Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="Validation.1.0.0">
<Term Name="Pattern" Type="Edm.String">
<Annotation Term="OData.Description" String="The pattern that a string property or parameter must match."/>
</Term>
<Term Name="Minimum" Type="Edm.Decimal">
<Annotation Term="OData.Description" String="Minimum value that a numeric property or parameter can have."/>
</Term>
<Term Name="Maximum" Type="Edm.Decimal">
<Annotation Term="OData.Description" String="Maximum value that a numeric property or parameter can have."/>
</Term>
</Schema>
plus new term, "Validation.Exclusive", that can be applied to Validation.Minimum and Validataion.Maximum..
Show
Start a "Validation" vocabulary with the following:
<Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="Validation.1.0.0">
<Term Name="Pattern" Type="Edm.String">
<Annotation Term="OData.Description" String="The pattern that a string property or parameter must match."/>
</Term>
<Term Name="Minimum" Type="Edm.Decimal">
<Annotation Term="OData.Description" String="Minimum value that a numeric property or parameter can have."/>
</Term>
<Term Name="Maximum" Type="Edm.Decimal">
<Annotation Term="OData.Description" String="Maximum value that a numeric property or parameter can have."/>
</Term>
</Schema>
plus new term, "Validation.Exclusive", that can be applied to Validation.Minimum and Validataion.Maximum..
-
Resolution:
Show
https://tools.oasis-open.org/version-control/browse/wsvn/odata/trunk/spec/vocabularies/Org.OData.Validation.V1.xml?rev=744
These would map to equivalent concepts in JSON Schema.
{"report":{"apdex":1,"isInitial":true,"journeyId":"8eecfb47-899a-4953-9257-448014f17603","key":"jira.project.issue.view-issue","navigationType":0,"readyForUser":529.6999998092651,"redirectCount":0,"resourceLoadedEnd":548.7999997138977,"resourceLoadedStart":119.7999997138977,"resourceTiming":[{"duration":5.599999904632568,"initiatorType":"link","name":"https://issues.oasis-open.org/s/3edeca31ab9ba77980aae0809fbe7121-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/0a4716d29b2d5b1bdcdb168b4efc119e/_/download/contextbatch/css/_super/batch.css","startTime":119.7999997138977,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":119.7999997138977,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":125.39999961853027,"responseStart":0,"secureConnectionStart":0},{"duration":10.900000095367432,"initiatorType":"link","name":"https://issues.oasis-open.org/s/7d2823769c2e7b66e860863fe879b7f8-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/9aebb1c0aaa4c36289529757ec9dbb54/_/download/contextbatch/css/project.issue.navigator,jira.view.issue,jira.global,atl.general,-_super/batch.css?agile_global_admin_condition=true&jag=true&jira.create.linked.issue=true&richediton=true","startTime":120.19999980926514,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":120.19999980926514,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":131.09999990463257,"responseStart":0,"secureConnectionStart":0},{"duration":11.800000190734863,"initiatorType":"link","name":"https://issues.oasis-open.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/8.0.5/_/download/batch/com.atlassian.auiplugin:split_aui.pattern.label/com.atlassian.auiplugin:split_aui.pattern.label.css","startTime":120.39999961853027,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":120.39999961853027,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":132.19999980926514,"responseStart":0,"secureConnectionStart":0},{"duration":11.699999809265137,"initiatorType":"link","name":"https://issues.oasis-open.org/s/645acc233eb869f48a571293b8358a7d-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/1.0/_/download/batch/jira.webresources:global-static-adgs/jira.webresources:global-static-adgs.css","startTime":120.59999990463257,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":120.59999990463257,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":132.2999997138977,"responseStart":0,"secureConnectionStart":0},{"duration":11.600000381469727,"initiatorType":"link","name":"https://issues.oasis-open.org/s/a0dd6509771c1de0667aae5429c04cda-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/1.0/_/download/batch/jira.webresources:global-static/jira.webresources:global-static.css","startTime":120.89999961853027,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":120.89999961853027,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":132.5,"responseStart":0,"secureConnectionStart":0},{"duration":60.30000019073486,"initiatorType":"script","name":"https://issues.oasis-open.org/s/e5479157e7a0c08b005e6522f2f04104-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/0a4716d29b2d5b1bdcdb168b4efc119e/_/download/contextbatch/js/_super/batch.js?locale=en-US","startTime":121.19999980926514,"connectEnd":121.19999980926514,"connectStart":121.19999980926514,"domainLookupEnd":121.19999980926514,"domainLookupStart":121.19999980926514,"fetchStart":121.19999980926514,"redirectEnd":0,"redirectStart":0,"requestStart":121.19999980926514,"responseEnd":181.5,"responseStart":181.5,"secureConnectionStart":121.19999980926514},{"duration":202.09999990463257,"initiatorType":"script","name":"https://issues.oasis-open.org/s/83514d5d4e8543747b02042eafcdc99c-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/9aebb1c0aaa4c36289529757ec9dbb54/_/download/contextbatch/js/project.issue.navigator,jira.view.issue,jira.global,atl.general,-_super/batch.js?agile_global_admin_condition=true&jag=true&jira.create.linked.issue=true&locale=en-US&richediton=true","startTime":121.7999997138977,"connectEnd":121.7999997138977,"connectStart":121.7999997138977,"domainLookupEnd":121.7999997138977,"domainLookupStart":121.7999997138977,"fetchStart":121.7999997138977,"redirectEnd":0,"redirectStart":0,"requestStart":121.7999997138977,"responseEnd":323.8999996185303,"responseStart":323.8999996185303,"secureConnectionStart":121.7999997138977},{"duration":204.40000009536743,"initiatorType":"script","name":"https://issues.oasis-open.org/s/70bb2263e59e7e1f04fbd137c80b895b-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/aae1242f5fc81cc6a5bb8bc963ccda29/_/download/contextbatch/js/atl.global,-_super/batch.js?locale=en-US","startTime":121.89999961853027,"connectEnd":121.89999961853027,"connectStart":121.89999961853027,"domainLookupEnd":121.89999961853027,"domainLookupStart":121.89999961853027,"fetchStart":121.89999961853027,"redirectEnd":0,"redirectStart":0,"requestStart":121.89999961853027,"responseEnd":326.2999997138977,"responseStart":326.2999997138977,"secureConnectionStart":121.89999961853027},{"duration":204.69999980926514,"initiatorType":"script","name":"https://issues.oasis-open.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/1.0/_/download/batch/jira.webresources:calendar-en/jira.webresources:calendar-en.js","startTime":122.09999990463257,"connectEnd":122.09999990463257,"connectStart":122.09999990463257,"domainLookupEnd":122.09999990463257,"domainLookupStart":122.09999990463257,"fetchStart":122.09999990463257,"redirectEnd":0,"redirectStart":0,"requestStart":122.09999990463257,"responseEnd":326.7999997138977,"responseStart":326.7999997138977,"secureConnectionStart":122.09999990463257},{"duration":204.80000019073486,"initiatorType":"script","name":"https://issues.oasis-open.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/1.0/_/download/batch/jira.webresources:calendar-localisation-moment/jira.webresources:calendar-localisation-moment.js","startTime":122.39999961853027,"connectEnd":122.39999961853027,"connectStart":122.39999961853027,"domainLookupEnd":122.39999961853027,"domainLookupStart":122.39999961853027,"fetchStart":122.39999961853027,"redirectEnd":0,"redirectStart":0,"requestStart":122.39999961853027,"responseEnd":327.19999980926514,"responseStart":327.19999980926514,"secureConnectionStart":122.39999961853027},{"duration":204.90000009536743,"initiatorType":"script","name":"https://issues.oasis-open.org/s/cda37faab827dbdf305de8efe8282062-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/8.0.5/_/download/batch/com.atlassian.auiplugin:split_aui.pattern.label/com.atlassian.auiplugin:split_aui.pattern.label.js?locale=en-US","startTime":122.59999990463257,"connectEnd":122.59999990463257,"connectStart":122.59999990463257,"domainLookupEnd":122.59999990463257,"domainLookupStart":122.59999990463257,"fetchStart":122.59999990463257,"redirectEnd":0,"redirectStart":0,"requestStart":122.59999990463257,"responseEnd":327.5,"responseStart":327.5,"secureConnectionStart":122.59999990463257},{"duration":208.5,"initiatorType":"link","name":"https://issues.oasis-open.org/s/07245784f53abc49bad9d9d4d36c577a-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/cadc4f20cc5c138dee060d42cf85f220/_/download/contextbatch/css/jira.global.look-and-feel,-_super/batch.css","startTime":122.69999980926514,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":122.69999980926514,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":331.19999980926514,"responseStart":0,"secureConnectionStart":0},{"duration":205.10000038146973,"initiatorType":"script","name":"https://issues.oasis-open.org/rest/api/1.0/shortcuts/803004/a29179d70fa8562374ee16707692af77/shortcuts.js?context=issuenavigation&context=issueaction","startTime":122.89999961853027,"connectEnd":122.89999961853027,"connectStart":122.89999961853027,"domainLookupEnd":122.89999961853027,"domainLookupStart":122.89999961853027,"fetchStart":122.89999961853027,"redirectEnd":0,"redirectStart":0,"requestStart":122.89999961853027,"responseEnd":328,"responseStart":328,"secureConnectionStart":122.89999961853027},{"duration":179.69999980926514,"initiatorType":"link","name":"https://issues.oasis-open.org/s/f77fd89aa211a76b20e9b0e63564383c-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/4a9288299d147101bf66484f4be48925/_/download/contextbatch/css/com.atlassian.jira.projects.sidebar.init,-_super,-jira.view.issue,-project.issue.navigator/batch.css?jira.create.linked.issue=true&richediton=true","startTime":151.69999980926514,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":151.69999980926514,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":331.3999996185303,"responseStart":0,"secureConnectionStart":0},{"duration":176.59999990463257,"initiatorType":"script","name":"https://issues.oasis-open.org/s/41525c48ddceeb9b11e54085268fc285-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/4a9288299d147101bf66484f4be48925/_/download/contextbatch/js/com.atlassian.jira.projects.sidebar.init,-_super,-jira.view.issue,-project.issue.navigator/batch.js?jira.create.linked.issue=true&locale=en-US&richediton=true","startTime":152,"connectEnd":152,"connectStart":152,"domainLookupEnd":152,"domainLookupStart":152,"fetchStart":152,"redirectEnd":0,"redirectStart":0,"requestStart":152,"responseEnd":328.59999990463257,"responseStart":328.59999990463257,"secureConnectionStart":152},{"duration":186.80000019073486,"initiatorType":"script","name":"https://issues.oasis-open.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/1.0/_/download/batch/jira.webresources:bigpipe-js/jira.webresources:bigpipe-js.js","startTime":161.89999961853027,"connectEnd":161.89999961853027,"connectStart":161.89999961853027,"domainLookupEnd":161.89999961853027,"domainLookupStart":161.89999961853027,"fetchStart":161.89999961853027,"redirectEnd":0,"redirectStart":0,"requestStart":161.89999961853027,"responseEnd":348.69999980926514,"responseStart":348.69999980926514,"secureConnectionStart":161.89999961853027},{"duration":168.09999990463257,"initiatorType":"script","name":"https://issues.oasis-open.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/1.0/_/download/batch/jira.webresources:bigpipe-init/jira.webresources:bigpipe-init.js","startTime":184,"connectEnd":184,"connectStart":184,"domainLookupEnd":184,"domainLookupStart":184,"fetchStart":184,"redirectEnd":0,"redirectStart":0,"requestStart":184,"responseEnd":352.09999990463257,"responseStart":352.09999990463257,"secureConnectionStart":184},{"duration":19.40000009536743,"initiatorType":"xmlhttprequest","name":"https://issues.oasis-open.org/rest/webResources/1.0/resources","startTime":363.59999990463257,"connectEnd":363.59999990463257,"connectStart":363.59999990463257,"domainLookupEnd":363.59999990463257,"domainLookupStart":363.59999990463257,"fetchStart":363.59999990463257,"redirectEnd":0,"redirectStart":0,"requestStart":363.59999990463257,"responseEnd":383,"responseStart":383,"secureConnectionStart":363.59999990463257},{"duration":81,"initiatorType":"script","name":"https://issues.oasis-open.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/be9ff0efea54a6453d2ac60b92912a09/_/download/contextbatch/js/browser-metrics-plugin.contrib,-_super,-project.issue.navigator,-jira.view.issue,-atl.general/batch.js?agile_global_admin_condition=true&jag=true&jira.create.linked.issue=true&richediton=true","startTime":409.09999990463257,"connectEnd":409.09999990463257,"connectStart":409.09999990463257,"domainLookupEnd":409.09999990463257,"domainLookupStart":409.09999990463257,"fetchStart":409.09999990463257,"redirectEnd":0,"redirectStart":0,"requestStart":409.09999990463257,"responseEnd":490.09999990463257,"responseStart":490.09999990463257,"secureConnectionStart":409.09999990463257},{"duration":101.89999961853027,"initiatorType":"script","name":"https://issues.oasis-open.org/s/fae9f5fde9b05432c72bed202556f5fb-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/0f62074d64a5f8b40a9c54a9164c6288/_/download/contextbatch/js/jira.rich.editor.api,jira.project.sidebar,jira.rich.editor,-_super,-jira.view.issue,-jira.global,-atl.general,-com.atlassian.jira.projects.sidebar.init,-project.issue.navigator/batch.js?agile_global_admin_condition=true&jag=true&jira.create.linked.issue=true&locale=en-US&richediton=true","startTime":409.5,"connectEnd":409.5,"connectStart":409.5,"domainLookupEnd":409.5,"domainLookupStart":409.5,"fetchStart":409.5,"redirectEnd":0,"redirectStart":0,"requestStart":409.5,"responseEnd":511.3999996185303,"responseStart":511.3999996185303,"secureConnectionStart":409.5},{"duration":104.90000009536743,"initiatorType":"script","name":"https://issues.oasis-open.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/4.0.25/_/download/resources/com.atlassian.jira.plugins.jira-editor-plugin:tinymce/tinymce.js?batch=false","startTime":411.09999990463257,"connectEnd":411.09999990463257,"connectStart":411.09999990463257,"domainLookupEnd":411.09999990463257,"domainLookupStart":411.09999990463257,"fetchStart":411.09999990463257,"redirectEnd":0,"redirectStart":0,"requestStart":411.09999990463257,"responseEnd":516,"responseStart":516,"secureConnectionStart":411.09999990463257},{"duration":105.59999990463257,"initiatorType":"script","name":"https://issues.oasis-open.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/4.0.25/_/download/resources/com.atlassian.jira.plugins.jira-editor-plugin:tinymce/tinymce-amd.js?batch=false","startTime":411.5,"connectEnd":411.5,"connectStart":411.5,"domainLookupEnd":411.5,"domainLookupStart":411.5,"fetchStart":411.5,"redirectEnd":0,"redirectStart":0,"requestStart":411.5,"responseEnd":517.0999999046326,"responseStart":517.0999999046326,"secureConnectionStart":411.5},{"duration":105.7000002861023,"initiatorType":"script","name":"https://issues.oasis-open.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/4.0.25/_/download/resources/com.atlassian.jira.plugins.jira-editor-plugin:tinymce/themes/modern/theme.js?batch=false","startTime":411.8999996185303,"connectEnd":411.8999996185303,"connectStart":411.8999996185303,"domainLookupEnd":411.8999996185303,"domainLookupStart":411.8999996185303,"fetchStart":411.8999996185303,"redirectEnd":0,"redirectStart":0,"requestStart":411.8999996185303,"responseEnd":517.5999999046326,"responseStart":517.5999999046326,"secureConnectionStart":411.8999996185303}],"threshold":1000,"fetchStart":0,"domainLookupStart":10,"domainLookupEnd":10,"connectStart":10,"connectEnd":60,"secureConnectionStart":34,"requestStart":60,"responseStart":110,"responseEnd":183,"domLoading":114,"domInteractive":631,"domContentLoadedEventStart":631,"domContentLoadedEventEnd":680,"domComplete":742,"loadEventStart":742,"loadEventEnd":744,"userAgent":"Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)","marks":[],"measures":[],"correlationId":"aa7aaf88ddd8b5","effectiveType":"4g","downlink":9.3,"rtt":0,"serverDuration":89,"dbReadsTimeInMs":12,"dbConnsTimeInMs":14,"applicationHash":"4d4040e0714d65b7fffa4801569d014c0b16eaa9","experiments":[]}}
JSON Schema "minimum" and "maximum" allow JSON numbers. Shouldn't we rather use Type="Edm.PrimitiveType" to reflect this? Which is of course more generic than "number", but we don't have an abstract type for that yet.
Also JSON Schema has "exclusiveMinimum" and "exclusiveMaximum" to allow open intervals. We could make Minimum and Maximum structured annotations based on the same complex type
<ComplexType Name="Limit">
<Property Name="Value" Type="Edm.PrimitiveType" Nullable="false" /> <!-- or Edm.Number -->
<Property Name="Exclusive" Type="Edm.Boolean" Nullable="false" DefaultValue="false" />
</ComplexType>