docs: public Result<SingleValue> readSingleValue(Series series, DateTime timestamp, DateTimeZone timezone, Direction direction) {
      checkNotNull(series);
      checkNotNull(timestamp);
      checkNotNull(timezone);
      checkNotNull(direction);
  
      URI uri = null;
      try {
        URIBuilder builder = new URIBuilder(String.format("/%s/series/key/%s/single/", API_VERSION, urlencode(series.getKey())));
        addTimestampToURI(builder, timestamp);
        addTimeZoneToURI(builder, timezone);
        addDirectionToURI(builder, direction);
        uri = builder.build();
      } catch (URISyntaxException e) {
        String message = String.format("Could not build URI with inputs: key: %s, timestamp: %s, timezone: %s, direction: %s", series.getKey(), timestamp.toString(), timezone.toString(), direction.toString());
        throw new IllegalArgumentException(message, e);
      }
  
      HttpRequest request = buildRequest(uri.toString());
      Result<SingleValue> result = execute(request, SingleValue.class);
      return result;
    }