question

Upvotes
Accepted
7 3 2 5

TRTH api error for EOD

Hi,

One of client use TRTH api to require EOD data.

He wants to create a template for his EOD data, but always get the response with bad request.

Could you help him to find out what's going on? Thank you

There are part of the Java code:

JSONArray array = new JSONArray();
fieldList.forEach(field -> {
  array.put( new JSONObject()
  .put("FieldName", field)
  .put( "Format", JSONObject.NULL));
});

HttpPost httppost = new HttpPost(urlHost + "/Extractions/TickHistoryIntradayElektronTimeseriesTemplates");
httppost.addHeader("content-type", "application/json;odata.metadata=minimal");
httppost.addHeader("Authorization", "Token " + sessionToken);

// Note: content fields are specific to each report template type
//
JSONOrderedObject TickTemplateJSONObject = new JSONOrderedObject().put("@odata.type",
"#ThomsonReuters.Dss.Api.Extractions.ReportTemplates.TickHistoryElektronTimeseriesReportTemplate")
  .put("ShowColumnHeaders", false)
  .put("Name", reportTemplateName)
  .put("Headers", new JSONArray())
  .put("Trailers", new JSONArray())
  .put("ContentFields", array)
  .put("Condition", new JSONOrderedObject()
  .put( "MessageTimeStampIn", "GmtUtc" )
  .put( "ApplyCorrectionsAndCancellations", true )
  .put( "ReportDateRangeType", "Range" )
  .put("QueryStartDate", startDate).put("QueryEndDate", endDate));

logger.info("Tick template creation JSON request content:\n" + TickTemplateJSONObject.toString());

StringEntity requestBody = new StringEntity(TickTemplateJSONObject.toString());
httppost.setEntity(requestBody);
ResponseHandler<String> responseHandler = new BasicResponseHandler();
String response = httpclient.execute(httppost, responseHandler);

JSONObject jsonResponse = new JSONObject(response);
StringWriter out = new StringWriter();
jsonResponse.write(out);
logger.info("JSON response contents:\n" + out);

reportTemplateId = jsonResponse.getString("ReportTemplateId");

Response with bad request:

Exception in thread "main" org.apache.http.client.HttpResponseException: Bad Request
at org.apache.http.impl.client.AbstractResponseHandler.handleResponse(AbstractResponseHandler.java:70)
at org.apache.http.impl.client.BasicResponseHandler.handleResponse(BasicResponseHandler.java:66)
at org.apache.http.impl.client.BasicResponseHandler.handleResponse(BasicResponseHandler.java:52)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:223)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:165)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:140)
at com.algoone.quotation.trth.EODRequest.createTrthTickReportTemplate(EODRequest.java:146)
at com.algoone.quotation.trth.EODRequest.run(EODRequest.java:54)
at com.algoone.quotation.trth.EODRequest.main(EODRequest.java:36)
tick-history-rest-api
icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 5.0 MiB each and 10.0 MiB total.

1 Answer

Upvotes
Accepted
11.3k 25 8 13

@Chris.Wang

Please see the following comments on the code.

- The URI is not correct. The URI should be "/Extractions/ElektronTimeseriesReportTemplates"

- The "@odata.type" element is not correct. It should be "#ThomsonReuters.Dss.Api.Extractions.ReportTemplates.ElektronTimeseriesReportTemplate"

- The "MessageTimeStampIn" and "ApplyCorrectionsAndCancellations" conditions are not supported for this request. They need to be removed.

For usage example, the client can refer to REST API Reference Tree.

Anyway, the client can also verify the issue with Postman by using the JSON content request generated by the application.

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 5.0 MiB each and 10.0 MiB total.

Click below to post an Idea Post Idea