core/src/main/java/net/typedrest/AbstractETagEndpoint.java
protected HttpResponse putContent(HttpEntity content)
            throws IOException, IllegalArgumentException, IllegalAccessException, FileNotFoundException, IllegalStateException {
        Request request = Request.Put(uri).body(content);
        if (last != null) {
            request.addHeader(HttpHeaders.IF_MATCH, last.etag);
        }

        return executeAndHandle(request);
    }
protected HttpResponse putContent(HttpEntity content)
            throws IOException, IllegalArgumentException, IllegalAccessException, FileNotFoundException, IllegalStateException {
        Request request = Request.Put(uri).body(content);
        if (last != null) {
            request.addHeader(HttpHeaders.IF_MATCH, last.etag);
        }

        return executeAndHandle(request);
    }
Performs an HTTP PUT request on the {@link Endpoint#getUri()}. Sets
{@link HttpHeaders#IF_MATCH} if there is a cached ETag to detect lost
updates.

@param content The content to send to the server.
@return The response message.
@throws IOException Network communication failed.
@throws IllegalArgumentException {@link HttpStatus#SC_BAD_REQUEST}
@throws IllegalAccessException {@link HttpStatus#SC_UNAUTHORIZED} or
{@link HttpStatus#SC_FORBIDDEN}
@throws FileNotFoundException {@link HttpStatus#SC_NOT_FOUND} or
{@link HttpStatus#SC_GONE}
@throws IllegalStateException The content has changed since it was last
retrieved with {@link #getContent()}. Your changes were rejected to
prevent a lost update.
@throws RuntimeException Other non-success status code.