private static ImageResult putChangeImageData(final String logId, final String logImageId, final String csrfToken, final String name, final String description) {
        //3) Post the image name + description via PUT
        // URL like: https://www.geocaching.com/api/live/v1/images/GLxyz/c7xyz-xyz-xyz-xyz-xyz/replace (PUT)
        final Parameters params = new Parameters();
        if (!StringUtils.isBlank(name)) {
            params.put("name", name);
        }
        if (!StringUtils.isBlank(description)) {
            params.put("description", description);
        }

        if (!params.isEmpty()) {
            //We can reuse same CSRF-Token in this second request
            try (GCWebLogImageResponse putImgResponse = websiteReq().uri("/api/live/v1/images/" + logId + "/" + getGuidFrom(logImageId) + "/replace")
                .method(HttpRequest.Method.PUT)
                .headers(HTML_HEADER_CSRF_TOKEN, csrfToken)
                //.bodyForm(params, "image", "image/jpeg", image.getFile())
                .bodyForm(params, null, null, null)
                .requestJson(GCWebLogImageResponse.class).blockingGet()) {
                if (putImgResponse.url == null) {
                    return generateImageLogError("Problem putting image: " + putImgResponse);
                }
            }
        }

        return null;
    }
Provides methods to handle all aspects of creating, editing and deleting Log entries for GC.com (both caches and trackables)
main/src/main/java/cgeo/geocaching/connector/gc/GCLogAPI.java