code: public GetSessionTokenResponse getSessionToken(GetSessionTokenRequest request) {
          checkNotNull(request, "The parameter request should NOT be null.");
          checkIsTrue(request.getDurationSeconds() > 0, "the durationSeconds parameter should be greater than zero");
  
          InternalRequest internalRequest = new InternalRequest(HttpMethodName.POST,
                  HttpUtils.appendUri(this.getEndpoint(), URL_PREFIX, GET_SESSION_TOKEN_PATH));
          if (request.getDurationSeconds() != null) {
              internalRequest.addParameter("durationSeconds", String.valueOf(request.getDurationSeconds()));
          }
          internalRequest.setCredentials(request.getRequestCredentials());
          internalRequest.addHeader(Headers.CONTENT_LENGTH,
                  String.valueOf(request.getAcl() == null ? 0 : request.getAcl().length()));
          internalRequest.addHeader(Headers.CONTENT_TYPE, "application/json");
          if (request.getAcl() != null) {
              internalRequest.setContent(RestartableInputStream.wrap(request.getAcl().getBytes()));
          }
          return this.invokeHttpClient(internalRequest, GetSessionTokenResponse.class);
      }
docs: Get a set of temporary security credentials representing your account
  <p>
  An extra ACL string can be set in the request, which specify permissions for the returning credentials
  
  @param request The object containing options for the request