Impersonation

7 minute read

Impersonation allows users with the specific user role to temporarily assume a user’s identity for support, debugging, and other purposes.

Note: Subscribers can impersonate users on the subscriber side. The Impersonate Users role is required to impersonate other subscriber users. Providers can impersonate users on the provider side. The first root user of the provider has the power to impersonate other provider users.

How Impersonation Works

Impersonation lets one user act on behalf of another user — without access to their credentials. For example, User 1 (Admin) wants to troubleshoot an issue reported by User 2 (Regular user).By impersonating User 2, User 1 can access the system exactly as User 2 sees it — including their UI, data, permissions, and active session context.

Note: User 1 does not gain permanent access to User 2’s account. It’s a temporary and controlled session that respects all the same permissions and data boundaries as if User 2 had logged in themselves.

Here are the most common scenarios where impersonation is useful:

  • Customer Support: Support agents can log in as a user to walk them through an issue or reproduce a bug.
  • QA & Testing: Developers or QA teams can simulate real user experiences without needing to create test accounts.
  • Admin Tools: Admins can verify user roles, permissions, and access directly.

Keep in mind the following key points:

  • Impersonation should be used only by trusted systems or admins.
  • Never expose or share impersonation tokens.
  • Make sure only authorized users/services can impersonate others.
  • Always keep private keys and tokens secure.
  • Register each case of impersonation: who, when, whom, and why.

Types of Impersonation

ServiceChannel API supports two types of impersonation:

  • Bearer Impersonation — using the POST /oauth/token endpoint to impersonate a user by specifying a username.
  • JWT Impersonation — using the POST /jwt/token endpoint to impersonate a user by specifying a username.

Bearer Impersonation

Bearer token impersonation requires populating the ImpersonateInfo.UserName parameter in the body of the POST /oauth/token request.

Note: To impersonate users on the subscriber side, a user must be assigned the Impersonate Users role. On the provider side, to verify whether a specific provider user has impersonation privileges, please contact the ServiceChannel Support team, if necessary.

Follow this guide to learn how to implement a bearer impersonation.

Bearer impersonation steps

Step 1. Obtain an Access Token

Before impersonating, you should obtain authorization. To authorize, use your resource owner credentials: username and password for the ServiceChannel account. Exchange these credentials for access_token.

Request access-token

POST /oauth/token

Header Value Note
Authorization Basic {encoded client_id:client_secret} Replace with your encoded client_id:client_secret
Content-Type application/x-www-form-urlencoded  
Parameter Parameter type Value Note
username Body User1 Replace with your username.
password Body servicechannel1 Replace with your password.

Example request:

POST /oauth/token HTTP/1.1
Host: sb2login.servicechannel.com 
Authorization: Basic U0IuMjAxNDkxNzI0My43MDk0MzU1MC05OTc0LTQxRTctOEIzOC1DQThDOEMwMjQyNjI6MUM2MDBDQjctNEQyNC00Nzg3LUJCM0UtQUNEMkIyRkJGNzQ1
Content-Type: application/x-www-form-urlencoded
Content-Length: 65 

username=User1&password=servicechannel1&grant_type=password

Example response:

{
    "access_token": "AAEAAFs6ombGWjnzzZkY1XgFA3eWtbWcNUOiNQ2100wWhtHvWIKJt1rbXSu43OrGI5NEkNh7kIZdPPIH6oqovjNcqqap36QETNEsT2Arh9WJkgaZT0zlalnSVeCWLbQ55FFoQHEPTvMbH1SGh-RoFxWf0XwH_ttMnr0tDNWik-J51O8RQqCTJVAa4aQ3Vow2NOod0ERQhTPh1LBke29FxRN8GPNuJ0m8PL0vbS7jwf4MLngny8MyYKaBuFd2jP4539lCImmZ4mQ93xL5hbZaZMlFASILFIOpmhTP2w7yVSbncnmOVSzJyk0S1oyJmxtPUF7VqjKrl8GhpA00_ZqoEYNvgIXUAwAAAAEAACwXKA8Ylqleb4x3PG6i1LLxK6A3Y12iXK0VWQmZv6Zbx5NLnVe-8fvC8po7iv9u6HblHHBq6Krr77s3xa8W-mYj0V7r6w6Ak_wZE2Sf1SejAzAzJuDMN24Iej5qEJsbObZkQI-3dgVH2O1jqvPUhA7UtI-Ou2wF_qv_CBhnKedDkaWalrmGYWxhRJ4PINosVahCDTing78vhyUgK6sEXWJf5pbWV6voJJSFQ_yz3OyjeKV4cchceaUS_ago3nq-vA4VzvfMxW4R1JtzzhUhjl1QnhRTu4gxm-8ANpQMWc04Nn0KIIga6gBZRKLjhgAqOwCsrHWuauIadsXsoPYBa-PPP22XykeYmeoARO_hHZBYEimxe4jCdAmi3VG-dSqO2GLsdFjhpE6mNDDmKXB3IeTPMzQH_LvhvbC_XZsDqHjLv9ZkQtUBbIS91ql13FENJAOEbk3bj1rIUXAfZBolxoUwWDC5v_FfPkXaibFU68PfBX1_z15GyLvFgBHQFfVEfhIqUHtLkUN5u4p6j7L9ZdEb6v070NKUVc3i5sna7iT3mMlnNJigzy4jxk9bEBpdqa0DmYiaVp0jvWgih-gy5VCOa75HmKoCxN3dAGrmmcZbHMil3nxj6HKX9RAQgdGFb6CNaovDAcfISMPXJi7Tf5JZ6sivCACgVUwhnKKwFcJy3PIMZhN5pCRiu6dyX04jrmETGdMpMmE40IhI3_gzu4t6Lq_33YUnUDrF8SiN5dnTM7krpq5FfEQN7TyKqozAu3aMQbumwSvJAr1lCvRN5Agh-aAHyAaG-JpaSRqEG2_6tvhKA4Gv6PzIGVNR48-G2o2XrIS8gDMyVh9k9XYBIa_fO9VZxYYBRa_IGzYRdNQ3HfGX3t353TGVPImrkC_fQ6qT9y49fnpXzNSqjnOz-BxMoaopXcZSTAlvXi222nSdQ-oG1yggGzEfLTLdDNLvrDsLH0jKpNaXOtKikvyy2xhwCW-KgWqyUv6-SH2AzBxluENA-03XMaoytJDBthVVVV7FpLf6QslQp7BeFv-VHgbLXQ-APRj0V8gr1HcdLyis4h4oHWiCtMABshs2YCCmTxRQ1f1p7j_VjIAyIPtogRLWDLyBrySjM7-TE6889v0c5bxxfG4EU5G82PL5afIHpFL8CetCJ_GzqMULB74fY1QUE_KwEePk_NihjqMscTqXv12HJO-PY1iDp5kmJkAO5ZAJ_nt42Gkizq2sVTMwQKvoptDaomwbdukr8QLg5Sr0IWQGR4Smt4JN6sKL5sdFsVmr3i08pHWEEP0GPQP1HPE",
    "token_type": "bearer",
    "expires_in": 600,
    "refresh_token": "dNVx!IAAAAIrDXkPB-Gy9nJPrKGhnL0uJ0cs3b3AbNGkUw7repLvqgQIAAAHSSyjmw66oFU69IgiMP1hMEZ4U3e1fcHW2tH0UcKMeiAmifvk2Vesa71_xO7vjeSVty4ZMW19aIIZS1tRtlC9FfDvEpD_4dclp1qHGk7KBbH31u4fZND3O7ppdO05XHevsN3iqdwdDOKE6xvP92i3UIlkflTWOxyfqFCN7fEjQlnrIfchJV6vB6qPalaLwBwh1rt79_ecU7z1CEcZNt0dxA91GHWgQN48TNjj7fcxY2zBbpoUsrElkzhgYwC7XaAsAU90dRCdZtD3PWh_pOLWR8q7weDFQmQzpKXZftVBJWJrSealfpGTrr_lsNGPQVzylbILyIIKHxnVKIqtRWUcUSh4Qy-p9MxD3_YCDSSBjQtpeqzIQ4QtlYVwSmktgW1t8ostBYo4JneSW8RPKQ_b7wu3b7Bw4RrCuZDVjNxFejLjrH-9g8ttJU_zNWF_GcNGfIe54S7FI7ICvzUIOq-Nf1dY7LS2UVszqxwvIX5Bt6jPwwOqMCrnjJgn_9SSMrVxNNBZlx8QxPRd9OLjbHEZNjFo_qVyJCOVmK6_GKe6NpXuHxpAA_O2XZsfd3popa_WOuFFxcbz9XpmyaUmybxILetTUpkbF_PyXNsHSyNxzW6m6C-H_QTi8XhUC_7TPSJBZqZFHCUxT4Q0PwXBLNohGs_ppUap5HT-wXq5P_NXP6pUndIlTAwOP2QPQQnujE4hFZ8L5ngYD89dQVYg7Sb4eStfVRJcT87UQdHom_2o6O99NDsOYA6gcJBtQKcCloltJwV4BB9N8JMli_8sIYcSPTRTiiV9Ms8ZW0ljye_OGKLJMDXaDOJwXu_BAGLZHvAqMlRn0lvubUiFJA37ERE5J",
    "scope": "WorkOrderCreate WorkOrderStatusChange WorkOrderFullEdit WorkOrderRead ViewAttachments WokorderChangeableNte WorkOrderScheduledDateChange WorkOrderReportFullEdit WorkOrderReassign NotesRead NotesFullEdit NotesEditInProgress NotesEditCompleted ProposalRead ProposalCreate ProposalProcess InvoiceRead InvoiceCreate InvoiceProcess ProjectsInvoiceRead ProjectsProposalEdit ProjectsWorkOrderRead EditInvoicedWO"
}

