Here’s a thought, why not just manage it yourself as an async resource?
EDIT: Ok, actually read the comment and I think that is exactly his suggestion. Maybe without the async part.
The way I would approach this is to create a resource which represents a bulk operation, maybe not even on the errand resource. I wouldn’t concern myself with what the operation is, the resource representation should give that information.
/bulktransactions/.....
That way your payload could be something like this:
{ "data": { "type": "bulktransaction", "attributes": { "resources": [{"type":"errands"}], "operations": [ {"id":123,"method":"PATCH", "payload":1}, {"id":124,"method":"PATCH", "payload":1}, {"id":125,"method":"PATCH","payload":1} ], "payload":[ {"id":1, "value":{ "data": { "type": "errands", "attributes": { "dirty": true } } } } ] } } }
You could return a location header for the bulk transaction resource itself, and get all the info and updates you needed from there.