-
Proposal:
Hide
Remove the outer object wrapper in the proposed JSON batch format. Add an "atomicityGroup" property; all requests that have the same value for atomicityGroup are processed as an atomic unit. Members with the same atomicityGroup must be adjacent in a request payload. dependsOn can reference an individual request that is not within an atomicityGroup, or the identifier for the atomicityGroup if the request is within an atomicityGroup.
Support server-driven paging in this format.
For an async batch response, the nextLink can return 202 with a location header and retry after.
Show
Remove the outer object wrapper in the proposed JSON batch format. Add an "atomicityGroup" property; all requests that have the same value for atomicityGroup are processed as an atomic unit. Members with the same atomicityGroup must be adjacent in a request payload. dependsOn can reference an individual request that is not within an atomicityGroup, or the identifier for the atomicityGroup if the request is within an atomicityGroup.
Support server-driven paging in this format.
For an async batch response, the nextLink can return 202 with a location header and retry after.
-
Resolution:
Show
https://www.oasis-open.org/committees/download.php/60365/odata-json-format-v4.01-wd02-2017-03-24.docx
In OData-1046 we approved addition of a JSON-format for Batch requests and responses.
In the discussion we considered a format that included groups of requests as top-level JSON objects with common batch options.
We can simplify this proposal by removing this outer grouping and allowing the individual requests to specify that they are part of a particular atomicityGroup. By adding additional semantics (members of an atomicityGroup must be adjacent in a request) we can simplify construction and processing of a batch request.
Example batch request:
POST /v1.0/$batch HTTP/1.1
{
requests: [
{
id: "1",
atomicityGroup: "atom1",
method: "post",
url: "/users",
headers:
{
"Content-Type": "application/json"
}
,
body:
{
displayName: "John Smith",
userPrincipalName: "jsmith@contoso.com"
}
},
{
id: "2",
atomicityGroup: "atom1",
dependsOn: ["1"],
method: "put",
url: "$1/photo",
headers:
{
Content-Type: "image/jpeg"
}
,
body: "FRwvAAIAAAANAA4AFAAhAPNTUAAAAAAAAAAAAAAQUAAAAAAADHrQX+"
},
{
id: "3",
method: "get",
url: "/groups?top=10",
headers:
{
Accept: "application/atom+xml",
}
},
{
id: "4",
dependsOn: ["atom1"],
method: "get",
url: "$1/thumbnail",
headers:
{
Accept: "image/jpeg"
}
}
]
}
{
responses: [
{
id: "1",
status: 201,
headers:
{
Location: "/users/jsmith"
}
},
{
id: "2",
status: 204
}
,
{
id: "3",
status: 406,
error:
{
message: "Atom Format not supported"
}
,
{
id: "4",
status: 200,
headers:
{
Content-Type: "image/jpeg"
}
,
body: "FRwvAAIAAAANAA4AFAAhAPNTUAAAAAAAAAAAAAAQUAAAAAAADHrQX+"
},
}
}
{"report":{"apdex":0,"isInitial":true,"journeyId":"51587625-c864-4c96-9665-9fb8163ffc70","key":"jira.project.issue.view-issue","navigationType":0,"readyForUser":4722.800000190735,"redirectCount":0,"resourceLoadedEnd":4615.400000095367,"resourceLoadedStart":1403.1000003814697,"resourceTiming":[{"duration":1009.6999998092651,"initiatorType":"link","name":"https://issues.oasis-open.org/s/3edeca31ab9ba77980aae0809fbe7121-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/0a4716d29b2d5b1bdcdb168b4efc119e/_/download/contextbatch/css/_super/batch.css","startTime":1403.1000003814697,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":1403.1000003814697,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":2412.800000190735,"responseStart":0,"secureConnectionStart":0},{"duration":1023.0999999046326,"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":1404.6000003814697,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":1404.6000003814697,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":2427.7000002861023,"responseStart":0,"secureConnectionStart":0},{"duration":1021.1999998092651,"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":1407.2000002861023,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":1407.2000002861023,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":2428.4000000953674,"responseStart":0,"secureConnectionStart":0},{"duration":1021.9000000953674,"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":1407.5,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":1407.5,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":2429.4000000953674,"responseStart":0,"secureConnectionStart":0},{"duration":1021.8000001907349,"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":1407.8000001907349,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":1407.8000001907349,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":2429.6000003814697,"responseStart":0,"secureConnectionStart":0},{"duration":1535.2000002861023,"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":1408,"connectEnd":2717.6000003814697,"connectStart":2668,"domainLookupEnd":2668,"domainLookupStart":2668,"fetchStart":1408,"redirectEnd":0,"redirectStart":0,"requestStart":2717.7000002861023,"responseEnd":2943.2000002861023,"responseStart":2752.4000000953674,"secureConnectionStart":2692.2000002861023},{"duration":3111.5,"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":1411.6000003814697,"connectEnd":2776,"connectStart":2727.2000002861023,"domainLookupEnd":2727.2000002861023,"domainLookupStart":2727.2000002861023,"fetchStart":1411.6000003814697,"redirectEnd":0,"redirectStart":0,"requestStart":2776.1000003814697,"responseEnd":4523.10000038147,"responseStart":2808.9000000953674,"secureConnectionStart":2751.7000002861023},{"duration":1402.9000000953674,"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":1411.9000000953674,"connectEnd":2784.300000190735,"connectStart":2735.800000190735,"domainLookupEnd":2735.800000190735,"domainLookupStart":2735.800000190735,"fetchStart":1411.9000000953674,"redirectEnd":0,"redirectStart":0,"requestStart":2784.300000190735,"responseEnd":2814.800000190735,"responseStart":2813.4000000953674,"secureConnectionStart":2760.1000003814697},{"duration":1510,"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":1412,"connectEnd":2834.5,"connectStart":2781.1000003814697,"domainLookupEnd":2781.1000003814697,"domainLookupStart":2781.1000003814697,"fetchStart":1412,"redirectEnd":0,"redirectStart":0,"requestStart":2834.6000003814697,"responseEnd":2922,"responseStart":2921.1000003814697,"secureConnectionStart":2809.7000002861023},{"duration":1508.7999997138977,"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":1412.1000003814697,"connectEnd":2863.5,"connectStart":2814.6000003814697,"domainLookupEnd":2814.6000003814697,"domainLookupStart":2814.6000003814697,"fetchStart":1412.1000003814697,"redirectEnd":0,"redirectStart":0,"requestStart":2863.5,"responseEnd":2920.9000000953674,"responseStart":2920,"secureConnectionStart":2838.9000000953674},{"duration":1588.9000000953674,"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":1412.4000000953674,"connectEnd":2969.5,"connectStart":2920.800000190735,"domainLookupEnd":2920.800000190735,"domainLookupStart":2920.800000190735,"fetchStart":1412.4000000953674,"redirectEnd":0,"redirectStart":0,"requestStart":2970.5,"responseEnd":3001.300000190735,"responseStart":2999.7000002861023,"secureConnectionStart":2944.9000000953674},{"duration":1046.8000001907349,"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":1412.5,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":1412.5,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":2459.300000190735,"responseStart":0,"secureConnectionStart":0},{"duration":2648,"initiatorType":"script","name":"https://issues.oasis-open.org/rest/api/1.0/shortcuts/803004/a29179d70fa8562374ee16707692af77/shortcuts.js?context=issuenavigation&context=issueaction","startTime":1412.6000003814697,"connectEnd":4033,"connectStart":3983,"domainLookupEnd":3983,"domainLookupStart":3983,"fetchStart":1412.6000003814697,"redirectEnd":0,"redirectStart":0,"requestStart":4033.1000003814697,"responseEnd":4060.6000003814697,"responseStart":4059.5,"secureConnectionStart":4008.4000000953674},{"duration":1044.1999998092651,"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":1450.7000002861023,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":1450.7000002861023,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":2494.9000000953674,"responseStart":0,"secureConnectionStart":0},{"duration":2921.2000002861023,"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":1451,"connectEnd":4334.300000190735,"connectStart":4285.800000190735,"domainLookupEnd":4285.800000190735,"domainLookupStart":4285.800000190735,"fetchStart":1451,"redirectEnd":0,"redirectStart":0,"requestStart":4334.400000095367,"responseEnd":4372.200000286102,"responseStart":4369.700000286102,"secureConnectionStart":4310},{"duration":3135.9000000953674,"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":1463.3000001907349,"connectEnd":4572.10000038147,"connectStart":4522.900000095367,"domainLookupEnd":4522.900000095367,"domainLookupStart":4522.900000095367,"fetchStart":1463.3000001907349,"redirectEnd":0,"redirectStart":0,"requestStart":4572.300000190735,"responseEnd":4599.200000286102,"responseStart":4598,"secureConnectionStart":4547.10000038147},{"duration":3131.5,"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":1483.9000000953674,"connectEnd":4588.60000038147,"connectStart":4540.200000286102,"domainLookupEnd":4540.200000286102,"domainLookupStart":4540.200000286102,"fetchStart":1483.9000000953674,"redirectEnd":0,"redirectStart":0,"requestStart":4588.60000038147,"responseEnd":4615.400000095367,"responseStart":4614.300000190735,"secureConnectionStart":4564.10000038147},{"duration":1371.8000001907349,"initiatorType":"xmlhttprequest","name":"https://issues.oasis-open.org/rest/webResources/1.0/resources","startTime":3113.300000190735,"connectEnd":4452.300000190735,"connectStart":4401.300000190735,"domainLookupEnd":4401.300000190735,"domainLookupStart":4401.300000190735,"fetchStart":3113.300000190735,"redirectEnd":0,"redirectStart":0,"requestStart":4452.400000095367,"responseEnd":4485.10000038147,"responseStart":4484.10000038147,"secureConnectionStart":4427.900000095367}],"threshold":1000,"fetchStart":0,"domainLookupStart":1190,"domainLookupEnd":1235,"connectStart":1235,"connectEnd":1319,"secureConnectionStart":1259,"requestStart":1319,"responseStart":1385,"responseEnd":1481,"domLoading":1392,"domInteractive":4801,"domContentLoadedEventStart":4801,"domContentLoadedEventEnd":4874,"domComplete":6146,"loadEventStart":6146,"loadEventEnd":6149,"userAgent":"Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)","marks":[],"measures":[],"correlationId":"38881f66d6702c","effectiveType":"4g","downlink":10,"rtt":0,"serverDuration":126,"dbReadsTimeInMs":21,"dbConnsTimeInMs":24,"applicationHash":"4d4040e0714d65b7fffa4801569d014c0b16eaa9","experiments":[]}}
Resolved as proposed 2017-3-16.