Step 2. Obtain a Bearer Impersonation Token

To get an impersonation token, use the access_token that you have obtained in step 1. Include in the request the name of the user on whose behalf you want to access the ServiceChannel API.

Example request:

POST /oauth/token HTTP/1.1
Host: sb2login.servicechannel.com
Authorization: Bearer AAEAAFw_ZczxqhFStXqVlV47I3xfXGbyfc-owWI-ig4jPJ6tlXgfJUDkNrI35f9s6TsD6GnBZYOa9Pg7xuzmd_ssBgn6-tjunfDCjLnqrfaqGNJSESQlPnmKtMGFvzDHcWmtzQwahelwx4SCQE-XIKWmCfGAwKi__Nq9n2PB_MAH3qYNKiCRlnKB1pNPi7rjdRrBUYledvDcfGVhON6IXznbi9S2oDWqE5Z4qdMuOnwUpJN2TqGj6ufXLZIrkl97HhAzKMwV3OR4Wl9N3dfcx_vySd5nNl9Wt1i0lYyf6SUzTNMNfAkh9D45_krDAweG-arOC7yH6szf71TyfPPru-T0TYQkBAAAAAEAAAW0BREjx1gIHRlibE_lgtOCFGfEmgzLlfkEObjru2rxm7hH79E5hY06Rs4YMLNi8lGH6agouAbDM-O6bMR8XZmq98yrZSFRwZF6kym6raK8ikq3fWDYuF3TyXpGo14Fuk75Tw7zWbs3GWdFGe9gVEVlL8wenzH_mA27W-2I7CjrL8ahndmNeuBzmjdxqTILURUDdl_feqw4vJWwNxvZvHFltqTu4lKUm0K1FMihr1HC84osmlEXxLEkp_TZL7TWYzzbF6IVrnVq-eO4JttiiWQZZLJ61aC-pMHjMU7mXcsM7z5u24SzcMhzXDMrgxuITQaAbpPmJJJQkIlhOC0Eg2xFokpW8RIsUobZawiNai77ReDzFT4jC4H4RsRTvZ_QhKIcCZ8Gt2uTJk8NBsE2XcVOUigAMNCwP2G1-fItWpm0V3ewYQOsnFpsiamVUzJhMN_NQ_es8uO-iUUqZrmHAZbsgik_EcBZCxDaZzL2gnpw4zfMT1sSTAdKOlLdYw9-jtzgGSGxC8sqqagIm0NtPS1KVcaT_IgYyn4hMVVNNZIo1seIazUP0LtpQs_iVikNJj9sS0h_ehjPcWnZ-ivkHts41YeYcleKiFsVbifJniH_yJwuKCCCUiJ1sypyYmgJdB0-Ajk6K9G2OebBU8hrGd6-xWU3Krbd0eUslbLhuuX9ROBRyGcTjGDvtapxFCEx6QMxx8E5nfCI9XTWRSJsBJOIVnvNyomwDIUJq4-3u7yKGfZoHWQPXRr5tcHt7_wFixibToMQmhdTnb5fivZyZ3kQnEQsjVe1dF9rc0RwMS6C5Sz-qSULIR-v-RNchha0ueK6w-8XRsWZOJPAKqkExhAvYOv-C02r0HZjJ-f_ZQ3QEZ9TGO4IJfjj5m8soDmiW3RnWz6KIPx93KlVDZaLfmel7mGTbdsc3O0dZwMU6UmTqqm-bmhaRxmomm7nQ7KB38DHctF-oQx2lmrDNfY27Ja4Xzu8Agr1ArWX485ysCP87v7adUw4RZdXNDFYbm-sNjM1hYIlwyK1E8Nfi3-w8OGBbKlBIUA_bU6_IP7WWNfNtXeuMD1MnIms57PFXR3cUAJCdHDf44y5suvWGVeR7tUixpIvePy0tgljGqCfaOwScy4E9ssPHPwpfzRO0ey-kmcGRUxACqp68rbOd17Gnmki8gr-rnWKFuzDJMgBdVZ6qwJKfnCLirLR_qyC4XpyF9d4KHmmjp7D3B9YmlY8jlTVp9CowE9cAuulXhhum6YcrnLRt3BgCTToknQTvGoHRhgC1aEdwLlyOZMw0_zCpxWHU-WPOq9jLkDAEleZFyxEVwiwv65VGnX5SXzbR98Z_oDzQ13oSLvUxAbqmDmvipvNkh9GfytC0w0Fdx-lnNXwFX_jKJ9JZM70a8P560rPbw
Content-Type: application/x-www-form-urlencoded
Content-Length: 61

auth_type=Impersonate&ImpersonateInfo.UserName=User2 

Example response:

