(401) Unauthorized Screen a case API using c#

when calling the API from postman will execute without any problem but when calling it from C# code
I get the error "'The remote server returned an error: (401) Unauthorized.'"
string gatewayurl = "/v2/";
string gatewayhost = "rms-world-check-one-api-pilot.thomsonreuters.com";
// Here is where you enter your api keys
string requestendpoint = "https://rms-world-check-one-api-pilot.thomsonreuters.com/v2/cases/"+ caseid + "/screeningRequest";
// Assemble the POST request - NOTE every character including spaces have to be EXACT
// for the API server to decode the authorization signature
string dataToSign = "(request-target): post " + gatewayurl + "cases/" + caseid + "/screeningRequest\n" +
"host: " + gatewayhost + "\n" + // no https only the host name
"date: " + date; // GMT date as a string
Console.WriteLine("---api secret---");
Console.WriteLine(apisecret);
Console.WriteLine("---dataToSign---");
Console.WriteLine(dataToSign);
Console.WriteLine("string hmac = generateAuthHeader(dataToSign, apisecret);");
// The Request and API secret are now combined and encrypted
string hmac = generateAuthHeader(dataToSign, apisecret);
// Assemble the authorization string - This needs to match the dataToSign elements
// i.e. requires host date content-type content-length
//- NOTE every character including spaces have to be EXACT else decryption will fail with 401 Unauthorized
string authorisation = "Signature keyId=\"" + apikey + "\",algorithm=\"hmac-sha256\",headers=\"(request-target) host date content-type content-length\",signature=\"" + hmac + "\"";
Console.WriteLine("---Hmac---");
Console.WriteLine(hmac);
//Console.WriteLine(authorisation);
// Send the Request to the API server
HttpWebRequest WebReq = (HttpWebRequest)WebRequest.Create(requestendpoint);
// Set the Headers
WebReq.Method = "POST";
WebReq.Headers.Add("Authorization", authorisation);
WebReq.Headers.Add("Cache-Control", "no-cache");
// WebReq.ContentLength = msg.Length;
WebReq.Date = dateValue; // use datetime value GMT time
// Set the content type of the data being posted.
// WebReq.ContentType = "application/json";
// WebReq.ContentLength = byte1.Length;
Stream newStream = WebReq.GetRequestStream();
// newStream.Write(byte1, 0, byte1.Length);
// Get the Response - Status OK
HttpWebResponse WebResp = (HttpWebResponse)WebReq.GetResponse();
Best Answer
-
Thanks for your query.
Please see the observations below -
1. string requestendpoint = "https://rms-world-check-one-api-pilot.thomsonreuters.com/v2/cases/";+ caseid + "/screeningRequest"; - It will be caseSystemId instead of caseId
2. string dataToSign = "(request-target): post " + gatewayurl + "cases/" + caseid + "/screeningRequest\n" +
"host: " + gatewayhost + "\n" + // no https only the host name
"date: " + date; // GMT date as a string - It will be caseSystemId instead of caseId.
If you are still getting error 401 after making the above changes, please provide us the request and the response headers of the failed api call to investigate further.
Also, are getting a successful response after firing a GET Top level groups api call? Endpoint - /v2/groups
0
Answers
-
Get top level groups API is working fine , but the error still on the screen case
{Authorization: Signature keyId="1228dc0b-3c61-475e-a24b-9dd5d0257dfb",algorithm="hmac-sha256",headers="(request-target) host date content-type content-length",signature="PLA0HWQDihY7gYM9hThW/WLURDP4hOZ4Gs8vNMZNJ8c="
Cache-Control: no-cache
Date: Wed, 03 Feb 2021 10:31:36 GMT
Content-Type: application/json
Host: rms-world-check-one-api-pilot.thomsonreuters.com
Content-Length: 0
Connection: Keep-Alive
}
response Headers {Strict-Transport-Security: max-age=15552000, includeSubdomains
Authorization: WWW-Authenticate: Signature realm="World-Check One API",algorithm="hmac-sha256",headers="(request-target) host date content-type content-length"
Transfer-Encoding: chunked
Date: Wed, 03 Feb 2021 10:31:39 GMT
Server: ""
0 -
I have dropped you an email to have a quick call tomorrow. Can you please revert back to the email with a suitable time?
0
Categories
- All Categories
- 3 Polls
- 6 AHS
- 36 Alpha
- 166 App Studio
- 6 Block Chain
- 4 Bot Platform
- 18 Connected Risk APIs
- 47 Data Fusion
- 34 Data Model Discovery
- 690 Datastream
- 1.5K DSS
- 629 Eikon COM
- 5.2K Eikon Data APIs
- 11 Electronic Trading
- 1 Generic FIX
- 7 Local Bank Node API
- 3 Trading API
- 2.9K Elektron
- 1.4K EMA
- 255 ETA
- 560 WebSocket API
- 39 FX Venues
- 15 FX Market Data
- 1 FX Post Trade
- 1 FX Trading - Matching
- 12 FX Trading – RFQ Maker
- 5 Intelligent Tagging
- 2 Legal One
- 25 Messenger Bot
- 3 Messenger Side by Side
- 9 ONESOURCE
- 7 Indirect Tax
- 60 Open Calais
- 281 Open PermID
- 46 Entity Search
- 2 Org ID
- 1 PAM
- PAM - Logging
- 6 Product Insight
- Project Tracking
- ProView
- ProView Internal
- 23 RDMS
- 2K Refinitiv Data Platform
- 724 Refinitiv Data Platform Libraries
- 4 LSEG Due Diligence
- LSEG Due Diligence Portal API
- 4 Refinitiv Due Dilligence Centre
- Rose's Space
- 1.2K Screening
- 18 Qual-ID API
- 13 Screening Deployed
- 23 Screening Online
- 12 World-Check Customer Risk Screener
- 1K World-Check One
- 46 World-Check One Zero Footprint
- 45 Side by Side Integration API
- 2 Test Space
- 3 Thomson One Smart
- 10 TR Knowledge Graph
- 151 Transactions
- 143 REDI API
- 1.8K TREP APIs
- 4 CAT
- 27 DACS Station
- 121 Open DACS
- 1.1K RFA
- 106 UPA
- 194 TREP Infrastructure
- 229 TRKD
- 918 TRTH
- 5 Velocity Analytics
- 9 Wealth Management Web Services
- 95 Workspace SDK
- 11 Element Framework
- 5 Grid
- 19 World-Check Data File
- 1 Yield Book Analytics
- 48 中文论坛