I've had a quick look at the TalentLMS API and their doc and, as usual, if they put a tiny bit more effort into actually testing it they'd find that it's wrong.
I say as usual because most APIs and their docs seem to be very fancy with lots of automated ways to get various types of code but it seems no one is testing the code output.
In this case TalentLMS wants you to use Postman to generate code for calls and testing. Really excellent process and once again, very fancy, but it is simply wrong in what it does. Amazing that no one has tested this stuff. They went to all the trouble to document it and it looks beautiful... but it doesn't work.
So, setup your TalentLMS account and install Postman under Chrome. It's all documented really well... and you can be testing TalentLMS calls in Postman within 30 minutes. They won't work, but you can see how it all goes together.
Once you've got Postman working and a basic test call to get, for example, users, you can generate cURL code... which turns out to be this...
I have no idea what "ZGlnaXRhbGFkanVzdGVyOkFhcm9uZGs=" is. It's supposed to be your TalentLMS API key... but it isn't. Replacing it with your actual api key doesn't work and results in an error about using your API key as a username and an empty password.
Alpha has a cURL to XBasic Genie that provides the XBasic code and it works great. The cURL code is wrong from Postman, but that's nothing to do with XBasic.
The cURL code converts the "Authorization" header line to this...
dim slist1[0] as c = [ "Authorization: Basic ZGlnaXRhbGFkanVzdGVyOkFhcm9uZGs=" , "Cache-Control: no-cache" , "Postman-Token: f30ce9d0-3708-4809-bc91-dfa9120e819d" ]
But... as far as I can see, it's wrong. Not XBasic wrong... Postman cURL wrong. The right code... or at least... the code that works is below.
Take note to replace the TalentLMS username and apikey as indicated below.
I've added code to create a new Postman-Token for each call.
Set this code up as an Ajax Callback and run under the LivePreview tab to walk through the code. Examine the contents var and you'll see a list of user data returned.
I say as usual because most APIs and their docs seem to be very fancy with lots of automated ways to get various types of code but it seems no one is testing the code output.
In this case TalentLMS wants you to use Postman to generate code for calls and testing. Really excellent process and once again, very fancy, but it is simply wrong in what it does. Amazing that no one has tested this stuff. They went to all the trouble to document it and it looks beautiful... but it doesn't work.
So, setup your TalentLMS account and install Postman under Chrome. It's all documented really well... and you can be testing TalentLMS calls in Postman within 30 minutes. They won't work, but you can see how it all goes together.
Once you've got Postman working and a basic test call to get, for example, users, you can generate cURL code... which turns out to be this...
Code:
curl -X GET -H "Authorization: Basic ZGlnaXRhbGFkanVzdGVyOkFhcm9uZGs=" -H "Cache-Control: no-cache" -H "Postman-Token: f30ce9d0-3708-4809-bc91-dfa9120e819d" "https://your_talentlms_username.talentlms.com/api/v1/users"
Alpha has a cURL to XBasic Genie that provides the XBasic code and it works great. The cURL code is wrong from Postman, but that's nothing to do with XBasic.
The cURL code converts the "Authorization" header line to this...
dim slist1[0] as c = [ "Authorization: Basic ZGlnaXRhbGFkanVzdGVyOkFhcm9uZGs=" , "Cache-Control: no-cache" , "Postman-Token: f30ce9d0-3708-4809-bc91-dfa9120e819d" ]
But... as far as I can see, it's wrong. Not XBasic wrong... Postman cURL wrong. The right code... or at least... the code that works is below.
Take note to replace the TalentLMS username and apikey as indicated below.
I've added code to create a new Postman-Token for each call.
Set this code up as an Ajax Callback and run under the LivePreview tab to walk through the code. Examine the contents var and you'll see a list of user data returned.
Code:
function talentLMS as c (e as p) debug(1) dim talentLMS_Token as c talentLMS_Token = api_uuidcreate() dim cf_1 as extension::CurlFile dim flag_1 as l dim slist1[0] as c = [ "Cache-Control: no-cache" , "Postman-Token: " + talentLMS_Token ] dim ce as extension::Curl ce = extension::Curl.Init() ce.setOpt("URL","https://your_talentlms_username.talentlms.com/api/v1/users") ce.setOpt("NOPROGRESS",1) ce.setOpt("USERAGENT","curl/7.34.0") ce.setOpt("USERPWD","your TalentLMS api key here") ce.setOpt("HTTPHEADER",slist1) ce.setOpt("MAXREDIRS",50) ce.setOpt("CAINFO",a5.Get_Exe_Path()+"\caroot\ca-cert.pem") ce.setOpt("CAPATH",a5.Get_Exe_Path()+"\caroot") ce.setOpt("CUSTOMREQUEST","GET") ce.setOpt("TCP_KEEPALIVE",1) ce.SetOpt("FILE",cf_1) flag_1 = ce.Exec() if flag_1 then dim headers as c dim contents as c headers = cf_1.GetHeaders() contents = cf_1.GetContent() 'BE SURE TO COMMENT OUT THIS CODE IN A WEB APPLICATION AS showVar() CANNOT BE USED IN WEB APPLICATIONS 'dim msg as c 'msg = "Headers: " + crlf() + headers + crlf() + "Content: " + contents 'showvar( msg) else dim errors as c errors = ce.error() 'BE SURE TO COMMENT OUT THIS CODE IN A WEB APPLICATION AS showVar() CANNOT BE USED IN WEB APPLICATIONS showvar("error: " + errors) end if ce.close() end function
Comment