ePostman docs
Portál

Validácia

Päť validačných vrstiev od XML po slovenské pravidlá.

3 min čítania
  • #l1
  • #l4
  • #l5
  • #schematron
  • #peppol bis billing 3.0
  • #en 16931
  • #validation

Päť vrstiev. Prvá fatálna chyba zastaví ďalšie a dokument sa neodošle.

VrstvaČo kontrolujePri chybe
L1Správne utvorené XMLFATAL
L2Schéma UBL 2.1 (XSD)FATAL
L3EN 16931 (CEN Schematron)FATAL alebo WARNING
L4Peppol BIS Billing 3.0 (Schematron)FATAL
L5Slovenské pravidlá podľa transpozície BISFATAL alebo WARNING

Každá vrstva hlási vlastný výsledok

Vrstvy L2, L3 a L4 bežia ako jeden reťazec, takže sa pravidlá nespúšťajú dvakrát. Napriek tomu má každá vlastný výsledok — nález sa priradí podľa toho, ktorá sada pravidiel ho vyrobila.

Hodnota vrstvy je OK, WARNING, FATAL alebo SKIPPED.

SKIPPED neznamená „prešlo”. Znamená, že vrstva vôbec nebežala, lebo reťazec sa zastavil skôr: chyba XSD zastaví L3 aj L4, fatálna chyba na L1 zastaví všetko ostatné. „Neoverené” a „v poriadku” sa nikdy nezlejú do jednej hodnoty.

Vrstva L5 môže navyše vrátiť ERROR — slovenskú sadu pravidiel sa nepodarilo spustiť. Dokument to nezastaví, ale do upozornení pribudne nález s rule_id SK_ENGINE, aby bolo z odpovede zrejmé, že slovenské pravidlá overené neboli.

Čo kontroluje slovenská vrstva

Vrstva L5 sa spúšťa, keď je dodávateľ slovenský subjekt. Rozlišuje dve závažnosti — fatálna chyba dokument zastaví, upozornenie ho len označí a pošle ďalej.

  • Fatálne: chýbajúca schéma 0245 pri identifikátoroch, neúplná adresa dodávateľa alebo odberateľa.
  • Upozornenie: podozrivý formát DIČ alebo IČO, chýbajúca právna forma, nezrovnalosti pri daňovom zástupcovi.

Výsledok validácie cez API

GET /api/v1/invoices/{id}/validation
X-Api-Key: …
Accept-Language: sk

Vracia posledný verdikt uložený k faktúre. Výsledky sú append-only — opakovaná validácia po oprave pridá nový záznam a starý zostáva v histórii.

StavKedy
200verdikt existuje
202faktúra je ešte PENDING alebo VALIDATING; retry_after aj hlavička Retry-After hovoria, o koľko sekúnd skúsiť znova
404faktúra neexistuje — alebo je z čias pred zavedením zápisu výsledkov a verdikt už nedostane

Nálezy majú rovnaký tvar ako v predbežnej validácii: title, explanation a fix sú lokalizované podľa hlavičky Accept-Language (sk alebo en, bez hlavičky en; použitý jazyk vraciame v Content-Language), raw_message a raw_location sú originálny text Schematronu a XPath. Jeden model nálezu vám preto stačí pre oba endpointy.

{
  "id": "5a0c…",
  "invoice_id": "7104dd91-…",
  "created_at": "2026-09-01T09:41:10Z",
  "valid": false,
  "overall_severity": "FATAL",
  "validation_levels": {
    "L1_xml": "OK", "L2_xsd": "OK", "L3_en16931": "OK",
    "L4_peppol": "FATAL", "L5_sk": "SKIPPED"
  },
  "errors": [{
    "rule_id": "PEPPOL-EN16931-R001",
    "rule_set": "PEPPOL",
    "level": 4,
    "severity": "FATAL",
    "raw_message": "Business process MUST be provided.",
    "raw_location": "/Invoice[1]/cbc:ProfileID",
    "title": "Chýba identifikátor obchodného procesu",
    "explanation": "Peppol vyžaduje, aby faktúra deklarovala…",
    "fix": "Doplňte element cbc:ProfileID s hodnotou…",
    "location": "/Invoice[1]/cbc:ProfileID",
    "localized": true
  }],
  "warnings": [],
  "truncated": false,
  "total_findings": 1,
  "duration_ms": 1840
}

Príklad je skrátený — odpoveď nesie aj zastarané polia opísané nižšie. id rozlišuje beh validácie, ktorý verdikt vyrobil.

Ak pravidlo v katalógu ešte nemáme, localized je false a title obsahuje originálnu anglickú správu. Pri viac než 500 nálezoch je zoznam skrátený (truncated), skutočný počet je v total_findings; chyby majú prednosť pred upozorneniami.

Zastarané polia — odstránia sa v 2.0.0

Do verzie 2.0.0 odpoveď obsahuje aj pôvodné polia s rovnakou hodnotou, aby existujúce integrácie fungovali bez zmeny. V OpenAPI sú označené deprecated: true.

ZastaranéPoužite namiesto toho
overallSeverityoverall_severity
validationLevelsvalidation_levels
durationMsduration_ms
invoiceIdinvoice_id
createdAtcreated_at
organizationIdbez náhrady — je to organizácia volajúceho
nález: ruleIdrule_id
nález: ruleSetrule_set
nález: messageraw_message (originál) alebo title (lokalizované)
nález: locationraw_location — do 2.0.0 nesie location XPath, potom bude čitateľnou pozíciou ako v predbežnej validácii