I'm creating a python sample around TRTH starting from the tutorial and I'm getting this 404 error in the last step of the process. Would anyone have a working python sample ?
import requests import json requestUrl = "https://hosted.datascopeapi.reuters.com/RestApi/v1/Authentication/RequestToken" requestHeaders={ "Prefer":"respond-async", "Content-Type":"application/json" } requestBody={ "Credentials": { "Username": "XXXXX", "Password": "*****" } } r = requests.post(requestUrl, json=requestBody,headers=requestHeaders) jsonResponse = json.loads(r.text.encode('ascii', 'ignore')) token = jsonResponse["value"] print token
returns succesfully the token
Url='https://hosted.datascopeapi.reuters.com/RestApi/v1/Extractions/ExtractRaw' requestUrl=Url requestHeaders={ "Prefer":"respond-async", "Content-Type":"application/json", "Authorization": "token " + token } requestBody={ "ExtractionRequest": { "@odata.type": "#ThomsonReuters.Dss.Api.Extractions.ExtractionRequests.TickHistoryIntradaySummariesExtractionRequest", "ContentFieldNames": [ "Close Ask", "Close Bid", "High", "High Ask", "High Bid", "Last", "Low", "Low Ask", "Low Bid", "No. Asks", "No. Bids", "No. Trades", "Open", "Open Ask", "Open Bid", "Volume" ], "IdentifierList": { "@odata.type": "#ThomsonReuters.Dss.Api.Extractions.ExtractionRequests.InstrumentIdentifierList", "InstrumentIdentifiers": [{ "Identifier": "CARR.PA", "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" } } } r = requests.post(requestUrl, json=requestBody,headers=requestHeaders) print r print r.headers print r.headers["location"]
and get as expected
<Response [202]> {'Status': 'InProgress', 'Content-Length': '0', 'X-Request-Execution-Correlation-Id': 'c9034ca7-94d4-4c5a-a4ee-75e499b88457', 'X-App-Id': 'Custom.RestApi', 'Set-Cookie': 'DSSAPI-COOKIE=R3479498792; path=/', 'Expires': '-1', 'Server': 'Microsoft-IIS/7.5', 'X-App-Version': '11.0.492.64', 'Location': "https://hosted.datascopeapi.reuters.com/RestApi/v1/Extractions/ExtractRawResult(ExtractionId='0x05b94284924b3016')", 'Pragma': 'no-cache', 'Cache-Control': 'no-cache', 'Date': 'Fri, 19 May 2017 09:42:01 GMT', 'Progress': ''} https://hosted.datascopeapi.reuters.com/RestApi/v1/Extractions/ExtractRawResult(ExtractionId='0x05b94284924b3016')
requestUrl = r.headers["location"] print requestUrl requestHeaders={ "Prefer":"respond-async", "Content-Type":"application/json", "Authorization":"token " + token } r2 = requests.get(requestUrl,headers=requestHeaders) print r2 print r2.headers
until I get
<Response [200]>
requestUrl = r.headers["location"] + "/$value" requestHeaders={ "Prefer":"respond-async", "Content-Type":"application/json", "Accept-Encoding":"gzip, deflate", "Authorization": "token " + token } r3 = requests.get(requestUrl,headers=requestHeaders) print r3
I get
<Response [400]>
would anyone have a working python sample ?
Many thanks
400 is a bad request, 404 indicates that the resource specified by the request URL does not exist (see status codes here).
The issue is with the URL when you try to retrieve the content. It is not the location URL. Instead, you must use this URL:
https://hosted.datascopeapi.reuters.com/RestApi/v1/Extractions/RawExtractionResults('0x05b94284924b3016')/$value
This URL contains the JobId (0x05b94284924b3016) which was returned in the body of the previous 200 response.
You can find the details of the On Demand request workflow in this tutorial, and this particular step is described here.
Many thanks @Christiaan Meihsl
Indeed with the right url it works better!
requestUrl = "https://hosted.datascopeapi.reuters.com/RestApi/v1/Extractions/RawExtractionResults" + "('" + jobId + "')" + "/$value" requestHeaders={ "Prefer":"respond-async", "Content-Type":"text/plain", "Accept-Encoding":"gzip", "Authorization": "token " + token } r3 = requests.get(requestUrl,headers=requestHeaders) extract = r3.text print r3 print extract
or with a panda dataframe
rom StringIO import StringIO import pandas as pd timeSeries = pd.read_csv(StringIO(r3.text)) timeSeries
Many thanks
Samuel