OAuth — Pripojiť cez eFaktúru
Pre aplikácie, ktoré pracujú v mene používateľov eFaktúry (e-shop, ERP, CRM, fakturačný nástroj). Používateľ sa prihlási do eFaktúry, vyberie firmu a odsúhlasí, čo smie vaša aplikácia robiť. Vy dostanete token viazaný na túto firmu — nikto si nemusí vytvárať ani posielať API kľúč.
OAuth alebo API kľúč?
| Situácia | Použite |
|---|---|
| Vaša aplikácia pripája účty rôznych firiem (tlačidlo „Pripojiť eFaktúru“) | OAuth |
| Integrácia jednej vlastnej firmy (skript, interný systém) | API kľúč |
| White-label partner a klientske firmy pod ním | Partnerský kľúč |
Postup
1. Zaregistrujte aplikáciu (Dynamic Client Registration, raz). V poli resources uveďte Agent API — bez neho dostanete iba tokeny pre MCP.
curl -X POST https://api.efaktura.sk/api/auth/oauth2/register \
-H "Content-Type: application/json" \
-d '{
"client_name": "Môj e-shop",
"redirect_uris": ["https://moj-eshop.sk/efaktura/callback"],
"token_endpoint_auth_method": "client_secret_basic",
"grant_types": ["authorization_code", "refresh_token"],
"response_types": ["code"],
"resources": ["https://api.efaktura.sk/v1/agent"]
}'Odpoveď obsahuje client_id (a client_secret pri serverovej aplikácii). Mobilná alebo desktopová aplikácia použije "token_endpoint_auth_method": "none".
2. Presmerujte používateľa na súhlas. PKCE (S256) je povinné.
https://api.efaktura.sk/api/auth/oauth2/authorize
?response_type=code
&client_id=<client_id>
&redirect_uri=https://moj-eshop.sk/efaktura/callback
&scope=openid offline_access invoice:read invoice:create invoice:send
&state=<náhodná hodnota>
&code_challenge=<S256(code_verifier)>
&code_challenge_method=S256
&resource=https://api.efaktura.sk/v1/agentPoužívateľ sa prihlási, vyberie firmu a odsúhlasí rozsahy. Potom ho vrátime na redirect_uri s parametrami code a state.
3. Vymeňte kód za token.
curl -X POST https://api.efaktura.sk/api/auth/oauth2/token \
-u "<client_id>:<client_secret>" \
-d grant_type=authorization_code \
-d code=<code> \
-d redirect_uri=https://moj-eshop.sk/efaktura/callback \
-d code_verifier=<code_verifier> \
-d resource=https://api.efaktura.sk/v1/agent4. Volajte Agent API s tokenom. Firma je v tokene, hlavičku X-Organization-Id netreba. Ak ju pošlete, musí sa zhodovať.
curl https://api.efaktura.sk/v1/agent/invoices \
-H "Authorization: Bearer <access_token>"5. Obnovte token pred vypršaním (platí 1 h) cez grant_type=refresh_token. Refresh token dostanete, ak ste žiadali scope offline_access.
Technické parametre
| Parameter | Hodnota |
|---|---|
| Authorization server metadata | https://api.efaktura.sk/.well-known/oauth-authorization-server |
| Resource (audience) | https://api.efaktura.sk/v1/agent |
| Tok | OAuth 2.1, authorization code + PKCE (S256), refresh token |
| Access token | JWT, platnosť 1 h, claim org_id |
| Scopes | Rovnaké ako pri API kľúčoch, plus openid, profile, email, offline_access |
| Limity a kvóty | Podľa balíka firmy, rovnako ako pri API kľúči |
Zoznam rozsahov nájdete v API kľúče a scopes.
Čo token smie
| Pravidlo | Správanie |
|---|---|
| Jedna firma | Token vidí iba firmu zvolenú pri súhlase; GET /v1/agent/organizations vráti len ju. |
| Rozsahy | Priesečník odsúhlasených rozsahov a oprávnení role používateľa vo firme. |
| Zrušenie | Používateľ ho zruší v Nastavenia → Integrácie → API kľúče; ďalšie volania dostanú 401. |
| Oddelenie od MCP | Tokeny pre MCP a pre Agent API majú inú audience a navzájom nefungujú. |
| Audit | Každé volanie sa zapíše do API logov ako pri API kľúči. |
Chyby
| Situácia | Odpoveď |
|---|---|
| Neplatný, expirovaný alebo cudzí token | 401 + hlavička WWW-Authenticate (invalid_token) |
| Používateľ pripojenie zrušil | 401, error_description connection_revoked |
| X-Organization-Id iná ako v tokene | 403 Token je viazaný na inú organizáciu |
| Chýbajúci rozsah | 403 API key does not have scope: … |