PureBasic
PureBasic
Refinitiv World-Check One - Synchronous Screening (POST)
See more Refinitiv Examples
Sends a signed POST request to do simple synchronous screening.Chilkat PureBasic Downloads
IncludeFile "CkHttpResponse.pb"
IncludeFile "CkHttp.pb"
IncludeFile "CkJsonObject.pb"
Procedure ChilkatExample()
success.i = 0
; This example assumes the Chilkat API to have been previously unlocked.
; See Global Unlock Sample for sample code.
json.i = CkJsonObject::ckCreate()
If json.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
; Create the following JSON:
;
; {
; "keyId": "aaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
; "hmacKey": "xxxxzI3vi58xxxCBxxx1+P/d8tGxx7KuLqN/KMPNxxxxekhj8/bx83+1YQSUxxxxYyv939ceY06GvhYRKmxxxx==",
; "algorithm": "hmac-sha256",
; "headers": [
; "(request-target)",
; "host",
; "date",
; "content-type",
; "content-length"
; ]
; }
; Substitute your actual API key and API secret in place of "api-key" and "api-secret"
CkJsonObject::ckUpdateString(json,"keyId","api-key")
CkJsonObject::ckUpdateString(json,"hmacKey","api-secret")
CkJsonObject::ckUpdateString(json,"algorithm","hmac-sha256")
CkJsonObject::ckUpdateString(json,"headers[0]","(request-target)")
CkJsonObject::ckUpdateString(json,"headers[1]","host")
CkJsonObject::ckUpdateString(json,"headers[2]","date")
CkJsonObject::ckUpdateString(json,"headers[3]","content-type")
CkJsonObject::ckUpdateString(json,"headers[4]","content-length")
http.i = CkHttp::ckCreate()
If http.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
; Setting the AuthSignature property causes the following header to be computed and added:
; Authorization: Signature keyId="...", algorithm="hmac-sha256", headers="(request-target) host date content-type content-length", signature="..."
CkHttp::setCkAuthSignature(http, CkJsonObject::ckEmit(json))
; Build the following JSON to be sent in the POST request body.
; {
; "groupId": "{{group-id}}",
; "entityType": "ORGANISATION",
; "caseId": "",
; "providerTypes": [
; "WATCHLIST"
; ],
; "name": "COMPANY NAME",
; "nameTransposition": false,
; "secondaryFields": [],
; "customFields": []
; }
; Use this online tool to generate code from sample JSON:
; Generate Code to Create JSON
jsonBody.i = CkJsonObject::ckCreate()
If jsonBody.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
CkJsonObject::ckUpdateString(jsonBody,"groupId","{{group-id}}")
CkJsonObject::ckUpdateString(jsonBody,"entityType","ORGANISATION")
CkJsonObject::ckUpdateString(jsonBody,"caseId","")
CkJsonObject::ckUpdateString(jsonBody,"providerTypes[0]","WATCHLIST")
CkJsonObject::ckUpdateString(jsonBody,"name","COMPANY NAME")
CkJsonObject::ckUpdateBool(jsonBody,"nameTransposition",0)
CkJsonObject::ckUpdateNewArray(jsonBody,"secondaryFields")
CkJsonObject::ckUpdateNewArray(jsonBody,"customFields")
resp.i = CkHttpResponse::ckCreate()
If resp.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
success = CkHttp::ckHttpJson(http,"POST","https://api-worldcheck.refinitiv.com/v2/cases/screeningRequest",jsonBody,"application/json",resp)
If success = 0
Debug CkHttp::ckLastErrorText(http)
CkJsonObject::ckDispose(json)
CkHttp::ckDispose(http)
CkJsonObject::ckDispose(jsonBody)
CkHttpResponse::ckDispose(resp)
ProcedureReturn
EndIf
Debug "Response status code = " + Str(CkHttpResponse::ckStatusCode(resp))
jsonResp.i = CkJsonObject::ckCreate()
If jsonResp.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
CkJsonObject::ckLoad(jsonResp,CkHttpResponse::ckBodyStr(resp))
CkJsonObject::setCkEmitCompact(jsonResp, 0)
Debug CkJsonObject::ckEmit(jsonResp)
; Use this online tool to generate parsing code from sample JSON:
; Generate Parsing Code from JSON
CkJsonObject::ckDispose(json)
CkHttp::ckDispose(http)
CkJsonObject::ckDispose(jsonBody)
CkHttpResponse::ckDispose(resp)
CkJsonObject::ckDispose(jsonResp)
ProcedureReturn
EndProcedure