protected <T> Response<T> doPost(Request<T> request) {
String payload = RequestUtil.getRequestPayload(request);
URI uri = buidURI(request);
Timer timer = Timer.tic();
TransportResult result = getApiClientTransportFactory().newTransport(api).doPost(uri, payload);
timer.toc();
log.trace(result.getStatusCode() + " " + uri.toString() + " took " + timer.getDifference() + "ms");
Response<T> response = toResponse(timer, result, request);
return response;
}