Feedback from Martin Zurmuehl:
Example 50 only shows the body, the other response elements are missing, example 51 is more complete, as is the corresponding example 104 here: https://docs.oasis-open.org/odata/odata/v4.01/cs02/part1-protocol/odata-v4.01-cs02-part1-protocol.html#sec_MultipartBatchResponse).
2. The normative text doesn't state which HTTP response code to send for synchronous batch responses; for async responses (19.6.) it is explicitly stated. Part 1: Protocol states this explicitly in https://docs.oasis-open.org/odata/odata/v4.01/cs02/part1-protocol/odata-v4.01-cs02-part1-protocol.html#sec_BatchRequestHeaders:
If the set of request headers of a batch request are valid the service MUST return a 200 OK HTTP response code to indicate that the batch request was accepted for processing, but the processing is yet to be completed. The individual requests within the body of the batch request may subsequently fail or be malformed; however, this enables batch implementations to stream the results.
If the service receives a batch request with an invalid set of headers it MUST return a 4xx response code and perform no further processing of the batch request.
However this is (mis)placed under „Batch Request Headers“….
3. The statement „but the processing is yet to be completed“ suggests that processing is not finished when sending 200 OK. We should rather say „The processing can be completed in whole or in part.“