question

Upvotes
Accepted
25 3 2 5

Error in fetching Open Interest data

I am trying to get Open Interest data for a futures instrument.

This is the request part of the code that I am using -

requestUrl='https://hosted.datascopeapi.reuters.com/RestApi/v1/Extractions/ExtractRaw'


requestHeaders={
    "Prefer":"respond-async",
    "Content-Type":"application/json",
    "Authorization": "token " + token
}


requestBody={
  "ExtractionRequest": {
    "@odata.type": "#ThomsonReuters.Dss.Api.Extractions.ExtractionRequests.TickHistoryIntradaySummariesExtractionRequest",
    "ContentFieldNames": [
    "Open Interest"
    ],
    "IdentifierList": {
      "@odata.type": "#ThomsonReuters.Dss.Api.Extractions.ExtractionRequests.InstrumentIdentifierList",  
      "InstrumentIdentifiers": [{
        "Identifier": "GCJ8",
        "IdentifierType": "Ric"
      }],
      "UseUserPreferencesForValidationOptions":"false"
    },    
    "Condition": {
      "MessageTimeStampIn": "GmtUtc",
      "ReportDateRangeType": "Range",
      "QueryStartDate": "2016-09-29T00:00:00.000Z",
      "QueryEndDate": "2016-09-30T00:00:00.000Z",
      "SummaryInterval": "OneHour",
      "TimebarPersistence":"true",
      "DisplaySourceRIC":"true"
    }
  }
}


r2 = requests.post(requestUrl, json=requestBody,headers=requestHeaders)


#Display the HTTP status of the response
#Initial response status (after approximately 30 seconds wait) is usually 202
print ("HTTP status of the response: " + str(r2.status_code))
#Display the location url we received and will use to get the status of the extraction request
print (r2.headers["location"])

Now I am getting an error in the last line (ie in r2.headers["location"])-

KeyError: 'location'

I need to know what I might be sending wrong?

Is it the requestUrl (requestUrl='https://hosted.datascopeapi.reuters.com/RestApi/v1/Extractions/ExtractRaw') OR

Is it the "@odata.type" in "ExtractionRequest" part of the code ("#ThomsonReuters.Dss.Api.Extractions.ExtractionRequests.TickHistoryIntradaySummariesExtractionRequest")

OR

something else?

tick-history-rest-apiapirequest-url
icon clock
10 |1500

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

1 Answer

Upvote
Accepted
13.7k 26 8 12

@pj4, the issue is that field Open Interest is not available from a Tick History Intraday Summaries Extraction Request. The HTTP status of the response you received should have been 400 (Bad Request). The location URL will only be delivered if the status is 202 (Accepted). As the code above does not handle errors this was not visible.

To find out what call delivers what fields, the easiest is to use the data dictionary (you can also use an API call, as described here).

Using the data dictionary, open tab Field Descriptions, and filter column D to find what you want. You will see that Open Interest is delivered by an Elektron Timeseries request, or a Tick History Time and Sales request:

openinterest.png

More on the topic of understanding API calls can be found here, and on an efficient learning and coding process here. I usually test calls in Postman before coding, to gain time. If you are not familiar with Postman, see here.

PS: I guess you used our TRTH_OnDemand_IntradayBars sample as the base for your code. That sample is a very simple proof of concept, it does not treat errors.

PPS: REST API Tutorial 3 explains the workflow of an On Demand request, it might help.


openinterest.png (21.2 KiB)
icon clock
10 |1500

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