Hello, Can you please share a sample code on how we can pull Commodities in the API, replicating how a Commodities Screener will do in the GUI?
@darshpatel
It is a criteria list. You can use the DSS REST API to create criteria lists.
You can use the following request to create that Commodities screener.
{ "ListName": "CommodityCriteria1", "Type": "Commodities", "PreferredIdentifierType": "Ric", "Filters": [ { "@odata.type": "#DataScope.Select.Api.Extractions.SubjectLists.MultiValueFilter", "Name": "Underlying Asset", "Op": "In", "Values": [ "Natural Gas" ] }, { "@odata.type": "#DataScope.Select.Api.Extractions.SubjectLists.BooleanFilter", "Name": "Active Status", "Value": "Yes" }, { "@odata.type": "#DataScope.Select.Api.Extractions.SubjectLists.BooleanFilter", "Name": "Basis Gap Adjusted", "Value": "All" } ]}
Send it to the Extractions/CriteriaListCreate endpoint with the HTTP POST method. This request will create a criteria list named CommodityCriteria1.
The response will contain a ListId which can be used in on-demand extractions.
{ "@odata.context": "https://selectapi.datascope.refinitiv.com/RestApi/v1/$metadata#CriteriaLists/$entity", "ListId": "0x085e7b6245988fd7", "Name": "CommodityCriteria1", "Type": "Commodities", "PreferredIdentifierType": "Ric", "Created": "2023-02-22T02:02:27.000Z", "Modified": "2023-02-22T02:02:27.000Z", "Filters": [...]}
For example, you can use the criteria list ID with the TermsAndConditionsExtractionRequest.
{ "ExtractionRequest": { "@odata.type": "#DataScope.Select.Api.Extractions.ExtractionRequests.TermsAndConditionsExtractionRequest", "ContentFieldNames": [ "RIC", "Asset Type" ], "IdentifierList": { "@odata.type": "#DataScope.Select.Api.Extractions.ExtractionRequests.InstrumentCriteriaListIdentifierList", "CriteriaListId": "0x085e7b6245988fd7" } }}
Otherwise, you can specify the criteria filters directly in on-demand extractions.
{ "ExtractionRequest": { "@odata.type": "#DataScope.Select.Api.Extractions.ExtractionRequests.TermsAndConditionsExtractionRequest", "ContentFieldNames": [ "RIC", "Asset Type" ], "IdentifierList": { "@odata.type": "#DataScope.Select.Api.Extractions.ExtractionRequests.InstrumentCriteriaList", "Filters": [ { "@odata.type": "#DataScope.Select.Api.Extractions.SubjectLists.MultiValueFilter", "Name": "Underlying Asset", "Op": "In", "Values": [ "Natural Gas" ] }, { "@odata.type": "#DataScope.Select.Api.Extractions.SubjectLists.BooleanFilter", "Name": "Active Status", "Value": "Yes" }, { "@odata.type": "#DataScope.Select.Api.Extractions.SubjectLists.BooleanFilter", "Name": "Basis Gap Adjusted", "Value": "All" } ], "PreferredIdentifierType": "Ric" } }}
However, this list contains more than 300,000 results which can exceed the extract limits defined on this page.
For more information regarding the criteria list endpoints, please refer to the DSS REST API Reference Tree.
@darshpatel Please see the following tutorial which has the code to replicate GUI functionality https://developers.refinitiv.com/en/api-catalog/datascope-select/datascope-select-rest-api/tutorials#rest-api-tutorial-10-gui-control-calls-immediate-extract. I hope this can help
hi @jason.ramchandani01 , thank you. However these are for instrument list. Commodities screener have criteria list. Hence i am not sure if it is the same thing?
thank you @Jirapongse , I will let client know the same