The challenge is to know the timezone for "token_valid_until": "2022-08-24 20:54:18"
So, with the help from the Support Team from Make, they recommended using a JWT Decoder at data.token
The code
api-auth.imljson
{
"token": {
"condition": "{{if(data.token, data.expires < addMinutes(now, 1), true)}}",
"url": "https://api2.eduzz.com/credential/generate_token",
"method": "POST",
"body": {
"email": "{{ parameters.eduzz_email }}",
"publickey": "{{ parameters.eduzz_publicKey }}",
"apikey": "{{ parameters.eduzz_apiKey }}"
},
"type": "urlencoded",
"response": {
"data": {
"expires": "{{ addSeconds(now, get(decodeJWT(body.data.token), 'payload.exp')) }}",
"token": "{{body.data.token}}"
}
},
"log": {
"sanitize": [
"request.body.email",
"request.body.publickey",
"response.body.token"
]
}
},
"refresh": {
"condition": "{{if(data.token, data.expires < addMinutes(now, 1), true)}}",
"url": "https://api2.eduzz.com/credential/generate_token",
"method": "POST",
"body": {
"email": "{{ parameters.eduzz_email }}",
"publickey": "{{ parameters.eduzz_publicKey }}",
"apikey": "{{ parameters.eduzz_apiKey }}"
},
"type": "urlencoded",
"response": {
"data": {
"expires": "{{ addSeconds(now, get(decodeJWT(body.data.token), 'payload.exp')) }}",
"token": "{{body.data.token}}"
}
},
"log": {
"sanitize": [
"request.body.email",
"request.body.publickey",
"response.body.token"
]
}
},
"info": {
"url": "https://api2.eduzz.com/user/get_me",
"method": "GET",
"headers": {
"token": "{{connection.token}}"
},
"response": {
"metadata": {
"value": "{{body.data[0].email}}",
"type": "text"
}
},
"log": {
"sanitize": [
"request.headers.token"
]
}
}
}
code.js for decodeJWT
function decodeJWT(t) {
const [header, payload, sig] = t.split(".");
return {
"header": JSON.parse(Buffer.from(header, 'base64').toString()),
"payload": JSON.parse(Buffer.from(payload, 'base64').toString()),
"sig": sig
};
}