{"componentChunkName":"component---src-templates-default-template-tsx","path":"/documentation/api/refreshtoken/","result":{"data":{"asciidoc":{"id":"c3a8eaca-f0a2-51a7-830e-9b51d2a4af52","html":"<div id=\"toc\" class=\"toc\">\n<div id=\"toctitle\">Table of Contents</div>\n<ul class=\"sectlevel1\">\n<li><a href=\"#_how_to_use\">How to use</a></li>\n<li><a href=\"#_default_validity_periods_for_tokens\">Default validity periods for tokens</a></li>\n<li><a href=\"#_token_revocation\">Token revocation</a></li>\n</ul>\n</div>\n<div id=\"preamble\">\n<div class=\"sectionbody\">\n<div class=\"paragraph\">\n<p>Refresh token functionality allows to get next access token without providing credentials.\nTo get new access token client in initial call provides client credentials with password and as return get long living\naccess_token which may be used to obtain multiple access tokens.</p>\n</div>\n</div>\n</div>\n<div class=\"sect1\">\n<h2 id=\"_how_to_use\">How to use</h2>\n<div class=\"sectionbody\">\n<div class=\"ulist\">\n<ul>\n<li>\n<p>obtaining access token would always return refresh_token (refresh_token would be the same unless it would expire before current access_token)</p>\n<div class=\"paragraph\">\n<p>example request:</p>\n</div>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre class=\"highlight\"><code class=\"language-bash\" data-lang=\"bash\">curl -X POST \"APIENDPOINT/auth/6/app\" -H  \"Content-Type: application/json\" -d \"{  \\\"client_id\\\": \\\"c01234567890abcdefghijklm_c01234567890abcdefghijklm\\\",  \\\"client_secret\\\": \\\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890ABCD\\\",  \\\"username\\\": \\\"user@company.co\\\",  \\\"password\\\": \\\"12345678\\\"}\"</code></pre>\n</div>\n</div>\n<div class=\"paragraph\">\n<p>example response:</p>\n</div>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre class=\"highlight\"><code class=\"language-json\" data-lang=\"json\">{\n    \"_TOKEN\": \"eyJhbGciOiJSUzI1NiJ9.eyJleHAiOjE1ODg5MjY5OTcsInN1YiI6ImlkZW50aXR5SWQiLCJkYXRhIjp7InRlYW1zIjpbInRlYW1JZDEsIHRlYW1JZDIiXSwiZGVmYXVsdC1zY29wZSI6ImRlZmF1bHRTY29wZUlkIiwib3JnYW5pemF0aW9uIjoib3JnYW5pemF0aW9uSWQiLCJfQVBQTElDQVRJT04iOiJhcHBsaWNhdGlvbklkIiwiX0lERU5USVRZX0lEIjoiaWRlbnRpdHlJZCIsImV4cGlyZXMtYXQiOjE1ODg5MjY5OTc0NjgsIl9JREVOVElUWSI6ImlkZW50aXR5TmFtZSIsImNyZWF0ZWQtb24iOjE1ODg5MjY5ODc0NjgsImRlZmF1bHQtdGVhbSI6ImRlZmF1bHRUZWFtSWQifSwiaXNzIjoiaHR0cHM6XC9cL2FyYWdvLmNvIiwiYXVkIjoiYXBwbGljYXRpb25JZCIsImlhdCI6MTU4ODkyNjk4N30.$SIGNATURE\",\n    \"_APPLICATION\": \"c1234567890abcdefghijklmn_c1234567890abcdefghijklmn\",\n    \"_IDENTITY\": \"user@company.co\",\n    \"_IDENTITY_ID\": \"c1234567890abcdefghijklmn_c1234567890abcdefghijklmn\",\n    \"expires-at\": 1577711870081,\n    \"refresh-token\": \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890ABCD\",\n    \"type\": \"Bearer\"\n}</code></pre>\n</div>\n</div>\n</li>\n<li>\n<p>obtaining token using refresh_token</p>\n<div class=\"paragraph\">\n<p>example request:</p>\n</div>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre class=\"highlight\"><code class=\"language-bash\" data-lang=\"bash\">curl -X POST \"APIENDPOINT/auth/6/refresh\" -H  \"Content-Type: application/json\" -d \"{  \\\"client_id\\\": \\\"c01234567890abcdefghijklm_c01234567890abcdefghijklm\\\",  \\\"client_secret\\\": \\\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890ABCD\\\",  \\\"refresh_token\\\": \\\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890ABCD\\\"}\"</code></pre>\n</div>\n</div>\n<div class=\"paragraph\">\n<p>example response:</p>\n</div>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre class=\"highlight\"><code class=\"language-json\" data-lang=\"json\">{\n    \"_TOKEN\": \"eyJhbGciOiJSUzI1NiJ9.eyJleHAiOjE1ODg5MjY5OTcsInN1YiI6ImlkZW50aXR5SWQiLCJkYXRhIjp7InRlYW1zIjpbInRlYW1JZDEsIHRlYW1JZDIiXSwiZGVmYXVsdC1zY29wZSI6ImRlZmF1bHRTY29wZUlkIiwib3JnYW5pemF0aW9uIjoib3JnYW5pemF0aW9uSWQiLCJfQVBQTElDQVRJT04iOiJhcHBsaWNhdGlvbklkIiwiX0lERU5USVRZX0lEIjoiaWRlbnRpdHlJZCIsImV4cGlyZXMtYXQiOjE1ODg5MjY5OTc0NjgsIl9JREVOVElUWSI6ImlkZW50aXR5TmFtZSIsImNyZWF0ZWQtb24iOjE1ODg5MjY5ODc0NjgsImRlZmF1bHQtdGVhbSI6ImRlZmF1bHRUZWFtSWQifSwiaXNzIjoiaHR0cHM6XC9cL2FyYWdvLmNvIiwiYXVkIjoiYXBwbGljYXRpb25JZCIsImlhdCI6MTU4ODkyNjk4N30.$SIGNATURE\",\n    \"_APPLICATION\": \"c1234567890abcdefghijklmn_c1234567890abcdefghijklmn\",\n    \"_IDENTITY\": \"user@company.co\",\n    \"_IDENTITY_ID\": \"c1234567890abcdefghijklmn_c1234567890abcdefghijklmn\",\n    \"expires-at\": 1577711870081,\n    \"type\": \"Bearer\"\n}</code></pre>\n</div>\n</div>\n</li>\n<li>\n<p>if trying to refresh token using expired one it would return 401 and then one shall obtain fresh one</p>\n</li>\n</ul>\n</div>\n</div>\n</div>\n<div class=\"sect1\">\n<h2 id=\"_default_validity_periods_for_tokens\">Default validity periods for tokens</h2>\n<div class=\"sectionbody\">\n<div class=\"ulist\">\n<ul>\n<li>\n<p>access_token = 1h</p>\n</li>\n<li>\n<p>refresh_token = 24h</p>\n</li>\n</ul>\n</div>\n</div>\n</div>\n<div class=\"sect1\">\n<h2 id=\"_token_revocation\">Token revocation</h2>\n<div class=\"sectionbody\">\n<div class=\"paragraph\">\n<p>Revocation of refresh token works same way as for access token</p>\n</div>\n</div>\n</div>","document":{"main":"Refresh Token","title":"Refresh Token: App authenticate flow","subtitle":"App authenticate flow"},"fields":{"toc":true,"location":["documentation","api","refreshtoken"]}},"sidebarYaml":{"id":"6d066bdd-c982-5a69-b909-a31e6fc044e0","showIndex":null}},"pageContext":{"id":"c3a8eaca-f0a2-51a7-830e-9b51d2a4af52","parent":"documentation"}},"staticQueryHashes":["1010459453","1010459453","2356112386","2356112386","2603905930","2603905930","3026652197","3026652197","3167850324","3167850324","63159454","63159454"]}