namespace AyCode.Services.Nav; /// /// NAV API hitelesítő adatok. A konkrét megvalósítás konfigurációból (appsettings / secret store) tölti — /// soha NEM hardcode-olva a forráskódban. /// public interface INavCredentials { /// Technikai felhasználónév (EKÁER: user, Online Számla: login). string User { get; } /// A jelszó nyers értéke. Ebből számolódik a passwordHash (SHA-512). A hash-t küldjük, sosem a nyers jelszót. string Password { get; } /// A titkos aláírókulcs (XML aláírókulcs). A requestSignature számításához. string SigningKey { get; } /// Adószám (EKÁER: VATNumber, Online Számla: taxNumber). string TaxNumber { get; } /// A NAV service báziscíme, pl. https://import.ekaer.nav.gov.hu (záró perjel nélkül vagy azzal). string BaseUrl { get; } } /// /// A NAV request alap-headerének közös szerződése (requestId + timestamp). A NAV-rendszerek mind hordozzák ezt. /// Az adott NAV API generált header-típusa partial class-szal implementálja (a property-nevek általában /// már egyeznek, így implicit teljesül). /// public interface INavRequestHeader { /// Egyedi kérés-azonosító (minden requestnél más). string RequestId { get; set; } /// A kérés keletkezésének ideje. Ugyanaz az időpont, amiből a requestSignature timestamp-része képződik. DateTime Timestamp { get; set; } } /// /// A NAV request auth-headerének közös szerződése. A 2 hash-mező (PasswordHash, RequestSignature) /// elem-neve azonos minden NAV API-ban; a felhasználó- és adószám-mező C#-szinten egységesítve (a generált /// típus partial-ja explicit map-eli, ha a generált név eltér — pl. EKÁER VatNumberTaxNumber). /// public interface INavUserHeader { string User { get; set; } string PasswordHash { get; set; } string TaxNumber { get; set; } string RequestSignature { get; set; } } /// /// Egy NAV authentikált kérés szerződése: hozzáférést ad a base-headerhez és az auth-headerhez, hogy a /// egységesen feltölthesse őket — API-független módon. /// public interface INavRequest { INavRequestHeader RequestHeader { get; } INavUserHeader UserHeader { get; } } /// /// A NAV válasz eredmény-blokkjának közös szerződése (funcCode/reasonCode/msg absztrakciója). /// public interface INavResult { /// Igaz, ha a feldolgozás sikeres (funcCode == OK). bool IsSuccess { get; } /// A végrehajtási eredmény kódja (reasonCode), ha van. string? ReasonCode { get; } /// Szöveges üzenet, jellemzően hiba/figyelmeztetés esetén. string? Message { get; } } /// /// Egy NAV válasz szerződése: hozzáférést ad az eredmény-blokkhoz, hogy a base egységesen ellenőrizhesse a sikerességet. /// public interface INavResponse { INavResult Result { get; } }