{
   "access_token": "AAEAAFw_ZczxqhFStXqVlV47I3xfXGbyfc-owWI-ig4jPJ6tlXgfJUDkNrI35f9s6TsD6GnBZYOa9Pg7xuzmd_ssBgn6-tjunfDCjLnqrfaqGNJSESQlPnmKtMGFvzDHcWmtzQwahelwx4SCQE-XIKWmCfGAwKi__Nq9n2PB_MAH3qYNKiCRlnKB1pNPi7rjdRrBUYledvDcfGVhON6IXznbi9S2oDWqE5Z4qdMuOnwUpJN2TqGj6ufXLZIrkl97HhAzKMwV3OR4Wl9N3dfcx_vySd5nNl9Wt1i0lYyf6SUzTNMNfAkh9D45_krDAweG-arOC7yH6szf71TyfPPru-T0TYQkBAAAAAEAAAW0BREjx1gIHRlibE_lgtOCFGfEmgzLlfkEObjru2rxm7hH79E5hY06Rs4YMLNi8lGH6agouAbDM-O6bMR8XZmq98yrZSFRwZF6kym6raK8ikq3fWDYuF3TyXpGo14Fuk75Tw7zWbs3GWdFGe9gVEVlL8wenzH_mA27W-2I7CjrL8ahndmNeuBzmjdxqTILURUDdl_feqw4vJWwNxvZvHFltqTu4lKUm0K1FMihr1HC84osmlEXxLEkp_TZL7TWYzzbF6IVrnVq-eO4JttiiWQZZLJ61aC-pMHjMU7mXcsM7z5u24SzcMhzXDMrgxuITQaAbpPmJJJQkIlhOC0Eg2xFokpW8RIsUobZawiNai77ReDzFT4jC4H4RsRTvZ_QhKIcCZ8Gt2uTJk8NBsE2XcVOUigAMNCwP2G1-fItWpm0V3ewYQOsnFpsiamVUzJhMN_NQ_es8uO-iUUqZrmHAZbsgik_EcBZCxDaZzL2gnpw4zfMT1sSTAdKOlLdYw9-jtzgGSGxC8sqqagIm0NtPS1KVcaT_IgYyn4hMVVNNZIo1seIazUP0LtpQs_iVikNJj9sS0h_ehjPcWnZ-ivkHts41YeYcleKiFsVbifJniH_yJwuKCCCUiJ1sypyYmgJdB0-Ajk6K9G2OebBU8hrGd6-xWU3Krbd0eUslbLhuuX9ROBRyGcTjGDvtapxFCEx6QMxx8E5nfCI9XTWRSJsBJOIVnvNyomwDIUJq4-3u7yKGfZoHWQPXRr5tcHt7_wFixibToMQmhdTnb5fivZyZ3kQnEQsjVe1dF9rc0RwMS6C5Sz-qSULIR-v-RNchha0ueK6w-8XRsWZOJPAKqkExhAvYOv-C02r0HZjJ-f_ZQ3QEZ9TGO4IJfjj5m8soDmiW3RnWz6KIPx93KlVDZaLfmel7mGTbdsc3O0dZwMU6UmTqqm-bmhaRxmomm7nQ7KB38DHctF-oQx2lmrDNfY27Ja4Xzu8Agr1ArWX485ysCP87v7adUw4RZdXNDFYbm-sNjM1hYIlwyK1E8Nfi3-w8OGBbKlBIUA_bU6_IP7WWNfNtXeuMD1MnIms57PFXR3cUAJCdHDf44y5suvWGVeR7tUixpIvePy0tgljGqCfaOwScy4E9ssPHPwpfzRO0ey-kmcGRUxACqp68rbOd17Gnmki8gr-rnWKFuzDJMgBdVZ6qwJKfnCLirLR_qyC4XpyF9d4KHmmjp7D3B9YmlY8jlTVp9CowE9cAuulXhhum6YcrnLRt3BgCTToknQTvGoHRhgC1aEdwLlyOZMw0_zCpxWHU-WPOq9jLkDAEleZFyxEVwiwv65VGnX5SXzbR98Z_oDzQ13oSLvUxAbqmDmvipvNkh9GfytC0w0Fdx-lnNXwFX_jKJ9JZM70a8P560rPbw",  
   "token_type": "bearer",  
   "expires_in": 600,  
   "refresh_token": "dNVx!IAAAAJUQa9ckeh6k7uBYH46X4NoGcpSnoOtBXqiHdPUYHyWZ4QIAAAHB0pQQx3qSrsJQAG3kRl4i2JsBpc3hj2Qmy82m4XAD0MqGWaNOkZLEG9isu2DPULTOYGldDFZBuTW2tFUonqPiSpqHHZ_hdrOb_Ha0RQ3xXQN90_bv8-QBhSQ1lAg9BW4zgf_GAXu4EuVukKVpdCsM0HIKomrMRzHkX6s86o59ZhoF82Kz14qRofRUVYww48DMD2c0iHj7VPE3DpNYVw18WTTTAiNFSkgazo4AU8cCcHtNVF_CTVZTP3_C-9pMvw8c86fT6oORf1tjLHxhQgB734O8Fm4GVEtN9-SZzTpunt7VbJCr5XjyGyXzVma-nLpkkHCp4uWyi0MpF3SvNAXk0cxSEhhWXFnPjlK6HwmWSNf-oAacJqyH_S2JSF9AOl27nKFxDf_e9H6VSxv-auzqirqfLSUwvazQICqA8Nc2Kacrv8kzCW6_KVM4mQ58Wu-h_41iD6KCHtyAMCAcuPhSEer-TixQMZI7km6hvUCBaaCvMBKgK3PRlgai3F4t5CqPbcv6Z-IbmXTvi_OhcWwjI37lzjPMjm2l1dnqVKUZdkftSGQ4LjpZ938C1AfRwtnJXoqXGRXiFB-I_IiZUvJ9Ut7Al7-HDea38i53fp6y7y6kJyRQZltt7nEFgUgOD9G0jH6o8Rz-Y49Jnql0CAZk4pLCmuqs4PsyEcRUPppSta3AXMbInYRYZpbdio9J6eECSRfu9EPvEIXHDpntUPYdz-59DUTkPi2IdBsu1Y-oGKYwhFwEwwSp6YuhmBbOfvrIl5eeYi8flMJekBvaGwcnvoGdayzClaPIfsxpTOW1e46CaQYYlkVnZWwNrwBXnuv4x-9xHreJ-Al0HME6no6dTxzeALGQBc1feBAgQNR7sMjOUE34TmMMWWum01opxSiWSybmPBZeMSZNIWI2jg716QY1xHMMQ49erfkfz52Myxit_E0QNtejH7mbBXpdBguT4brRCzk4uxnlb2lG79GE",  
   "scope": "WorkOrderCreate WorkOrderStatusChange WorkOrderFullEdit WorkOrderEditCompleted WorkOrderRead ViewAttachments WokorderChangeableNte WorkOrderScheduledDateChange WorkOrderReportFullEdit WorkOrderReassign NotesRead NotesFullEdit NotesEditInProgress NotesEditCompleted ProposalRead ProposalCreate ProposalProcess InvoiceRead InvoiceCreate InvoiceProcess ProjectsInvoiceRead ProjectsInvoiceEdit ProjectsProposalRead ProjectsProposalEdit ProjectsWorkOrderRead ProjectsWorkOrderEdit EditInvoicedWO"
}

Step 3. Access our API

Having obtained the impersonation token, you can act on behalf of the impersonated user. Submit any API request.

To check whether you have successfully obtained the impersonation token, run the GET /users/current/profile request. The response to this request contains the UserName which refers to the name of the user on whose behalf you are going to send API requests. Apart from the username, the response contains other information, including user roles and permissions, NTE and invoice limits, stores, districts, dashboards, etc.

Note: The profile of the impersonated user may be different from your user profile. That said, API requests under the impersonation token are restricted by the permissions and roles of the user being impersonated.

You can submit API requests until the impersonation token expires. Afterwards, if you want to proceed, you need to generate a new access token.

Step 4. Regenerating an Access Token

Your access_token expires after a time period set in the expires_in property of the POST /oauth/token response. The time period is set in seconds.

Use refresh_token that you have received with the POST /oauth/token request (in Step 2. Obtain a Bearer Impersonation Token) to generate a new access token.

POST /oauth/token

Header Value Note
Authorization Basic {encoded client_id:client_secret} Replace with your encoded client_id:client_secret from step1.
Content-Type application/x-www-form-urlencoded  
Parameter Parameter type Value Note
refresh_token Body {refresh_token} Replace with your refresh_tokenfrom step 2.
grant_type Body refresh_token  

Example request:

POST /oauth/token HTTP/1.1
Host: sb2login.servicechannel.com
Authorization: Basic U0IuMjAxNDkxNzI0My43MDk0MzU1MC05OTc0LTQxRTctOEIzOC1DQThDOEMwMjQyNjI6MUM2MDBDQjctNEQyNC00Nzg3LUJCM0UtQUNEMkIyRkJGNzQ1
Content-Type: application/x-www-form-urlencoded
Content-Length: 1080

refresh_token=dNVx!IAAAAJUQa9ckeh6k7uBYH46X4NoGcpSnoOtBXqiHdPUYHyWZ4QIAAAHB0pQQx3qSrsJQAG3kRl4i2JsBpc3hj2Qmy82m4XAD0MqGWaNOkZLEG9isu2DPULTOYGldDFZBuTW2tFUonqPiSpqHHZ_hdrOb_Ha0RQ3xXQN90_bv8-QBhSQ1lAg9BW4zgf_GAXu4EuVukKVpdCsM0HIKomrMRzHkX6s86o59ZhoF82Kz14qRofRUVYww48DMD2c0iHj7VPE3DpNYVw18WTTTAiNFSkgazo4AU8cCcHtNVF_CTVZTP3_C-9pMvw8c86fT6oORf1tjLHxhQgB734O8Fm4GVEtN9-SZzTpunt7VbJCr5XjyGyXzVma-nLpkkHCp4uWyi0MpF3SvNAXk0cxSEhhWXFnPjlK6HwmWSNf-oAacJqyH_S2JSF9AOl27nKFxDf_e9H6VSxv-auzqirqfLSUwvazQICqA8Nc2Kacrv8kzCW6_KVM4mQ58Wu-h_41iD6KCHtyAMCAcuPhSEer-TixQMZI7km6hvUCBaaCvMBKgK3PRlgai3F4t5CqPbcv6Z-IbmXTvi_OhcWwjI37lzjPMjm2l1dnqVKUZdkftSGQ4LjpZ938C1AfRwtnJXoqXGRXiFB-I_IiZUvJ9Ut7Al7-HDea38i53fp6y7y6kJyRQZltt7nEFgUgOD9G0jH6o8Rz-Y49Jnql0CAZk4pLCmuqs4PsyEcRUPppSta3AXMbInYRYZpbdio9J6eECSRfu9EPvEIXHDpntUPYdz-59DUTkPi2IdBsu1Y-oGKYwhFwEwwSp6YuhmBbOfvrIl5eeYi8flMJekBvaGwcnvoGdayzClaPIfsxpTOW1e46CaQYYlkVnZWwNrwBXnuv4x-9xHreJ-Al0HME6no6dTxzeALGQBc1feBAgQNR7sMjOUE34TmMMWWum01opxSiWSybmPBZeMSZNIWI2jg716QY1xHMMQ49erfkfz52Myxit_E0QNtejH7mbBXpdBguT4brRCzk4uxnlb2lG79GE&grant_type=refresh_token 

