-
Proposal:
Hide
Clients can explicitly select a set of properties through $select, and can specify $select=* for all structural properties.
Services must return all selected properties and can return other non-selected properties.
In the absence of a select, the service returns a default set of properties that must include all key properties.
Any time the service returns less than the full set of properties (either because the client specified a select or because the service returned a subset of properties in the absence of a select) the metadata url must reflect the set of selected properties.
If a select is present in a metadata url, it must include all expanded navigation properties.
Accepted: https://www.oasis-open.org/committees/download.php/49447/odata-meeting-40_on-20130606-minutes.html#odata-316
Show
Clients can explicitly select a set of properties through $select, and can specify $select=* for all structural properties.
Services must return all selected properties and can return other non-selected properties.
In the absence of a select, the service returns a default set of properties that must include all key properties.
Any time the service returns less than the full set of properties (either because the client specified a select or because the service returned a subset of properties in the absence of a select) the metadata url must reflect the set of selected properties.
If a select is present in a metadata url, it must include all expanded navigation properties.
Accepted: https://www.oasis-open.org/committees/download.php/49447/odata-meeting-40_on-20130606-minutes.html#odata-316
-
Resolution:
Show
https://www.oasis-open.org/committees/download.php/49613/odata-v4.0-wd02-part1-protocol-2013-06-19.docx
https://tools.oasis-open.org/version-control/browse/wsvn/odata/trunk/spec/vocabularies/Org.OData.Core.V1.xml?rev=377
https://tools.oasis-open.org/version-control/browse/wsvn/odata/trunk/spec/vocabularies/Org.OData.Capabilities.V1.xml?rev=379
https://www.oasis-open.org/committees/download.php/49614/odata-v4.0-wd02-part2-url-conventions-2013-06-19.docx
https://tools.oasis-open.org/version-control/browse/wsvn/odata/trunk/spec/ABNF/odata-abnf-construction-rules.txt?rev=380
https://tools.oasis-open.org/version-control/browse/wsvn/odata/trunk/spec/ABNF/odata-abnf-testcases.xml?rev=380
https://www.oasis-open.org/committees/download.php/49615/odata-v4.0-wd02-part3-csdl-2013-06-19.docx
https://tools.oasis-open.org/version-control/browse/wsvn/odata/trunk/spec/schemas/edmx.xsd?rev=357
https://tools.oasis-open.org/version-control/browse/wsvn/odata/trunk/spec/schemas/edm.xsd?rev=377
https://tools.oasis-open.org/version-control/browse/wsvn/odata/trunk/spec/schemas/MetadataService.edmx?rev=374
https://www.oasis-open.org/committees/download.php/49611/odata-atom-format-v4.0-wd02-2013-06-19.docx
https://tools.oasis-open.org/version-control/browse/wsvn/odata/trunk/spec/schemas/metadata.xsd?rev=382
https://www.oasis-open.org/committees/download.php/49612/odata-json-format-v4.0-wd02-2013-06-19.docx
Properties not present in a request payload are already interpreted as having the default value (if defined in $metadata) or the null value (if nullable and without default value).
Why not allow the same for responses.
{"report":{"apdex":1,"isInitial":true,"journeyId":"f745d9fe-d11e-4540-adae-53038fe94720","key":"jira.project.issue.view-issue","navigationType":0,"readyForUser":628.5,"redirectCount":0,"resourceLoadedEnd":609.8999996185303,"resourceLoadedStart":210.09999990463257,"resourceTiming":[{"duration":6,"initiatorType":"link","name":"https://issues.oasis-open.org/s/3edeca31ab9ba77980aae0809fbe7121-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/0a4716d29b2d5b1bdcdb168b4efc119e/_/download/contextbatch/css/_super/batch.css","startTime":210.09999990463257,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":210.09999990463257,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":216.09999990463257,"responseStart":0,"secureConnectionStart":0},{"duration":6.300000190734863,"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":210.39999961853027,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":210.39999961853027,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":216.69999980926514,"responseStart":0,"secureConnectionStart":0},{"duration":6.799999713897705,"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":210.59999990463257,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":210.59999990463257,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":217.39999961853027,"responseStart":0,"secureConnectionStart":0},{"duration":7.700000286102295,"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":210.7999997138977,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":210.7999997138977,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":218.5,"responseStart":0,"secureConnectionStart":0},{"duration":8.199999809265137,"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":211,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":211,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":219.19999980926514,"responseStart":0,"secureConnectionStart":0},{"duration":50.40000009536743,"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":211.2999997138977,"connectEnd":211.2999997138977,"connectStart":211.2999997138977,"domainLookupEnd":211.2999997138977,"domainLookupStart":211.2999997138977,"fetchStart":211.2999997138977,"redirectEnd":0,"redirectStart":0,"requestStart":211.2999997138977,"responseEnd":261.69999980926514,"responseStart":261.69999980926514,"secureConnectionStart":211.2999997138977},{"duration":76.7000002861023,"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":211.89999961853027,"connectEnd":211.89999961853027,"connectStart":211.89999961853027,"domainLookupEnd":211.89999961853027,"domainLookupStart":211.89999961853027,"fetchStart":211.89999961853027,"redirectEnd":0,"redirectStart":0,"requestStart":211.89999961853027,"responseEnd":288.59999990463257,"responseStart":288.59999990463257,"secureConnectionStart":211.89999961853027},{"duration":78.7999997138977,"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":212.09999990463257,"connectEnd":212.09999990463257,"connectStart":212.09999990463257,"domainLookupEnd":212.09999990463257,"domainLookupStart":212.09999990463257,"fetchStart":212.09999990463257,"redirectEnd":0,"redirectStart":0,"requestStart":212.09999990463257,"responseEnd":290.8999996185303,"responseStart":290.8999996185303,"secureConnectionStart":212.09999990463257},{"duration":79.09999990463257,"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":212.2999997138977,"connectEnd":212.2999997138977,"connectStart":212.2999997138977,"domainLookupEnd":212.2999997138977,"domainLookupStart":212.2999997138977,"fetchStart":212.2999997138977,"redirectEnd":0,"redirectStart":0,"requestStart":212.2999997138977,"responseEnd":291.3999996185303,"responseStart":291.3999996185303,"secureConnectionStart":212.2999997138977},{"duration":79.30000019073486,"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":212.39999961853027,"connectEnd":212.39999961853027,"connectStart":212.39999961853027,"domainLookupEnd":212.39999961853027,"domainLookupStart":212.39999961853027,"fetchStart":212.39999961853027,"redirectEnd":0,"redirectStart":0,"requestStart":212.39999961853027,"responseEnd":291.69999980926514,"responseStart":291.69999980926514,"secureConnectionStart":212.39999961853027},{"duration":79.5,"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":212.59999990463257,"connectEnd":212.59999990463257,"connectStart":212.59999990463257,"domainLookupEnd":212.59999990463257,"domainLookupStart":212.59999990463257,"fetchStart":212.59999990463257,"redirectEnd":0,"redirectStart":0,"requestStart":212.59999990463257,"responseEnd":292.09999990463257,"responseStart":292.09999990463257,"secureConnectionStart":212.59999990463257},{"duration":79.7000002861023,"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":212.7999997138977,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":212.7999997138977,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":292.5,"responseStart":0,"secureConnectionStart":0},{"duration":79.5,"initiatorType":"script","name":"https://issues.oasis-open.org/rest/api/1.0/shortcuts/803004/a29179d70fa8562374ee16707692af77/shortcuts.js?context=issuenavigation&context=issueaction","startTime":213,"connectEnd":213,"connectStart":213,"domainLookupEnd":213,"domainLookupStart":213,"fetchStart":213,"redirectEnd":0,"redirectStart":0,"requestStart":213,"responseEnd":292.5,"responseStart":292.5,"secureConnectionStart":213},{"duration":160.5,"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":244.69999980926514,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":244.69999980926514,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":405.19999980926514,"responseStart":0,"secureConnectionStart":0},{"duration":48.5,"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":244.89999961853027,"connectEnd":244.89999961853027,"connectStart":244.89999961853027,"domainLookupEnd":244.89999961853027,"domainLookupStart":244.89999961853027,"fetchStart":244.89999961853027,"redirectEnd":0,"redirectStart":0,"requestStart":244.89999961853027,"responseEnd":293.3999996185303,"responseStart":293.3999996185303,"secureConnectionStart":244.89999961853027},{"duration":152.19999980926514,"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":256.19999980926514,"connectEnd":256.19999980926514,"connectStart":256.19999980926514,"domainLookupEnd":256.19999980926514,"domainLookupStart":256.19999980926514,"fetchStart":256.19999980926514,"redirectEnd":0,"redirectStart":0,"requestStart":256.19999980926514,"responseEnd":408.3999996185303,"responseStart":408.3999996185303,"secureConnectionStart":256.19999980926514},{"duration":133.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":277.2999997138977,"connectEnd":277.2999997138977,"connectStart":277.2999997138977,"domainLookupEnd":277.2999997138977,"domainLookupStart":277.2999997138977,"fetchStart":277.2999997138977,"redirectEnd":0,"redirectStart":0,"requestStart":277.2999997138977,"responseEnd":410.3999996185303,"responseStart":410.3999996185303,"secureConnectionStart":277.2999997138977},{"duration":18.5,"initiatorType":"xmlhttprequest","name":"https://issues.oasis-open.org/rest/webResources/1.0/resources","startTime":472.7999997138977,"connectEnd":472.7999997138977,"connectStart":472.7999997138977,"domainLookupEnd":472.7999997138977,"domainLookupStart":472.7999997138977,"fetchStart":472.7999997138977,"redirectEnd":0,"redirectStart":0,"requestStart":472.7999997138977,"responseEnd":491.2999997138977,"responseStart":491.2999997138977,"secureConnectionStart":472.7999997138977},{"duration":19.5,"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":574.5,"connectEnd":574.5,"connectStart":574.5,"domainLookupEnd":574.5,"domainLookupStart":574.5,"fetchStart":574.5,"redirectEnd":0,"redirectStart":0,"requestStart":574.5,"responseEnd":594,"responseStart":594,"secureConnectionStart":574.5},{"duration":21.90000009536743,"initiatorType":"script","name":"https://issues.oasis-open.org/s/8dbb665766273a8e5e49159503d3c6a9-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/ea7e7a11d1f628533837874704f9a54d/_/download/contextbatch/js/jira.rich.editor.api,jira.rich.editor,-_super,-jira.view.issue,-jira.global,-atl.general,-project.issue.navigator/batch.js?agile_global_admin_condition=true&jag=true&jira.create.linked.issue=true&locale=en-US&richediton=true","startTime":575.0999999046326,"connectEnd":575.0999999046326,"connectStart":575.0999999046326,"domainLookupEnd":575.0999999046326,"domainLookupStart":575.0999999046326,"fetchStart":575.0999999046326,"redirectEnd":0,"redirectStart":0,"requestStart":575.0999999046326,"responseEnd":597,"responseStart":597,"secureConnectionStart":575.0999999046326},{"duration":32.69999980926514,"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":575.5999999046326,"connectEnd":575.5999999046326,"connectStart":575.5999999046326,"domainLookupEnd":575.5999999046326,"domainLookupStart":575.5999999046326,"fetchStart":575.5999999046326,"redirectEnd":0,"redirectStart":0,"requestStart":575.5999999046326,"responseEnd":608.2999997138977,"responseStart":608.1999998092651,"secureConnectionStart":575.5999999046326},{"duration":33.299999713897705,"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":576,"connectEnd":576,"connectStart":576,"domainLookupEnd":576,"domainLookupStart":576,"fetchStart":576,"redirectEnd":0,"redirectStart":0,"requestStart":576,"responseEnd":609.2999997138977,"responseStart":609.2999997138977,"secureConnectionStart":576},{"duration":33.299999713897705,"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":576.5999999046326,"connectEnd":576.5999999046326,"connectStart":576.5999999046326,"domainLookupEnd":576.5999999046326,"domainLookupStart":576.5999999046326,"fetchStart":576.5999999046326,"redirectEnd":0,"redirectStart":0,"requestStart":576.5999999046326,"responseEnd":609.8999996185303,"responseStart":609.8999996185303,"secureConnectionStart":576.5999999046326}],"threshold":1000,"fetchStart":0,"domainLookupStart":100,"domainLookupEnd":100,"connectStart":100,"connectEnd":150,"secureConnectionStart":125,"requestStart":150,"responseStart":202,"responseEnd":277,"domLoading":205,"domInteractive":688,"domContentLoadedEventStart":688,"domContentLoadedEventEnd":734,"domComplete":830,"loadEventStart":830,"loadEventEnd":833,"userAgent":"Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)","marks":[],"measures":[],"correlationId":"81a7fd3bdebe8d","effectiveType":"4g","downlink":10,"rtt":0,"serverDuration":97,"dbReadsTimeInMs":11,"dbConnsTimeInMs":14,"applicationHash":"4d4040e0714d65b7fffa4801569d014c0b16eaa9","experiments":[]}}
Assuming that the value of omitted properties is null or default values seems dangerous.
There may be multiple reasons that a service omits values; there may be permissions issues, certain properties may be expensive compute, etc.
We should say that, in the absence of $select, services may return a subset of properties defined in the $metadata. If $select is specified, each property must be returned or an error generated.
Client should never make assumptions about missing properties.