3.2.5.2 Common Rules for Executing Received Insert, Update, or Delete Data Service Requests

This section outlines a set of directives that a server MUST follow when processing requests of the Insert, Update, or Delete requests types (whether those requests are sent standalone, tunneled, or are included in Batch Requests). In addition, further directives specific to each request type are defined in the following sections.

Servers SHOULD respond to any HTTP PUT, HTTP MERGE, HTTP PATCH, HTTP POST, or HTTP DELETE requests sent to a URI that does not support the method with a 405 (Method Not Allowed) response.

When executing an HTTP request that is intended to change the state of a resource, if the server determines that executing the operation would require violating the rules defined by the abstract data model which describes the data service, as defined in Request Types (section 2.2.7), it MUST respond with a 4xx response code.

When executing an HTTP request that is intended to change the state of a resource, the server SHOULD execute the requested changes in an order such that any interim changes that are externally visible while the request is being executed maintain the consistency of the data model of the data service.  If no such ordering can be determined, the request SHOULD be rejected with a 5xx response code.

If the resource identified by the request URI defines a concurrency token, but the request does not include an If-Match (section 2.2.5.5) request header, the server returns a 4xx response code.

The execution of an HTTP request that is intended to change the state of a resource MAY<70> have additional side effects on that resource, on other resources accessible through the data service interface, or on data or processes outside of the data service itself.