Example response:

{
    "access_token": "AAEAAJVHGrz9yGUkH-9koRqaqVl8uOoxl8WZgFPzcEY-HEkQCRESBgUW4f8fRJ6e6Hm_7oWC_4k2iU960AJRALy9PTViubynoec3glIHgBA59U8Nl-Z_630XtSJkrV2M3FfKeobGQFAMxFjec3q0cmEjM-g7fTHWS8KMjjCDdr40dWF0MoqTrWIpHWIECRSsxyjy1zXVvfnEkyEcariQlcmEMlba-lr4rAG3THs2vSP0HONK8UlW-X4z2fgxOmUkwCkbv3NPPizFCBdfBa1-d1EzCRu_0uGlFC4P0Mj6zqKPqz-dLwmQyXbPqg3a_j5huIXnz5Lz-YkcqARSCib1LXnMpnEkBAAAAAEAAHabgR729FDMgXLB70ni1qu1X1X1OF_3lEHXwB5qevuTJq2GDK79ERCBQVsadcb12x_M_TkWU9cbMAstSYokCCeG_FNSPdYz6D0gGUj4gK8_fKu1c89WS0XzhCERVGfpmcbYVKnfwfqKzDP-Iv3YAG8BHm-SGM3_9nXmczCSBM-MqdoHfTJqK86QmO79IGpqW-MvcYl3CJPNpvI0YnTsrwNZtpUAx0xVEkzZegXh897jCYDoCzB7xl8zDFJR1vlCu0T8to5P6f6kKcxJsOKEBtgUL9Sw8BYEojDYJnHpe_TmoT3450s43ci6lPTRWNoUOm9H4lEHPYGw7Lu0kwZEAKyEC3V_ubzIxEczG4bUGi1PMhUSnOCVacliX5dVIWEtkaM0KYE4htRsnH3KO4OHbX6zyzTZxD0c1ilzTfukwehLOQwUVShOFdnB2bMcv_fHo5IJiXol9AYA8RazZAxsv9pOh_PImRHUFyyGaXo3wUUV4ucB54KtOJV4O19Y-tAyhvLJi-hHNd35Lb0LcZCL4PuZJIRtq9AIM4j7b4KbcoqO1bitGpykMCR7NYrNwYX0HIeN0uwDYKSeowzZ75jK2BeDEpYDoub8HcVxx3pe_UMla2nQWkger1wc8T8NA4QoJPs56DovV6ZfM3-wAs0oedSpcWXPb1AE41aVJYpqOyXnuFJDP-pfgi5XeJnXJHP3dyRQ5lAm9qjSJHOiM_b5q6EXmZrJNv6ZYR11DWqzCkxzT3Kk3LizKRXGde-SdphjXRNn9WBHNi80YPFbRFXvCmfa5DjBaeebhde5KhwTnK5ZF8j_c-MDJgJVNXe5Ds65o4h1EY9gVmMDQxs19Tkpq8n4T5rtw9Qg8q4BnqnSBcYJumuD2SqZz9E8bXU8Vn_DrQTDOmfaV2oYj_imi8Rw17-PTyy3Yes86_6f2ho5yDqRxrh6tMlyzjPFNB9TljsTmBmXWkHT6PJkEdiUW-Lu2W-ITKXJcnFEwUb5-H_SJZCVjIfJwsj0SZFE8bYePg0hA7B5s26LjQ02cfT3C5nV113N_dVfeckuutwaNymkwge6U9AM1L6ZrZKxl34Q_k7TshGUroWMr9SbH505Gnv7E7xwoD03cqHsbN6XBZ9rdB76XlcrgNFiGB5BRwSpczeooZjbEAajNxmSgPgsmeV0arsTtd6KzeMNbSrfg3jGqMi7f4JS_IZinCKBVJVWHxY7Kn4b3FBn5wSbrGzEcsZINrL_2ynX-eTCmJp6UtrsxrgFi96fzvLIk4UHYWqLZyZi0VjtFW0OJSDNTNmb6V59Zzw2ivz0-2BgjxrHB6nK0K_myVLkX7xOqk_79gscJOUHykeEj4Pk26Mp1Er91IcKyCIavU_ohk0YFg2mOBY91hjkcS6hGqjh0cR2l3Tsku9A",  
    "token_type": "bearer",  
    "expires_in": 600,  
    "refresh_token": "dNVx!IAAAAJrMbK3V9p0ydmaJvHKaD3IHccF0PSnpSgPRnPEuEdoe4QIAAAE0F3rE5VOxMWRcn9IMEQkOvfariWkDW1mFpzg3-acll_fo86PGrJzNjpg7HLdJkIWYvkNxumZeie89e1AfYxp66BobSd9w-E6WL0pLm3bbn-1fn79EwoJDlWm4Bbfv4RTJ0HXN7Ffy4JmT4xj6B70lh6Dak4CXiD7_GG2FVczHrMDbEJT93antyWBNiryLgmQe5x4uSkuR6xJs7RSNLah9ct8SD_OKbxAHEExc8mBao-LdFuv-WK9PadHIw6njFWkGKEWREGBh8CbaV63XI_0RVf_HW7DfY0z5oVTjeDXpIlkrIXis5onT1eWJC6yY1GjMLcLA_YwfLy5XXjlAy8N4Z4rRgkZghfX5LUlND20ZflRqY1mSey75z7mIBiBlAoZdGLAx5btLvKCEpXRNJF089_CzyXItupTe8iB0lryzw89iexZPNT4e5AHdXmkWqCkonEiH1wBZblzleDPawMfzx2dJfX55igIq1dGzJmNRI5lOomqsrVFdaAfDJLO1C58Axhd4OMshyZeJcA5d9q7MuZEck_c6ahxWSp185m198ayXgzyLtq_F9UWDqao3mz3cr-sban3IVtiByDxqaNPHjCntkt3XTVX0FQeK8rbM7v7Y_UcyEiCu3lGfex3OwBXu55BVN9uWs6fdDMpIQubcJVpFHogSLpNwHy_oZY9xZLgQbq3-1rHm_o6DYDLPP-bt00eA9SjYmOgxn6YCDzncpwaHXNlPGBKoN8dO6lyNjdfiKGRhksQJ1o8utQ0dIW4wdqlWgP8eN02TiCsfjfdnEvXCQOABr6-O8fpKzB1eJOARPMSwRNa06ZhNih8zU7VsBeS47G92OuHLmIyE6mWKUww6ldaSHa3_nU3qPnYdacMuQw-tn-jDnnrBxPv6D-wyzkbqW3ODQPky3WHjSGNBCWGjNzA-L0_Fbq8wE1wTgbq5TNDqB5sEY18ElZXxh1S17AUoD-9liaorR_ct9SX6",  
    "scope": "WorkOrderCreate WorkOrderStatusChange WorkOrderFullEdit WorkOrderEditCompleted WorkOrderRead ViewAttachments WokorderChangeableNte WorkOrderScheduledDateChange WorkOrderReportFullEdit WorkOrderReassign NotesRead NotesFullEdit NotesEditInProgress NotesEditCompleted ProposalRead ProposalCreate ProposalProcess InvoiceRead InvoiceCreate InvoiceProcess ProjectsInvoiceRead ProjectsInvoiceEdit ProjectsProposalRead ProjectsProposalEdit ProjectsWorkOrderRead ProjectsWorkOrderEdit EditInvoicedWO" 
}

JWT Impersonation

JWT, or JSON Web Token, impersonation implies temporarily acting as another user by obtaining a special JWT token.

Note: To impersonate users on the subscriber side, a user must be assigned the Impersonate Users role. On the provider side, to verify whether a specific provider user has impersonation privileges, please contact the ServiceChannel Support team, if necessary.

Follow this guide to learn how to implement a JWT impersonation.

JWT impersonation steps

Step 1. Obtain an Access Token

Before impersonating, you should obtain authorization. To authorize, use your resource owner credentials: username and password for the ServiceChannel account. Exchange these credentials for access_token.

Request access-token

To get access_token, send a POST request:

POST /jwt/token

Header Value Note
Authorization Basic {encoded client_id:client_secret} Replace with your encoded client_id:client_secret
Content-Type application/json  
Parameter Parameter type Value Note
username Body User1 Replace with your username.
password Body servicechannel1 Replace with your password.

Example request:

POST /jwt/token HTTP/1.1
Host: sb2login.servicechannel.com
Authorization: Basic U0IuMjAxNDkxNzI0My43MDk0MzU1MC05OTc0LTQxRTctOEIzOC1DQThDOEMwMjQyNjI6MUM2MDBDQjctNEQyNC00Nzg3LUJCM0UtQUNEMkIyRkJGNzQ1
Content-Type: application/json
Content-Length: 92

