{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"ff7f9eea-39e7-48e6-bc4e-4ab34c6d12b2","name":"Dokumentácia OAuth 2.0, API v1, API v2","description":"<p>Pre komplexné informácie ohľadom OAuth 2.0 návštívte stránku<a href=\"https://tools.ietf.org/html/rfc6749\">s normou RFC 6749</a>.<br>Na stránke<a href=\"http://oauth.net/2/\">oauth.net</a>môžete nájsť a stiahnuť riešenia na serverové knižnice a klientov v rôznych jazykoch.</p>\n\n---\n\n<h2>Role definované v OAuth:</h2>\n\n<h3>Resource Owner</h3>\n\n<p><b>Resource Owner</b> je vlastník dát, ktorý povoľuje prístup k chráneným údajom. Vlastníkom dát môže byť konkrétny používateľ (koncový používateľ) alebo spoločnosť.<br>Pre prístup k chráneným údajom koncového používateľa môže byť požadované schválenie používateľom.</p>\n\n<h3>Resource Server</h3>\n\n<p><b>Resource Owner</b> je API server, ktorý hosťuje chránené dáta. A jeho úlohou je odpovedanie na requesty, ktoré sú podpísané access tokenom. Pri prijatí requestu si overí, či prijatý access token je platný, a či má token oprávnenia žiadať chránené dáta.</p>\n\n<h3>Client</h3>\n\n<p><b>Client</b> je aplikácia, ktorá robí autorizované requesty na API servery. V našej implemtácii sú povolení len clienti registrovaní na autorizačnom serveri. Nemáme<br>povolené requesty z verejných (neregistrovaných) klientov.</p>\n\n<h3>Authorization Server</h3>\n\n<p><b>Authorization Server</b> je server, ktorý vydáva (access/refresh) tokeny po úspešnej autorizácii klientov, poskytuje informácie o vydaných tokenoch a v našom prípade aj umožňuje zneplatnenie tokenov.</p>\n\n---\n\n<h2>Typy autorizácií (Grant Types)</h2>\n\n<p>Typ autorizácie hovorí o spôsobe, akým môže client získať access token na prístup k chráneným údajom na API serveri.</p>\n\n<h4>Authorization Code</h4>\n\n<p>Client zavolá autorizačný server, kde sa zobrazí prihlasovací formulár. Ak sa používateľ (ne)úspešne prihlási,<br>autorizačný server presmeruje používateľa na stránku zadefinovanú, buď v nastavení klienta, alebo na základe parametra<br>(redirect uri) spolu s výsledkom prihlásenia. Ak bolo prihlásenie úspešné, tak odpoveďou je autorizačný kód,<br>v opačnom prípade vráti chybovú hlášku. Klient ďaľším requestom na autorizačný server so svojim <b>CLIENT_ID</b><br>a <b>CLIENT_SECRET</b> vymení autorizačný kód za access token. Klientovi nie sú poskytnuté používateľove prihlasovacie<br>údaje z autorizačného serveru.</p>\n\n**Request**: Presmerovanie na autorizačný serve\n\n`{{url-pgsk}}auth/authorize?response_type=code&client_id=CLIENT_ID&state=xyz&redirect_uri=https://myredirecturi.com/cb`\n\n**Response**: Po úspešnej autorizácii prebehne presmerovanie späť s autorizačným kódom\n\n`https://myredirecturi.com/cb?code=SplxlOBeZQQYbYS6WxSbIA&state=xyz`\n\n**Request**: Výmena autorizačného kódu za access token\n\n`curl -X POST {{url-pgsk}}auth/token -F grant_type=authorization_code -F code=CODE -F client_id=CLIENT_ID -F scope=SCOPE -F redirect_uri=https://myredirecturi.com/cb -F client_secret=CLIENT_SECRET`\n\n**Response**: Vrátený access token\n\n`{ \"access_token\":\"03807cb390319329bdf6c777d4dfae9c0d3b3c35\", \"expires_in\":3600, \"token_type\":\"bearer\", \"scope\":null }`\n\n**Response**: Vrátený access token s refresh tokenom, pre \"refresh_token\" musí mať klient povolenie na grant_type : refresh_token\n\n`{ \"access_token\":\"03807cb390319329bdf6c777d4dfae9c0d3b3c35\", \"expires_in\":3600, \"token_type\":\"bearer\", \"scope\":null, \"refresh_token\":\"3fb63de96e97a1406493f5ce08ebc988e684f7e0\" }`\n\n<h4>Client Credentials</h4>\n\n<p>Client credentials používame na výmenu dát medzi našimi informačnými systémami. Každý klient má vopred<br>zadefinované kam má prístup (scope). Client Credentials sa najčastejšie používa za predpokladu,<br>že klient je vlastníkom chránených zdrojov (API) alebo je splnomocnený autorizačným serverom na<br>dotazovanie sa na tieto API.</p>\n\n**Request**: s HTTP Basic Authentication\n\n`curl -u CLIENT_ID:CLIENT_SECRET https://api.mysite.com/token --form 'grant_type=client_credentials'`\n\n**Request**: s použitím POST\n\n`curl -X POST {{url-pgsk}}auth/token -F grant_type=client_credentials -F client_id=CLIENT_ID -F client_secret=CLIENT_SECRET`\n\n**Response**: Vrátený access token\n\n`{`` ``\"access_token\":\"03807cb390319329bdf6c777d4dfae9c0d3b3c35\",`` ``\"expires_in\":3600,`` ``\"token_type\":\"bearer\",`` ``\"scope\":null`` ``}`\n\n---\n\n<h2>Terminológia</h2>\n\n<table><tbody><tr><th>Parameter</th><th>Popis</th></tr><tr><td><div>client_id</div><div contenteditable=\"false\"><div><div><div></div></div></div><div></div></div></td><td><div>ID klienta (aplikácie), ktorým sa predstavuje autorizačnému serveru. Autorizačný server overí tieto údaje vo svojom zozname registrovaných klientov.</div><div contenteditable=\"false\"><div><div><div></div></div></div><div></div></div></td></tr><tr><td><div>client_secret</div><div contenteditable=\"false\"><div><div><div></div></div></div><div></div></div></td><td><div>Tajná fráza, ktorou sa spolu s parametrom client_id predstavuje smerom k autorizačnému serveru. Autorizačný server overí tieto údaje vo svojom zozname registrovaných klientov.</div><div contenteditable=\"false\"><div><div><div></div></div></div><div></div></div></td></tr><tr><td><div>response_type</div><div contenteditable=\"false\"><div><div><div></div></div></div><div></div></div></td><td><div>Popisuje aký typ odpovede požaduje v odpovedi. Môže nadobúdať hodnoty <b>code</b> alebo <b>token</b></div><div contenteditable=\"false\"><div><div><div></div></div></div><div></div></div></td></tr><tr><td><div>redirect_uri</div><div contenteditable=\"false\"><div><div><div></div></div></div><div></div></div></td><td><div><p>Návratová adresa, kam bude používateľ presmerovaný po prihlásení na Autorizačný server.<br></p><p>Používa sa pri Implicit Grant a Authorization Code Grant.</p></div><div contenteditable=\"false\"><div><div><div></div></div></div><div></div></div></td></tr><tr><td><div>scope</div><div contenteditable=\"false\"><div><div><div></div></div></div><div></div></div></td><td><div>Parametrom scope definujete k akým zdrojom (API na resource serveroch) chcete pristupovať.<br>Parameter scope je previazaný s access_tokenom. Každý klient ma na autorizačnom serveri<br>definované aké scope môže nadobúdať. Ak potrebujete zaslať zoznam hodnôt do parametru,<br>tak ich oddeľte znakom space.<br></div><div contenteditable=\"false\"><div><div><div></div></div></div><div></div></div></td></tr><tr><td><div>state</div><div contenteditable=\"false\"><div><div><div></div></div></div><div></div></div></td><td><div>Tento parameter je generovaný klientom pri autorizačnom requeste. Autorizačný server tento parameter<br>doplní do redirect_uri. Slúži ako prevencia <a rel=\"noreferrer noopener nofollow\" href=\"https://tools.ietf.org/html/rfc6749#section-10.12\" target=\"_blank\" url=\"https://tools.ietf.org/html/rfc6749#section-10.12\">cross-site forgery</a>. Používa sa<br>vždy, keď sa ako odpoveď má použiť presmerovanie na redirect_uri zo strany autorizačného servera<br>ako odpoveď na request od klienta.</div><div contenteditable=\"false\"><div><div><div></div></div></div><div></div></div></td></tr><tr><td><div>grant_type</div><div contenteditable=\"false\"><div><div><div></div></div></div><div></div></div></td><td><div>Zvolený typ autorizácie pre request. Každý registrovaný klient ma u nás definované aké spôsoby<br>autorizácie sú pre neho povolené. Môže nadobúdať hodnoty:<br><b>authorization_code</b>, <b>client_credentials</b></div><div contenteditable=\"false\"><div><div><div></div></div></div><div></div></div></td></tr><tr><td><div>code</div><div contenteditable=\"false\"><div><div><div></div></div></div><div></div></div></td><td><div>Autorizačný kód vrátený po úspešnom requeste pre Authorization Code Grant. Má krátku platnosť a po prvom použití je zneplatnený.</div><div contenteditable=\"false\"><div><div><div></div></div></div><div></div></div></td></tr><tr><td><div>token_type</div><div contenteditable=\"false\"><div><div><div></div></div></div><div></div></div></td><td><div>Typ tokenu, ktorý je použitý v komunikácii. Používame typ tokenu <b>Bearer</b></div><div contenteditable=\"false\"><div><div><div></div></div></div><div></div></div></td></tr><tr><td><div>access_token</div><div contenteditable=\"false\"><div><div><div></div></div></div><div></div></div></td><td><div>Pridelený access token. Platnosť access tokenu býva zvyčajne hodinu.</div><div contenteditable=\"false\"><div><div><div></div></div></div><div></div></div></td></tr><tr><td><div>expires_in</div><div contenteditable=\"false\"><div><div><div></div></div></div><div></div></div></td><td><div>Čas expirácie tokenu v sekundách.</div><div contenteditable=\"false\"><div><div><div></div></div></div><div></div></div></td></tr><tr><td><div>refresh_token</div><div contenteditable=\"false\"><div><div><div></div></div></div><div></div></div></td><td><div>Pridelený refresh token. Platnosť refresh tokenu býva zvyčajne rok. Slúži na offline prístup k používateľovým údajom bez nutnosti opätovnej<br>autorizácie aplikácie na prístup k dátam. Pomocou refresh token môže byť vyžiadaný nový access token.</div><div contenteditable=\"false\"><div><div><div></div></div></div><div></div></div></td></tr></tbody></table>\n\n---\n\n<h2>Koncové body autorizačného serveru (Endpoints)</h2>\n\n<p>Proces autorizácie využíva 2 koncové body autorizačného serveru(HTTP resources) podľa RFC normy a ďalšie dva nami definované koncové body.</p>\n\n<h4>Authorization endpoint {{url-pgsk}}auth/authorize</h4>\n\n<p>Authorization endpoint je používaný pri autorizácii klienta a používateľa. Odpoveďou je autorizačný kód alebo chyba s popisom.<br>Po autorizácií je klient presmerovaný cez uzatvorený Redirect endpoint na definovanú redirect_uri<br>späť s výsledkom autorizácie. Viď.<a href=\"#authorization_code_grant\">Authorization Code Grant - response</a></p>\n\n<p>URL: <b>{{url-pgsk}}auth/authorize</b></p>\n\n---\n\n<h4>Token Endpoint {{url-pgsk}}auth/token</h4>\n\n<p>Token endpoint - používaný na výmenu autorizačného kódu za access_token, alebo pre vydanie access_tokenu<br>pre klientov za ich CLIENT_ID a CLIENT_SECRET. Parametre requestu sú závislé od použitého<br><a href=\"#grant_types\">typu autorizácie</a>.<br></p>\n\n<p>URL: <b>{{url-pgsk}}auth/token</b></p>\n\n---\n\n<h4>Revoke Endpoint</h4>\n\nViď.\n\n<a href=\"#e9eaaaf6-51d7-4031-af38-2e7e0722ee60\">RevokeToken</a>\n\n---\n\n<h4>TokenInfo Endpoint</h4>\n\nViď.\n\n<a href=\"#93e5df55-f5e5-488e-b892-8d8a45192552\">TokenInfo</a>\n\n---\n\n<h4>RefreshToken</h4>\n\nViď.\n\n<a href=\"#d9842d41-c608-4554-893c-49696f7a7a59\">RefreshToken</a>\n\n<h1>Contacts</h1>\n\n<h4>PGSK PHP Team : php@partnersgroup.sk</h4>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":false,"owner":"13556914","team":1379716,"collectionId":"ff7f9eea-39e7-48e6-bc4e-4ab34c6d12b2","publishedId":"TVmQfcLU","public":true,"publicUrl":"https://apiv2documentation.partnersgroup.sk","privateUrl":"https://go.postman.co/documentation/13556914-ff7f9eea-39e7-48e6-bc4e-4ab34c6d12b2","customColor":{"top-bar":"AB0534","right-sidebar":"303030","highlight":"AB0534"},"documentationLayout":"classic-double-column","customisation":{"metaTags":[{"name":"description","value":""},{"name":"title","value":""}],"appearance":{"default":"light","themes":[{"name":"dark","logo":"https://content.pstmn.io/bc0d895a-80e5-40a6-abbc-0e25b26ce4bd/cGdzay1sb2dvLXNtYWxsLXdoaXRlLnBuZw==","colors":{"top-bar":"AB0534","right-sidebar":"303030","highlight":"AB0534"}},{"name":"light","logo":"https://content.pstmn.io/05ebdd94-32c3-49d8-a801-3e8a60c931ea/cGdzay1sb2dvLXNtYWxsLXdoaXRlLnBuZw==","colors":{"top-bar":"AB0534","right-sidebar":"303030","highlight":"AB0534"}}]}},"version":"8.10.0","publishDate":"2024-10-09T07:48:33.000Z","activeVersionTag":"latest","documentationTheme":"light","metaTags":{"title":"","description":""},"logos":{"logoLight":"https://content.pstmn.io/05ebdd94-32c3-49d8-a801-3e8a60c931ea/cGdzay1sb2dvLXNtYWxsLXdoaXRlLnBuZw==","logoDark":"https://content.pstmn.io/bc0d895a-80e5-40a6-abbc-0e25b26ce4bd/cGdzay1sb2dvLXNtYWxsLXdoaXRlLnBuZw=="}},"statusCode":200},"environments":[{"name":"PROD","id":"2d037dfe-cdc4-421e-9633-7406058d3bda","owner":"13451677","values":[{"key":"token","value":"8ab844ba1d504cb6edaf3b225f1d17bc28cdb488","enabled":true},{"key":"url-api1","value":"https://api.partnersgroup.sk/","enabled":true},{"key":"url-api2","value":"https://api.partnersgroup.sk/v2.0/","enabled":true},{"key":"url-apiv3","value":"https://api.partnersgroup.sk/v3/","enabled":true,"type":"default"},{"key":"url-apiv4","value":"https://api.partnersgroup.sk/v4/","enabled":true,"type":"default"},{"key":"url-pgsk","value":"https://pgsk.sk/","enabled":true},{"key":"grant_type","value":"client_credentials","enabled":true},{"key":"client_secret","value":"WlvVPRCi83GXDMA1rmO98kZC","enabled":true},{"key":"client_id","value":"admin.pgsk","enabled":true},{"key":"sent_from","value":"admin.pgsk LIVE","enabled":true},{"key":"url-api-ad","value":"http://apiad.partnersgroup.sk:3000/","enabled":true},{"key":"url-sso","value":"https://sso.partnersgroup.sk/","enabled":true,"type":"default"},{"key":"sso-uri","value":"https://sso.partnersgroup.sk/","enabled":true,"type":"default"}],"published":true}],"user":{"authenticated":false,"permissions":{"publish":false}},"run":{"button":{"js":"https://run.pstmn.io/button.js","css":"https://run.pstmn.io/button.css"}},"web":"https://www.getpostman.com/","team":{"logo":"https://res.cloudinary.com/postman/image/upload/t_team_logo_pubdoc/v1/team/ed395e75b26cdcf0c56d7b0d8e6d50acfd9597dbaa9c231a2e00e4bf29091b3d","favicon":"https://res.cloudinary.com/postman/image/upload/v1727856425/team/95c500f50e71d5b99549e91f478c19e4.ico"},"isEnvFetchError":false,"languages":"[{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"HttpClient\"},{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"RestSharp\"},{\"key\":\"curl\",\"label\":\"cURL\",\"variant\":\"cURL\"},{\"key\":\"dart\",\"label\":\"Dart\",\"variant\":\"http\"},{\"key\":\"go\",\"label\":\"Go\",\"variant\":\"Native\"},{\"key\":\"http\",\"label\":\"HTTP\",\"variant\":\"HTTP\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"OkHttp\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"Unirest\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"Fetch\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"jQuery\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"XHR\"},{\"key\":\"c\",\"label\":\"C\",\"variant\":\"libcurl\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Axios\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Native\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Request\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Unirest\"},{\"key\":\"objective-c\",\"label\":\"Objective-C\",\"variant\":\"NSURLSession\"},{\"key\":\"ocaml\",\"label\":\"OCaml\",\"variant\":\"Cohttp\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"cURL\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"Guzzle\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"HTTP_Request2\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"pecl_http\"},{\"key\":\"powershell\",\"label\":\"PowerShell\",\"variant\":\"RestMethod\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"http.client\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"Requests\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"httr\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"RCurl\"},{\"key\":\"ruby\",\"label\":\"Ruby\",\"variant\":\"Net::HTTP\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"Httpie\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"wget\"},{\"key\":\"swift\",\"label\":\"Swift\",\"variant\":\"URLSession\"}]","languageSettings":[{"key":"csharp","label":"C#","variant":"HttpClient"},{"key":"csharp","label":"C#","variant":"RestSharp"},{"key":"curl","label":"cURL","variant":"cURL"},{"key":"dart","label":"Dart","variant":"http"},{"key":"go","label":"Go","variant":"Native"},{"key":"http","label":"HTTP","variant":"HTTP"},{"key":"java","label":"Java","variant":"OkHttp"},{"key":"java","label":"Java","variant":"Unirest"},{"key":"javascript","label":"JavaScript","variant":"Fetch"},{"key":"javascript","label":"JavaScript","variant":"jQuery"},{"key":"javascript","label":"JavaScript","variant":"XHR"},{"key":"c","label":"C","variant":"libcurl"},{"key":"nodejs","label":"NodeJs","variant":"Axios"},{"key":"nodejs","label":"NodeJs","variant":"Native"},{"key":"nodejs","label":"NodeJs","variant":"Request"},{"key":"nodejs","label":"NodeJs","variant":"Unirest"},{"key":"objective-c","label":"Objective-C","variant":"NSURLSession"},{"key":"ocaml","label":"OCaml","variant":"Cohttp"},{"key":"php","label":"PHP","variant":"cURL"},{"key":"php","label":"PHP","variant":"Guzzle"},{"key":"php","label":"PHP","variant":"HTTP_Request2"},{"key":"php","label":"PHP","variant":"pecl_http"},{"key":"powershell","label":"PowerShell","variant":"RestMethod"},{"key":"python","label":"Python","variant":"http.client"},{"key":"python","label":"Python","variant":"Requests"},{"key":"r","label":"R","variant":"httr"},{"key":"r","label":"R","variant":"RCurl"},{"key":"ruby","label":"Ruby","variant":"Net::HTTP"},{"key":"shell","label":"Shell","variant":"Httpie"},{"key":"shell","label":"Shell","variant":"wget"},{"key":"swift","label":"Swift","variant":"URLSession"}],"languageOptions":[{"label":"C# - HttpClient","value":"csharp - HttpClient - C#"},{"label":"C# - RestSharp","value":"csharp - RestSharp - C#"},{"label":"cURL - cURL","value":"curl - cURL - cURL"},{"label":"Dart - http","value":"dart - http - Dart"},{"label":"Go - Native","value":"go - Native - Go"},{"label":"HTTP - HTTP","value":"http - HTTP - HTTP"},{"label":"Java - OkHttp","value":"java - OkHttp - Java"},{"label":"Java - Unirest","value":"java - Unirest - Java"},{"label":"JavaScript - Fetch","value":"javascript - Fetch - JavaScript"},{"label":"JavaScript - jQuery","value":"javascript - jQuery - JavaScript"},{"label":"JavaScript - XHR","value":"javascript - XHR - JavaScript"},{"label":"C - libcurl","value":"c - libcurl - C"},{"label":"NodeJs - Axios","value":"nodejs - Axios - NodeJs"},{"label":"NodeJs - Native","value":"nodejs - Native - NodeJs"},{"label":"NodeJs - Request","value":"nodejs - Request - NodeJs"},{"label":"NodeJs - Unirest","value":"nodejs - Unirest - NodeJs"},{"label":"Objective-C - NSURLSession","value":"objective-c - NSURLSession - Objective-C"},{"label":"OCaml - Cohttp","value":"ocaml - Cohttp - OCaml"},{"label":"PHP - cURL","value":"php - cURL - PHP"},{"label":"PHP - Guzzle","value":"php - Guzzle - PHP"},{"label":"PHP - HTTP_Request2","value":"php - HTTP_Request2 - PHP"},{"label":"PHP - pecl_http","value":"php - pecl_http - PHP"},{"label":"PowerShell - RestMethod","value":"powershell - RestMethod - PowerShell"},{"label":"Python - http.client","value":"python - http.client - Python"},{"label":"Python - Requests","value":"python - Requests - Python"},{"label":"R - httr","value":"r - httr - R"},{"label":"R - RCurl","value":"r - RCurl - R"},{"label":"Ruby - Net::HTTP","value":"ruby - Net::HTTP - Ruby"},{"label":"Shell - Httpie","value":"shell - Httpie - Shell"},{"label":"Shell - wget","value":"shell - wget - Shell"},{"label":"Swift - URLSession","value":"swift - URLSession - Swift"}],"layoutOptions":[{"value":"classic-single-column","label":"Single Column"},{"value":"classic-double-column","label":"Double Column"}],"versionOptions":[],"environmentOptions":[{"value":"0","label":"No Environment"},{"label":"PROD","value":"13451677-2d037dfe-cdc4-421e-9633-7406058d3bda"}],"canonicalUrl":"https://apiv2documentation.partnersgroup.sk/view/metadata/TVmQfcLU"}