Prístup k API
Odporúčané postupy integrácie
Vyberiete správny vstup (OAuth, odkaz na súhlas alebo Nastavenia → API) a prejdete postup pre svoj typ integrácie: od voľby poštára cez prepojenie a volania API až po odvolanie a platbu.
Predpoklady
- Viete, či softvér patrí firme sama, alebo ho dodávate klientom, a kto má platiť za doklady.
- Ako partner máte podpísanú zmluvu integrátora (alebo technického partnera) a registrovaného OAuth klienta s presmerovacími adresami.
Ktorý vstup použiť
Pravidlo je jedno. Ak je vlastník alebo správca firmy práve prihlásený vo vašej aplikácii, použite OAuth (tlačidlo „Prepojiť s ePošťákom“). Ak pripájate firmu zo servera alebo jej posielate odkaz e-mailom, použite odkaz na súhlas (consent link). Nastavenia → API je iba pre firmu, ktorá používa vlastný softvér (typ 2).
OAuth aj odkaz skončia v tom istom prepojení: ponuka súhlasu s uloženým odtlačkom, KYC záznam, väzba integrátora na firmu a webhook consent.accepted. Kliknutie „Povoliť prístup“ je súhlas firmy; podmienky (spravovaný integrátor alebo technický partner) sa berú z vašej zmluvy rovnako ako pri odkaze. Ani jedna cesta nevydáva firemný kľúč: pracujete s centrálnym sk_int_* a hlavičkou X-Firm-Id.
| Situácia | Vstup |
|---|---|
| Vlastník firmy je prihlásený vo vašej aplikácii | OAuth: tlačidlo „Prepojiť s ePošťákom“ |
| Pripájate zo servera alebo posielate odkaz e-mailom | Odkaz na súhlas: POST /api/v1/consent-offers |
| Firma používa vlastný softvér a platí sama | Nastavenia → API (typ 2), kľúč sk_live_* |
Presné názvy v ovládacom paneli API
Pri firme vidíte tieto polia. V texte nižšie ich používame presne takto.
| Pole | Hodnoty a význam |
|---|---|
| integrationPath | sapi, enterprise_api alebo connector. OAuth vždy vytvára enterprise_api. |
| relationshipMode | managed_service (spravovaný integrátor) alebo technical_delegation (technický partner). |
| payerMode | integrator_billed (platí integrátor), firm_billed (platí firma) alebo none. |
| credentialsAvailable | true iba keď je API aktívne, platí firma (firm_billed), firma je schválená a jej schránka je aktívna alebo registrovaná. Vtedy si firma môže vytvoriť vlastný kľúč v Nastavenia → API. Pri integrator_billed je false. |
| dashboardAccessMode | compliance_only (obmedzený prehľad pre firmu) alebo full_dashboard (plný dashboard). |
OAuth krok za krokom
2. Vlastník sa prihlási a klikne na „Povoliť prístup“
Vlastník alebo správca firmy sa prihlási do ePošťáka a uvidí zhrnutie ponuky: kto, čo a za akých podmienok. Kliknutie na „Povoliť prístup“ je súhlas firmy. Ak už platný prijatý súhlas pokrýva požadované oprávnenia, použije sa; inak sa vytvorí nová ponuka a prijme sa rovnakým postupom ako odkaz na súhlas. Iný používateľ dostane FORBIDDEN.
3. Prijmite kód na redirect_uri
ePošťák presmeruje vlastníka na redirect_uri s parametrami code a state. Skontrolujte state. Kód je jednorazový a platí 10 minút.
4. Vymeňte kód a uložte firm_id
POST https://epostak.sk/api/oauth/firm-consent (grant_type=authorization_code, code, client_id, client_secret, redirect_uri, code_verifier). Odpoveď obsahuje firm_id, firm_name, firm_ico, firm_peppol_participant_id (null, kým firma nie je zaregistrovaná), consent_id a scope. Nevydá sa žiadny kľúč: uložte firm_id.
5. Volajte API centrálnym kľúčom a X-Firm-Id
Svoj centrálny sk_int_* vymeňte cez POST /api/v1/auth/token za JWT a pri každom volaní za firmu pošlite X-Firm-Id: <firm_id>.
curl -X POST "https://epostak.sk/api/oauth/firm-consent" \
-H "Content-Type: application/json" \
-d '{"grant_type":"authorization_code","code":"<KOD>","client_id":"<OAUTH_CLIENT_ID>","client_secret":"<OAUTH_CLIENT_SECRET>","redirect_uri":"https://program.example/oauth/callback","code_verifier":"<PKCE_VERIFIER>"}'
# 200 -> {"token_type":"central_credential","firm_id":"<FIRM_ID>","firm_name":"Example s.r.o.","firm_ico":"12345678","firm_peppol_participant_id":null,"consent_id":"<CONSENT_ID>","activation":"active","active_from":null,"scope":"firms:manage documents:send documents:read",...}curl "https://epostak.sk/api/v1/firms" \
-H "Authorization: Bearer <JWT_Z_CENTRALNEHO_SK_INT>" \
-H "X-Firm-Id: <FIRM_ID>"Odkaz na súhlas krok za krokom
1. Vytvorte odkaz
POST /api/v1/consent-offers (odporúčané) alebo staršie POST /api/v1/firms/consent-link s DIČ alebo IČO firmy a oprávneniami. Voliteľné return_url (https) musí mať pôvod z presmerovacích adries povolených pre integrátora, inak VALIDATION_ERROR. Odpoveď obsahuje id a consentUrl; odkaz platí 14 dní a nemožno ho načítať znova.
2. Vlastník firmy odkaz potvrdí
Odkaz otvoríte vlastníkovi v prehliadači alebo ho pošlete e-mailom. Vlastník alebo správca sa prihlási a súhlas potvrdí.
3. Webhook a firm_id
Webhook consent.accepted príde na adresu nastavenú cez PUT /api/v1/onboarding-requests/webhook. Po prijatí vráti GET /api/v1/consent-offers/{id} aj firmId, firmIco, firmName a firmPeppolParticipantId (pred prijatím sú null). Uložte firmId.
curl -X POST "https://epostak.sk/api/v1/firms/consent-link" \
-H "Authorization: Bearer <JWT_Z_CENTRALNEHO_SK_INT>" \
-H "Content-Type: application/json" \
-d '{"dic":"2022988022","customer_reference":"ZAKAZNIK-001","scopes":["firms:manage","documents:send","documents:read"],"return_url":"https://program.example/spat"}'
curl "https://epostak.sk/api/v1/consent-offers/<OFFER_ID>" \
-H "Authorization: Bearer <JWT_Z_CENTRALNEHO_SK_INT>"
# 200 -> {"status":"accepted","firmId":"<FIRM_ID>","firmIco":"12345678","firmName":"Example s.r.o.","firmPeppolParticipantId":null,...}Typ 1: dodávateľ ERP alebo účtovníctva ako spravovaný integrátor
Dodávate softvér klientom a za doklady platíte vy. integrationPath: enterprise_api, relationshipMode: managed_service, payerMode: integrator_billed, dashboardAccessMode: compliance_only. Firma nedostáva žiadny kľúč (credentialsAvailable: false).
| Krok | Čo sa deje |
|---|---|
| Voľba poštára (jediné KYC) | Firma si na portáli Finančnej správy SR (vpds.financnasprava.sk) vyberie ePošťák ako „digitálneho poštára“. Tento výber je jediné KYC; neexistuje iná registrácia a nič sa neoveruje na epostak.sk. |
| Registrácia schránky | Po výbere poštára sa firme zaregistruje elektronická schránka (Peppol ID 0245:DIČ). Kým schránka nie je zaregistrovaná, firm_peppol_participant_id je null; spojenie s integrátorom to nebráni, ale dokumenty sa odosielajú až po registrácii. |
| Prepojenie | Tlačidlo „Prepojiť s ePošťákom“ (OAuth), ak je vlastník firmy prihlásený vo vašej aplikácii, alebo odkaz na súhlas (POST /api/v1/consent-offers, staršia možnosť POST /api/v1/firms/consent-link) pre server-to-server a odkazy v e-maile. Obe cesty skončia v tom istom prepojení: webhook consent.accepted, firm_id v GET /api/v1/consent-offers/{id}. |
| Použitie API | Centrálny sk_int_* kľúč integrátora → POST /api/v1/auth/token → JWT. Každé volanie za firmu posiela hlavičku X-Firm-Id: <firm_id>. GET /api/v1/firms vráti dostupné firmy, GET /api/v1/firms/{id} detail, odosielanie a príjem idú cez POST /api/v1/documents/send, GET /api/v1/documents/inbox a súvisiace endpointy. Peppol identifikátor firmy je vo firm_peppol_participant_id (odpoveď OAuth aj GET /api/v1/consent-offers/{id}); POST /api/v1/firms/{id}/peppol-identifiers je len pre priamu firmu, nie pre sk_int_*. |
| Čo firma vidí v /d | Obmedzený prehľad (compliance_only): firma vidí stav schránky a v Nastavenia → Digitálny poštár kartu „Prístup integrátora“. Doklady spravuje váš program cez API. |
| Odvolanie | Firma: Nastavenia → Digitálny poštár → Prístup integrátora → odvolať. Integrátor: v partnerskom portáli „Odpojiť“ pri firme alebo zrušenie kľúča (DELETE /api/v1/integrator/keys/{keyId}); odvolanie príde ako webhook consent.revoked. Odvolanie zastaví nové volania, Peppol registrácia a už doručené doklady ostávajú. |
| Platba | Platíte vy podľa integrátorskej zmluvy, súhrnne. Cenník: https://epostak.sk/cennik. |
Typ 2: vlastný softvér firmy
Firma pripája vlastný systém a platí sama. payerMode: firm_billed, credentialsAvailable: true (keď je API aktívne a schránka registrovaná). Integrátor v tom nie je, preto sa nepoužíva OAuth ani odkaz na súhlas.
| Krok | Čo sa deje |
|---|---|
| Voľba poštára (jediné KYC) | Firma si na portáli Finančnej správy SR (vpds.financnasprava.sk) vyberie ePošťák ako „digitálneho poštára“. Tento výber je jediné KYC; neexistuje iná registrácia a nič sa neoveruje na epostak.sk. |
| Registrácia schránky | Po výbere poštára sa firme zaregistruje elektronická schránka (Peppol ID 0245:DIČ). Kým schránka nie je zaregistrovaná, firm_peppol_participant_id je null; spojenie s integrátorom to nebráni, ale dokumenty sa odosielajú až po registrácii. |
| Prepojenie | Firma v Nastavenia → API objedná a aktivuje API a klikne Vytvoriť produkčný API kľúč. |
| Použitie API | Kľúč sk_live_* (client_id a client_secret) firma vloží do svojho softvéru. Softvér ho vymení cez POST /api/v1/auth/token za JWT. Hlavička X-Firm-Id nie je potrebná, kľúč patrí jednej firme. client_secret sa zobrazí iba raz. |
| Čo firma vidí v /d | Plný dashboard /d so svojím účtom. |
| Odvolanie | Firma: v Nastavenia → API kľúč zruší alebo vygeneruje nový; starý okamžite prestane fungovať. |
| Platba | Platí firma podľa cenníka API, bez mesačného paušálu a minimálnej viazanosti. Cenník: https://epostak.sk/cennik. |
Typ 3: prísny White Label
Iba API: firma ePošťák nevidí, vzťah so zákazníkom vlastní partner pod vlastnou značkou. Nepoužíva sa OAuth ani odkaz na súhlas (OAuth takúto firmu odmietne s WHITE_LABEL_API_ONLY).
| Krok | Čo sa deje |
|---|---|
| Voľba poštára (jediné KYC) | Firma si na portáli Finančnej správy SR (vpds.financnasprava.sk) vyberie ako digitálneho poštára partnera. Finančná správa doručí jednorazový verification_token na podpísaný webhook partnera. Toto je jediné KYC. |
| Registrácia schránky | Partner zavolá POST /white-label/participants/registrations. Lokálna firma a väzba vzniknú až po potvrdení úspešného zápisu; potom partner zavolá POST /customers. |
| Prepojenie | Žiadny súhlas cez ePošťák: partner rieši vzťah s klientom sám. |
| Použitie API | Partnerský kľúč a zákazník určený cez customerRef podľa referencie White Label. |
| Čo firma vidí v /d | Nič: firma nemá účet ani e-maily ePošťáka. |
| Odvolanie | Partner ukončí režim; SMP sa migruje iba vtedy, keď firma mení digitálneho poštára. |
| Platba | White Label sa poskytuje len v rámci strategického partnerstva a podmienky určuje dohoda s ePošťákom. Ostatné typy: https://epostak.sk/cennik. |
Typ 4: technický partner s delegovaním
Partner pracuje za firmu, ktorá má vlastnú API objednávku a platí sama. integrationPath: enterprise_api, relationshipMode: technical_delegation, payerMode: firm_billed, dashboardAccessMode: full_dashboard.
| Krok | Čo sa deje |
|---|---|
| Voľba poštára (jediné KYC) | Firma si na portáli Finančnej správy SR (vpds.financnasprava.sk) vyberie ePošťák ako „digitálneho poštára“. Tento výber je jediné KYC; neexistuje iná registrácia a nič sa neoveruje na epostak.sk. |
| Registrácia schránky | Po výbere poštára sa firme zaregistruje elektronická schránka (Peppol ID 0245:DIČ). Kým schránka nie je zaregistrovaná, firm_peppol_participant_id je null; spojenie s integrátorom to nebráni, ale dokumenty sa odosielajú až po registrácii. |
| Prepojenie | OAuth alebo odkaz na súhlas. Firma jedným potvrdením udelí súhlas a objedná si vlastné štandardné API (ak ho ešte nemá). Ak platí iba zmluva technického partnera pre Enterprise API, OAuth použije tento režim automaticky. |
| Použitie API | Rovnako ako pri type 1: centrálny sk_int_* a X-Firm-Id. Do inštalácie u zákazníka patrí iba kľúč obmedzený na jednu firmu (POST /api/v1/integrator/keys so scopedFirmId = firm_id), nie hlavný kľúč. |
| Čo firma vidí v /d | Plný dashboard /d; firma vidí aj svoje doklady a prístup partnera. |
| Odvolanie | Firma: Nastavenia → Digitálny poštár → Prístup integrátora → odvolať. Integrátor: v partnerskom portáli „Odpojiť“ pri firme alebo zrušenie kľúča (DELETE /api/v1/integrator/keys/{keyId}); odvolanie príde ako webhook consent.revoked. Odvolanie zastaví nové volania, Peppol registrácia a už doručené doklady ostávajú. |
| Platba | Platí firma podľa svojho cenníka v ePošťáku (alebo ceny dohodnutej s partnerom). Partner neplatí nič. Cenník: https://epostak.sk/cennik. |
Typ 5: Connector
Pre programy, ktoré nevedia posielať UBL: Connector prijíma JSON a firmu určuje cez customerRef namiesto X-Firm-Id. integrationPath: connector. Režim a platiteľ (relationshipMode a payerMode) vyplývajú z vašej zmluvy ako pri type 1 alebo 4.
| Krok | Čo sa deje |
|---|---|
| Voľba poštára (jediné KYC) | Firma si na portáli Finančnej správy SR (vpds.financnasprava.sk) vyberie ePošťák ako „digitálneho poštára“. Tento výber je jediné KYC; neexistuje iná registrácia a nič sa neoveruje na epostak.sk. |
| Registrácia schránky | Po výbere poštára sa firme zaregistruje elektronická schránka (Peppol ID 0245:DIČ). Kým schránka nie je zaregistrovaná, firm_peppol_participant_id je null; spojenie s integrátorom to nebráni, ale dokumenty sa odosielajú až po registrácii. |
| Prepojenie | Odkaz na súhlas s rozhraním connector (POST /api/v1/consent-offers, requestedInterfaces alebo integrationPath). OAuth vytvára iba enterprise_api. |
| Použitie API | JWT z centrálneho sk_int_* a customerRef vo volaniach podľa referencie Connectora. |
| Čo firma vidí v /d | Podľa dashboardAccessMode zmluvy: compliance_only alebo full_dashboard. |
| Odvolanie | Firma: Nastavenia → Digitálny poštár → Prístup integrátora → odvolať. Integrátor: v partnerskom portáli „Odpojiť“ pri firme alebo zrušenie kľúča (DELETE /api/v1/integrator/keys/{keyId}); odvolanie príde ako webhook consent.revoked. Odvolanie zastaví nové volania, Peppol registrácia a už doručené doklady ostávajú. |
| Platba | Podľa payerMode: integrator_billed platí integrátor, firm_billed firma. Cenník: https://epostak.sk/cennik. |
Výmena kódu: /oauth/firm-consent a /oauth/token
- Kód nového súhlasu vymeňte cez POST /api/oauth/firm-consent (rovnaký vstup ako /oauth/token). Vráti firm_id a údaje firmy, nie kľúč: uložte firm_id a API volajte centrálnym kľúčom sk_int_* s hlavičkou X-Firm-Id.
- POST /api/oauth/token sa nemení. Kód nového súhlasu odmietne s 400 invalid_grant a kód pritom nepoužije, takže ten istý kód hneď vymeníte cez /api/oauth/firm-consent.
- Ak si firma zatiaľ platí API sama a prijme vašu ponuku, odpoveď má activation "pending" a active_from. Súhlas platí a firm_id je konečné, volania s X-Firm-Id však fungujú až od active_from (začiatok ďalšieho fakturačného mesiaca), keď platenie prejde na vás. Firmu znova na súhlas neposielajte; ďalšie „Povoliť prístup“ použije ten istý súhlas.
- Staré kľúče sk_live_* z predchádzajúceho OAuth fungujú, kým ich niekto neodvolá. Kľúč sk_live_* cez /api/oauth/token dostanú už len staršie súhlasy bez uloženého odtlačku ponuky.
- Chyby autorizácie majú kódy INVALID_CLIENT, INVALID_SCOPE, FORBIDDEN, WHITE_LABEL_API_ONLY, PFS_SELECTION_REQUIRED, PFS_ACTIVATION_IN_PROGRESS (503), INTEGRATOR_NOT_READY, CONSENT_STATE_CHANGED, TEMPORARILY_UNAVAILABLE (503), BILLING_TRANSITION_CONFLICT, FIRM_PEPPOL_IDENTITY_REQUIRED a FIRM_IDENTITY_REQUIRED. Limit je 20 žiadostí za minútu.
Očakávaný výsledok
Viete, ktorý vstup použiť, ktorý typ integrácie je váš a čo presne firma, partner a platiteľ v každom kroku robia.
Keď to nefunguje
- Autorizácia vráti PFS_SELECTION_REQUIRED: firma si ešte nevybrala ePošťák na vpds.financnasprava.sk. Po výbere zopakujte prepojenie.
- Autorizácia vráti FORBIDDEN: prihlásený používateľ nie je vlastník ani správca firmy.
- Výmena kódu vráti invalid_grant: kód už bol použitý alebo prešlo 10 minút, redirect_uri sa nezhoduje alebo code_verifier nepasuje. Začnite autorizáciu od začiatku.
- GET /api/v1/consent-offers/{id} stále vracia firmId: null: firma odkaz ešte neprijala. Odkaz platí 14 dní; po vypršaní vytvorte nový.