{
    "UserName": "User1",
    "Password": "servicechannel1"
} 

Example response:

{
    "access_token": "eyJhbGciOiJkaXIiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2IiwidHlwIjoiSldUIiwiY3R5IjoiSldUIn0..RwCk8uoO5O_3qz9otKUEyg.jluaPowQNQ0-c1DkDEUIBjODr3h6eQ8dRw_BaY8c6GOYTpTOO7nf1aWvdqaOn4B0itvCqGE0vqL9YcNc-6LAdc6f2WgEW8UR6K4as7u-598RoklUkIMB6gXU-WvrJQtsZhQ6nr2B6uGiTux7P-0qCeKE2oUu-1q_Eyg4J7dSLDAe3HetmJqfnvVsRGk3DrYcbxHKeH5xtg_G6pyVcKD_cNkDRMWR6ith5GT_WwhNZz35zsfWsvN3AG8_mk-Wyov0nH-yImWvkymvA4NKDkBcLKt9xHi6HAWGrrpl7KkSoT7H1X5CwCtlACaRk92ZT3HFnOl05DwtIjeFgACIYioKVqSl66Ot-EvIEX568UNnOGBwQMy1Nlg2N5orl91NyWlz1eR7DEHmphDBqavVwtqBsqcdmwKkdV4OjNJXyVAL0izH3j_OQX5Nk7W54vGG6tk3A_b6L85RHM5wiCKUw60z_6jenlIr5HZGKtmZCJVu7NSlPnWZa2LDXDdVa50ab6SwT825YdfpNx3IyXewYZ4e8P4ltMLrJgP3gWPp5Kx7tmuleaxku5u_x8LifvqlDUIXReY0yg4pADFEPqf48Fhdi4-D2Pz_ryGthOCg7ej6qNxiS6915LC2Ux_1bynfjZ8m8LDBTwv8_RzpxoYtk63smJMrdSVwhV0O9OfA-1RdfPV9h-ddrNPcyC_J0YVQG8lKMuyDShXsIlr0s0_lvunhpeszSbsGr4FYbN1zj7TJyHaTIuO6jqvcngbZnSG2YEc6dE9Y-fsS6j_87EG3NwE5p7yOPr9IHsb6R1D0TyQ8hYNPB0RmF_skQ1g25gwjJ48TyqE6aAamaOPey2G_GBySfHIvNR7YR8ieXCcKplzTERLm8iHzi6WZx4QkOTBJlO_cZzqvij9tnSo9gzwQ6yTnyMm-jK_nt9eFYBLor8RUugfT0wEdRjhHqvfDKECM4--GTWA-oiU8YtK6rSYfz3JjVrR4kalrs7un88i2iV5x3U1Qj6vvev5jNASpz8SJmqDx-JYoClh_Pje1lPSGck1uFHnf1USIPvXL8s2uaUVY7k0U7gJsXkk5qsb4tfhtqYJpnvQ24-i6k6MTnS661OT7vfPP3lpI9UG3v--g2vE_lM9_le7uyt0eNAIjJFfTiem_je7xpYi6pvLSl4cGF64bbr7C0mLYDANB-kE3lBKvNMUBtjY1qG-M1Z68O7-4iDoOaSsQL06BvcEqoyQY9ok07qvO033KoT5B_ziUfrCZPCV7B694dIld1UYpqxuL2djpmV9dCKLQwo1jqZVwi0jBaEinnY0ojRp-cRcwDPfyh-VG55SBFRfARxqsUpZtHR04TSXh2N4fYVaeYJHWtFCLm_omqqpCavwRuWedAnMA6kK1cUl-4tPm4g5MFgYkNcgyO91hbBILjJmtCrs7huGklrz76GwOJLuTymSAKbsxu-7VK_9UCoeyKRIfgJS8IQ3HMfILmnpHFnFeRZYOu-y9cmgaNfQLW6JmrtmiqAGTr7MD3nw96J-cdZJVlRoT3xYPz25nJJVWqwDIE3S4hZOzDvoIjvxLotZ6EsTcKO5ZKr6oogYW-2eU-TcT3oaSEYdTnQ4WBSDq0r85LHh2el5mYLur3dKVSrene71ODjAQmjiVKGl8f2oY-FurnBKk15zhZgjikYJLY-ZJG6C-N2pIXKTfOiGwbGAVxAGyWzUbj5JR7gf2K9x8cH6s3QDd8Jsuaj2JSaBuBCbC50cVu1kDVomsYbv0-bslErDu2Ja5SWsFvQ_F7ZzpFS2wWxSmOiCXcU6kuQtP6dQ9R2O5vugvvGxp4u4rf3285rNYjEuaS7g.F5NNeY_5UO3utQ39R5_nug",
    "refresh_token": "eyJhbGciOiJkaXIiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2IiwidHlwIjoiSldUIiwiY3R5IjoiSldUIn0..4qoiwo1wVYajuoSQf-ur_A.G68_6rjIlacNad7Q_tE-MTN1a09Zju4b-mKnswbi7dVtHWF0nXSxTbFgUZhkKKVzbVsVaI7b9PGm7b73Mjdtjj8Ke34_3QODL794Iem4ZZs8196lpsLHZE4EYuoh7Rew65HPIK0xkIxMv-7zs7Gl-NurJOK4UTVLDykHJh_hdKeTyUuM0_S_ghYmxfZzlc0vIJQKh66SgnRuzR2oDaFMKj5Lf1R91f121BBFxQ0O5HBW4dFOzG2el1c042tK7FifLHjuU8WAD5UF9yPIkde62gvhtd2yzBgRg6_A-xTZqtJdsGYCxH5uzjBR5K3-W4VoYB82SvHOeF22luTsDlMbQGp8G_D6kXDR-dMhdif5A4k5oL9Bi-7d3I2g04eIH-C88BDFy9v3Kt6KQJd5_TK8q0LKr3VxYqdPLlouCwHfC2wOC2mVzs6zyyAf2_QFtPxf_BsDOOY11ZSAPsy1RV4BZ0oNrcAma_ZB1BX_yEx8LvJlcFg6zlx_gdJik9OaL-GGx8VHkgAx4S_DU4q_dlNAdLIEWXUP05jYCwWy8P-0mV20cw79zRzkqT1QdsgISFN5gU1o9jJ8Ud_i3efgiaudopW-o4bcx30sVNLg5ag0HPAsFmH0rTwxGe07Ofro-o5ixDp0yi1GwpS9U4yJGq2r6RmUZ7-5u7Vtd6bQJ1x-xdbpkvul-Yw6RP8TCcS9GyPPc0HIrEO4Oyz36XqSn-4RLwKl22emNq0JkyJgjz2KR-SPjJe8YcBToupNEn9_fXaUFsIW9Oa0pBb6ex_arU3ugqVwODoDmn47pQFKL1jyr_tJ_oMDNlCmi5sv2spQ537SPniUvXtLXwJCV2S61mCZfrF2LgVHAgq3lQq0NpGwXldccjT27knLElXInogc-RtBuh-bjyltPEDV8fc1B5g2v_A5GOtYUGfglDaGZ7spjV46psAVnkr07kmNQk9xpeo6kUL4hnFyjSqcpyac0Mc0dnPOBiktIfAH0X9QR0zaliscvf5OX1nFw_BpneM__2yTwb7FYYy9HyiWdtOhUSAifA.vTGBqtWKktx_lAoEuJbnJw",  
    "token_type": "jwt",  
    "expires_in": 14399 
}

Response code: HTTP/1.1 200 OK

The response body contains access_token that you need to use for the next step — obtain an impersonation token.

Step 2. Obtain a JWT Impersonation Token

To get an impersonation token, use the access_token that you have obtained in step 1. In the body of the request, include the name of the user on whose behalf you want to access the ServiceChannel API.

POST /jwt/token

Header Value Note
Authorization jwt access_token Replace with the access token that you have obtained in the previous step.
Content-Type application/json  
Parameter Parameter type Value Note
impersonate_info Body   Object containing a username to impersonate.
username Body User2 Replace it with the necessary username.

Example request:

