question

Upvotes
Accepted
1 0 0 3

Requesting more than one SEDOL at a time

When I try this:

{

"Request": {

"Identifier": "BD8DS52",

"IdentifierType": "Sedol",

"Range": {

"Start": "2017-09-11T00:00:00.000Z",

"End": "2017-09-11T23:59:59.999Z"

}

},

"Request": {

"Identifier": "BDH44M5",

"IdentifierType": "Sedol",

"Range": {

"Start": "2017-09-11T00:00:00.000Z",

"End": "2017-09-11T23:59:59.999Z"

}

}

}

I get an error "The request JSON is malformed. Duplicate keys found". Is it possible to request Identifier for multiple Sedols/Isins in one POST request? The reference document is a little bit conflicting about it.

tick-history-rest-apirest-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.

Upvote
Accepted
11.3k 25 8 13

@Igor Schein

I understand that you are using HistoricalSearch. The message, you are using, seems not correct, so the error was received. Anyway, the HistoricalSearch supports only one identifier at a time.

In this case, you can also use the HistoricalReferenceExtraction to retrieve reference data for multiple identifiers at a time.

POST https://hosted.datascopeapi.reuters.com/RestApi/v1/Extractions/Extract


{
    "ExtractionRequest": {
        "@odata.type": "#ThomsonReuters.Dss.Api.Extractions.ExtractionRequests.HistoricalReferenceExtractionRequest",
        "ContentFieldNames": [
           "RIC","Exchange Code"
        ],
        "IdentifierList": {
            "@odata.type": "#ThomsonReuters.Dss.Api.Extractions.ExtractionRequests.InstrumentIdentifierList",
            "InstrumentIdentifiers": [
                {
                    "Identifier": "BD8DS52",
                    "IdentifierType": "Sedol"
                },
                {
                    "Identifier": "BDH44M5",
                    "IdentifierType": "Sedol"
                }
            ],
            "ValidationOptions": {"AllowHistoricalInstruments": true},
            "UseUserPreferencesForValidationOptions": false
        },
        "Condition": {
            "StartDate": "2017-09-11T00:00:00.000Z",
            "EndDate": "2017-09-11T23:59:59.999Z"
        }
    }
}

Output:

        {
            "IdentifierType": "Sedol",
            "Identifier": "BD8DS52",
            "RIC": "SANT1.VI",
            "Exchange Code": "VIE"
        },
        {
            "IdentifierType": "Sedol",
            "Identifier": "BDH44M5",
            "RIC": "MSBT.VI",
            "Exchange Code": "VIE"
        }
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.

Upvotes
1 0 0 3

@veerapath.rungruengrayubkul

Thank you, that's very helpful. I wish this was a part of REST API Use Cases Reference document.

While playing with it, I've been getting a lot of intermittent errors "No JSON object could be decoded". In my recent example, I ran the same 200-sedol message 5 times in a row Got the error 4 times, and successful completion once. I'm keen on getting this addressed, so I am attaching the message in question.in.txt


in.txt (11.1 KiB)
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.

Upvotes
1 0 0 3

@veerapath.rungruengrayubkul

It seems to be a timeout issue. The message either completes in under 30sec or fails with the error above. Any way to increase timeout from 30sec?

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.

Upvotes
11.3k 25 8 13

@Igor Schein

This should expected behavior for asynchronous request, where the "Prefer: respond-async" specified in header of request.

If extraction is complete within an amount of time (30 seconds by default), the server will return 200 response with data. Otherwise, the server responds with a 202 (accepted), indicating that the request was accepted. The 202 response includes a monitor URL in the "Location" header. Application needs to send GET http request against the monitor URL to retreive data. However, if the response still is not available, another 202 response will be sent.

For more information, please see the Async Key Mechanisms and "Request accepted, but with a timeout" in the REST API Tutorial 10: On Demand Histo Reference extraction tutorial.

Regarding your question, if you don't want to handle the asynchronous mechanism, you may:

  • change the request to synchronous by removing the "Prefer: respond-sync" header. Synchronous requests will keep the connection open until the requested work has been completed or the request fails. This method is not recommend for extraction of huge amount of data.
  • increase timeout by adding "wait" in Prefer header. For example, "Prefer: respond-async, wait=120".
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