API-Dokumentation

Eunormia.Sdk — die Offline-.NET-Bibliothek Beta

Dieselbe Engine wie die Online-API, eingebettet in Ihre Anwendung: E-Rechnungen erzeugen, lesen und validieren — komplett offline. Die Java-Engine samt getrimmter Laufzeit steckt im NuGet-Paket; Ihre Rechnungsdaten verlassen Ihr Haus nie.

Beta: Das Paket ist noch nicht auf nuget.org veröffentlicht — Zugang über das Pilotprogramm.

Installation & Voraussetzungen

Installationdotnet add package Eunormia.Sdk
Frameworksnet8.0 und netstandard2.0 (damit auch .NET Framework 4.6.1+)
Plattformenwin-x64 (weitere folgen)
Abhängigkeitenkeine — kein Java, kein Docker, kein Netzzugriff
Paketgröße~130 MB je Plattform (Engine, Fonts, ICC-Profile, Prüfregeln inkl. KoSIT & FR-CTC)

Die drei Klassen

EunormiaConvertererzeugen: JSON (+ optionales PDF) → validiertes ZUGFeRD/Factur-X. Gleiche Gates wie online; optional signiertes Konformitäts-Zertifikat (EmitCertificate).
EunormiaReaderempfangen: PDF → vollständiges Rechnungs-JSON (gleiches Schema wie beim Erzeugen) + rohes CII-XML.
EunormiaValidatorempfangen: PDF → Gate-Ergebnisse (veraPDF, EN 16931, optional KositValidation/FrCtcValidation).

Performance

UseDaemon = true hält die Engine als warmen Prozess: erster Aufruf ~3–4 s (Kaltstart), danach ~250 ms pro Konvertierung, Lesen ~30 ms. Empfohlen ab mehr als einem Aufruf pro Prozesslebensdauer.

Lizenzierung

Ohne Lizenz ist das SDK voll funktionsfähig — Ergebnisse tragen ein Muster-Wasserzeichen. Eine gültige Lizenz (Konto → POST /v1/license/offline, dann als LicenseKey oder ENV EUNORMIA_LICENSE) schaltet das Wasserzeichen ab. Zwei Typen:

devkurzlebig (Standard 45 Tage), für Entwicklung/CI; wird bei aktiver Subscription erneuert.
runtimelanglebig, wird in Ihre ausgelieferte Software eingebettet. Läuft beim Endkunden weiter — auch nach Kündigung. Neue eunormia-Versionen brauchen eine aktive Subscription (Versionsbindung).

Die Prüfung erfolgt offline (Ed25519-Signatur) — kein Phone-Home, keine Telemetrie.

Fehlerbehandlung

Fachliche und technische Fehler kommen als EunormiaException mit Status (422 fachlich), Stage und lokalisierten Details — dieselben verständlichen Meldungen wie die Online-API.

FAQ

Braucht es installiertes Java?Nein — die Laufzeit ist im Paket gebündelt und für Sie unsichtbar.
Telefoniert das SDK nach Hause?Nein. Keine Telemetrie, keine Online-Lizenzprüfung.
Was passiert bei Kündigung?Ausgelieferte Software mit runtime-Lizenz läuft unverändert weiter; nur neue Versionen und Dev-Builds brauchen eine aktive Subscription.
Warum so groß?Das Paket enthält die komplette Validierungssubstanz: Fonts, Farbprofile, EN-16931-/KoSIT-/FR-CTC-Regelwerke und die Engine. Genau das erspart Ihnen jede Infrastruktur.

Code

// Erzeugen / create
var converter = new EunormiaConverter(new EunormiaOptions {
    LicenseKey = Environment.GetEnvironmentVariable("EUNORMIA_LICENSE"),
    Profile    = ZugferdProfile.EN16931,
    UseDaemon  = true
});
EunormiaResult r = await converter.ConvertAsync(invoiceJson, pdfBytes);
File.WriteAllBytes(r.FileName, r.Pdf);

// Empfangen: lesen / receive: read
ReadResult data = await new EunormiaReader().ReadAsync(incomingPdf);
Console.WriteLine(data.Header?.Number);        // Kurzform / header
var fullJson = data.Invoice;                   // volles InvoiceRequest-JSON

// Empfangen: validieren / receive: validate
var v = await new EunormiaValidator(new EunormiaOptions {
    KositValidation = true, FrCtcValidation = true
}).ValidateAsync(incomingPdf);
Console.WriteLine($"{v.Valid} {v.VeraPdf.Passed} {v.En16931.Passed} {v.Kosit?.Passed}");