Chilkat Online Tools

TCL / Orchestrator / Authenticate (Cloud)

Back to Collection Items

load ./chilkat.dll

# This example assumes the Chilkat API to have been previously unlocked.
# See Global Unlock Sample for sample code.

set http [new_CkHttp]

# Use this online tool to generate code from sample JSON: Generate Code to Create JSON

# The following JSON is sent in the request body.

# {
#   "grant_type": "refresh_token",
#   "client_id": "{{clientId}}",
#   "refresh_token": "{{userKey}}"
# }

set json [new_CkJsonObject]

CkJsonObject_UpdateString $json "grant_type" "refresh_token"
CkJsonObject_UpdateString $json "client_id" "{{clientId}}"
CkJsonObject_UpdateString $json "refresh_token" "{{userKey}}"

CkHttp_SetRequestHeader $http "Content-Type" "application/json"
CkHttp_SetRequestHeader $http "X-UIPATH-TenantName" "{{tenantName}}"

# resp is a CkHttpResponse
set resp [CkHttp_PostJson3 $http "https://account.uipath.com/oauth/token" "application/json" $json]
if {[CkHttp_get_LastMethodSuccess $http] == 0} then {
    puts [CkHttp_lastErrorText $http]
    delete_CkHttp $http
    delete_CkJsonObject $json
    exit
}

puts [CkHttpResponse_get_StatusCode $resp]
puts [CkHttpResponse_bodyStr $resp]
delete_CkHttpResponse $resp


delete_CkHttp $http
delete_CkJsonObject $json

Curl Command

curl -X POST
	-H "Content-Type: application/json"
	-H "X-UIPATH-TenantName: {{tenantName}}"
	-d '{
    "grant_type": "refresh_token",
    "client_id": "{{clientId}}",
    "refresh_token": "{{userKey}}"
}'
https://account.uipath.com/oauth/token

Postman Collection Item JSON

{
  "name": "Authenticate (Cloud)",
  "event": [
    {
      "listen": "test",
      "script": {
        "exec": [
          "pm.test(\"Token Saved\", function () {",
          "    var oldToken = pm.environment.get(\"token\");",
          "    var jsonData = pm.response.json();",
          "    ",
          "    pm.environment.set(\"token\", jsonData.access_token);",
          "    pm.expect(pm.environment.get(\"token\")).to.not.equal(oldToken);",
          "});"
        ],
        "type": "text/javascript"
      }
    },
    {
      "listen": "prerequest",
      "script": {
        "exec": [
          "function GetTenant(url) {",
          "    var pieces = url.split('/');",
          "    ",
          "    // Check if user formatted the url correctly",
          "    if (pieces.length < 5)",
          "        throw \"Detected an invalid Cloud URL. Your URL must be in the form 'https://platform.uipath.com/<account logical name>/<tenant logical name>\";",
          "        ",
          "    // Return the last slug, which will be the tenant name",
          "    return pieces.pop();",
          "}",
          "    ",
          "// Get URL",
          "var url = pm.environment.get(\"url\");",
          "",
          "// Check if cloud URL",
          "if (url.includes(\"uipath.com\")) {",
          "    // Extract tenant from URL",
          "    var tenant = GetTenant(url);",
          "    pm.environment.set(\"tenantName\", tenant);",
          "}",
          "",
          "// Throw error if url is incorrect",
          "else {",
          "    throw \"This authentication method may only be used with Cloud Orchestrators (i.e. those hosted by uipath.com. Please change your URL (\" + url + \") if you intend to use a Cloud-hosted Orchestrator.\";   ",
          "}"
        ],
        "type": "text/javascript"
      }
    }
  ],
  "request": {
    "auth": {
      "type": "noauth"
    },
    "method": "POST",
    "header": [
      {
        "key": "Content-Type",
        "value": "application/json"
      },
      {
        "key": "X-UIPATH-TenantName",
        "value": "{{tenantName}}",
        "type": "text"
      }
    ],
    "body": {
      "mode": "raw",
      "raw": "{\r\n    \"grant_type\": \"refresh_token\",\r\n    \"client_id\": \"{{clientId}}\",\r\n    \"refresh_token\": \"{{userKey}}\"\r\n}"
    },
    "url": {
      "raw": "https://account.uipath.com/oauth/token",
      "protocol": "https",
      "host": [
        "account",
        "uipath",
        "com"
      ],
      "path": [
        "oauth",
        "token"
      ]
    },
    "description": "Retrieves an access token using the User Key found in your Cloud RPA console. This token lasts for 24 hours and is made available to authenticate all other calls."
  },
  "response": [
    {
      "name": "Authenticate (Cloud)",
      "originalRequest": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "User-Agent",
            "value": "",
            "disabled": true
          }
        ],
        "body": {
          "mode": "raw",
          "raw": "{\r\n    \"grant_type\": \"refresh_token\",\r\n    \"client_id\": \"{{clientId}}\",\r\n    \"refresh_token\": \"{{userKey}}\"\r\n}"
        },
        "url": {
          "raw": "https://account.uipath.com/oauth/token",
          "protocol": "https",
          "host": [
            "account",
            "uipath",
            "com"
          ],
          "path": [
            "oauth",
            "token"
          ]
        }
      },
      "_postman_previewlanguage": null,
      "header": null,
      "cookie": [
      ],
      "body": "{\r\n    \"access_token\": \"abcdefghijklmnopqrstuvwxyz1234567890\",\r\n    \"id_token\": \"z0y9x8w7v6u5t4s3r2q1ponmlkjihgfedcba\",\r\n    \"scope\": \"openid profile email offline_access\",\r\n    \"expires_in\": 86400,\r\n    \"token_type\": \"Bearer\"\r\n}"
    }
  ]
}