code: public Response setTags(String photoId, List<String> tags) throws JinxException {
      JinxUtils.validateParams(photoId);
      Map<String, String> params = new TreeMap<>();
      params.put("method", "flickr.photos.setTags");
      params.put("photo_id", photoId);
      if (tags == null || tags.size() == 0) {
        params.put("tags", "");
      } else {
        StringBuilder sb = new StringBuilder();
        for (String tag : tags) {
          if (tag.contains(" ")) {
            sb.append('"').append(tag).append('"');
          } else {
            sb.append(tag);
          }
          sb.append(' ');
        }
        sb.deleteCharAt(sb.length() - 1);
        params.put("tags", sb.toString());
      }
      return this.jinx.flickrPost(params, Response.class);
    }
docs: Set the tags for a photo.
  <br>
  This method requires authentication with 'write' permission.
  <br>
  Each tag in the list will be treated as a single tag. This method will automatically add quotation marks as
  needed so that multi-word tags will be treated correctly by Flickr. This method can also be used to add
  machine tags.
  <br>
  This list of tags will replace the tags that currently exist on the photo.
  <br>
  If the tag list is null or empty, all tags will be removed from the photo.
  
  @param photoId id of the photo to set tags for.
  @param tags    all tags for the photo, one tag per list element. If this parameter is null or empty, all tags
  will be removed from the photo.
  @return response object with status of the requested operation.
  @throws JinxException if photo id is null or empty, or if there are any errors.
  @see <a href="https://www.flickr.com/services/api/flickr.photos.setTags.html">flickr.photos.setTags</a>