POST /jwt/token HTTP/1.1
Host: sb2login.servicechannel.com
Authorization: jwt eyJhbGciOiJkaXIiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2IiwidHlwIjoiSldUIiwiY3R5IjoiSldUIn0..4uob9XoDZDKpV61ByqqpCw.jZwrNG2_MhVo0ofaHK05KzkAdTt0Vq1fSNZSHprOx-TxY-ZkSB5Nnovvl-ROWINlwK51FY40t2VrctdtNnlphq5h6AkVygIGaLFVd7rkp4UVR4SblHPvgbdiCfZZDlFJYvcESJ6qi3YpcM2yQGTEUkKNEjJB_0MXVpePSljwHGAMVMBOnc8zaYhWIX8NIN5AIKtstJrnc7wjQJLV8XtThTbgIXVhu0YXxeGEtQMVgN0VXEc4Y85koNuk_gka7Xc_MzVWp6ns88NDRcLAvE_UZfoqpxqVXCWWF2S0t0rjIpwAGcAMcdMT6W-Oaz4kCzlWycsDEoHHDFfFMJpr57D9VTtJ2g2lhmTzv7MKbd_Jl33BMLZa9F2JorwMVtbVxftxHacAR81a16ukxEW1zlSEX5TylSyD5AD2JIytTTQis9V5hFs_B2tUjN0h_2gs9ingmXs9NgP6ZxUayaUVeeuEA1pUSYWJ_DPmZ9oDAzm2-ybDyIDTAVwekZXZtEdhiPAnBx5HDDy_-c9E_g6Qbq-EoqK-ohcJO0Xh8XeP2bWuGBGIAhFkabFnyJYwZYQSgq1wsF1B_bPPj6l0h0ETEQ4q5SfrDTL5cZ2cdYchGlTQiB3SZ-WsUQlurrT7KInEcQCnHdvrWaslWrSMpY7uPypm5G5Mv2AJM4mvjm5rOxUl1cIaP7OfickFXAkh-8iDTEy4rycN-chf8R6Z00jkO0u_Su0fmxCd_tu-vApiVc6pVAytJ9HSIx910NMe5hA35edsNpwO2ixhRKadFMl_GY1vX2F0SAeXaPcIf6sD8VEcA-FC76M8K4-l2dQ5EMpQPrkvjrXPUuUGDKaOqzlxuR0JQyI5ReN29VWmov8QiljECQRfvC67jni5N5OwcH4E8nF-2WIFwE8TbZa04T2OUIGA6VPTbsl3_-dEjcJy6yDcpCY-OnjEfvIndpnb-c45qxoWnk8B5iuT0FE79ASOhTVAxV0PNZgu_qR_1lA3kZYnCnug7-0bi7T2bLfy9ZrrUEKT3uXnCHM3z5yAFwQCfnMUtGbTMKi_SRRB2il1zU0vjGQZMH-3w1cQgn-i7OeamtyWna266GQBYGyJoAuoXRa67u932qTuMCEcXcwO1USPnARjSVEBUVqDiGTbfzLI6gYv2f5Ae-IrU4umNC-WdOds9lV6S-jArparEzBNuCmQ2TVXnzZWhEiXJVT1KggdlnxAJ679rjROyWnY879L7GnhJchKUxRgdmSG3vokVdXIbAfkA9oWTt2q5_oKoGHCMpl1Rd7xcPCg9erNl1T7xUzwcRfD6gk-MPCTcpP17_CJfFfJYadpom58gCaXKnOYEXKxePY8-ogeWedVDqADaRZ2mHu8DdNhI0A5uM-iTe2CrBawyRDuCbJTbn-tamewo9A-rvFYEiUzbHPKU4iu7EboPbawsBNW0--RQV7a8kMyFh1ccx-MmHsg6luZxdtM_SvyS5dsCVyoZdKfj6Wwedex1JHJV2uHBNf_RPVWLoLBv5mjFx2gXyQQGiH4A1D7b-zjJ2iCg45xdWhlx6ehRvN6sF4t79ldI3dDTrjqW1NyjO_asHh2k63cJfo5fvd4t-ksVs21SrWOoHukP9VPAbM2r71ToKHMMCgJoGSVtMue545R_WSnWE1lcfNrVp3rzMNZBbcYaRCpXejZR-0V6pEOO-MgzuBu0tMaeTMy3oRN-7hauRx-dJIQtnRnqo2QVBTtAoAYcQ8sXiECrHooY2MMF9WkwWCPHVflgV2jc88IFrmF02USPbJrKl9KLNMHile7caeh0zzIVRKieK1Sjx6QlKty-FJDpuzCY3nGTVoPxrZVoXYynO8YMTHGd4H8c8mGGaRFMsYPviVpDJmIxoTWwdJ3DBf47ofTc-cnylNOdQGOAQx-DN_BTyXoH5u19xmSNodVo9cAgExsfA7_KQDbffU8sJO9F8qNqCBj5N_RtdfJQ2MWL1O77M8vxgiqqv3wBCAXA9NkRNT-WsW_BY9GpyVAVhkBWlWyJLdRTDl7-T-FXnIzCWow49KPoGrFdz51EmY6nyWSvDwdtJd6Vl2vLvASMEv-nCTF5yIaNfDGw.-WB0MQegwRQnshmk6_4H0A
Content-Type: application/json
Content-Length: 79

{
    "impersonate_info":
    {
        "username": "User2"
        }  
}

Example response:

