Click HERE to see how Saviynt Intelligence is transforming the industry. |
07/14/2023 07:49 AM - last edited on 07/14/2023 07:54 AM by Dave
Hi,
We are integrating Saviynt with Coupa Application. Everything is working dynamically in all JSONS like Createaccountjson, Updateaccountjson, RemoveaccountJson, Disableaccountjson but in Connection JSON we have to manually update the token after every 24hrs otherwise it is throwing 401 error. Can anyone please let me know what could be the issue.
Connection JSON-
{
"authentications": {
"acctAuth": {
"authType": "oauth2",
"url": "https://xxxxxxxx.coupahost.com/oauth2/token",
"httpMethod": "POST",
"httpParams": {
"client_secret": "XXXXXXXXXXXXX",
"client_id": "XXXXXXXX",
"scope": "core.user_group.read core.user_group.write core.user.read core.user.write email login profile"
},
"httpHeaders": {
"contentType": "application/x-www-form-urlencoded"
},
"httpContentType": "application/x-www-form-urlencoded",
"expiryError": "ExpiredAuthenticationToken",
"authError": [
"InvalidAuthenticationToken",
"AuthenticationFailed"
],
"timeOutError": "Read timed out",
"errorPath": "error.code",
"maxRefreshTryCount": 5,
"tokenType": "bearer",
"tokenResponsePath": "access_token",
"authHeaderName": "Authorization",
"accessToken": "Bearer eyJ0eXAiOiJhdCtKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6IjRmOjMzOmI3OmY3OjVmOjg4OjQ3OmRhOjAzOmVmOjkzOjQ1OmU5OmNjOmZiOjg3In0.eyJpc3MiOiJodHRwczovL2FiLWluYmV2LXRlc3QuY291cGFob3N0LmNvbSIsImlhdCI6MTY4OTM0MzkwNiwiZXhwIjoxNjg5NDMwMzA2LCJzdWIiOiIxMDIzZmRhODExYzc3OTRlNGNkOWQ0MTk5YWM5ZGJjYiIsImp0aSI6Ijc5MWNjZTU0LWU4MzQtNGE1OC04OGQ4LTgxYzRlZTRmMzAwMiIsImNsaWVudF9pZCI6IjEwMjNmZGE4MTFjNzc5NGU0Y2Q5ZDQxOTlhYzlkYmNiIiwic2NvcGUiOiJjb3JlLmFjY291bnRpbmcucmVhZCBjb3JlLmFjY291bnRpbmcud3JpdGUgY29yZS5hcHByb3ZhbC5jb25maWd1cmF0aW9uLnJlYWQgY29yZS5hcHByb3ZhbC5jb25maWd1cmF0aW9uLndyaXRlIGNvcmUuYXBwcm92YWwucmVhZCBjb3JlLmFwcHJvdmFsLndyaXRlIGNvcmUuYnVkZ2V0LnJlYWQgY29yZS5idWRnZXQud3JpdGUgY29yZS5idXNpbmVzc19lbnRpdHkucmVhZCBjb3JlLmJ1c2luZXNzX2VudGl0eS53cml0ZSBjb3JlLmNhdGFsb2cucmVhZCBjb3JlLmNhdGFsb2cud3JpdGUgY29yZS5jb21tZW50LnJlYWQgY29yZS5jb21tZW50LndyaXRlIGNvcmUuY29tbW9uLnJlYWQgY29yZS5jb21tb24ud3JpdGUgY29yZS5jb250cmFjdC5yZWFkIGNvcmUuY29udHJhY3Qud3JpdGUgY29yZS5jb250cmFjdHNfdGVtcGxhdGUucmVhZCBjb3JlLmNvbnRyYWN0c190ZW1wbGF0ZS53cml0ZSBjb3JlLmVhc3lfZm9ybV9yZXNwb25zZS5hcHByb3ZhbC53cml0ZSBjb3JlLmVhc3lfZm9ybV9yZXNwb25zZS5yZWFkIGNvcmUuZWFzeV9mb3JtX3Jlc3BvbnNlLndyaXRlIGNvcmUuZWFzeV9mb3JtLnJlYWQgY29yZS5lYXN5X2Zvcm0ud3JpdGUgY29yZS5leHBlbnNlLnJlYWQgY29yZS5leHBlbnNlLnNlY3VyZS5yZWFkIGNvcmUuZXhwZW5zZS5zZWN1cmUud3JpdGUgY29yZS5leHBlbnNlLndyaXRlIGNvcmUuZmluYW5jaWFsX2NvdW50ZXJwYXJ0eS5yZWFkIGNvcmUuZmluYW5jaWFsX2NvdW50ZXJwYXJ0eS53cml0ZSBjb3JlLmdsb2JhbF9uYXZpZ2F0aW9uLnJlYWQgY29yZS5pbnRlZ3JhdGlvbi5yZWFkIGNvcmUuaW50ZWdyYXRpb24ud3JpdGUgY29yZS5pbnZlbnRvcnkuYWRqdXN0bWVudC5yZWFkIGNvcmUuaW52ZW50b3J5LmFkanVzdG1lbnQud3JpdGUgY29yZS5pbnZlbnRvcnkuYXNuLnJlYWQgY29yZS5pbnZlbnRvcnkuYXNuLndyaXRlIGNvcmUuaW52ZW50b3J5LmJhbGFuY2UucmVhZCBjb3JlLmludmVudG9yeS5jb21tb24ucmVhZCBjb3JlLmludmVudG9yeS5jb21tb24ud3JpdGUgY29yZS5pbnZlbnRvcnkuY29uc3VtcHRpb24ucmVhZCBjb3JlLmludmVudG9yeS5jb25zdW1wdGlvbi53cml0ZSBjb3JlLmludmVudG9yeS5jeWNsZV9jb3VudHMucmVhZCBjb3JlLmludmVudG9yeS5jeWNsZV9jb3VudHMud3JpdGUgY29yZS5pbnZlbnRvcnkucGlja19saXN0LnJlYWQgY29yZS5pbnZlbnRvcnkucGlja19saXN0LndyaXRlIGNvcmUuaW52ZW50b3J5LnJlY2VpdmluZy5yZWFkIGNvcmUuaW52ZW50b3J5LnJlY2VpdmluZy53cml0ZSBjb3JlLmludmVudG9yeS5yZXR1cm5fdG9fc3VwcGxpZXIucmVhZCBjb3JlLmludmVudG9yeS5yZXR1cm5fdG9fc3VwcGxpZXIud3JpdGUgY29yZS5pbnZlbnRvcnkudHJhbnNhY3Rpb24ucmVhZCBjb3JlLmludmVudG9yeS50cmFuc2Zlci5yZWFkIGNvcmUuaW52ZW50b3J5LnRyYW5zZmVyLndyaXRlIGNvcmUuaW52b2ljZS5hcHByb3ZhbC5ieXBhc3MgY29yZS5pbnZvaWNlLmFwcHJvdmFsLndyaXRlIGNvcmUuaW52b2ljZS5jcmVhdGUgY29yZS5pbnZvaWNlLmRlbGV0ZSBjb3JlLmludm9pY2UucmVhZCBjb3JlLmludm9pY2Uud3JpdGUgY29yZS5pdGVtLnJlYWQgY29yZS5pdGVtLndyaXRlIGNvcmUubGVnYWxfZW50aXR5LnJlYWQgY29yZS5sZWdhbF9lbnRpdHkud3JpdGUgY29yZS5ub3RpZmljYXRpb25zX3N1bW1hcnkucmVhZCBjb3JlLm5vdGlmaWNhdGlvbnNfc3VtbWFyeS53cml0ZSBjb3JlLm9iamVjdF90cmFuc2xhdGlvbnMucmVhZCBjb3JlLm9iamVjdF90cmFuc2xhdGlvbnMud3JpdGUgY29yZS5vcmRlcl9oZWFkZXJfY29uZmlybWF0aW9ucy5yZWFkIGNvcmUub3JkZXJfaGVhZGVyX2NvbmZpcm1hdGlvbnMud3JpdGUgY29yZS5vcmRlcl9wYWQucmVhZCBjb3JlLm9yZGVyX3BhZC53cml0ZSBjb3JlLnBheS5jaGFyZ2VzLnJlYWQgY29yZS5wYXkuY2hhcmdlcy53cml0ZSBjb3JlLnBheS5wYXltZW50X2FjY291bnRzLnJlYWQgY29yZS5wYXkucGF5bWVudHMucmVhZCBjb3JlLnBheS5wYXltZW50cy53cml0ZSBjb3JlLnBheS5zdGF0ZW1lbnRzLnJlYWQgY29yZS5wYXkuc3RhdGVtZW50cy53cml0ZSBjb3JlLnBheS52aXJ0dWFsX2NhcmRzLnJlYWQgY29yZS5wYXkudmlydHVhbF9jYXJkcy53cml0ZSBjb3JlLnBheWFibGVzLmFsbG9jYXRpb25zLnJlYWQgY29yZS5wYXlhYmxlcy5hbGxvY2F0aW9ucy53cml0ZSBjb3JlLnBheWFibGVzLmV4cGVuc2UucmVhZCBjb3JlLnBheWFibGVzLmV4cGVuc2Uud3JpdGUgY29yZS5wYXlhYmxlcy5leHRlcm5hbC5yZWFkIGNvcmUucGF5YWJsZXMuZXh0ZXJuYWwud3JpdGUgY29yZS5wYXlhYmxlcy5pbnZvaWNlLnJlYWQgY29yZS5wYXlhYmxlcy5pbnZvaWNlLndyaXRlIGNvcmUucGF5YWJsZXMub3JkZXIucmVhZCBjb3JlLnBheWFibGVzLm9yZGVyLndyaXRlIGNvcmUucHJvamVjdC5yZWFkIGNvcmUucHJvamVjdC53cml0ZSBjb3JlLnB1bmNob3V0X3NpdGUucmVhZCBjb3JlLnB1bmNob3V0X3NpdGUud3JpdGUgY29yZS5wdXJjaGFzZV9vcmRlci5yZWFkIGNvcmUucHVyY2hhc2Vfb3JkZXIud3JpdGUgY29yZS5yZXF1aXNpdGlvbi5yZWFkIGNvcmUucmVxdWlzaXRpb24ud3JpdGUgY29yZS5yZXZpc2lvbl9yZWNvcmQucmVhZCBjb3JlLnNvdXJjaW5nLnBlbmRpbmdfc3VwcGxpZXIucmVhZCBjb3JlLnNvdXJjaW5nLnBlbmRpbmdfc3VwcGxpZXIud3JpdGUgY29yZS5zb3VyY2luZy5yZWFkIGNvcmUuc291cmNpbmcucmVzcG9uc2UuYXdhcmQud3JpdGUgY29yZS5zb3VyY2luZy5yZXNwb25zZS5yZWFkIGNvcmUuc291cmNpbmcucmVzcG9uc2Uud3JpdGUgY29yZS5zb3VyY2luZy53cml0ZSBjb3JlLnN1cHBsaWVyX2luZm9ybWF0aW9uX3NpdGVzLnJlYWQgY29yZS5zdXBwbGllcl9pbmZvcm1hdGlvbl9zaXRlcy53cml0ZSBjb3JlLnN1cHBsaWVyX2luZm9ybWF0aW9uX3RheF9yZWdpc3RyYXRpb25zLmRlbGV0ZSBjb3JlLnN1cHBsaWVyX2luZm9ybWF0aW9uX3RheF9yZWdpc3RyYXRpb25zLnJlYWQgY29yZS5zdXBwbGllcl9pbmZvcm1hdGlvbl90YXhfcmVnaXN0cmF0aW9ucy53cml0ZSBjb3JlLnN1cHBsaWVyX3NoYXJpbmdfc2V0dGluZ3MucmVhZCBjb3JlLnN1cHBsaWVyX3NoYXJpbmdfc2V0dGluZ3Mud3JpdGUgY29yZS5zdXBwbGllcl9zaXRlcy5yZWFkIGNvcmUuc3VwcGxpZXJfc2l0ZXMud3JpdGUgY29yZS5zdXBwbGllci5yZWFkIGNvcmUuc3VwcGxpZXIucmlza19hd2FyZS5yZWFkIGNvcmUuc3VwcGxpZXIucmlza19hd2FyZS53cml0ZSBjb3JlLnN1cHBsaWVyLndyaXRlIGNvcmUudHJhbnNsYXRpb24ucmVhZCBjb3JlLnRyYW5zbGF0aW9uLndyaXRlIGNvcmUudW9tLnJlYWQgY29yZS51b20ud3JpdGUgY29yZS51c2VyX2dyb3VwLnJlYWQgY29yZS51c2VyX2dyb3VwLndyaXRlIGNvcmUudXNlci5yZWFkIGNvcmUudXNlci53cml0ZSBlbWFpbCBsb2dpbiBvZmZsaW5lX2FjY2VzcyBvcGVuaWQgcHJvZmlsZSIsImF1ZCI6WyJjb3JlIl19.VHS78AuuxiA1Lqjr82FTQsyEsJFb4HSl9bpjQQkNa_ROFdXKZxWbwJKLbsYDjCCccd7-qRBwtn-aUiFHkPvYJdrMmaOiHIehsH6xjEmgeQZ_S-EfQUWIfp731a5G-2rb-GCU-RIjQ6n2adS-2XWJBpWnmIuX4reiMeR9HdhwciE8TSKUCszi4FfLunUPzTENFT_xZpnVo_5sIutYxtxsD8EfkjE_ap68GABEouMUtCcodZPP0pla1L39K9Wv7kaUZMKIsaZj4RA43a4kegk-4PFR9v_hWKGayszK1y8swWflzzjQxnh7oEmrU6EGpi8yAYSzn3-7f_xlfcKWOyQ8Kg",
"retryFailureStatusCode": [
401,
400
]
}
}
}
Connection token is not getting refreshed in 24hrs dynamically.
Thanks
[This post has been edited by a Moderator to merge two posts.]
07/17/2023 08:14 AM
Can you update ConfigJSON param in the REST connection with value {"showLogs":true} if not done already. Check for the error you are getting in the logs and share the same.
07/17/2023 08:41 PM
Can you share this ?
Coupa connector is working as expected for us ?
07/18/2023 12:14 AM
Hi @rushikeshvartak ,
Sorry i did not get you what you are asking.
what do you means by this-Coupa connector is working as expected for us ?
Coupa connector is working but only if we are updating the token in connection in every 24hrs otherwise not. It should work dynamically right?
Thanks
shwet
07/18/2023 04:19 AM - edited 07/18/2023 04:21 AM
Hi @Shwet01 ,
Can you try to pass creds in url as query parameters instead of passing in httpParams like below:
"authType": "oauth2",
"url":"https://xxxxxxxx.coupahost.com/oauth2/token?client_secret=XXXXXXXXXXXXX&client_id=XXXXXXXX&scope=cor... core.user_group.write core.user.read core.user.write email login profile",
"httpMethod": "POST",
"httpParams": {
}
07/18/2023 03:37 AM
try to update the url with the "client_secret": "XXXXXXXXXXXXX",
"client_id": "XXXXXXXX",
"scope": "core.user_group.read core.user_group.write core.user.read core.user.write email login profile
details as you see them in postman.
07/31/2023 11:11 PM
Hi @pmahalle and @saipraveengv ,
I tried to do use the same format but still result is same. Please help me with this. Still token is not getting refreshed in 24hrs by its own.
Connection Json-
{
"authentications": {
"acctAuth": {
"authType": "oauth2",
"url":"https://xxxxxxxxxxxxxxxxxx/oauth2/token? &client_secret=xxxxxxxxxxxxxxxxxxx&client_id=xxxxxxxxxxxxxxxx&scope=core.accounting.read core.accounting.write core.approval.configuration.read core.approval.configuration.write core.approval.read core.approval.write core.budget.read core.budget.write core.business_entity.read core.business_entity.write core.catalog.read core.catalog.write core.comment.read core.comment.write core.common.read core.common.write core.contract.read core.contract.write core.contracts_template.read core.contracts_template.write core.easy_form_response.approval.write core.easy_form_response.read core.easy_form_response.write core.easy_form.read core.easy_form.write core.expense.read core.expense.secure.read core.expense.secure.write core.expense.write core.financial_counterparty.read core.financial_counterparty.write core.global_navigation.read core.integration.read core.integration.write core.inventory.adjustment.read core.inventory.adjustment.write core.inventory.asn.read core.inventory.asn.write core.inventory.balance.read core.inventory.common.read core.inventory.common.write core.inventory.consumption.read core.inventory.consumption.write core.inventory.cycle_counts.read core.inventory.cycle_counts.write core.inventory.pick_list.read core.inventory.pick_list.write core.inventory.receiving.read core.inventory.receiving.write core.inventory.return_to_supplier.read core.inventory.return_to_supplier.write core.inventory.transaction.read core.inventory.transfer.read core.inventory.transfer.write core.invoice.approval.bypass core.invoice.approval.write core.invoice.create core.invoice.delete core.invoice.read core.invoice.write core.item.read core.item.write core.legal_entity.read core.legal_entity.write core.notifications_summary.read core.notifications_summary.write core.object_translations.read core.object_translations.write core.order_header_confirmations.read core.order_header_confirmations.write core.order_pad.read core.order_pad.write core.pay.charges.read core.pay.charges.write core.pay.payment_accounts.read core.pay.payments.read core.pay.payments.write core.pay.statements.read core.pay.statements.write core.pay.virtual_cards.read core.pay.virtual_cards.write core.payables.allocations.read core.payables.allocations.write core.payables.expense.read core.payables.expense.write core.payables.external.read core.payables.external.write core.payables.invoice.read core.payables.invoice.write core.payables.order.read core.payables.order.write core.project.read core.project.write core.punchout_site.read core.punchout_site.write core.purchase_order.read core.purchase_order.write core.requisition.read core.requisition.write core.revision_record.read core.sourcing.pending_supplier.read core.sourcing.pending_supplier.write core.sourcing.read core.sourcing.response.award.write core.sourcing.response.read core.sourcing.response.write core.sourcing.write core.supplier_information_sites.read core.supplier_information_sites.write core.supplier_information_tax_registrations.delete core.supplier_information_tax_registrations.read core.supplier_information_tax_registrations.write core.supplier_sharing_settings.read core.supplier_sharing_settings.write core.supplier_sites.read core.supplier_sites.write core.supplier.read core.supplier.risk_aware.read core.supplier.risk_aware.write core.supplier.write core.translation.read core.translation.write core.uom.read core.uom.write core.user_group.read core.user_group.write core.user.read core.user.write email login offline_access openid profile&grant_type=client_credentials",
"httpMethod": "POST",
"httpParams": {
},
"httpHeaders": {
"contentType": "application/x-www-form-urlencoded"
},
"httpContentType": "application/x-www-form-urlencoded",
"expiryError": "ExpiredAuthenticationToken",
"authError": [
"InvalidAuthenticationToken",
"AuthenticationFailed"
],
"timeOutError": "Read timed out",
"errorPath": "error.code",
"maxRefreshTryCount": 5,
"tokenType": "bearer",
"tokenResponsePath": "access_token",
"authHeaderName": "Authorization",
"accessToken": "Bearer eyJ0eXAiOiJhdCtKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6IjRmOjMzOmI3OmY3OjVmOjg4OjQ3OmRhOjAzOmVmOjkzOjQ1OmU5OmNjOmZiOjg3In0.eyJpc3MiOiJodHRwczovL2FiLWluYmV2LXRlc3QuY291cGFob3N0LmNvbSIsImlhdCI6MTY4OTg0MzcxMywiZXhwIjoxNjg5OTMwMTEzLCJzdWIiOiIxMDIzZmRhODExYzc3OTRlNGNkOWQ0MTk5YWM5ZGJjYiIsImp0aSI6ImYwNWMwNGM4LTY5YmItNDcwNC05OGJmLWM0OWY3OTNmNGQ3NiIsImNsaWVudF9pZCI6IjEwMjNmZGE4MTFjNzc5NGU0Y2Q5ZDQxOTlhYzlkYmNiIiwic2NvcGUiOiJjb3JlLnVzZXJfZ3JvdXAucmVhZCBjb3JlLnVzZXJfZ3JvdXAud3JpdGUgY29yZS51c2VyLnJlYWQgY29yZS51c2VyLndyaXRlIGVtYWlsIGxvZ2luIHByb2ZpbGUiLCJhdWQiOlsiY29yZSJdfQ.fWKmH4D8r8HQB5FRgWz7j6XZh0e8UhGM0OnSbJWMhjZBJCxGxxaH3dFansG2XPmdEj659meRuWKsfOmiNmI-arNhohaq8Ivs2JBsA2ru5YxMiZ0jJ-A3emP-KrpYObPC8PJYxHMRwsfRm8rMdjO4mZ0074V54SfqngXMoZC6b6yCnI0GeMB6MTu9-ovHW0MndhhhFWR2AmNLHyn6xUZMf4sP2FuAn1Mageubaug0YrUEm5bLkyPkMTtquB4xArXCDwV4W0FozvGwhEdHbLK9kbDAmUC6DLI7jBsdca3zUykjErUtN7YoOk3rBO3AcHA4KoKEShS3OqHlB0WAOuPycQ",
"retryFailureStatusCode": [
401,
400
]
}
}
}
Thanks
Shwet
08/01/2023 12:14 AM
@Shwet01 can you share the postman dump for the accesstoken generation
08/02/2023 01:02 AM