1. Bevezetés
A DCC API (Directive on Administrative Cooperation API) projekt a 2011/16/EU irányelv (DAC) szerinti adóügyi adatcsere M2M (Machine-to-Machine) interfészének nyilvános sémadefinícióit tartalmazza.
A projekt célja egy egységes, biztonságos és hatékony elektronikus adatcsere-keretrendszer biztosítása, amely összefogja és támogatja az EU DAC irányelv által előírt valamennyi adatcsere-folyamatot. A rendszer megteremti az interoperabilitás, az átláthatóság és az adatbiztonság egységes alapjait, elősegítve az adóügyi együttműködés magasabb szintjét az Európai Unióban.
1.1. DAC9 - GloBE Információs Adatszolgáltatás (Pillar Two)
A DAC9 a 2011/16/EU irányelv (DAC) szerinti adóügyi adatcsere egyik legfontosabb szolgáltatása, amely a globális minimumadó jelentésére vonatkozó XML sémákat tartalmazza. A DCC-API DAC9 moduljai a Magyarország által az OECD-vel együttműködésben implementált GloBE Information Return (Pillar Two) XML sémák implementációját tartalmazzák, amelyek a következő dokumentumokon alapulnak:
-
OECD (2025), GloBE Információs Adatszolgáltatás (Pillar Two) XML séma: Felhasználói útmutató adóhatóságok számára, OECD Publishing, Párizs, https://doi.org/10.1787/c594935a-en.
-
OECD (2025), Az adózás digitalizációjából eredő kihívások - Konszolidált kommentár a Globális Anti-Base Erosion Modell Szabályokhoz (2025): Befogadó Keret a BEPS-re, OECD/G20 Base Erosion and Profit Shifting Project, OECD Publishing, Párizs, https://doi.org/10.1787/a551b351-en.
-
OECD (2025), Az adózás digitalizációjából eredő kihívások - GloBE Információs Adatszolgáltatás (2025. január): Befogadó Keret a BEPS-re, OECD/G20 Base Erosion and Profit Shifting Project, OECD Publishing, Párizs, https://doi.org/10.1787/a05ec99a-en.
2. Dokumentáció áttekintése
Az alábbi dokumentumok alkotják a DCC API fejlesztési dokumentációját:
| Dokumentum | Leírás |
|---|---|
A projekt felépítése, modul struktúra, függőségi hierarchia és tervezési döntések. |
|
Gépi interfész csatlakozási útmutató külső kliensek számára. |
|
Jakarta EE DTO objektumok generálásának módja, JAXB konfiguráció és Catalog rendszer. |
3. Külső függőségek
A projekt a NAV közös sémaleíró projektjére épül:
-
Common (
hu.gov.nav.schemas.common2) - Általános NTCA 2.0 XSD definíciók és Jakarta EE DTO-k. A DCC API sémái és típusai erre a projektre épülnek, felhasználva annak string, type, customer, paging, entity, service és authservice névtereit.
4. Architektúra
A DCC API egy többmodulos Maven projekt, amely a NAV DAC (Directive on Administrative Cooperation) M2M interfész sémadefinícióit tartalmazza. A projekt három fő réteget definiál:
-
Séma réteg (
schema) - XSD sémadefiníciók -
DTO réteg (
dto) - Jakarta EE Data Transfer Object-ek, az XSD sémákból generálva -
BOM réteg (
bom) - Bill of Materials a függőségek központi verziókezeléséhez
4.1. Projekt struktúra
DCC-API
├── bom/
│ ├── bom-all/ # Teljes BOM (projekt + külső függőségek)
│ └── bom-project/ # Csak projekt modulok BOM-ja
├── schema/
│ ├── schema-auth/ # M2M Token API séma
│ ├── schema-dac9/ # DAC9 Global Tax API séma
│ └── schema-oecd-globe/ # OECD GLOBE Pillar Two harmadik féltől származó sémák
├── dto/
│ ├── dto-auth/
│ │ └── dto-auth-jakarta/ # Generált Jakarta EE DTO-k schema-auth sémából
│ ├── dto-dac9/
│ │ └── dto-dac9-jakarta/ # Generált Jakarta EE DTO-k schema-dac9 sémából
│ └── dto-oecd-globe/
│ └── dto-oecd-globe-jakarta/ # Generált Jakarta EE DTO-k OECD GLOBE sémából
└── docs/ # Dokumentáció
4.2. Modul hierarchia
4.2.1. Séma modulok
schema-auth
Az M2M autentikációs token API XSD sémáját tartalmazza.
schema-dac9
A DAC-9 szolgáltatások API XSD sémáját tartalmazza.
schema-oecd-globe
Az OECD GLOBE (Global Anti-Base Erosion) Pillar Two Information Return XML sémáit tartalmazza. Ezek harmadik féltől származó, az OECD által publikált XSD definíciók, amelyek a DAC9 globális minimumadó jelentés tartalmi validációjának alapjául szolgálnak.
4.2.2. DTO modulok
dto-auth-jakarta
Jakarta EE DTO osztályok, amelyek az schema-auth XSD sémáiból generálódnak JAXB segítségével.
-
Függőségek:
-
hu.gov.nav.schemas.common2:dto-jakarta- Közös NTCA 2.0 DTO-k -
hu.gov.nav.dcc.api:schema-auth- Auth séma definíciók
-
dto-dac9-jakarta
Jakarta EE DTO osztályok, amelyek az schema-dac9 XSD sémáiból generálódnak JAXB segítségével.
-
Függőségek:
-
hu.gov.nav.schemas.common2:dto-jakarta- Közös NTCA 2.0 DTO-k -
hu.gov.nav.dcc.api:schema-dac9- DAC9 séma definíciók
-
dto-oecd-globe-jakarta
Jakarta EE DTO osztályok, amelyek az schema-oecd-globe OECD GLOBE XSD sémáiból generálódnak JAXB segítségével.
Ez a modul önálló, nem használ Episode mechanizmust, mivel az OECD típusok teljesen függetlenek az NTCA Common típusoktól.
-
Függőségek:
-
hu.gov.nav.schemas.common2:core-jakarta- Közös NTCA 2.0 core modul -
hu.gov.nav.dcc.api:schema-oecd-globe- OECD GLOBE séma definíciók
-
4.3. Függőségi diagram
4.4. Névtér stratégia
A projekt az alábbi névtér hierarchiát alkalmazza:
| Névtér minta | Leírás |
|---|---|
|
NTCA 2.0 közös sémák (Common projekt) |
|
DCC M2M autentikációs sémák |
|
DCC M2M DAC9 sémák |
|
OECD GLOBE Information Return fő séma |
|
OECD ISO ország-, pénznem- és nyelvkód típusok |
|
OECD újrafelhasználható típusok |
A névterek a schemas.nav.gov.hu alatt szerveződnek, a DCC/1.0 verziónévvel, az m2m prefix pedig
a gépi kommunikáció jellegét jelöli.
4.5. Technológiai stack
| Technológia | Verzió / Leírás |
|---|---|
Java |
17 |
Jakarta EE |
JAXB 3.0 (Jakarta XML Binding) |
Maven |
Multi-module POM struktúra |
JAXB plugin |
|
JAXB kiegészítők |
Fluent API ( |
XSD Catalog |
OASIS XML Catalog alapú névtér feloldás |
Közös sémák |
|
5. M2M integrációs útmutató
Ez a fejezet az M2M (Machine-to-Machine) gépi interfész csatlakozásának útmutatóját tartalmazza külső kliensek számára. A DCC API következő M2M funkciókat biztosít:
-
Autentikáció - Token igénylés az M2M kommunikációhoz
-
DAC9 jelentés beküldés - Globális minimumadó jelentés kezelése
Általános Http kommunikációs szabályok:
-
TLS 1.3 vagy újabb verzió használata kötelező
-
Request/Response XML formátum, ha csak az adott végpont nem ír elő más formátumot.
-
Karakterkódolás UTF-8 minden esetben.
-
Befogadott request méret maximálisan 1 MB, ha csak az adott végpont nem ír elő más méretkorlátot.
-
Tömörítés GZIP formátumban. Ha valahol tömörített adatot kell küldeni, akkor tömörítéskor a leggyorsabb, legkevésbé tömörítő, 1-es compression ratio kerüljön alkalmazásra („gzip -1 [FILE]”).
-
A szerver jellemzően 300ms alatti válaszidőkkel szolgál ki.
-
A szinkronhívások blokkoló timeout értéke 5000 ms. Kérjük, hogy kliens oldalon a fenti értéket meghaladó válaszidőt kezeljék csak időtúllépésként! Az abszolút timeout értéke 60 sec. Ha egy adatszolgáltatásra nem érkezik válasz a 60 másodperces timeout miatt, még nem jelenti a beküldés sikertelenségét.
-
A szerver az időbeállításokat egy zárt, a külvilág számára nem hozzáférhető NTP szervertől kapja. Kliens oldalon a szerveridőhöz szinkronizálás nem követelmény, azonban opcionálisan a következő időszinkronizáció lehetséges: http://www.pool.ntp.org/zone/hu (a csatlakozáshoz NTP kliensre van szükség).
-
A kliensektől elvárt hogy számítsanak az API verzióváltására (előre bejelentett, tervezhető időkkel), és a kérés-válasz feldolgozásakor a verziószámot is vegyék figyelembe.
5.1. Integrációs folyamat áttekintése
5.2. Autentikáció - Token igénylés
Az M2M kommunikáció első lépése a hozzáférési token igénylése a Token API-n keresztül.
5.2.1. Http kérés
A hozzáférési token igénylése HTTP POST kéréssel történik, ahol a következő beállítások szükségesek:
-
HTTP metódus: POST
-
Fejlécek:
-
Content-Type: text/xml vagy application/xml -
Accept: text/xml vagy application/xml
-
5.2.2. Kérés: M2MTokenRequest
A kérés az NTCA AuthRequestType kiterjesztése, amely tartalmazza a standard
hitelesítési fejlécet, felhasználói adatokat és szoftver azonosítót.
<?xml version="1.0" encoding="UTF-8"?>
<ns3:M2MTokenRequest xmlns="http://schemas.nav.gov.hu/NTCA/2.0/common/service" xmlns:ns2="http://schemas.nav.gov.hu/NTCA/2.0/common/authservice"
xmlns:ns3="http://schemas.nav.gov.hu/DCC/1.0/m2m/token/tokenapi">
<context>
<requestId>019ce6a6-2a0c-7207-b3f4-cc8373579c7c</requestId>
<timestamp>2026-03-13T10:02:55.37291704Z</timestamp>
</context>
<ns2:auth>
<ns2:login>m2m_user_example</ns2:login> (1)
<ns2:passwordHash cryptoType="SHA-512">12B03226A6D8BE9C6E8CD5E55DC6C7920CAAA39DF14AAB92D5E3EA9340D1C8A4D3D0B8E4314F1F6EF131BA4BF1CEB9186AB87C801AF0D5C95B1BEFB8CEDAE2B9</ns2:passwordHash> (2)
<ns2:taxNumber>12345678</ns2:taxNumber> (3)
<ns2:predecessorTaxNumber></ns2:predecessorTaxNumber> (4)
<ns2:requestSignature cryptoType="SHA3-512">6498E406186580DA6403680FD3A6A008FD7F207CA2AFDE5885C38AC700A9A52A3BAADEE914FA0649DBBE103D2D6E99B1236DA403CDD5EF338245A4474770D591</ns2:requestSignature> (5)
</ns2:auth>
<ns2:requestVersion>1.0</ns2:requestVersion> (6)
<ns2:headerVersion>1.0</ns2:headerVersion> (7)
</ns3:M2MTokenRequest>
| 1 | A login tag a technikai felhasználó nevét tartalmazza.
A login nevet a rendszer véletlenszerűen generálja a technikai felhasználó létrehozásakor 15 karakter hosszan.
A login tag az authentikáció egyik eleme. |
| 2 | A passwordHash a login tagban szereplő technikai felhasználó jelszavának nagybetűs SHA-512 hash értéke.
A literál jelszót a technikai felhasználót létrehozó elsődleges felhasználó adja meg az Online Számla webfelületen.
A passwordHash az authentikáció egyik eleme.
Egyetlen elfogadott értéke: SHA-512. |
| 3 | A taxNumber azon adózó adószámának első 8 száma, aki nevében a technikai felhasználó tevékenykedik, és akihez tartozik.
Csak magyar adószám az elfogadott. |
| 4 | A predecessorTaxNumber amennyiben megadásra kerül, akkor validálásra kerül,
hogy a taxNumber tagben megadott adózóval jogelőd viszonyban áll-e.
A jogelőd viszony rekurzívan kerül ellenőrzésre, közvetett jogelőd megadása is elfogadott.
A predecessorTaxNumber megadása befolyásolja az operációk üzleti logikáját. |
| 5 | A requestSignature a kliens által generált aláírása az üzenetnek.
Minden kéréshez kötelezően tartoznia kell egy requestSignature-nek.
A szerver a kérésben szereplő adatok alapján elvégzi a saját requestSignature számítását és csak akkor hajtja végre a kérést,
ha a tárolt és kapott adatokból a helyes érték ténylegesen előállítható.
A requestSignature számításáról a „requestSignature számítása” fejezet nyújt tájékoztatást.
Egyetlen elfogadott értéke: SHA3-512. |
| 6 | A requestVersion a kérés verzióját jelöli, nem kötelező - ilyenkor a rendszer "1.0" értéket fog kezelni. Jelenleg csak a "1.0" érték fogadható el. |
| 7 | A headerVersion a fejléc verzióját jelöli, nem kötelező - ilyenkor a rendszer "1.0" értéket fog kezelni. Jelenleg csak a "1.0" érték fogadható el. |
requestSignature számítására
A requestSignature az interfész-authentikáció egyik fő eleme.
A szerepe, hogy illetéktelenek ne tudjanak a rendszerben változtatásokat végrehajtani.
A hash értéket a szerver oldal minden operáció minden kérésénél ellenőrzi,
és csak akkor hajtja végre a műveletet, ha a tárolt és kapott adatokból a helyes érték ténylegesen előállítható.
A requestSignature számítására a következő mezők értékeinek konkatenációjával történik, sorrendben:
-
requestId értéke (esetünkben "019ce6a6-2a0c-7207-b3f4-cc8373579c7c")
-
a timestamp tag értéke "yyyyMMddHHmmss" maszkkal, UTC időben (esetünkben "20260313100255")
-
a technikai felhasználó aláírókulcsának literál értéke (technikai felhasználó létrehozásakor megadott érték). Példához ennek legyen az értéke "ce-8f5e-215119fa7dd621DLMRHRLH2S"
Az így és sorrendben konkatenált string SHA3-512 hash nagybetűsített eredménye lesz a requestSignature értéke.
requestSignature = SHA3-512(requestId + timestamp + signingKey).UPPERCASE()
requestSignature = SHA3-512(019ce6a6-2a0c-7207-b3f4-cc8373579c7c + 20260313100255 + ce-8f5e-215119fa7dd621DLMRHRLH2S).UPPERCASE()
requestSignature = SHA3-512(019ce6a6-2a0c-7207-b3f4-cc8373579c7c20260313100255ce-8f5e-215119fa7dd621DLMRHRLH2S).UPPERCASE()
requestSignature = 6498e406186580da6403680fd3a6a008fd7f207ca2afde5885c38ac700a9a52a3baadee914fa0649dbbe103d2d6e99b1236da403cdd5ef338245a4474770d591.UPPERCASE()
requestSignature = 6498E406186580DA6403680FD3A6A008FD7F207CA2AFDE5885C38AC700A9A52A3BAADEE914FA0649DBBE103D2D6E99B1236DA403CDD5EF338245A4474770D591
5.2.3. Válasz: M2MTokenResponse
Sikeres hitelesítés esetén a válasz tartalmazza a hozzáférési tokent és annak lejárati időpontját.
<?xml version="1.0" encoding="UTF-8"?>
<ns3:M2MTokenResponse xmlns="http://schemas.nav.gov.hu/NTCA/2.0/common/service" xmlns:ns2="http://schemas.nav.gov.hu/NTCA/2.0/common/authservice"
xmlns:ns3="http://schemas.nav.gov.hu/DCC/1.0/m2m/token/tokenapi">
<context>
<requestId>019ce66a-c965-74cd-9795-1102575b62b7</requestId>
<timestamp>2026-03-13T08:58:04.006840049Z</timestamp>
</context>
<resultCode>SUCCESS</resultCode>
<ns3:accessToken>eyJhbGciOiJIUzI1NiIsInR5cC... JWT token</ns3:accessToken>
<ns3:accessTokenExpiryAt>2026-03-13T13:59:07.478552281Z</ns3:accessTokenExpiryAt>
</ns3:M2MTokenResponse>
| Mező | Leírás | Típus |
|---|---|---|
|
A hozzáférési token értéke, amelyet a későbbi API hívásokhoz kell használni |
|
|
A token lejárati időpontja (UTC, nanomásodperc pontossággal) |
|
| A tokent a lejárati időpont előtt kell megújítani. A lejárt tokennel küldött kérések elutasításra kerülnek. |
5.3. DAC9 GlobalTaxRequest jelentés beküldés
A hozzáférési token birtokában a DAC-9 globális minimumadó jelentés küldhető be.
5.3.1. Http kérés
A jelentés beküldése HTTP POST kéréssel történik, ahol a következő beállítások szükségesek:
-
URL:
https://api-dacentral.nav.gov.hu/dcc/v1/m2m/dac9/globaltax/report -
HTTP metódus: POST
-
Fejlécek:
-
Authorization: Bearer {access_token} -
Content-Type: multipart/form-data -
Accept: text/xml vagy application/xml
-
-
Törzs: Két részből álló multipart/form-data:
-
metadata- AGlobalTaxRequestXML reprezentációja-
Content-Type: application/xml
-
-
report- A jelentés fájlja (GloBE Information Return (Pillar Two) XML Schema).-
Content-Type: application/octet-stream -
Ha a fájl nem tömörített, akkor plaintext XML-ben kell küldeni
-
Ha a fájl tömörített (gzip), akkor tömörítés nyers binary stream-ben kell küldeni.
-
A befogadható fájl maximális mérete: 100 MB (tömörített és nem tömörített formában). Ha a fájl tömörített, akkor a kitömörített tartalom mérete nem haladhatja meg a 250 MB-ot.
-
-
Minden esetben a karakter kódolás UTF-8
-
Beküldéskor a fájl tartalmának CRC32 ellenőrző összegét is meg kell adni a
reportChecksummezőben. Ha a fájl tömörített, akkor a kitömörített tartalom CRC32 értékét kell megadni.
-
5.3.2. Kérés: GlobalTaxRequest
<ns2:GlobalTaxRequest xmlns="http://schemas.nav.gov.hu/NTCA/2.0/common/service"
xmlns:ns2="http://schemas.nav.gov.hu/DCC/1.0/m2m/dac9/globaltax/globaltaxapi">
<context>
<requestId>019ce6cd-394b-7622-9c01-6880b92f086d</requestId>
<timestamp>2026-03-13T10:45:35.180339322Z</timestamp>
</context>
<ns2:compressedContent>false</ns2:compressedContent>
<ns2:reportType>GLOBE_OECD_V1</ns2:reportType>
<ns2:reportChecksum cryptoType="CRC32">639479525</ns2:reportChecksum>
</ns2:GlobalTaxRequest>
| Mező | Leírás | Kötelező |
|---|---|---|
|
|
Igen |
|
A jelentés típusa. Jelenleg az egyetlen megengedett érték: |
Igen |
|
A jelentés ellenőrző összege ( |
Igen |
5.3.3. Válasz: GlobalTaxResponse
<?xml version="1.0" encoding="UTF-8"?>
<ns2:GlobalTaxResponse xmlns="http://schemas.nav.gov.hu/NTCA/2.0/common/service"
xmlns:ns2="http://schemas.nav.gov.hu/DCC/1.0/m2m/dac9/globaltax/globaltaxapi">
<context>
<requestId>019ce6cd-394b-7622-9c01-6880b92f086d</requestId>
<timestamp>2026-03-13T10:45:35.180339322Z</timestamp>
</context>
<resultCode>SUCCESS</resultCode>
<ns2:globalTaxReportId>019ce6cd-4540-78a7-ac4f-5049465a1fa0</ns2:globalTaxReportId>
</ns2:GlobalTaxResponse>
| Mező | Leírás |
|---|---|
|
A beküldött jelentés egyedi tranzakció azonosítója. Ez az azonosító szükséges a jelentés állapotának lekérdezéséhez. |
5.4. Jelentés állapot lekérdezés
A beküldött jelentés technikai feldolgozási állapota lekérdezhető a tranzakció azonosító alapján.
5.4.1. Http kérés
A jelentés állapotának lekérdezése HTTP GET kéréssel történik, ahol a következő beállítások szükségesek:
-
URL:
https://api-dacentral.nav.gov.hu/dcc/v1/m2m/dac9/globaltax/report/{globalTaxReportId}/status -
HTTP metódus: GET
-
Fejlécek:
-
Authorization: Bearer {access_token} -
Accept: text/xml vagy application/xml
-
5.4.2. Válasz: ReportStatusResponse
<?xml version="1.0" encoding="UTF-8"?>
<ns2:ReportStatusResponse xmlns="http://schemas.nav.gov.hu/NTCA/2.0/common/service"
xmlns:ns2="http://schemas.nav.gov.hu/DCC/1.0/m2m/dac9/globaltax/globaltaxapi">
<context>
<requestId>019cf6ac-b11c-74b6-8b8c-0832f6805328</requestId>
<timestamp>2026-03-16T12:43:58.620345274Z</timestamp>
</context>
<resultCode>SUCCESS</resultCode>
<ns2:reportStatus>
<ns2:status>VALID</ns2:status>
</ns2:reportStatus>
</ns2:ReportStatusResponse>
| Státusz | Teendő |
|---|---|
|
A jelentés feltöltve. Várjon, majd kérdezze le újra az állapotot. |
|
A jelentés ellenőrzés alatt. Várjon, majd kérdezze le újra az állapotot. |
|
A jelentés érvényes, technikailag sikeresen feldolgozva. Nincs további teendő. |
|
A jelentés érvénytelen. Ellenőrizze az |
<?xml version="1.0" encoding="UTF-8"?>
<ns2:ReportStatusResponse xmlns="http://schemas.nav.gov.hu/NTCA/2.0/common/service"
xmlns:ns2="http://schemas.nav.gov.hu/DCC/1.0/m2m/dac9/globaltax/globaltaxapi">
<context>
<requestId>019cf6ac-b11c-74b6-8b8c-0832f6805328</requestId>
<timestamp>2026-03-16T12:43:58.620345274Z</timestamp>
</context>
<resultCode>SUCCESS</resultCode>
<ns2:reportStatus>
<ns2:status>INVALID</ns2:status>
<ns2:errorCode>INVALID_FILE</ns2:errorCode>
<ns2:anomaly>
<field>exampleField</field>
<error>Invalid value in column 12, line 34</error>
<lineNumber>34</lineNumber>
<columnNumber>12</columnNumber>
</ns2:anomaly>
<ns2:anomaly>
<error>Another error without line and column information</error>
</ns2:anomaly>
</ns2:reportStatus>
</ns2:ReportStatusResponse>
5.5. Java kliens példa
A dto-auth-jakarta és dto-dac9-jakarta Maven modulok felhasználásával
a kérés-válasz objektumok közvetlenül Java-ból is kezelhetők.
5.5.1. Maven függőségek
<dependencyManagement>
<dependencies>
<dependency>
<groupId>hu.gov.nav.dcc.api</groupId>
<artifactId>bom-project</artifactId>
<version>1.0.0-rc.2-SNAPSHOT</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>hu.gov.nav.dcc.api</groupId>
<artifactId>dto-auth-jakarta</artifactId>
</dependency>
<dependency>
<groupId>hu.gov.nav.dcc.api</groupId>
<artifactId>dto-dac9-jakarta</artifactId>
</dependency>
</dependencies>
5.5.2. Token kérés összeállítása
import hu.gov.nav.schemas.dcc._1_0.m2m.token.tokenapi.M2MTokenRequest;
import hu.gov.nav.schemas.dcc._1_0.m2m.token.tokenapi.M2MTokenResponseType;
// Token kérés létrehozása (fluent API)
M2MTokenRequest tokenRequest = new M2MTokenRequest();
// ... fejléc, felhasználó, szoftver adatok beállítása
// Válasz feldolgozása
M2MTokenResponseType response = // ... HTTP hívás eredménye
String accessToken = response.getAccessToken();
OffsetDateTime expiryAt = response.getAccessTokenExpiryAt();
5.5.3. DAC9 jelentés beküldés
import hu.gov.nav.schemas.dcc._1_0.m2m.dac9.globaltax.globaltaxapi.GlobalTaxRequest;
import hu.gov.nav.schemas.dcc._1_0.m2m.dac9.globaltax.globaltaxapi.GlobalTaxResponseType;
import hu.gov.nav.schemas.dcc._1_0.m2m.dac9.globaltax.globaltaxapi.ReportStatusResponseType;
// Jelentés regisztráció kérés
GlobalTaxRequest request = new GlobalTaxRequest();
request.setCompressedContent(true);
request.setReportType(ReportTypeType.GLOBE_OECD_V_1);
// ... checksum beállítása
// Válasz feldolgozása
GlobalTaxResponseType taxResponse = // ... HTTP hívás eredménye
String reportId = taxResponse.getGlobalTaxReportId();
// Státusz lekérdezés
ReportStatusResponseType statusResponse = // ... HTTP hívás eredménye
FileStatusType status = statusResponse.getReportStatus().getStatus();
6. DTO generálás
A DCC API projekt nem tartalmaz kézzel írt Java forráskódot. Az összes Java osztály (DTO – Data Transfer Object) az XSD sémákból generálódik build időben, a JAXB (Jakarta XML Binding) Maven plugin segítségével.
A generálás a következő technológiákat alkalmazza:
-
Jakarta EE JAXB 3.0 – XML-Java kötés
-
XSD Catalog – Névtér feloldás Maven artifact-okból
-
JAXB plugin kiegészítők – Fluent API és annotáció kezelés
-
Episode fájlok – Közös típusok duplikáció-mentes generálása
6.1. DTO modulok
| Modul | ArtifactId | Leírás |
|---|---|---|
Auth DTO |
|
Jakarta EE DTO-k a Token API (pl. |
DAC9 DTO |
|
Jakarta EE DTO-k a Global Tax API (pl. |
OECD GLOBE DTO |
|
Jakarta EE DTO-k az OECD GLOBE Pillar Two sémákból (pl. |
6.2. Generálási folyamat
A generálás a org.jvnet.jaxb:jaxb-maven-plugin:4.0.9 plugin segítségével történik,
a generate goal futtatásával a Maven build generate-sources fázisában.
6.2.1. Lépések
-
A plugin beolvassa az
all-in-one.xsdaggregátor sémát -
Az OASIS XML Catalog (
catalog.cat) feloldja a névtereket a megfelelő Maven artifact-okra -
A JAXB kötési fájl (
bindings.xjb) alkalmazásra kerül -
A közös típusok Episode fájlból származnak (nem generálódnak újra)
-
A generált Java osztályok a
target/generated-sources/src/main/javakönyvtárba kerülnek
6.2.2. Generálási konfiguráció
<plugin>
<groupId>org.jvnet.jaxb</groupId>
<artifactId>jaxb-maven-plugin</artifactId>
<version>4.0.9</version>
<executions>
<execution>
<id>dcc-super</id>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<episodes>
<episode>
<groupId>hu.gov.nav.schemas.common2</groupId>
<artifactId>dto-jakarta</artifactId>
</episode>
</episodes>
<strict>false</strict>
<catalog>src/main/resources/catalog/catalog.cat</catalog>
<schemaIncludes>
<include>catalog/all-in-one.xsd</include>
</schemaIncludes>
<bindingIncludes>
<include>xjb/bindings.xjb</include>
</bindingIncludes>
<generateDirectory>
${project.build.directory}/generated-sources/src/main/java
</generateDirectory>
</configuration>
</execution>
</executions>
<configuration>
<verbose>true</verbose>
<schemaDirectory>src/main/resources</schemaDirectory>
<args>
<arguments>-Xfluent-api</arguments>
<arguments>-Xannotate</arguments>
</args>
<plugins>
<plugin>
<groupId>org.jvnet.jaxb2_commons</groupId>
<artifactId>jaxb2-fluent-api</artifactId>
<version>3.0</version>
</plugin>
<plugin>
<groupId>org.jvnet.jaxb</groupId>
<artifactId>jaxb-plugin-annotate</artifactId>
<version>4.0.8</version>
</plugin>
</plugins>
</configuration>
</plugin>
6.3. XSD Catalog rendszer
Az XSD Catalog az OASIS XML Catalog szabvány szerint működik.
A catalog.cat fájlok a névtereket Maven artifact-okra képezik le,
lehetővé téve a sémák moduláris felhasználását.
6.3.1. Catalog bejegyzések (Minta)
<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
<!-- NTCA 2.0 közös sémák (Common projekt) -->
<public publicId="http://schemas.nav.gov.hu/NTCA/2.0/common/string"
uri="maven:hu.gov.nav.schemas.common2:schemas:jar::!/xsd/.../string.xsd" />
<public publicId="http://schemas.nav.gov.hu/NTCA/2.0/common/type"
uri="maven:hu.gov.nav.schemas.common2:schemas:jar::!/xsd/.../type.xsd" />
<!-- ... további NTCA névterek ... -->
<!-- DCC Auth séma -->
<public publicId="http://schemas.nav.gov.hu/DCC/1.0/m2m/token/tokenapi"
uri="maven:hu.gov.nav.dcc.api:schema-auth:jar::!/xsd/.../tokenapi.xsd" />
</catalog>
6.3.2. All-in-one aggregátor séma
Az all-in-one.xsd egy aggregátor séma, amely az összes szükséges névteret importálja
egyetlen belépési pontként a JAXB generátor számára:
<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://catalog.schemas.nav.gov.hu/DCC/1.0/common/all-in-one">
<!-- NTCA 2.0 közös névterek -->
<xsd:import namespace="http://schemas.nav.gov.hu/NTCA/2.0/common/string" />
<xsd:import namespace="http://schemas.nav.gov.hu/NTCA/2.0/common/type" />
<xsd:import namespace="http://schemas.nav.gov.hu/NTCA/2.0/common/customer" />
<xsd:import namespace="http://schemas.nav.gov.hu/NTCA/2.0/common/paging" />
<xsd:import namespace="http://schemas.nav.gov.hu/NTCA/2.0/common/entity" />
<xsd:import namespace="http://schemas.nav.gov.hu/NTCA/2.0/common/service" />
<xsd:import namespace="http://schemas.nav.gov.hu/NTCA/2.0/common/authservice" />
<!-- DCC modul-specifikus séma -->
<xsd:import namespace="http://schemas.nav.gov.hu/DCC/1.0/m2m/token/tokenapi" />
</xsd:schema>
6.4. JAXB kötési konfiguráció
A bindings.xjb fájl az alábbi globális beállításokat tartalmazza:
6.4.1. generateIsSetMethod
<jaxb:globalBindings generateIsSetMethod="true">
Opcionális mezőkhöz isSet*() metódusok is generálódnak, amelyekkel ellenőrizhető,
hogy az adott mező be volt-e állítva (null-tól eltérő értékkel).
6.4.2. Dátum/idő típus leképezések
| XSD típus | Java típus | Adapter osztály |
|---|---|---|
|
|
|
|
|
|
|
|
|
Az adapter osztályok a hu.gov.nav.schemas.common2.core.adapter csomagban találhatók
(a Common projekt dto-jakarta moduljában).
6.5. Episode mechanizmus
Az Episode fájlok biztosítják, hogy ahol a típusok közös NTCA 2.0 típusokat használnak (pl. GenericIdType, BaseRequestType)
ne generálódjanak újra minden DTO modulban. Ehelyett a hu.gov.nav.schemas.common2:dto-jakarta
artifact Episode fájlját referálja a plugin, így csak a DCC-specifikus típusok kerülnek generálásra.
Például a dto-oecd-globe-jakarta modul nem használ Episode mechanizmust,
mivel az OECD GLOBE típusok teljesen önállóak és függetlenek az NTCA Common típusoktól.
<episodes>
<episode>
<groupId>hu.gov.nav.schemas.common2</groupId>
<artifactId>dto-jakarta</artifactId>
</episode>
</episodes>
6.6. JAXB plugin kiegészítők
6.6.1. Fluent API (-Xfluent-api)
A jaxb2-fluent-api:3.0 kiegészítő fluent (láncolható) setter metódusokat generál:
// Standard JAXB
request.setCompressedContent(true);
request.setReportType(ReportTypeType.GLOBE_OECD_V_1);
// Fluent API
request.withCompressedContent(true)
.withReportType(ReportTypeType.GLOBE_OECD_V_1);
6.6.2. Annotate (-Xannotate)
A jaxb-plugin-annotate:4.0.8 kiegészítő lehetővé teszi egyedi annotációk hozzáadását
a generált osztályokhoz a kötési fájlon keresztül.