HTTP semantics of PUT and PATCH allow inserting new entities; PUT specifies the desired after-image.
Example:
PUT ~/Employees(12345)
<full entity body>
would update employee 12345 if it exists, and create it if it doesn't exist yet.
Note: the PUT request targets the entity URL, not the entity set URL, so the client chooses the values of the key properties, not the server. Where this is not permissible (e.g. if the key comes from a server-managed number range), the request MUST be rejected.
This is desirable in some cases and saves GET requests to check for existence.
If the client only wants to update existing resources, it MAY include an If-Match header, either with a specific ETag value, or with "*".
RFC2616, section 14.24 explicitly describes If-Match:* for "update only if existing".
If ODATA-39 is applied as proposed, the new paragraph in section 8.2.4 must be relaxed to allow inserting new entities without specifying an If-Match request header.