# Fit-Connect .NET SDK For an implementation example take a look at the [DemoRunner](DemoRunner/Program.cs) ## **!! IN DEVELOPMENT NOT FOR PRODUCTION USE !!** **Fit-Connect .NET SDK** is a .NET library for the Fit-Connect API. Die Verwendung des SDKs ist in der [documentation (ger)](./Documentation/documentation.de-DE.md) erklärt ## For information how to use the SDK and FitConnect visit: * [SDK-Dokumentation](./documentation/documentation.de-DE.md) * [FIT-Connect Dokumentation](https://docs.fitko.de/fit-connect/docs) * [FIT-Connect Dokumentation](https://fit-connect.com/docs) <!-- ## Structure For the structure look the [Structure documentation](structure.md) --> # Allgemeines ## Environment Das FitConnect SDK kann an die folgenden Umgebungen angeschlossen werden: - Testing: ```FitConnectEnvironment.Testing``` - Staging: ```FitConnectEnvironment.Staging``` - Production: ```FitConnectEnvironment.Production``` [FIT Connect Umgebungen](https://docs.fitko.de/fit-connect/docs/getting-started/first-steps/#environments) Hierfür muss der Client die Environment auswählen oder einen eigenen Environment-Parameter übergeben. ## Credentials ClientId und ClientSecret sind die Grundlage, um einen Token vom OAuth-Server abfragen zu können. Die beiden Werte sind im [Self-Service Portal der Testumgebung von FIT-Connect](https://portal.auth-testing.fit-connect.fitko.dev/clients) zu erstellen. # Sender ```mermaid flowchart LR start([GetSender]) destination(WithDestination) service(WithServiceType) attachments(WithAttachments) data([WithData]) start-->destination-->service-->attachments-->data ``` Das SDK verhindert auf Grund der FluentAPI, dass die Methoden in der falschen Reihe aufgerufen werden können. ## GetSender(FitConnectEnvironment.Testing, clientId, clientSecret, logger) Hier werden die FIT Connect Environment ausgewählt und die Credentials übergeben. Der Parameter ```logger``` ist optional und muss das Interface ```Microsoft.Extensions.Logging.ILogger``` implementieren. ## .WithDestination(destinationId) Die Destination ID des Zustelldienstes muss an dieser Stelle übergeben werden. _Noch nicht vollständig getestet!_<br> Eine Möglichkeit, die Destination ID zu ermitteln, geht über die Methode ``FindDestinationId()`` des Senders. ## .WithServiceType("FIT Connect Demo", leikaKey) Der Service Type muss an dieser Stelle übergeben werden. Hierfür wird ein Leistungsschlüssel (LeiKa-Schlüssel) benötigt. Leistungsschlüssel haben diese Form ```urn:de:fim:leika:leistung:99400048079000``` ## .WithAttachments(new Attachment("Test.pdf", "Test Attachment")) Die Anhänge zum Antrag werden mit ```.WithAttachments``` übergeben. Diese Methode erwartet ein Array von Attachment Objekten die als ```params``` übergeben werden können. Das Attachment kann mit den folgenden Parametern erstellt werden: - Metadaten und byte[] content - Dateiname und Beschreibung Dazu werden zwei Konstruktoren bereitgestellt: - ```Attachment(Api.Metadata.Attachment metadata, byte[] content)``` - ```Attachment(string fileName, string description,)``` ## .WithData("{\"message\":\"Hello World\"}") Die Fachdaten werden als JSON String übergeben. ## .Submit() Das Abschicken der Submission erfolgt mit diesem Aufruf. ## Beispiel ```csharp var submission = Client .GetSender(FitConnectEnvironment.Development, clientId, clientSecret, logger) .WithDestination(destinationId) .WithServiceType("FIT Connect Demo", leikaKey) .WithAttachments(new Attachment("Test.pdf", "Test Attachment")) .WithData("{\"message\":\"Hello World\"}") .Submit(); ``` # Subscriber Der Subscriber braucht zusätzliche Informationen, um die Submissions abrufen zu können. Hier sind zusätzlich die Schlüssel zum Ver- und Entschlüsseln notwendig. ````mermaid flowchart LR start([GetSubscriber]) availableSub(GetAvailableSubmission) requestSub(RequestSubmission) subscriberWithSub([SubscriberWithSubmission]) subscriberWithSub_([SubscriberWithSubmission]) data(GetDataJson) attachments(GetAttachments) accept(AcceptSubmission) reject(RejectSubmission) forward(ForwardSumbission) finished{{Abgeschlossen}} rejected{{Zurueckgewiesen}} start-->availableSub-->requestSub-->subscriberWithSub subscriberWithSub_-->data-->attachments attachments-->accept-->finished attachments-->reject-->rejected attachments-->forward ```` ## .GetSubscriber(...) Hier werden die FIT Connect Environment ausgewählt, die Keys und die Credentials übergeben. Der Parameter ```logger``` ist optional und muss das Interface ```Microsoft.Extensions.Logging.ILogger``` implementieren. ## .GetAvailableSubmissions() Liefert eine Liste mit den verfügbaren Submissions zurück. ## .RequestSubmission(submissionId) Hiermit wird die Submission abgerufen und im Subscriber gespeichert. Der Rückgabewert der Funktion ist also _Subscriber mit einer Submission_ ## .GetDataJson() Liefert die Fachdaten als JSON String zurück. ## .GetAttachments() Gibt eine Liste mit den Attachments der Submission zurück. Die Attachments können so geprüft werden. ## .AcceptSubmission() Akzepiert die Submission und löscht diese vom Server. ## .RejectSubmission() Weißt die Submission zurück. ## .ForwardSubmission() ## Beispiel ```csharp var subscriber = Client.GetSubscriber(FitConnectEnvironment.Testing, clientId, clientSecret, privateKeyDecryption, privateKeySigning, publicKeyEncryption, publicKeySignatureVerification, logger); var submissions = subscriber.GetAvailableSubmissions(); // Alle verfügbaren Submissions laden foreach (var submission in submissions) { var subscriberWithSubmission = subscriber.RequestSubmission(submission.SubmissionId); // Laden der Anhänge var attachments = subscriberWithSubmission .GetAttachments(); // Ausgabe der Fachdaten auf der Konsole logger.LogInformation("Fachdaten: {Data}", subscriberWithSubmission.GetDataJson()); // Submission akzeptieren und abschließen subscriberWithSubmission.AcceptSubmission(); } ``` # Router Die Client-Implementierung der Router API ```csharp Client.GetRouter(FitConnectEnvironment.Development, logger); ``` [glossary](https://docs.fitko.de/fit-connect/docs/glossary/)