{
    "access_token": "eyJhbGciOiJkaXIiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2IiwidHlwIjoiSldUIiwiY3R5IjoiSldUIn0..4uob9XoDZDKpV61ByqqpCw.jZwrNG2_MhVo0ofaHK05KzkAdTt0Vq1fSNZSHprOx-TxY-ZkSB5Nnovvl-ROWINlwK51FY40t2VrctdtNnlphq5h6AkVygIGaLFVd7rkp4UVR4SblHPvgbdiCfZZDlFJYvcESJ6qi3YpcM2yQGTEUkKNEjJB_0MXVpePSljwHGAMVMBOnc8zaYhWIX8NIN5AIKtstJrnc7wjQJLV8XtThTbgIXVhu0YXxeGEtQMVgN0VXEc4Y85koNuk_gka7Xc_MzVWp6ns88NDRcLAvE_UZfoqpxqVXCWWF2S0t0rjIpwAGcAMcdMT6W-Oaz4kCzlWycsDEoHHDFfFMJpr57D9VTtJ2g2lhmTzv7MKbd_Jl33BMLZa9F2JorwMVtbVxftxHacAR81a16ukxEW1zlSEX5TylSyD5AD2JIytTTQis9V5hFs_B2tUjN0h_2gs9ingmXs9NgP6ZxUayaUVeeuEA1pUSYWJ_DPmZ9oDAzm2-ybDyIDTAVwekZXZtEdhiPAnBx5HDDy_-c9E_g6Qbq-EoqK-ohcJO0Xh8XeP2bWuGBGIAhFkabFnyJYwZYQSgq1wsF1B_bPPj6l0h0ETEQ4q5SfrDTL5cZ2cdYchGlTQiB3SZ-WsUQlurrT7KInEcQCnHdvrWaslWrSMpY7uPypm5G5Mv2AJM4mvjm5rOxUl1cIaP7OfickFXAkh-8iDTEy4rycN-chf8R6Z00jkO0u_Su0fmxCd_tu-vApiVc6pVAytJ9HSIx910NMe5hA35edsNpwO2ixhRKadFMl_GY1vX2F0SAeXaPcIf6sD8VEcA-FC76M8K4-l2dQ5EMpQPrkvjrXPUuUGDKaOqzlxuR0JQyI5ReN29VWmov8QiljECQRfvC67jni5N5OwcH4E8nF-2WIFwE8TbZa04T2OUIGA6VPTbsl3_-dEjcJy6yDcpCY-OnjEfvIndpnb-c45qxoWnk8B5iuT0FE79ASOhTVAxV0PNZgu_qR_1lA3kZYnCnug7-0bi7T2bLfy9ZrrUEKT3uXnCHM3z5yAFwQCfnMUtGbTMKi_SRRB2il1zU0vjGQZMH-3w1cQgn-i7OeamtyWna266GQBYGyJoAuoXRa67u932qTuMCEcXcwO1USPnARjSVEBUVqDiGTbfzLI6gYv2f5Ae-IrU4umNC-WdOds9lV6S-jArparEzBNuCmQ2TVXnzZWhEiXJVT1KggdlnxAJ679rjROyWnY879L7GnhJchKUxRgdmSG3vokVdXIbAfkA9oWTt2q5_oKoGHCMpl1Rd7xcPCg9erNl1T7xUzwcRfD6gk-MPCTcpP17_CJfFfJYadpom58gCaXKnOYEXKxePY8-ogeWedVDqADaRZ2mHu8DdNhI0A5uM-iTe2CrBawyRDuCbJTbn-tamewo9A-rvFYEiUzbHPKU4iu7EboPbawsBNW0--RQV7a8kMyFh1ccx-MmHsg6luZxdtM_SvyS5dsCVyoZdKfj6Wwedex1JHJV2uHBNf_RPVWLoLBv5mjFx2gXyQQGiH4A1D7b-zjJ2iCg45xdWhlx6ehRvN6sF4t79ldI3dDTrjqW1NyjO_asHh2k63cJfo5fvd4t-ksVs21SrWOoHukP9VPAbM2r71ToKHMMCgJoGSVtMue545R_WSnWE1lcfNrVp3rzMNZBbcYaRCpXejZR-0V6pEOO-MgzuBu0tMaeTMy3oRN-7hauRx-dJIQtnRnqo2QVBTtAoAYcQ8sXiECrHooY2MMF9WkwWCPHVflgV2jc88IFrmF02USPbJrKl9KLNMHile7caeh0zzIVRKieK1Sjx6QlKty-FJDpuzCY3nGTVoPxrZVoXYynO8YMTHGd4H8c8mGGaRFMsYPviVpDJmIxoTWwdJ3DBf47ofTc-cnylNOdQGOAQx-DN_BTyXoH5u19xmSNodVo9cAgExsfA7_KQDbffU8sJO9F8qNqCBj5N_RtdfJQ2MWL1O77M8vxgiqqv3wBCAXA9NkRNT-WsW_BY9GpyVAVhkBWlWyJLdRTDl7-T-FXnIzCWow49KPoGrFdz51EmY6nyWSvDwdtJd6Vl2vLvASMEv-nCTF5yIaNfDGw.-WB0MQegwRQnshmk6_4H0A",  
    "refresh_token": "eyJhbGciOiJkaXIiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2IiwidHlwIjoiSldUIiwiY3R5IjoiSldUIn0..3EI_wJM6Qi2zvoD7jOOb2g.sfBVBWfy9TYh-TAkJdF-l3xckadBQA1un9SngYkdITKssnfKxq-iGfi5sMwXVeQW-Wmlwr7Z2r44qdpnGVA2l3kLOlFCZfO4fi1thhG_LYh1UIoAhXRlsBFvNlIn_nNl41APD58zfSxt3gTEwG3NTOY8zapCyboyZmjztYbFYRDSzyzu4ad7vOSBqXVImw5HJfC-it73JaaGCjxR3LVV6X6dxCe3ekgWRZwvHgQn520i5wbOWN5D1Vim44scZDAiAafJQIlvp1XXx9aiXkuP6Dlyu0ZNGG0Weo2V3uXneQnRsCSe9ft1OW1DaiJHYRSeIMdw3--VwHFdE3UBi9kIn5mnzwdHPtpbVtFDHM8J9edaMur5-2mlWjV2nnD1DFjZNXQrbS-nvzwW_2K9mm8-2TBAY92ri7EmARVe9t6yDZBLASYolU8Q9jefWmYMSPbhu2bYDy9EsyIr5g_fhqHLLS0Jh4GqpDLp7pWY44jZJ4YGOVEcfAwvIocMrFILPcvZk07gmJwSMuSYOYha4sZTObdfpnMXyf2T4qygg3Brg-vkI13p8OIJUewp5Lstv4BREGHjMxNTpj_I_eAb2LRLFNtHrfBFm5OxaiKQyWBEsT00Su4HJ8RfYMmu_oL1CdhJ8b93QVt4KFj_B3ODKFBA44J9zR0FM2P5MtT9ETWULz39VPfqa3ueyu3PtwfA99DQVFQfkh7G_LkZXCPbwodW3MGW35fCCwj6Tzv5QYUgx_Be3SWEUk7k_pbeoAh_n8nZdvyq1IusrgDhP_2UUdnpTqY_66ZAoQcEkEtuVod38Tn-05XD7yjH7NEjL31UXhAZDdI_Y4sytLVgBH6f5rSoZDksdK_PYK2-9m0_wM0a0eV2j76D0MoXeL0i8oIYIDoBLCN-RMz-cjCbDC8ICdAzh06cqr8BsO5ut4iXvpXcweVZS4R6Zq4S9BNkRSQBy-Uu3gg3EPbcbrYTGOYxKL-BDshZ9SGqOSGglQoYDUtuHeQVqcMLxyP72W88ULjHoXQnwti2LZ6y0HvLqRlD6WT_dFH5XK7OzipMTzY5fAWzaIKjiv4Ja8Cogfib1fPvMprRDQJq7sys_h9EfY6sknLPg17wwSAUk5yl6VbqYsbf7NY.3SOzfjGo8Eil9pClFieaDg",  
    "token_type": "jwt",  
    "expires_in": 14399
}

Step 3. Access our API

Having obtained the impersonation token, you can act on behalf of the impersonated user. Submit any API request.

To check whether you have successfully obtained the impersonation token, run the GET /users/current/profile request. The response to this request contains the UserName which refers to the name of the user on whose behalf you are going to send API requests. Apart from the username, the response contains other information, including user roles and permissions, NTE and invoice limits, stores, districts, dashboards, etc.

Note: The profile of the impersonated user may be different from your user profile. That said, API requests under the impersonation token are restricted by the permissions and roles of the user being impersonated.

You can submit API requests until the impersonation token expires. Afterwards, if you want to proceed, you need to generate a new access token.

Step 4. Regenerate an Access Token

Your access_token expires after a time period set in the expires_in property of the POST /JWT/token response. The time period is set in seconds.

Use refresh_token that you have received with the POST /JWT/token request (in Step 2. Obtain a JWT Impersonation Token) to generate a new access token.

POST /jwt/token

Header Value Note
Authorization Basic {encoded client_id:client_secret} Replace with your encoded client_id:client_secret from step 1.
Content-Type application/json  
Parameter Parameter type Value Note
refresh_token Body {refresh_token} Replace with your {refresh_token} from step 2.

Example request:

POST /jwt/token HTTP/1.1
Host: sb2login.servicechannel.com
Authorization: Basic U0IuMjAxNDkxNzI0My43MDk0MzU1MC05OTc0LTQxRTctOEIzOC1DQThDOEMwMjQyNjI6MUM2MDBDQjctNEQyNC00Nzg3LUJCM0UtQUNEMkIyRkJGNzQ1
Content-Type: application/json
Content-Length: 1284

{  
    "refresh_token": "eyJhbGciOiJkaXIiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2IiwidHlwIjoiSldUIiwiY3R5IjoiSldUIn0..z6aTdFPdOXumLyek43_uhA.99uGRlv34J6St9UTdIjDm4-LnqPK6wOljQH3xxpaNkz6P4l0K6ePMVZNuf2Euq2cdQ92r3uu1vklkzShZE5xoyoRdXjZ6a2RaSohJqT_ihWTGxSbgvwrsNdmlWsasI3uFTTo_nsfDvmoFrRaR0GC7rfWFx5gyLYnCtIqBiUMyT9jWKhNtX2av9QnwqZjhdS0VLeRzXJZJf3OuifNoQvR2FmjeM48wRFBuNpCUC4PvhvqWE_eUdtGSRF6HqkthYlcU-mMdO-HCwP-j-bPOUP-E4sb-mQuJH3aqDVR1WqPQu4YTzX_RoEUGY_91XoVbEm4peW3qZH4RISGdEA_zCXkC18YMeeaXfFA2_03E33IJEtKptF1rYTURG389zEyG0fprQQnV9QwZlS61uq7iXHsR9UNiz931weFgcOf4Bd13XWPK7zCe6g8t-_KlOAfQ1hfXYEvEaSxodGUM0pytxatK8XvSy1JiLAVbY1q_IvwYsgGJ8ELg26ne2Pif8OHCxpN7HsEyJng8huOvQP1ULjgtSPrGJ59caKPCW7UFVfYpaUN-h5QCTA86V4pgZ6kfI6rMTJpQNr8ct7-jOqtGTvg_rOYAgWLbjwZ5uRM9wZcZ2MXGHbJTtXtRkBawPeYYSp1f6oivA5tSd6r8MkIWVLarumi0tsHgcTrXufFd6m9Cli-8kiC-HvkYrbVWru80TJiDBa4XauXBF1KVS88nNPn51TlLuTs5PkVWPobATzQzhRPc1-3BFYED3rDr2O0Wm28dV3x4_FW9UC8pHF1XDHUZzoDocBJZjdysATY_72z9azTeHD6W9_PEEaA_WVz7VgjMNS9hpifIqKKqZIZlVhZHXv18wUb57nM_6wnTa0sdUs4S1yoKQ3Y2MWB_OZN4u5lXEr8M9fhF8uH5yVdhc8fSDY8B9wnA7NcCaq5Zv107s2mJRR708F-nKtNtkXrPtyh4EK3V0a0SKHiHJeWP0KAheqruAlV8fLNd4t_sGBmdEWAzEMwLFcSEcVg-n0EBXs-wc79TSeAY5o7y46H6UINyFbrrosSI0B6QYyp4RNSturNQnokLtVrB9wjpsWK1X-j0WYHVfKga4nRxZj6Ou3nnapZcAvhP1ilVKHO22mEKcc.WTucp2kfycLSNzEWebf4-g"  
} 

