├── .github └── workflows │ ├── jira_create_issue.yml │ ├── jira_update_issue_closed.yml │ └── jira_update_issue_reopen.yml ├── LICENSE ├── OAuth 2.0.postman_environment.json ├── README.md ├── Xero OAuth 2.0.postman_collection.json └── images ├── 2_1AddAppNEW.png ├── 2_1_addApp.PNG ├── 2_2Add_new_app_configuration.png ├── 2_2_createdAppDetails.PNG ├── 3_1_addedToEnvironment.PNG ├── 3_1_addedToEnvironmentNEW.png ├── 4_1_addScopesToEnvironment.PNG ├── 4_1_addScopesToEnvironmentNEW.png ├── 5_1_generateAccessToken.png ├── 5_1_generateAccessTokenNEW.png ├── 5_2_addTheVariablesAndURLs.PNG ├── 5_2_addTheVariablesAndURLsNEW.png ├── 5_3_askedToLogin.PNG ├── 5_3_askedToLoginNEW.png ├── 5_4_basicProfile.PNG ├── 5_4_userConsentNEW.png ├── 5_5_selectOrganisation.PNG ├── 6_1_setTheAccessAndRefreshTokens.png ├── 6_1_setTheAccessTokenNEW.png ├── 6_2_Set_refresh_token.png ├── 7_1_addTheTenantID.PNG └── 7_1_addTheTenantIDNEW.png /.github/workflows/jira_create_issue.yml: -------------------------------------------------------------------------------- 1 | name: Create Issue in Jira 2 | 3 | on: 4 | issues: 5 | types: 6 | - opened 7 | 8 | jobs: 9 | create_jira_issue: 10 | uses: XeroAPI/Xero-OpenAPI/.github/workflows/jira_create_issue.yml@master 11 | secrets: inherit 12 | -------------------------------------------------------------------------------- /.github/workflows/jira_update_issue_closed.yml: -------------------------------------------------------------------------------- 1 | name: Update Jira Ticket Status To Done 2 | 3 | on: 4 | issues: 5 | types: 6 | - closed 7 | 8 | jobs: 9 | create_jira_issue: 10 | uses: XeroAPI/Xero-OpenAPI/.github/workflows/jira_update_issue_closed.yml@master 11 | secrets: inherit 12 | -------------------------------------------------------------------------------- /.github/workflows/jira_update_issue_reopen.yml: -------------------------------------------------------------------------------- 1 | name: Update Jira Ticket Status To Backlog 2 | 3 | on: 4 | issues: 5 | types: 6 | - reopened 7 | 8 | jobs: 9 | create_jira_issue: 10 | uses: XeroAPI/Xero-OpenAPI/.github/workflows/jira_update_issue_reopen.yml@master 11 | secrets: inherit 12 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 Xero Developer API 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /OAuth 2.0.postman_environment.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "4deae221-8958-4607-b514-691ad312b043", 3 | "name": "OAuth 2.0", 4 | "values": [ 5 | { 6 | "key": "client_id", 7 | "value": "", 8 | "enabled": true 9 | }, 10 | { 11 | "key": "client_secret", 12 | "value": "", 13 | "enabled": true 14 | }, 15 | { 16 | "key": "refresh_token", 17 | "value": "", 18 | "enabled": true 19 | }, 20 | { 21 | "key": "access_token", 22 | "value": "", 23 | "enabled": true 24 | }, 25 | { 26 | "key": "xero-tenant-id", 27 | "value": "", 28 | "enabled": true 29 | }, 30 | { 31 | "key": "re_directURI", 32 | "value": "", 33 | "enabled": true 34 | }, 35 | { 36 | "key": "scopes", 37 | "value": "", 38 | "enabled": true 39 | }, 40 | { 41 | "key": "state", 42 | "value": "", 43 | "enabled": true 44 | } 45 | ], 46 | "_postman_variable_scope": "environment", 47 | "_postman_exported_at": "2019-11-07T13:46:19.270Z", 48 | "_postman_exported_using": "Postman/7.10.0" 49 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Xero-Postman OAuth 2.0 2 | A Postman collection for authenticating to the Xero API. 3 | 4 | ## Steps to get up and running 5 | Follow these steps to quickly get up and running with the Xero API and Postman: 6 | 7 | ### 1. Import the Xero OAuth 2.0 collection and Xero environment into Postman 8 | Click the button below and select the Desktop version of Postman (Chrome extension doesn't support environment variables). This will also install the Collection and Environment we'll be using. 9 | 10 | [![Run in Postman](https://run.pstmn.io/button.svg)](https://app.getpostman.com/run-collection/d069793e904f7602770d#?env%5BOAuth%202.0%5D=W3sia2V5IjoiY2xpZW50X2lkIiwidmFsdWUiOiIiLCJlbmFibGVkIjp0cnVlfSx7ImtleSI6ImNsaWVudF9zZWNyZXQiLCJ2YWx1ZSI6IiIsImVuYWJsZWQiOnRydWV9LHsia2V5IjoicmVmcmVzaF90b2tlbiIsInZhbHVlIjoiIiwiZW5hYmxlZCI6dHJ1ZX0seyJrZXkiOiJhY2Nlc3NfdG9rZW4iLCJ2YWx1ZSI6IiIsImVuYWJsZWQiOnRydWV9LHsia2V5IjoieGVyby10ZW5hbnQtaWQiLCJ2YWx1ZSI6IiIsImVuYWJsZWQiOnRydWV9LHsia2V5IjoicmVfZGlyZWN0VVJJIiwidmFsdWUiOiIiLCJlbmFibGVkIjp0cnVlfSx7ImtleSI6InNjb3BlcyIsInZhbHVlIjoiIiwiZW5hYmxlZCI6dHJ1ZX0seyJrZXkiOiJzdGF0ZSIsInZhbHVlIjoiIiwiZW5hYmxlZCI6dHJ1ZX1d) 11 | 12 | Alternatively, you can download the Xero OAuth2.0.postman_collection and OAuth 2.0.postman_environment JSON files above and import them via the Import button in the top left of the Postman Workplace sceen. 13 | 14 | ### 2. Create an OAuth2 app at https://developer.xero.com/myapps 15 | Go to the Xero developer portal and create an OAuth2 app. 16 | 17 | If you haven't already signed up for a xero account you can do so [here](https://www.xero.com/signup/api/). 18 | 19 | Use the following values: 20 | * App Name - your choice, but can't contain the word 'Xero' 21 | * Company or application URL - this needs to be an https address, but isn't used. 22 | * OAuth 2.0 redirect URI - also needs to be https but won’t be used in Postman 23 | 24 | ![create an oauth2 app](images/2_1AddAppNEW.png) 25 | 26 | Click Create App 27 | 28 | Then: 29 | 1. Click Configuration from the left hand side of the screen 30 | 1. Click Generate a secret 31 | 1. Keep the page open 32 | 33 | ![your newly created app details](images/2_2Add_new_app_configuration.png) 34 | 35 | ### 3. Add your first set of environment variables in Postman 36 | Copy the Client id, Client secret and OAuth 2.0 redirect URI from the My Apps screen into the environment variables in Postman. To add these details to the Environment, make sure you have the OAuth 2.0 Environment selected, click the eye button, then edit. 37 | 38 | ![Environment with some details](images/3_1_addedToEnvironmentNEW.png) 39 | 40 | ### 4. Add the scopes for the endpoints you will be accessing. 41 | Our Developer Center lists the available scopes [here](https://developer.xero.com/documentation/oauth2/scopes). For getting started you will need at least: 42 | 43 | `offline_access accounting.transactions` 44 | 45 | In addition, to make further test calls we would also suggest adding: 46 | 47 | `openid profile email accounting.contacts accounting.settings` 48 | 49 | Add the scopes required to the `scopes` environment variable. 50 | 51 | ![Add some Scopes to your Environment](images/4_1_addScopesToEnvironmentNEW.png) 52 | 53 | ### 5. Generate your access token 54 | 1. Double-click on the GET Get Started request under the Xero OAuth 2.0 Collection 55 | 1. Select the Authorization tab 56 | 1. Scroll down to the Configure New Token section 57 | 58 | ![Configure new access token](images/5_2_addTheVariablesAndURLsNEW.png) 59 | 60 | 1. Add the Variable names surrounded by {{}} from your Environment into the fields, as shown in the screenshot below 61 | 1. Add https://login.xero.com/identity/connect/authorize to the Auth URL field 62 | 1. Add https://identity.xero.com/connect/token to the Access Token Field 63 | 1. Click Get New Access Token 64 | 65 | 66 | ![Request your Access Token](images/5_1_generateAccessTokenNEW.png) 67 | 68 | At this stage you will be prompted to log in to Xero. 69 | 70 | ![Login to Xero](images/5_3_askedToLoginNEW.png) 71 | 72 | You'll then be taken through to the Organisation Select window. If you've included the `openid profile email` scopes, you'll be asked to access your basic profile information as well as other data relevant to the scopes requested. 73 | Select the Organisation you want to connect to. If you want to connect to more than one Organisation, you can repeat the steps above and select another Organisation. 74 | 75 | ![Select your Organisation](images/5_4_userConsentNEW.png) 76 | 77 | Once complete you'll be passed back to Postman. 78 | 79 | ### 6. Set your Access and Refresh Tokens 80 | We now have the last remaining tokens needed to access the Xero API. These need to be set to the Environment Variables, to do this: 81 | 1. Highlight the Access Token 82 | 1. Right-click on it 83 | 1. Select Set: OAuth 2.0 > access_token 84 | 85 | Scroll down the Manage Access Tokens pop up and follow a similar process for the Refresh Token: 86 | 1. Highlight the Refresh Token 87 | 1. Right-click on it 88 | 1. Select Set: OAuth 2.0 > refresh_token 89 | 90 | ![Set your Access and Refresh Tokens](images/6_1_setTheAccessTokenNEW.png) 91 | ![Set your Access and Refresh Tokens](images/6_2_Set_refresh_token.png) 92 | 93 | ### 7. Find out which tenants (organisations) we are connected to 94 | 95 | 1. Double-click on the GET Connections request 96 | 1. Click Send (If this results in an error you may need to run the Token Refresh call first) 97 | 1. Like we did for the Access and Refresh Tokens, highlight the tenantId from the response, right click and select Set > OAuth 2.0 > xero-tenant-id 98 | 99 | ![GET access token](images/7_1_addTheTenantIDNEW.png) 100 | 101 | Congrats! You're now authenticated and can start making API calls. Your access token will last for 30mins, after which time you'll need to refresh the token. 102 | 103 | ### 8. Make your first API call! 104 | 1. Double-click to load the GET Invoices request 105 | 1. Ensure No Auth is set on the Authorization tab 106 | 1. Click Send 107 | 108 | ### 9. Refreshing the token 109 | 1. Double-click to load the POST Refresh token request 110 | 1. Ensure No Auth is set on the Authorization tab 111 | 1. Click Send 112 | 113 | ### Notes: 114 | * We use the built in OAuth 2.0 support to get the token, however we then set this as an environment variable. So we don't need to use this support when making the normal API calls. 115 | -------------------------------------------------------------------------------- /Xero OAuth 2.0.postman_collection.json: -------------------------------------------------------------------------------- 1 | { 2 | "info": { 3 | "_postman_id": "125f311e-ef05-48eb-9978-b375466d78b3", 4 | "name": "Xero OAuth 2.0", 5 | "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" 6 | }, 7 | "item": [ 8 | { 9 | "name": "Get started", 10 | "event": [ 11 | { 12 | "listen": "test", 13 | "script": { 14 | "id": "0e37c12b-9b8b-48ee-8c83-52a021668330", 15 | "exec": [ 16 | "var data = JSON.parse(responseBody);", 17 | "postman.setEnvironmentVariable(\"xero-tenant-id\", data[0].TenantId);", 18 | "", 19 | "tests[\"xero-tenant-id: \" + pm.environment.get(\"xero-tenant-id\")] = true;" 20 | ], 21 | "type": "text/javascript" 22 | } 23 | } 24 | ], 25 | "request": { 26 | "auth": { 27 | "type": "oauth2", 28 | "oauth2": [ 29 | { 30 | "key": "accessToken", 31 | "value": "", 32 | "type": "string" 33 | }, 34 | { 35 | "key": "tokenType", 36 | "value": "Bearer", 37 | "type": "string" 38 | }, 39 | { 40 | "key": "addTokenTo", 41 | "value": "header", 42 | "type": "string" 43 | } 44 | ] 45 | }, 46 | "method": "GET", 47 | "header": [], 48 | "body": { 49 | "mode": "raw", 50 | "raw": "" 51 | }, 52 | "url": { 53 | "raw": "https://api.xero.com/connections", 54 | "protocol": "https", 55 | "host": [ 56 | "api", 57 | "xero", 58 | "com" 59 | ], 60 | "path": [ 61 | "connections" 62 | ] 63 | } 64 | }, 65 | "response": [] 66 | }, 67 | { 68 | "name": "Connections", 69 | "event": [ 70 | { 71 | "listen": "test", 72 | "script": { 73 | "id": "6c8ecf27-a232-4b87-931d-8cced27b1fbc", 74 | "exec": [ 75 | "var data = JSON.parse(responseBody);", 76 | "postman.setEnvironmentVariable(\"xero-tenant-id\", data[0].TenantId);", 77 | "", 78 | "tests[\"xero-tenant-id: \" + pm.environment.get(\"xero-tenant-id\")] = true;" 79 | ], 80 | "type": "text/javascript" 81 | } 82 | } 83 | ], 84 | "request": { 85 | "auth": { 86 | "type": "noauth" 87 | }, 88 | "method": "GET", 89 | "header": [ 90 | { 91 | "key": "Authorization", 92 | "type": "text", 93 | "value": "Bearer {{access_token}}" 94 | } 95 | ], 96 | "body": { 97 | "mode": "raw", 98 | "raw": "" 99 | }, 100 | "url": { 101 | "raw": "https://api.xero.com/connections", 102 | "protocol": "https", 103 | "host": [ 104 | "api", 105 | "xero", 106 | "com" 107 | ], 108 | "path": [ 109 | "connections" 110 | ] 111 | } 112 | }, 113 | "response": [] 114 | }, 115 | { 116 | "name": "Invoices", 117 | "event": [ 118 | { 119 | "listen": "prerequest", 120 | "script": { 121 | "id": "0594d6b2-f97b-4082-b069-feca4628ad65", 122 | "exec": [ 123 | " tokenUrl = 'https://identity.xero.com/connect/token'", 124 | " clientId = pm.variables.get('client_id'),", 125 | " clientSecret = pm.variables.get('client_secret'),", 126 | " refreshToken = pm.variables.get('refresh_token'),", 127 | " requestOptions = {", 128 | " method: 'POST',", 129 | " url: tokenUrl,", 130 | " body: {", 131 | " mode: 'formdata',", 132 | " formdata: [", 133 | " {", 134 | " key: 'grant_type',", 135 | " value: 'refresh_token'", 136 | " },", 137 | " {", 138 | " key: 'client_id',", 139 | " value: clientId", 140 | " },", 141 | " {", 142 | " key: 'client_secret',", 143 | " value: clientSecret", 144 | " },", 145 | " {", 146 | " key: 'refresh_token',", 147 | " value: refreshToken", 148 | " }", 149 | " ]", 150 | " }", 151 | " };", 152 | "", 153 | "console.log({ requestOptions });", 154 | "", 155 | "pm.sendRequest(requestOptions, (err, response) => {", 156 | " let jsonResponse = response.json(),", 157 | " newAccessToken = jsonResponse.access_token;", 158 | " newRefreshToken = jsonResponse.refresh_token;", 159 | " ", 160 | " console.log({ err, jsonResponse, newAccessToken, newRefreshToken })", 161 | " ", 162 | " pm.environment.set('access_token', newAccessToken);", 163 | " pm.environment.set('refresh_token', newRefreshToken);", 164 | " ", 165 | "});" 166 | ], 167 | "type": "text/javascript" 168 | } 169 | } 170 | ], 171 | "request": { 172 | "auth": { 173 | "type": "noauth" 174 | }, 175 | "method": "GET", 176 | "header": [ 177 | { 178 | "key": "xero-tenant-id", 179 | "value": "{{xero-tenant-id}}", 180 | "type": "text" 181 | }, 182 | { 183 | "key": "Authorization", 184 | "value": "Bearer {{access_token}}", 185 | "type": "text" 186 | }, 187 | { 188 | "key": "Accept", 189 | "value": "application/json", 190 | "type": "text" 191 | }, 192 | { 193 | "key": "Content-Type", 194 | "value": "application/json", 195 | "type": "text" 196 | } 197 | ], 198 | "body": { 199 | "mode": "raw", 200 | "raw": "" 201 | }, 202 | "url": { 203 | "raw": "https://api.xero.com/api.xro/2.0/Invoices", 204 | "protocol": "https", 205 | "host": [ 206 | "api", 207 | "xero", 208 | "com" 209 | ], 210 | "path": [ 211 | "api.xro", 212 | "2.0", 213 | "Invoices" 214 | ] 215 | }, 216 | "description": "\t" 217 | }, 218 | "response": [] 219 | }, 220 | { 221 | "name": "Refresh token", 222 | "event": [ 223 | { 224 | "listen": "test", 225 | "script": { 226 | "id": "13fa9e86-79a7-4c61-becb-f6fd284b9383", 227 | "exec": [ 228 | "var data = JSON.parse(responseBody);", 229 | "if (data.access_token) {postman.setEnvironmentVariable(\"access_token\", data.access_token)};", 230 | "if (data.refresh_token) {postman.setEnvironmentVariable(\"refresh_token\", data.refresh_token)};", 231 | "", 232 | "tests[\"Access Token: \" + pm.environment.get(\"access_token\") + \" Refresh Token: \" + pm.environment.get(\"refresh_token\")] = true;" 233 | ], 234 | "type": "text/javascript" 235 | } 236 | } 237 | ], 238 | "request": { 239 | "method": "POST", 240 | "header": [ 241 | { 242 | "key": "grant_type", 243 | "value": "refresh_token", 244 | "type": "text" 245 | }, 246 | { 247 | "key": "Content-Type", 248 | "name": "Content-Type", 249 | "value": "application/json", 250 | "type": "text" 251 | } 252 | ], 253 | "body": { 254 | "mode": "formdata", 255 | "formdata": [ 256 | { 257 | "key": "grant_type", 258 | "value": "refresh_token", 259 | "type": "text" 260 | }, 261 | { 262 | "key": "refresh_token", 263 | "value": "{{refresh_token}}", 264 | "type": "text" 265 | }, 266 | { 267 | "key": "client_id", 268 | "value": "{{client_id}}", 269 | "type": "text" 270 | }, 271 | { 272 | "key": "client_secret", 273 | "value": "{{client_secret}}", 274 | "type": "text" 275 | } 276 | ] 277 | }, 278 | "url": { 279 | "raw": "https://identity.xero.com/connect/token", 280 | "protocol": "https", 281 | "host": [ 282 | "identity", 283 | "xero", 284 | "com" 285 | ], 286 | "path": [ 287 | "connect", 288 | "token" 289 | ], 290 | "query": [ 291 | { 292 | "key": "", 293 | "value": "" 294 | } 295 | ] 296 | } 297 | }, 298 | "response": [] 299 | } 300 | ] 301 | } 302 | -------------------------------------------------------------------------------- /images/2_1AddAppNEW.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XeroAPI/xero-postman-oauth2/757908267477ce1a6493b2edee67f64bcdfd127b/images/2_1AddAppNEW.png -------------------------------------------------------------------------------- /images/2_1_addApp.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XeroAPI/xero-postman-oauth2/757908267477ce1a6493b2edee67f64bcdfd127b/images/2_1_addApp.PNG -------------------------------------------------------------------------------- /images/2_2Add_new_app_configuration.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XeroAPI/xero-postman-oauth2/757908267477ce1a6493b2edee67f64bcdfd127b/images/2_2Add_new_app_configuration.png -------------------------------------------------------------------------------- /images/2_2_createdAppDetails.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XeroAPI/xero-postman-oauth2/757908267477ce1a6493b2edee67f64bcdfd127b/images/2_2_createdAppDetails.PNG -------------------------------------------------------------------------------- /images/3_1_addedToEnvironment.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XeroAPI/xero-postman-oauth2/757908267477ce1a6493b2edee67f64bcdfd127b/images/3_1_addedToEnvironment.PNG -------------------------------------------------------------------------------- /images/3_1_addedToEnvironmentNEW.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XeroAPI/xero-postman-oauth2/757908267477ce1a6493b2edee67f64bcdfd127b/images/3_1_addedToEnvironmentNEW.png -------------------------------------------------------------------------------- /images/4_1_addScopesToEnvironment.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XeroAPI/xero-postman-oauth2/757908267477ce1a6493b2edee67f64bcdfd127b/images/4_1_addScopesToEnvironment.PNG -------------------------------------------------------------------------------- /images/4_1_addScopesToEnvironmentNEW.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XeroAPI/xero-postman-oauth2/757908267477ce1a6493b2edee67f64bcdfd127b/images/4_1_addScopesToEnvironmentNEW.png -------------------------------------------------------------------------------- /images/5_1_generateAccessToken.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XeroAPI/xero-postman-oauth2/757908267477ce1a6493b2edee67f64bcdfd127b/images/5_1_generateAccessToken.png -------------------------------------------------------------------------------- /images/5_1_generateAccessTokenNEW.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XeroAPI/xero-postman-oauth2/757908267477ce1a6493b2edee67f64bcdfd127b/images/5_1_generateAccessTokenNEW.png -------------------------------------------------------------------------------- /images/5_2_addTheVariablesAndURLs.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XeroAPI/xero-postman-oauth2/757908267477ce1a6493b2edee67f64bcdfd127b/images/5_2_addTheVariablesAndURLs.PNG -------------------------------------------------------------------------------- /images/5_2_addTheVariablesAndURLsNEW.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XeroAPI/xero-postman-oauth2/757908267477ce1a6493b2edee67f64bcdfd127b/images/5_2_addTheVariablesAndURLsNEW.png -------------------------------------------------------------------------------- /images/5_3_askedToLogin.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XeroAPI/xero-postman-oauth2/757908267477ce1a6493b2edee67f64bcdfd127b/images/5_3_askedToLogin.PNG -------------------------------------------------------------------------------- /images/5_3_askedToLoginNEW.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XeroAPI/xero-postman-oauth2/757908267477ce1a6493b2edee67f64bcdfd127b/images/5_3_askedToLoginNEW.png -------------------------------------------------------------------------------- /images/5_4_basicProfile.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XeroAPI/xero-postman-oauth2/757908267477ce1a6493b2edee67f64bcdfd127b/images/5_4_basicProfile.PNG -------------------------------------------------------------------------------- /images/5_4_userConsentNEW.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XeroAPI/xero-postman-oauth2/757908267477ce1a6493b2edee67f64bcdfd127b/images/5_4_userConsentNEW.png -------------------------------------------------------------------------------- /images/5_5_selectOrganisation.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XeroAPI/xero-postman-oauth2/757908267477ce1a6493b2edee67f64bcdfd127b/images/5_5_selectOrganisation.PNG -------------------------------------------------------------------------------- /images/6_1_setTheAccessAndRefreshTokens.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XeroAPI/xero-postman-oauth2/757908267477ce1a6493b2edee67f64bcdfd127b/images/6_1_setTheAccessAndRefreshTokens.png -------------------------------------------------------------------------------- /images/6_1_setTheAccessTokenNEW.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XeroAPI/xero-postman-oauth2/757908267477ce1a6493b2edee67f64bcdfd127b/images/6_1_setTheAccessTokenNEW.png -------------------------------------------------------------------------------- /images/6_2_Set_refresh_token.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XeroAPI/xero-postman-oauth2/757908267477ce1a6493b2edee67f64bcdfd127b/images/6_2_Set_refresh_token.png -------------------------------------------------------------------------------- /images/7_1_addTheTenantID.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XeroAPI/xero-postman-oauth2/757908267477ce1a6493b2edee67f64bcdfd127b/images/7_1_addTheTenantID.PNG -------------------------------------------------------------------------------- /images/7_1_addTheTenantIDNEW.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XeroAPI/xero-postman-oauth2/757908267477ce1a6493b2edee67f64bcdfd127b/images/7_1_addTheTenantIDNEW.png --------------------------------------------------------------------------------