I know this is pretty old but, I have some comments about it
var_result get the WS call result in JSON format as:
[font=courier]var_result = 
{
    "message": "Recipient updated",
    "smart_name": "APPLY",
    "vb_url": "https://app.theresult.com/a/2255ddaa",
    "abc_group": "Itt"
} [/font]
To convert it to a LIST:
[font=courier]v_kvlist = KVListFromJSONEx[var_result,0][/font]
Is updated as:
[font=courier]v_kvlist=message:Recipient updated|smart_name:APPLY|vb_url:https://app.theresult.com/a/2255ddaa|abc_group:Itt[/font]
Then you can assign variables or UData from the LIST as:
[font=courier]v_smart_name=KVListGetStringValue[v_kvlist,'smart_name']
Update['message',KVListGetStringValue[v_kvlist,'message']
Update[KVListGetKey[v_kvlist,1],KVListGetStringValue[v_kvlist,KVListGetKey[v_kvlist,1]]]
This works better, for complex JSON
for (i=1;i<KVListGetSize[var_kvlist];i++){
  key=ListGetKey[var_kvlist,var_loop]
  value=ListGetString[var_kvlist,var_loop]
  Update[key,value]
}
[/font]
etc.
[code]
{
   "totalSize":1,
   "done":true,
   "records":[
      {
         "attributes":{
            "type":"typeA",
            "url":"http://google.com/?q=object"
         },
         "Id":"889939392AA3",
         "Alias":"auser",
         "Registration_Date":"2022-01-01",
         "Owner":{
            "attributes":{
               "type":"User",
               "url":"http://srm.com/owner/aADR3wwAAB"
            },
            "Name":"Juan Perez"
         },
         "Scheduled":null,
         "Explorer":"ABC"
      }
   ]
}
var_TempKV(LOCAL) <- STRING[1,424]: "totalSize:1|done:1|records.#0.attributes.type:typeA|records.#0.attributes.url:http://google.com/?q=object|records.#0.Id: 889939392AA3 |records.#0.Alias:ssstoibe|records.#0.Registration_Date:2022-01-01|records.#0.Owner.attributes.type:User|records.#0.Owner.attributes.url:http://srm.com/owner/aADR3wwAAB|records.#0.Owner.Name:Juan Perez|records.#0.Explorer:ABC"[/code]