Example response:

{
    "access_token": "eyJhbGciOiJkaXIiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2IiwidHlwIjoiSldUIiwiY3R5IjoiSldUIn0..7Br6Oo6ZVqNvbRa7PXskQ.qVi0PI4uFbA4zc0kFvORk6_bcJZDhuy-JpX0V4BT_n_AKte1jtKxd6sy2KtJ3mJxSiOTmgksb1DRoWZt_oPwUde-Hp9TNRT1s3PnW100MBWit3buOnK9JhXVlee8vStKNql97McuaW-hSpaLY-4Jlw5liR72NtDuQvUg7aB5iHmLlj9w6ADTuybvS2G32BNvjqonNhCOt6fXpUfYIcJHQFz643EFJT7URvC3xNtVYA8AySZmWgmJYQEgcEKU01FY9BYqgG9FeZJxG8JiCSTwaAMaqBzzHemJLGxnPXqAHEm8UgI5WvjqUhGY9trOpqMyCOgUu_OSNih4RW4VXHjEnCOmrSDHbVYwUvXZOIHrraUMfDVUIMznIHiXmZaWV4bm6z8nRIdEhoIjWnfuEK3z9I81iFTQUAfuTE6xtsBgRccCDh2krLyeJIiIt7jaBjxBVlQ0S287zHFJoHc-D3mVhjxYebYgXTj7xoDNcwJ-mKcxJTecLiul4bgrJQXX46mpg6ww8QlMnwqfSKlxloMwvqe-R0hFzfDmJ3kI9mKrPQOAqXOjrGrGVXH3_11nP-RywPsp-l-2BckfWGPv6lLOKJG8k33X-UsL6bIzY9iW03GRqkIlmrVywQJ2Jo5CtS_nlw0R7nnpLfe9dDwDri_Qsv3UDyWgKCbTO6z67MreQ3saofmjPVduUBxUZx6fLbXJxmqV8p9cgCb61dthHuqEwYP8IRQJoLqbz6iBXNdHh2eqYKVnCPIO5VKBLdBrIXo7gi7nbGXd3q_nODFv8vpKCpGVQCUYMRE09oM4xEphTPiXcCsvXBxFAwNA6wFB5RHNhQHTb_ZtFRU80VFtQK4lxYIJnoSc7aSL3N5d_4Ey6L8m-J_wrkokzDRXea02Yz82oBUUftJ7jk3H8jwDaAz8KmJhiol4XXyEYKszpM4SH4kJc24I6fx-535nxD6mAsTN5vTo81nPD3IcyC5wvqUg6eWzGlJdQP95_3guoia7ezuUvCAxWB6VJC2DV3vqR9eIY54rZV6sNeux7CIpxuW2MYf56wQy9nnd0ri0RYzbGW5mRYoa8G-We65RJDiOFhwZ4J_KdtcLZ_Oo3sY4yHp48YdCvx8UdTlkIw3I-imhA-lYJp7G79Misl_pV3bEDd7cqhaTddjuQGLaM0ntlHFF9uWwHS1X072AxEA26e38VP3MQtyjjhcWpVwLcDIa9cC0cw6ShJ2TXOjHI6p4puegjwGdzjsOmdfiPijs2iSv84P8JkEGUHjfd6ayPLSTsDQYKpD8t8sgM6dA-Xeh1iRA4N0t8bFCLWEHf2EpXlN9WWCPZV036QXrV5AtqKzWNUYS2OfBU5y8-r7bsMJiNFhXilGzr4WLx0i7znC09mpXApZj2yWI18mNBLmFaugeZ5rc6Li0hw3zpSxDcSl6KG5DtIHwrv8kalfEwpfyl9eODDvic5FpBt07GY0oKM1R9FRmFxi5De-YlYrXZzw1nHrTaQRz_Lj5uryFQHY7kd2wCSyeJ0_ND-QBS4TuSAq4aspQG_1jkqiqCc2uxrjcepJJUGdI4Hiixdm0eFTO2SavEeUSWGzbUJoBqLoXeqctpWpWhgs1CeD8ujvEfCG6-q6sR87KuFWWjE5Ot4yr4DYdNN7Wgt2w4VbQnwLC1FefYAtk_QHncqWP1eGFIUlmHnKwFMF9yf_SW87fHOdijL-L6FSGMgIs6IQC4aL_K9LGiM162Yrptpx_gnS4HBe9jtNqoeF-DayNz2rRurBBoPKub6IljLnecWppGEhRhP_eRqWmhSvW4ttHa6uHC2XSSY_yNtMZJpx1LtAnYWNYqjmWTwjK1VpfhpMSHov1KyhyI6P2nVVmx0DfM_4BaFmbxqOe6NI1QuBW7GlTbFxWP1em_sCfkGwPoUPMHAN_DvPAWPVDqqNm1m4KeOzH2rmHs91hX2icQ3myB8H5DyblGP6egd0r8nxx0EPStPwaAs8h8Jf8W2dy1_Qz2BNLBp_dl6q_S9qNDYMyhfsCVMtDbNCzzWvuUed0xuHKE8TO4T8lUuCrVBnQ_pwtI-N2rWOj_JxnKCGMg6aN6KMqYXHOJj6l2E.4rw4BJc-1g5rJXX8hYe7YA", 
    "refresh_token": "eyJhbGciOiJkaXIiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2IiwidHlwIjoiSldUIiwiY3R5IjoiSldUIn0..w8Fy1ZoJowF1B0zgBGT4Xw.zS-HYKanBAPLmWgQ7_9GBA6mmcdw60FAfag45X8O6Wn-w7SbNhMi-X6dYiaE0vRt1Vs3HIuK1LKl2Mn6N_rh6ACmFIG4QlRRO5auIPtxPS9bmeOf8fIBOvkfKzEyqfF8TIEhq5_BYQVP2HsgycQJB9qPEs-LCugOYufjTCzHIh5AGpdkYxJAjwp500Ah08oN4PnOhdUI6eBkC9tEt5srQwiJGHw52LTx0AseMvN9Y2yU6-p1rcIiWnUya7W0n42Adj34jruSEaAh8Pq24MS8qFouQI2YXX6I1fsmVVXWHO3QtJtl8GLtejPTxRs0ZhvBPEtF0wfmyTWDs3naD3wdmYAfWAF8u2rCePLtL_ZRiLN0Mxz5_TrJNwHnSKtZ-7zKzZG_sZlyYpOk4t3Xljdo0RwNfFj-SEa-SwMNceXMJnoHMscAJKgJe_SZaZqspGndUkQ1rm0pk5pqqk2tqt_Id8UZW3DGwK00X1Sqxue2Vzd2ci64RKT4pnWGSqPgMkSn3OIwgNybNgoMisbbxMHnnmQ4s_GNt6h-NBxmZ_GS6JqOOVHdrxiLnLKyBRkA0k91_-CFeZdeoCpAO8NuIxSpIBNNBWlyVuYUgO3YkqE-O_6AY61IEipytFpCtzp4gyC6TK2LmGUQ1QnqO0kLblrzdyR4AyIfya64VuMfDpIsumGf1KHBQ-xdnttAnqMoDRZRUHd5ku8beNMV5YMN3wzNStprtRKO7huvIVTCHAg4jZ0-cpMiuEDght91OG59djhPxaKO-z4vvOix249QpZmoqxw0uDlbkK10JBQEquWLR2JzaK_qelXL7W7IMyudQyad0-KPf9bk6aI1n8A68A4vt8IvF0C3gz-nMm0i3FvlQc0e-tmAwCexJhjS13KJoc369ky9P7jvC1iASE_WO2StlLxnqGzPOt_WFfnUeHMsgI0JepDko2Xan2gOgbhUwo_P3knoTWqjuT4ShC8jbNFHa4Ftym7GzTxcWGN-yz52YB4DKLrSOQltGQQBaj4MPOOPQJ90jcXzrnuXZ7FMuPINYHvco1YyGdej88GTiXQBsZIBMslzRP6TKReIXepUxHjM4y8x-Jz5fBCPp46Rmsy__G4cALtE_MYGNL_sPqyoidM.ImEedtNjbA377Vjtg0nYhA", 
    "token_type": "jwt",  
    "expires_in": 14399 
}

Updated: