Impersonation
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.
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_token from 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.
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
}