-
Proposal:
Show
Close without action.
Accepted: https://www.oasis-open.org/committees/download.php/48549/odata-meeting-29_on-20130314-minutes.html#odata-177
Section 3 currently states that an entity can be a member of at most one entity set. Given the ability to model entity type hierarchies this restriction seems rather unnatural: "Manager" is a specialization of "Employee", so it seems natural to have two entity sets "Managers" and "Employees", the former being a true subset of the latter, and a new "Manager" entity, POSTed to either set, would automatically appear in both.
Currently the only way to do that is to have an "Employees" entity set and a "Managers" function, with the drawback that the function is not advertised in the service document and thus not consumable in a hypermedia fashion.
{"report":{"apdex":1,"isInitial":true,"journeyId":"1b3f3813-efcc-421a-bae9-bf8161716c39","key":"jira.project.issue.view-issue","navigationType":0,"readyForUser":529.1000003814697,"redirectCount":0,"resourceLoadedEnd":556.5,"resourceLoadedStart":122.10000038146973,"resourceTiming":[{"duration":6.799999713897705,"initiatorType":"link","name":"https://issues.oasis-open.org/s/3edeca31ab9ba77980aae0809fbe7121-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/0a4716d29b2d5b1bdcdb168b4efc119e/_/download/contextbatch/css/_super/batch.css","startTime":122.10000038146973,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":122.10000038146973,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":128.90000009536743,"responseStart":0,"secureConnectionStart":0},{"duration":6.700000286102295,"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":122.5,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":122.5,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":129.2000002861023,"responseStart":0,"secureConnectionStart":0},{"duration":6.699999809265137,"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":122.7000002861023,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":122.7000002861023,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":129.40000009536743,"responseStart":0,"secureConnectionStart":0},{"duration":7.200000286102295,"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":122.90000009536743,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":122.90000009536743,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":130.10000038146973,"responseStart":0,"secureConnectionStart":0},{"duration":7.599999904632568,"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":123.2000002861023,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":123.2000002861023,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":130.80000019073486,"responseStart":0,"secureConnectionStart":0},{"duration":52.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":123.30000019073486,"connectEnd":123.30000019073486,"connectStart":123.30000019073486,"domainLookupEnd":123.30000019073486,"domainLookupStart":123.30000019073486,"fetchStart":123.30000019073486,"redirectEnd":0,"redirectStart":0,"requestStart":123.30000019073486,"responseEnd":175.60000038146973,"responseStart":175.60000038146973,"secureConnectionStart":123.30000019073486},{"duration":70.90000009536743,"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":123.90000009536743,"connectEnd":123.90000009536743,"connectStart":123.90000009536743,"domainLookupEnd":123.90000009536743,"domainLookupStart":123.90000009536743,"fetchStart":123.90000009536743,"redirectEnd":0,"redirectStart":0,"requestStart":123.90000009536743,"responseEnd":194.80000019073486,"responseStart":194.80000019073486,"secureConnectionStart":123.90000009536743},{"duration":72.89999961853027,"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":124.10000038146973,"connectEnd":124.10000038146973,"connectStart":124.10000038146973,"domainLookupEnd":124.10000038146973,"domainLookupStart":124.10000038146973,"fetchStart":124.10000038146973,"redirectEnd":0,"redirectStart":0,"requestStart":124.10000038146973,"responseEnd":197,"responseStart":197,"secureConnectionStart":124.10000038146973},{"duration":73.2999997138977,"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":124.2000002861023,"connectEnd":124.2000002861023,"connectStart":124.2000002861023,"domainLookupEnd":124.2000002861023,"domainLookupStart":124.2000002861023,"fetchStart":124.2000002861023,"redirectEnd":0,"redirectStart":0,"requestStart":124.2000002861023,"responseEnd":197.5,"responseStart":197.5,"secureConnectionStart":124.2000002861023},{"duration":73.59999990463257,"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":124.40000009536743,"connectEnd":124.40000009536743,"connectStart":124.40000009536743,"domainLookupEnd":124.40000009536743,"domainLookupStart":124.40000009536743,"fetchStart":124.40000009536743,"redirectEnd":0,"redirectStart":0,"requestStart":124.40000009536743,"responseEnd":198,"responseStart":198,"secureConnectionStart":124.40000009536743},{"duration":73.7999997138977,"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":124.60000038146973,"connectEnd":124.60000038146973,"connectStart":124.60000038146973,"domainLookupEnd":124.60000038146973,"domainLookupStart":124.60000038146973,"fetchStart":124.60000038146973,"redirectEnd":0,"redirectStart":0,"requestStart":124.60000038146973,"responseEnd":198.40000009536743,"responseStart":198.40000009536743,"secureConnectionStart":124.60000038146973},{"duration":74.19999980926514,"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":124.80000019073486,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":124.80000019073486,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":199,"responseStart":0,"secureConnectionStart":0},{"duration":74.09999990463257,"initiatorType":"script","name":"https://issues.oasis-open.org/rest/api/1.0/shortcuts/803004/a29179d70fa8562374ee16707692af77/shortcuts.js?context=issuenavigation&context=issueaction","startTime":124.90000009536743,"connectEnd":124.90000009536743,"connectStart":124.90000009536743,"domainLookupEnd":124.90000009536743,"domainLookupStart":124.90000009536743,"fetchStart":124.90000009536743,"redirectEnd":0,"redirectStart":0,"requestStart":124.90000009536743,"responseEnd":199,"responseStart":199,"secureConnectionStart":124.90000009536743},{"duration":45.299999713897705,"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":154.2000002861023,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":154.2000002861023,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":199.5,"responseStart":0,"secureConnectionStart":0},{"duration":45.200000286102295,"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":154.5,"connectEnd":154.5,"connectStart":154.5,"domainLookupEnd":154.5,"domainLookupStart":154.5,"fetchStart":154.5,"redirectEnd":0,"redirectStart":0,"requestStart":154.5,"responseEnd":199.7000002861023,"responseStart":199.7000002861023,"secureConnectionStart":154.5},{"duration":52.40000009536743,"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":163.90000009536743,"connectEnd":163.90000009536743,"connectStart":163.90000009536743,"domainLookupEnd":163.90000009536743,"domainLookupStart":163.90000009536743,"fetchStart":163.90000009536743,"redirectEnd":0,"redirectStart":0,"requestStart":163.90000009536743,"responseEnd":216.30000019073486,"responseStart":216.30000019073486,"secureConnectionStart":163.90000009536743},{"duration":138.80000019073486,"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.5,"connectEnd":184.5,"connectStart":184.5,"domainLookupEnd":184.5,"domainLookupStart":184.5,"fetchStart":184.5,"redirectEnd":0,"redirectStart":0,"requestStart":184.5,"responseEnd":323.30000019073486,"responseStart":323.30000019073486,"secureConnectionStart":184.5},{"duration":64.30000019073486,"initiatorType":"xmlhttprequest","name":"https://issues.oasis-open.org/rest/webResources/1.0/resources","startTime":384,"connectEnd":384,"connectStart":384,"domainLookupEnd":384,"domainLookupStart":384,"fetchStart":384,"redirectEnd":0,"redirectStart":0,"requestStart":384,"responseEnd":448.30000019073486,"responseStart":448.30000019073486,"secureConnectionStart":384}],"threshold":1000,"fetchStart":0,"domainLookupStart":18,"domainLookupEnd":18,"connectStart":18,"connectEnd":66,"secureConnectionStart":42,"requestStart":66,"responseStart":114,"responseEnd":184,"domLoading":117,"domInteractive":582,"domContentLoadedEventStart":582,"domContentLoadedEventEnd":628,"domComplete":707,"loadEventStart":707,"loadEventEnd":709,"userAgent":"Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)","marks":[],"measures":[],"correlationId":"f74c0ac937c0a9","effectiveType":"4g","downlink":10,"rtt":0,"serverDuration":90,"dbReadsTimeInMs":11,"dbConnsTimeInMs":14,"applicationHash":"4d4040e0714d65b7fffa4801569d014c0b16eaa9","experiments":[]}}
On second thought I'd prefer to have "MyCustomers", "TopCustomers", "PreferredCustomers", "DelinquentCustomers", "NewCustomers" as first-class citizens directly in the service document, and entity sets are the natural construct for that.
We'd also accept POST on MyCustomers, which will automatically link the customer to the authenticated user.
Servers not being able to accept POST on multiple sets can use the Capabilities vocabulary and annotate exactly one entity set with an InsertRestriction that tells clients not to POST here, or simply only expose models with one entity set per type.
There's no need to restrict all servers.