Sonder-/Spezial-API

Sonder-/Spezial-API

Inhaltsverzeichnis:


Ausgangssituation

Die nachfolgenden API-Schnittstellen behandeln Sonderfälle. Diese sollten nicht ohne Rücksprache mit assfinet genutzt werden, damit auch mögliche Nebeneffekte berücksichtigt werden können.

Lösung

Kundenspezifische Spartenfelder

Es können kundenspezifische Spartenfelder definiert werden. Diese können auch per API abgefragt werden.

Zu einem Vertrag können die Spartendaten nachgelesen werden. Mit der Guid des KFZ Vertrages z.B.:
https://drive-uat.assfinetcloud.de/api/v1/Ams/Vertrag/42f70759-8a0c-4ca1-b009-xxxxx/Sparte?accessMode=Mitarbeiter

image-20251203-124923.png

Die Bedeutung der Custom-Felder kann über AMS je Bestand von AMS-Kunden definiert werden. Diese kann man per API auslesen.

Die eigene Lizenz braucht man für die nächste Abfrage. Die Lizenz erfährt man unter: https://drive-uat.assfinetcloud.de/api/v1/User/Licenses

Welche Sparten Custom-Felder definiert sind, findet man unter: https://drive-uat.assfinetcloud.de/api/v1/Ams/DataFields/Tables?license=DEMO_xxxxx

Als Beispiel die KFZ-Custom-Felder fragt man ab unter: https://drive-uat.assfinetcloud.de/api/v1/Ams/DataFields/VT_KFZ?license=DEMO_xxxxx

image-20251203-125046.png

Mit N für Zahl, D für Datum, C für Character, I für Integer, B für Boolean, M für Memo (String), T für Time

Alle meine Freischaltungen abfragen

Per Freischaltung kann in der assfinet cloud die Berechtigung für einzelne Benutzer eingestellt werden. Die Freischaltungen können auch abgefragt werden.

  • Alle meine Freischaltungen abfragen

  • GET /api/v2/Sharing/Group

  • Als Parameter z.B.

Parameter

Typ

Hinweis

Parameter

Typ

Hinweis

kundeId

Text

zu welcher KundenId, andernfalls alle

vertragId

Text

zu welcher VertragId, andernfalls alle

vermittlerId

Text

zu welcher VermittlerId, andernfalls alle

email

Text

zu welcher Email-Adresse, andernfalls alle

vmGroups

Boolean

Kundenfreischaltungen (false=Voreinstellung) oder Vermittlerfreischaltungen

name

Text

Name der Freischaltung

image-20251203-130835.png

Details zu einer Freischaltungen abfragen

  • GET /api/v2/Sharing/Group/{id}

  • Als Parameter z.B.

Parameter

Typ

Hinweis

Parameter

Typ

Hinweis

groupId

Text

Id der Freischaltung

image-20251203-131009.png

Freischaltungen erzeugen

Freischaltungen können auch per API erzeugt werden. Die Berechtigungen werden dabei beachtet.

Es wird entweder eine Kunden-Freischaltung oder eine Vermittler-Freischaltung angelegt.

//legt eine neue Freischaltung mit einem Kunden ODER einem Vermittler an. public static async Task Api_FreischaltungAnlegen(string kundeGuid, string vermittlerGuid, int permissionTemplateId) { HttpClient httpClient = new HttpClient(); Uri baseUriAuth, baseUriApi; string userName, passwort, license; GetServerUrl(out baseUriAuth, out baseUriApi, out userName, out passwort, out license); // meine Servereinstellungen (bearerToken, bearerExpireTimeUTC, refreshToken) = await GetBearerToken(httpClient, baseUriAuth, userName, passwort, bearerToken, bearerExpireTimeUTC, refreshToken); // Bearer-Token ermitteln, und Ablaufzeit des BearerToken, und RefreshToken var myPermissionTemplate = await GetPermissionTemplate(httpClient, bearerToken, baseUriApi, permissionTemplateId); //das Freischaltungs-Profil lesen // neue Kunden-Freischaltung anlegen: string apiPath = "/api/v2/Sharing/Group"; SharingGroupV2 mySharing = new SharingGroupV2 { Name = "Frei_" + DateTime.Now.ToString("yyyyMMddHHmmss"), // beliebiger Name der Freischaltung //VermittlerGroup = new VermittlerGroup(), KundeGroup= new KundeGroup(), PermissionTemplate = myPermissionTemplate, }; var contenStr = Newtonsoft.Json.JsonConvert.SerializeObject(mySharing, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore }); httpClient.DefaultRequestHeaders.Clear(); httpClient.DefaultRequestHeaders.TryAddWithoutValidation("Authorization", String.Format("Bearer {0}", bearerToken)); var content = new StringContent(contenStr, System.Text.Encoding.UTF8, "application/json"); var requestUri = new Uri(baseUriApi, apiPath); var results2 = await httpClient.PostAsync(requestUri, content); string apiErgebnis = await results2.Content.ReadAsStringAsync(); if (results2.StatusCode != HttpStatusCode.OK && results2.StatusCode != HttpStatusCode.NoContent) throw new Exception("Fehler: " + apiErgebnis); mySharing = Newtonsoft.Json.JsonConvert.DeserializeObject<SharingGroupV2>(apiErgebnis); // erzeugte Id der Freischaltung in mySharing.Id // zur Freischaltung den Benutzer hinzufügen: string myUserEmail = "meine_email@xxxx.de"; // hier den Benutzer eintragen apiPath = "/api/v2/Sharing/Group/" + mySharing.Id.ToString().Trim() + "/User/" + myUserEmail; contenStr = ""; httpClient.DefaultRequestHeaders.Clear(); httpClient.DefaultRequestHeaders.TryAddWithoutValidation("Authorization", String.Format("Bearer {0}", bearerToken)); content = new StringContent(contenStr, System.Text.Encoding.UTF8, "application/json"); requestUri = new Uri(baseUriApi, apiPath); results2 = await httpClient.PostAsync(requestUri, content); if (results2.StatusCode != HttpStatusCode.OK && results2.StatusCode != HttpStatusCode.NoContent) throw new Exception("Fehler: " + apiErgebnis); if (kundeGuid != null) { // zur Freischaltung den Kunden hinzufügen: apiPath = "/api/v2/Sharing/Group/" + mySharing.Id.ToString().Trim() + "/Kunde/" + kundeGuid; // die ID des Kunden eintragen, welcher freigegeben werden soll } else { // zur Freischaltung den Vermittler hinzufügen: apiPath = "/api/v2/Sharing/Group/" + mySharing.Id.ToString().Trim() + "/Vermittler/" + vermittlerGuid; // die ID des Vermittler eintragen, welcher freigegeben werden soll } contenStr = ""; httpClient.DefaultRequestHeaders.Clear(); httpClient.DefaultRequestHeaders.TryAddWithoutValidation("Authorization", String.Format("Bearer {0}", bearerToken)); content = new StringContent(contenStr, System.Text.Encoding.UTF8, "application/json"); requestUri = new Uri(baseUriApi, apiPath); results2 = await httpClient.PostAsync(requestUri, content); if (results2.StatusCode != HttpStatusCode.OK && results2.StatusCode != HttpStatusCode.NoContent) throw new Exception("Fehler: " + apiErgebnis); } // löscht eine Freischaltung public static async Task ApiFreischaltungLoeschen() { string myKundeGuid = "DD26B23F-4C8B-4A74-zzzz-xxxxxx"; //ID des freigeschaltenen Kunden HttpClient httpClient = new HttpClient(); Uri baseUriAuth, baseUriApi; string userName, passwort, license; GetServerUrl(out baseUriAuth, out baseUriApi, out userName, out passwort, out license); // meine Servereinstellungen (bearerToken, bearerExpireTimeUTC, refreshToken) = await GetBearerToken(httpClient, baseUriAuth, userName, passwort, bearerToken, bearerExpireTimeUTC, refreshToken); // Bearer-Token ermitteln, und Ablaufzeit des BearerToken, und RefreshToken //alle Freischaltungen zu einem Kunden abfragen: string apiPath = "api/v2/Sharing/Group?kundeId=" + Guid.Parse(myKundeGuid); var requestData = new HttpRequestMessage { Method = HttpMethod.Get, RequestUri = new Uri(baseUriApi, apiPath), }; requestData.Headers.TryAddWithoutValidation("Authorization", String.Format("Bearer {0}", bearerToken)); var results = await httpClient.SendAsync(requestData); string apiErgebnis = await results.Content.ReadAsStringAsync(); //Ergebnis der API-Abfrage erhalten if (results.StatusCode != HttpStatusCode.OK) throw new Exception("Fehler: " + apiErgebnis); var mySharingList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<SharingGroupV2>>(apiErgebnis); //gefundene Freischaltungen löschen: foreach (var mySharing in mySharingList) { string myUserEmail = "xxxxxxxx@drive.assfinet.de"; // Benutzer-Email für Freischaltung freigeschaltet wird apiPath = "/api/v2/Sharing/Group/" + mySharing.Id.ToString().Trim(); httpClient.DefaultRequestHeaders.Clear(); httpClient.DefaultRequestHeaders.TryAddWithoutValidation("Authorization", String.Format("Bearer {0}", bearerToken)); var requestUri = new Uri(baseUriApi, apiPath); var results2 = await httpClient.DeleteAsync(requestUri); apiErgebnis = await results2.Content.ReadAsStringAsync(); if (results2.StatusCode != HttpStatusCode.OK && results2.StatusCode != HttpStatusCode.NoContent) throw new Exception("Fehler: " + apiErgebnis); } } //ein Freischaltungs-Profil holen public static async Task<PermissionTemplateGroupV2> GetPermissionTemplate(HttpClient httpClient, string bearerToken, Uri baseUriApi, int permissionTemplateId) { string apiPath = "/api/v2/Sharing/PermissionTemplate/" + permissionTemplateId; var requestData = new HttpRequestMessage { Method = HttpMethod.Get, RequestUri = new Uri(baseUriApi, apiPath), }; requestData.Headers.TryAddWithoutValidation("Authorization", String.Format("Bearer {0}", bearerToken)); var results = await httpClient.SendAsync(requestData); var apiErgebnis = await results.Content.ReadAsStringAsync(); //hole mein Freischaltungs-Profil if (results.StatusCode != HttpStatusCode.OK) throw new Exception("Fehler: " + apiErgebnis); var myPermissionTemplate = Newtonsoft.Json.JsonConvert.DeserializeObject<PermissionTemplateGroupV2>(apiErgebnis); return myPermissionTemplate; } }

 

public class SharingGroupV2 { public int Id { get; set; } public string Name { get; set; } public string[] Users { get; set; } public KundeGroup KundeGroup { get; set; } public VermittlerGroup VermittlerGroup { get; set; } public PermissionTemplateGroupV2 PermissionTemplate { get; set; } public DateTime? MarkDocumentsAsNewSince { get; set; } } public class PermissionTemplateGroupV2 { public int Id { get; set; } public Guid Guid { get; set; } public string Name { get; set; } public bool CanCreateProcesses { get; set; } public bool CanSendEmailApi { get; set; } public bool ShowOnlyAbrechenbareVerträge { get; set; } public bool ShowPostboxPerGroup { get; set; } public bool ShowSachbearbeiter { get; set; } public bool ShowProduktname { get; set; } public bool EnableFileExport { get; set; } /// <summary> /// Ob der Benutzer AMS Objekte erstellen oder verändern kann /// </summary> public bool CanWriteAmsObjects { get; set; } public bool CanUseConcenter { get; set; } public string Description { get; set; } public bool Schadenmeldung { get; set; } //CanCreateClaims public bool SchadenmeldungNeedsApproval { get; set; } public bool CanApproveSchadenmeldung { get; set; } public bool SchadenmeldungAmKunden { get; set; } public bool SchadenmeldungFremdvertrag { get; set; } public bool Vertragserfassung { get; set; } //CanCreateContracts public bool CanUpdateContracts { get; set; } public bool Bestandsübertragung { get; set; } public bool Angebotserstellung { get; set; } /// <summary> /// "Kundenerfassung" /// </summary> public bool InteressentenAnlegen { get; set; } public bool CanUseSendMessageBetreuer { get; set; } public bool HideEmailBetreuer { get; set; } public bool CanUseQLik { get; set; } public string QlikSenseUrl { get; set; } public string QlikSenseGruppen { get; set; } public bool CanShareForms { get; set; } // Forms weiterleiten erlaubt? public bool CanCreateCustomersPolicyStatementRequest { get; set; } public bool VuAuskunft { get; set; } public bool ObjectManagement { get; set; } public bool IncludeReferenceAddresses { get; set; } public bool ShareProcesses { get; set; } public bool AllowDetailedGesellschaften { get; set; } public bool ShowPostboxInMenu { get; set; } /// <summary> /// Flag um das Platzieren von eingeladenen Nutzern in Freischaltungen zu bestimmten /// </summary> public bool SeparateSharingsForInvitees { get; set; } ///// <summary> ///// Dokumente neuer als dieses Datum als neu angezeigen -> alles andere ist alt ///// </summary> //public DateTime MarkDocumentsAsNewSince { get; set; } public string[] Sparten { get; set; } public ViewPreset ViewPreset { get; set; } public bool IncludeSchäden { get; set; } public bool AutomaticSharing { get; set; } public VertragStatus SharedObjectStatus { get; set; } public bool InfoWidgetActive { get; set; } public bool InfoWidgetClosable { get; set; } public InfoWidgetImage InfoWidgetImage { get; set; } public AmsUserModel Sachbearbeiter { get; set; } public string WhitelistProfile { get; set; } public DetailCustomizationSet DetailViewSet { get; set; } public string ConcenterAccount { get; set; } public string SharedObjectGroups { get; set; } public PermissionTemplateGroupV2[] SubTemplates { get; set; } } public enum VertragStatus { None = 0, Anfrage = 1 << 0, Angebot = 1 << 1, Eigen = 1 << 2, Fremd = 1 << 3, Fremdteil = 1 << 4, Gesperrt = 1 << 5, Info = 1 << 6, Ruhend = 1 << 7, Storno = 1 << 8, Antrag = 1 << 9, Police = 1 << 10, } public class InfoWidgetImage { public Guid FileGuid { get; set; } public string Filename { get; set; } public string Url { get; set; } public int Usage { get; set; } } public class KundeGroup { public KundeModel[] Kunden { get; set; } public VertragModel[] Verträge { get; set; } public bool AutomaticSharingEnabled { get; set; } } public class VermittlerGroup { public VermittlerModel[] Vermittler { get; set; } public bool AllowCreateSharingGroups { get; set; } } public partial class AmsUserModel { public Guid Id { get; set; } public DateTimeOffset? Bearbeitet { get; set; } /// <summary> /// Gibt an ob dieser Datensatz lokal geändert und noch nicht von AMS bestätigt wurde /// </summary> public bool Dirty { get; set; } /// <summary> /// Die Lizenz der der Brief angehört /// </summary> public string License { get; set; } public DateTime LastSynchronisation { get; private set; } public string Abteilung { get; set; } public string Adrid { get; set; } public string Amsidnr { get; set; } public bool? AssfinetDriveSuperuser { get; set; } public bool? AssfinetDriveUser { get; set; } public string Bearbeiter { get; set; } public string Briefname { get; set; } public string Diktatkennzeichen { get; set; } public string Durchwahl { get; set; } public string Email { get; set; } public string Faxdurchwahl { get; set; } public string Info { get; set; } public int? KalenderFarbe { get; set; } public bool? Loeschschutzvorbelegung { get; set; } public string MandantAmsidnr { get; set; } public string Status { get; set; } public bool? Updateinfo { get; set; } public string Username { get; set; } } public enum ViewPreset : byte { Sachbearbeiter, Privat, Gewerbe, Vermittler } public class DetailCustomizationSet { public Guid Id { get; set; } public string Name { get; set; } public string License { get; set; } public List<DetailCustomization> Definitions { get; set; } } public class DetailCustomization { public Guid Id { get; set; } public string License { get; set; } public string Type { get; set; } public string Name { get; set; } public List<DetailColumnModel> Columns { get; set; } } public class DetailColumnModel { public string Path { get; set; } public string Id { get; set; } public string DisplayName { get; set; } public string DataType { get; set; } public string Width { get; set; } public bool Hidden { get; set; } public bool? OnGrid { get; set; } public bool Mandatory { get; set; } public short Rows { get; set; } public string Answers { get; set; } public bool ReadOnly { get; set; } } public class SetSharingMode { public bool AutomaticSharingEnabled { get; set; } public VertragStatus AutomaticSharedStatus { get; set; } public bool IncludeSchäden { get; set; } public bool IncludeReferenceAddresses { get; set; } public bool ConvertAutomaticSharingToExplicit { get; set; } }

Schadenzahlungen anlegen

Per API können auch Schadenzahlungen erzeugt werden. Unterschieden wird dabei nach Fremdregulierung und Eigenregulierung.

  • mit ClientId + ClientSecret und der Kombination aus Name + Passwort über "oauth/token" einen Bearer-Token holen (noch gültige Token nicht erneut holen)

  • in der Struktur-AmsTransferContext Schadenzahlung hinzufügen (oder mehrere)

  • eine „Eigenregulierung“ braucht zwingend auch einen zugehörigen SregulNeuSchadenzahlungWizardModel. Diese sind über die identische ID als zusammengehörend gekennzeichnet

  • Beim Testen/Entwickeln bitte beachten: Schadenzahlung muss bei API-Insert in mindestens einem dieser Felder unterschiedlich zu vorhandenen Schadenzahlungen sein: SCHADENID, EMPF_ART, ZAHLBETRAG, SZDATUM . Sonst wird nur Update statt Insert gemacht

  • diese Daten läd man nun als JSON-String mitsamt Bearer-Token an "/api/v1/Ams/Transfer" hoch

  • Beispiel in C# :

//Fremdregulierung benötigt keinen Wizard-Block // public static async Task ApiSRegulNeuUpload_Fremdregulierung(string schadenGuid, bool adminAccessMode = true) { HttpClient httpClient = new HttpClient(); Uri baseUriAuth, baseUriApi; string userName, passwort, license, gesellschaft; GetServerUrl(out baseUriAuth, out baseUriApi, out userName, out passwort, out license, out gesellschaft); // meine Servereinstellungen (bearerToken, bearerExpireTimeUTC, refreshToken) = await GetBearerToken(httpClient, baseUriAuth, userName, passwort, bearerToken, bearerExpireTimeUTC, refreshToken); // Bearer-Token ermitteln, und Ablaufzeit des BearerToken, und RefreshToken //der Schaden zum SRegulNeu muss gelesen werden, damit beides gemeinsam im Transfer enthalten ist: var mySchaden = await GetSchaden(httpClient, bearerToken, baseUriApi, schadenGuid, adminAccessMode); //den Schaden lesen var myVertrag = await GetSchadenVertrag(httpClient, bearerToken, baseUriApi, mySchaden.Id.ToString(), adminAccessMode); //den Vertrag zum Schaden lesen var sRegulId = Guid.NewGuid(); var mySregulNeu = new SregulNeuModel { Id = sRegulId, Amsidnr = SRegulPreAmsidnr + sRegulId, // Zwangsfeld, meine eindeutige interne Schadenzahlung-Nummer Schadenid = mySchaden.Amsidnr, EmpfArt = "Versicherungsnehmer", // Versicherungsnehmer = Kunde, Referenz = Kontakt Kontoart = "KUNDE", // passend zu KontoId, wessen AMSIDNR dort steht: KUNDE,GESELL,VERMIT,SADRESS //SREGUL_NEU.Kontoid-- > Kunde.Amsidnr + SREGUL_NEU.Kontoart = 'KUNDE' an abweichende Anspruchsteller überweisen, in AMS.5-Fenster: Sonstige/Kunden //SREGUL_NEU.Kontoid-- > Gesell.Amsidnr + SREGUL_NEU.Kontoart = 'GESELL' //SREGUL_NEU.Kontoid-- > Vermit.Amsidnr + SREGUL_NEU.Kontoart = 'VERMIT' //SREGUL_NEU.Kontoid-- > Adressen.Amsidnr + SREGUL_NEU.Kontoart = 'SADRESS'(bei Transfer: Adressen, in AMS.5 - Fenster: Sonstige / Referenzkontakte) Kurs = 1, LeistArt = "Entschädigung", // Entschädigung, Kosten Notenr = "984362", // Buchungsreferenz Anmerkung = "Meine Buchung", // Text Szdatum = DateTime.Now, // Datum der Zahlung Waehrung = "EUR", // Pflichtfeld RegulArt = "Fremdregulierung", // Eigenregulierung = Auszahlung, Fremdregulierung = statistisch. bei "Eigenregulierung" muss ein zugehöriger SregulNeuSchadenzahlungWizardModel mit identischer ID. Bei "Fremdregulierung" aber nicht. Zahlbetrag = (decimal)30.60, // Pflichtfeld, Betrag, ACHTUNG: Schadenzahlung muss bei API-Insert in mindestens einem dieser Felder unterschiedlich zu vorhandenen Schadenzahlungen sein: SCHADENID, EMPF_ART, ZAHLBETRAG, SZDATUM . Sonst wird nur Update statt Insert gemacht }; if (mySchaden.Regulierungsart != mySregulNeu.RegulArt) throw new Exception("Fehler: Regulierungsarten müssen übereinstimmen"); // Eigenregulierung / Fremdregulierung AmsTransferContext myExport = new AmsTransferContext { Vertraege = new List<VertragModel> { myVertrag }, Schaden = new List<SchadenModel> { mySchaden }, SregulNeu = new List<SregulNeuModel> { mySregulNeu }, }; await GetTransferToken(httpClient, baseUriApi, bearerToken, license, myExport, ImportAction.iaNoKDVTUpdate); // Ihre Lizenz/Mandant eintragen und ImportFlags //neuen Schadenzahlung hochladen: string apiPath = "/api/v1/Ams/Transfer"; var contenStr = Newtonsoft.Json.JsonConvert.SerializeObject(myExport, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore }); httpClient.DefaultRequestHeaders.Clear(); httpClient.DefaultRequestHeaders.TryAddWithoutValidation("Authorization", String.Format("Bearer {0}", bearerToken)); var content = new StringContent(contenStr, System.Text.Encoding.UTF8, "application/json"); var requestUri = new Uri(baseUriApi, apiPath); var results2 = await httpClient.PostAsync(requestUri, content); var apiErgebnis = await results2.Content.ReadAsStringAsync(); if (results2.StatusCode != HttpStatusCode.OK) throw new Exception("Fehler: " + apiErgebnis); var mySuccessResponse = Newtonsoft.Json.JsonConvert.DeserializeObject<SuccessResponse>(apiErgebnis); if (mySuccessResponse == null || !mySuccessResponse.Success) throw new Exception("Fehler: nicht erfolgreich: " + apiErgebnis); } // Eigenregulierung ohne Reserve // public static async Task ApiSRegulNeuUpload_Eigenregulierung(string schadenGuid, bool adminAccessMode = true) { HttpClient httpClient = new HttpClient(); Uri baseUriAuth, baseUriApi; string userName, passwort, license, gesellschaft; GetServerUrl(out baseUriAuth, out baseUriApi, out userName, out passwort, out license, out gesellschaft); // meine Servereinstellungen (bearerToken, bearerExpireTimeUTC, refreshToken) = await GetBearerToken(httpClient, baseUriAuth, userName, passwort, bearerToken, bearerExpireTimeUTC, refreshToken); // Bearer-Token ermitteln, und Ablaufzeit des BearerToken, und RefreshToken //der Schaden zum SRegulNeu muss gelesen werden, damit beides gemeinsam im Transfer enthalten ist: var mySchaden = await GetSchaden(httpClient, bearerToken, baseUriApi, schadenGuid, adminAccessMode); //den Schaden lesen var myVertrag = await GetSchadenVertrag(httpClient, bearerToken, baseUriApi, mySchaden.Id.ToString(), adminAccessMode); //den Vertrag zum Schaden lesen var sRegulId = Guid.NewGuid(); var mySregulNeu = new SregulNeuModel { Id = sRegulId, Amsidnr = SRegulPreAmsidnr + sRegulId, // Zwangsfeld, meine eindeutige interne Schadenzahlung-Nummer Schadenid = mySchaden.Amsidnr, EmpfArt = "Versicherungsnehmer", // Versicherungsnehmer = Kunde, Referenz = Kontakt Kontoart = "KUNDE", // passend zu KontoId, wessen AMSIDNR dort steht: KUNDE,GESELL,VERMIT,SADRESS //SREGUL_NEU.Kontoid-- > Kunde.Amsidnr + SREGUL_NEU.Kontoart = 'KUNDE' an abweichende Anspruchsteller überweisen, in AMS.5-Fenster: Sonstige/Kunden //SREGUL_NEU.Kontoid-- > Gesell.Amsidnr + SREGUL_NEU.Kontoart = 'GESELL' //SREGUL_NEU.Kontoid-- > Vermit.Amsidnr + SREGUL_NEU.Kontoart = 'VERMIT' //SREGUL_NEU.Kontoid-- > Adressen.Amsidnr + SREGUL_NEU.Kontoart = 'SADRESS'(bei Transfer: Adressen, in AMS.5 - Fenster: Sonstige / Referenzkontakte) Kurs = 1, LeistArt = "Entschädigung", // Entschädigung, Kosten Notenr = "984356", // Buchungsreferenz Anmerkung = "Meine Eigenregulierung", // Text Szdatum = DateTime.Now, // Datum der Zahlung Waehrung = "EUR", // Pflichtfeld RegulArt = "Eigenregulierung", // Eigenregulierung = Auszahlung, Fremdregulierung = statistisch. bei "Eigenregulierung" muss ein zugehöriger SregulNeuSchadenzahlungWizardModel mit identischer ID. Bei "Fremdregulierung" aber nicht. Zahlbetrag = (decimal)30.64, // Pflichtfeld, Betrag, ACHTUNG: Schadenzahlung muss bei API-Insert in mindestens einem dieser Felder unterschiedlich zu vorhandenen Schadenzahlungen sein: SCHADENID, EMPF_ART, ZAHLBETRAG, SZDATUM . Sonst wird nur Update statt Insert gemacht }; if (mySchaden.Regulierungsart != mySregulNeu.RegulArt) throw new Exception("Fehler: Regulierungsarten müssen übereinstimmen"); // Eigenregulierung / Fremdregulierung var mySregulSchadenzahlungWizardNeu = new SregulNeuSchadenzahlungWizardModel { Id = mySregulNeu.Id, //gleiche ID wie zugehöriger SregulNeuModel Buchungsart = "Zahlung", Zahlart = "Erstattung", Abrechnen = true, Forderung = mySregulNeu.Zahlbetrag, Zahlbetrag = mySregulNeu.Zahlbetrag, // Pflichtfeld Waehrung = "EUR", // Pflichtfeld Abrfaelligkeitsdatum = DateTime.Now, Abrrgdatum = DateTime.Now, Abrzahlungsart = "EZV", Kontodtausid = "012340015811161", Kontodtaus = "X - Mustermakler Ausz", }; AmsTransferContext myExport = new AmsTransferContext { Vertraege = new List<VertragModel> { myVertrag }, Schaden = new List<SchadenModel> { mySchaden }, SregulNeu = new List<SregulNeuModel> { mySregulNeu }, SregulNeu_SchadenzahlungWizard = new List<SregulNeuSchadenzahlungWizardModel> { mySregulSchadenzahlungWizardNeu }, }; await GetTransferToken(httpClient, baseUriApi, bearerToken, license, myExport, ImportAction.iaNoKDVTUpdate); // Ihre Lizenz/Mandant eintragen und ImportFlags und TransferOptions in Parameter myExport als Rückgabewert zurückerhalten //neuen Schadenzahlung hochladen: string apiPath = "/api/v1/Ams/Transfer"; var contenStr = Newtonsoft.Json.JsonConvert.SerializeObject(myExport, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore }); httpClient.DefaultRequestHeaders.Clear(); httpClient.DefaultRequestHeaders.TryAddWithoutValidation("Authorization", String.Format("Bearer {0}", bearerToken)); var content = new StringContent(contenStr, System.Text.Encoding.UTF8, "application/json"); var requestUri = new Uri(baseUriApi, apiPath); var results2 = await httpClient.PostAsync(requestUri, content); var apiErgebnis = await results2.Content.ReadAsStringAsync(); if (results2.StatusCode != HttpStatusCode.OK) throw new Exception("Fehler: " + apiErgebnis); var mySuccessResponse = Newtonsoft.Json.JsonConvert.DeserializeObject<SuccessResponse>(apiErgebnis); if (mySuccessResponse == null || !mySuccessResponse.Success) throw new Exception("Fehler: nicht erfolgreich: " + apiErgebnis); } //Eigenbuchung mit Reserve // public static async Task ApiSRegulNeuUpload_EigenregulierungReserve(string schadenGuid, bool adminAccessMode = true) { HttpClient httpClient = new HttpClient(); Uri baseUriAuth, baseUriApi; string userName, passwort, license, gesellschaft; GetServerUrl(out baseUriAuth, out baseUriApi, out userName, out passwort, out license, out gesellschaft); // meine Servereinstellungen (bearerToken, bearerExpireTimeUTC, refreshToken) = await GetBearerToken(httpClient, baseUriAuth, userName, passwort, bearerToken, bearerExpireTimeUTC, refreshToken); // Bearer-Token ermitteln, und Ablaufzeit des BearerToken, und RefreshToken //der Schaden zum SRegulNeu muss gelesen werden, damit beides gemeinsam im Transfer enthalten ist: var mySchaden = await GetSchaden(httpClient, bearerToken, baseUriApi, schadenGuid, adminAccessMode); //den Schaden lesen var myVertrag = await GetSchadenVertrag(httpClient, bearerToken, baseUriApi, mySchaden.Id.ToString(), adminAccessMode); //den Vertrag zum Schaden lesen var sRegulId = Guid.NewGuid(); var mySregulNeu = new SregulNeuModel { Id = sRegulId, Amsidnr = SRegulPreAmsidnr + sRegulId, // Zwangsfeld, meine eindeutige interne Schadenzahlung-Nummer Schadenid = mySchaden.Amsidnr, EmpfArt = "Referenz", // Versicherungsnehmer = Kunde, Referenz = Kontakt Kontoart = "KUNDE", // passend zu KontoId, wessen AMSIDNR dort steht: KUNDE,GESELL,VERMIT,SADRESS //SREGUL_NEU.Kontoid-- > Kunde.Amsidnr + SREGUL_NEU.Kontoart = 'KUNDE' an abweichende Anspruchsteller überweisen, in AMS.5-Fenster: Sonstige/Kunden //SREGUL_NEU.Kontoid-- > Gesell.Amsidnr + SREGUL_NEU.Kontoart = 'GESELL' //SREGUL_NEU.Kontoid-- > Vermit.Amsidnr + SREGUL_NEU.Kontoart = 'VERMIT' //SREGUL_NEU.Kontoid-- > Adressen.Amsidnr + SREGUL_NEU.Kontoart = 'SADRESS'(bei Transfer: Adressen, in AMS.5 - Fenster: Sonstige / Referenzkontakte) Kurs = 1, LeistArt = "Entschädigung", // Entschädigung, Kosten Notenr = "984372", // Buchungsreferenz Anmerkung = "Meine Eigenregulierung", // Text Entschart = "108 Internist", Szdatum = DateTime.Now, // Datum der Zahlung Waehrung = "EUR", RegulArt = "Eigenregulierung", // Eigenregulierung = Auszahlung, Fremdregulierung = statistisch. bei "Eigenregulierung" muss ein zugehöriger SregulNeuSchadenzahlungWizardModel mit identischer ID. Bei "Fremdregulierung" aber nicht. Zahlbetrag = (decimal)64.72, // Pflichtfeld, Betrag. ACHTUNG: Schadenzahlung muss bei API-Insert in mindestens einem dieser Felder unterschiedlich zu vorhandenen Schadenzahlungen sein: SCHADENID, EMPF_ART, ZAHLBETRAG, SZDATUM . Sonst wird nur Update statt Insert gemacht }; mySregulNeu.Forderung = mySregulNeu.Zahlbetrag; //gleicher Betrag if (mySchaden.Regulierungsart != mySregulNeu.RegulArt) throw new Exception("Fehler: Regulierungsarten müssen übereinstimmen"); // Eigenregulierung / Fremdregulierung var mySregulSchadenzahlungWizardNeu = new SregulNeuSchadenzahlungWizardModel { Id = mySregulNeu.Id, //gleiche ID wie zugehöriger SregulNeuModel Buchungsart = "Zahlung", Zahlart = "Erstattung", Abrechnen = true, Forderung = mySregulNeu.Zahlbetrag, Zahlbetrag = mySregulNeu.Zahlbetrag, // Pflichtfeld Abrfaelligkeitsdatum = DateTime.Now, Abrrgdatum = DateTime.Now, Abrzahlungsart = "EZV", Kontodtausid = "012340015811161", Kontodtaus = "X - Mustermakler Ausz", Waehrung = "EUR", // Pflichtfeld RegulArt = "Eigenregulierung", }; //Reservebuchung zu var sRegulId1 = Guid.NewGuid(); var sRegulId2 = Guid.NewGuid(); var mySregulNeuR1 = new SregulNeuModel { Id = sRegulId1, Amsidnr = SRegulPreAmsidnr + sRegulId1, // Zwangsfeld, meine eindeutige interne Schadenzahlung-Nummer Schadenid = mySchaden.Amsidnr, Anmerkung = "29.07.2019 | Dr. med. Andreas Muster", // Text EmpfArt = "Reservebuchung", // Versicherungsnehmer = Kunde, Referenz = Kontakt Entschart = "108 Internist", Kurs = 1, LeistArt = "Entschädigung", // Entschädigung, Kosten Szdatum = DateTime.Now, // Datum der Zahlung Waehrung = "EUR", // Pflichtfeld Zahlbetrag = mySregulNeu.Zahlbetrag, // Pflichtfeld, Betrag Reserve = "Ja", ReserveZu = mySregulNeu.Amsidnr, }; var mySregulNeuR2 = new SregulNeuModel { Id = sRegulId2, Amsidnr = SRegulPreAmsidnr + sRegulId2, // Zwangsfeld, meine eindeutige interne Schadenzahlung-Nummer Schadenid = mySregulNeuR1.Schadenid, Anmerkung = mySregulNeuR1.Anmerkung, EmpfArt = mySregulNeuR1.EmpfArt, Entschart = mySregulNeuR1.Entschart, Kurs = mySregulNeuR1.Kurs, LeistArt = mySregulNeuR1.LeistArt, Szdatum = mySregulNeuR1.Szdatum, Waehrung = mySregulNeuR1.Waehrung, // Pflichtfeld Zahlbetrag = 0 - mySregulNeu.Zahlbetrag, // Pflichtfeld, negatives Vorzeichen Reserve = mySregulNeuR1.Reserve, ReserveZu = mySregulNeuR1.ReserveZu, }; AmsTransferContext myExport = new AmsTransferContext { Vertraege = new List<VertragModel> { myVertrag }, Schaden = new List<SchadenModel> { mySchaden }, SregulNeu = new List<SregulNeuModel> { mySregulNeu, mySregulNeuR1, mySregulNeuR2 }, SregulNeu_SchadenzahlungWizard = new List<SregulNeuSchadenzahlungWizardModel> { mySregulSchadenzahlungWizardNeu }, }; await GetTransferToken(httpClient, baseUriApi, bearerToken, license, myExport, ImportAction.iaNoKDVTUpdate); // Ihre Lizenz/Mandant eintragen und ImportFlags und TransferOptions in Parameter myExport als Rückgabewert zurückerhalten //neuen Schadenzahlung hochladen: string apiPath = "/api/v1/Ams/Transfer"; var contenStr = Newtonsoft.Json.JsonConvert.SerializeObject(myExport, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore }); httpClient.DefaultRequestHeaders.Clear(); httpClient.DefaultRequestHeaders.TryAddWithoutValidation("Authorization", String.Format("Bearer {0}", bearerToken)); var content = new StringContent(contenStr, System.Text.Encoding.UTF8, "application/json"); var requestUri = new Uri(baseUriApi, apiPath); var results2 = await httpClient.PostAsync(requestUri, content); var apiErgebnis = await results2.Content.ReadAsStringAsync(); if (results2.StatusCode != HttpStatusCode.OK) throw new Exception("Fehler: " + apiErgebnis); var mySuccessResponse = Newtonsoft.Json.JsonConvert.DeserializeObject<SuccessResponse>(apiErgebnis); if (mySuccessResponse == null || !mySuccessResponse.Success) throw new Exception("Fehler: nicht erfolgreich: " + apiErgebnis); }

 

public partial class SregulNeuModel { public Guid Id { get; set; } public bool Dirty { get; set; } public DateTime LastSynchronisation { get; private set; } public string Amsidnr { get; set; } public string Anmerkung { get; set; } // Text public string Bearbeiter { get; set; } public DateTimeOffset Bearbeitet { get; set; } public string Buchvorgangid { get; set; } public string EmpfArt { get; set; } // Versicherungsnehmer = Kunde, Referenz = Kontakt public string Entschart { get; set; } public decimal? Forderung { get; set; } public string Gesabrechnung { get; set; } public string Informativ { get; set; } public bool? Istsb { get; set; } public string Kontoart { get; set; } // welche AMSIDNR in KontoArt drin steht // SREGUL_NEU.Kontoid --> Kunde.Amsidnr + SREGUL_NEU.Kontoart='KUNDE' so kann man auch an abweichende Anspruchsteller überweisen // SREGUL_NEU.Kontoid --> Gesell.Amsidnr + SREGUL_NEU.Kontoart='GESELL' // SREGUL_NEU.Kontoid --> Vermit.Amsidnr + SREGUL_NEU.Kontoart='VERMIT' // SREGUL_NEU.Kontoid --> Adressen.Amsidnr + SREGUL_NEU.Kontoart='SADRESS' (bei Transfer: Adressen, in AMS.5-Fenster: Sonstige/Referenzkontakte) public string Kontoid { get; set; } public decimal Kurs { get; set; } public string LeistArt { get; set; } // Entschädigung, Kosten public decimal? Nettobetrag { get; set; } public string Notenr { get; set; } // Buchungsreferenz public string RegulArt { get; set; } // Eigenregulierung = Auszahlung, Fremdregulierung = statistisch public string Reserve { get; set; } public string ReserveZu { get; set; } public decimal? Sb { get; set; } public string Schadenid { get; set; } public decimal? Steuer { get; set; } public string Storno { get; set; } public DateTime Szdatum { get; set; } // Datum der Zahlung public string Waehrung { get; set; } public decimal Zahlbetrag { get; set; } // Betrag public decimal? Zahlbetrag100 { get; set; } public string Zahler { get; set; } } // Ab hier notwendig für Eigenregulierung public partial class SregulNeuSchadenzahlungWizardModel { public Guid Id { get; set; } //AMSPK vom zugehörigen SregulNeu public bool? Abrechnen { get; set; } public DateTime? Abrfaelligkeitsdatum { get; set; } public DateTime? Abrrgdatum { get; set; } public string Abrrggrund { get; set; } public string Abrtitel { get; set; } public DateTime? Abrvufaelligkeitsdatum { get; set; } public DateTime? Abrvurgdatum { get; set; } public string Abrvurggrund { get; set; } public string Abrvutitel { get; set; } public string Abrvuzahlungsart { get; set; } public string Abrvuzahlvariante { get; set; } public string Abrzahlungsart { get; set; } public string Abrzahlvariante { get; set; } public string Anmerkung { get; set; } public decimal? Anteil { get; set; } public bool? AssistenzModus { get; set; } public string Belegnr { get; set; } public string Buchungsart { get; set; } public DateTime? Buchungsdatum { get; set; } public string Buchungstext { get; set; } public string EmpfArt { get; set; } public string EmpfBezeichnung { get; set; } public string EmpfKontoid { get; set; } public string Entschaedigungsart { get; set; } public decimal? Forderung { get; set; } public bool? HatEigenanteil { get; set; } public string InfoAbrechnung { get; set; } public bool? Informativ { get; set; } public bool? Istsb { get; set; } public string Kontodtaus { get; set; } public string KontodtausEmpf { get; set; } public string Kontodtausid { get; set; } public string Kontovudtaus { get; set; } public string KontovudtausEmpf { get; set; } public string Kontovudtausid { get; set; } public string Leistungsart { get; set; } public int? Paydirection { get; set; } public bool? Regressbuero { get; set; } public decimal? Regresskosten { get; set; } public string RegulArt { get; set; } public decimal? Reserve { get; set; } public string Sammel { get; set; } public decimal? Sb { get; set; } public DateTime? Schadenabschlussdatum { get; set; } public decimal? Steuer { get; set; } public bool? VerhinReserveBuchung { get; set; } public bool? VerteilenBeteiligte { get; set; } public bool? Vtinkasso { get; set; } public bool? Vuabrechnen { get; set; } public string Waehrung { get; set; } // Pflichtfeld public string Zahlart { get; set; } public decimal Zahlbetrag { get; set; } // Pflichtfeld public decimal? Zahlbetrag100 { get; set; } public string Zahler { get; set; } public string Zahlkontodtaus { get; set; } public string Zahlkontodtausid { get; set; } public string Zahlvariante { get; set; } }

Vermittler hochladen oder lesen

Vermittler können per API erzeugt oder geändert werden, wenn die Berechtigungen entsprechend vergeben sind.

  • mit ClientId + ClientSecret und der Kombination aus Name + Passwort über "oauth/token" einen Bearer-Token holen (noch gültige Token nicht erneut holen)

  • in der Struktur-AmsTransferContext den neuen Vermittler (oder mehrere) hinzufügen

  • diese Daten läd man nun als JSON-String mitsamt Bearer-Token an "/api/v1/Ams/Transfer" hoch

  • Beispiel in C# :

// mit ClientId und ClientSecret und Username+Passwort anmelden und einen Vermittler neu hochladen public static async Task ApiVermittlerUpload() { HttpClient httpClient = new HttpClient(); Uri baseUriAuth, baseUriApi; string userName, passwort, license; GetServerUrl(out baseUriAuth, out baseUriApi, out userName, out passwort, out license); // meine Servereinstellungen (bearerToken, bearerExpireTimeUTC, refreshToken) = await GetBearerToken(httpClient, baseUriAuth, userName, passwort, bearerToken, bearerExpireTimeUTC, refreshToken, license); // Bearer-Token ermitteln, und Ablaufzeit des BearerToken, und RefreshToken var myVermittler = new VermittlerModel { Id = Guid.NewGuid(), Amsidnr = "VM-" + Guid.NewGuid(), // Zwangsfeld, eindeutige interne Nummer. Erst mal vorläufige Nummer, wird später durch AMS.5 endgültig vergeben Name = "Vermittler TheCollector2", Name1 = "MeinNameA", Ort = "MeinOrt A", Status = "VERMITTLER", Mandant = MeineFirmaMandant, MandantAmsidnr = MeineFirmaMandantAmsidnr, Code = "999999A", // Zwangsfeld , Vermittlernummer License = license, //meine Lizenz/Mandant Code = "Vermittler " + DateTime.Now.ToString("HHmmss"), // Zwangsfeld, Vermittlernummer ##### ACHTUNG: muss eindeutig sein }; AmsTransferContext myExport = new AmsTransferContext { Vermittler = new List<VermittlerModel> { myVermittler }, }; await GetTransferToken(httpClient, baseUriApi, bearerToken, License, myExport, ImportAction.iaNew, SendNulls:false); // Ihre Lizenz/Mandant eintragen und ImportFlags und TransferOptions in Parameter myExport als Rückgabewert zurückerhalten //neuen Vermittler hochladen: string apiPath = "/api/v1/Ams/Transfer"; var contenStr = Newtonsoft.Json.JsonConvert.SerializeObject(myExport, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore }); httpClient.DefaultRequestHeaders.Clear(); httpClient.DefaultRequestHeaders.TryAddWithoutValidation("Authorization", String.Format("Bearer {0}", bearerToken)); var content = new StringContent(contenStr, System.Text.Encoding.UTF8, "application/json"); var requestUri = new Uri(baseUriApi, apiPath); var results2 = await httpClient.PostAsync(requestUri, content); var apiErgebnis = await results2.Content.ReadAsStringAsync(); if (results2.StatusCode != HttpStatusCode.OK) throw new Exception("Fehler: " + apiErgebnis); var mySuccessResponse = Newtonsoft.Json.JsonConvert.DeserializeObject<SuccessResponse>(apiErgebnis); if (mySuccessResponse == null || !mySuccessResponse.Success) throw new Exception("Fehler: nicht erfolgreich: "+ apiErgebnis); }
  • Vermittler lesen

    • mit ClientId + ClientSecret und der Kombination aus Name + Passwort über "oauth/token" einen Bearer-Token holen (noch gültige Token nicht erneut holen)

    • alle meine Vermittler können über "api/v1/Ams/Vermittler&accessMode=Mitarbeiter" abgefragt werden

    • JSON-String nach List<VermittlerModel>

    • Beispiel in C# :

// mit ClientId und ClientSecret und Username+Passwort anmelden und alle meine Vermittler lesen public static async Task ApiVermittlerLesen() { HttpClient httpClient = new HttpClient(); Uri baseUriAuth, baseUriApi; string userName, passwort, license; GetServerUrl(out baseUriAuth, out baseUriApi, out userName, out passwort, out license); // meine Servereinstellungen (bearerToken, bearerExpireTimeUTC, refreshToken) = await GetBearerToken(httpClient, baseUriAuth, userName, passwort, bearerToken, bearerExpireTimeUTC, refreshToken, license); // Bearer-Token ermitteln, und Ablaufzeit des BearerToken, und RefreshToken string apiPath = "api/v1/Ams/Vermittler?take=1000&accessMode=Mitarbeiter"; //alle meine Vermittler abfragen als Mitarbeiter var requestData = new HttpRequestMessage { Method = HttpMethod.Get, RequestUri = new Uri(baseUriApi, apiPath), }; requestData.Headers.TryAddWithoutValidation("Authorization", String.Format("Bearer {0}", bearerToken)); var results = await httpClient.SendAsync(requestData); var apiErgebnis = await results.Content.ReadAsStringAsync(); //Ergebnis der API-Abfrage erhalten if (results.StatusCode != HttpStatusCode.OK) throw new Exception("Fehler: " + apiErgebnis); var myVermittlerList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<VermittlerModel>>(apiErgebnis); }
  • Einen Vermittler lesen und ändern

    • mit ClientId + ClientSecret und der Kombination aus Name + Passwort über "oauth/token" einen Bearer-Token holen (noch gültige Token nicht erneut holen)

    • einen Vermittler über "api/v1/Ams/Vermittler/{id}?accessMode=Mitarbeiter" abfragen

    • JSON-String nach Klasse-VermittlerModel

    • gewünschte Felder ändern

    • diese geänderten Daten läd man nun als JSON-String mitsamt Bearer-Token an "/api/v1/Ams/Transfer" hoch

    • Beispiel in C# :

// mit ClientId und ClientSecret und Username+Passwort anmelden und einen Vermittler lesen und ändern public static async Task ApiVermittlerAendern() { HttpClient httpClient = new HttpClient(); Uri baseUriAuth, baseUriApi; string userName, passwort, license; GetServerUrl(out baseUriAuth, out baseUriApi, out userName, out passwort, out license); // meine Servereinstellungen (bearerToken, bearerExpireTimeUTC, refreshToken) = await GetBearerToken(httpClient, baseUriAuth, userName, passwort, bearerToken, bearerExpireTimeUTC, refreshToken, license); // Bearer-Token ermitteln, und Ablaufzeit des BearerToken, und RefreshToken string guid = "0d3753ed-969a-4374-b542-xxxxxxx"; //welchen Vermittler lesen? string apiPath = "/api/v1/Ams/Vermittler/" + guid + "?accessMode=Mitarbeiter"; //mit Mitarbeiter alle Felder lesen var requestData = new HttpRequestMessage { Method = HttpMethod.Get, RequestUri = new Uri(baseUriApi, apiPath), }; requestData.Headers.TryAddWithoutValidation("Authorization", String.Format("Bearer {0}", bearerToken)); var results = await httpClient.SendAsync(requestData); var apiErgebnis = await results.Content.ReadAsStringAsync(); //hole meinen Vermittler if (results.StatusCode != HttpStatusCode.OK) throw new Exception("Fehler: " + apiErgebnis); var myVermittler = Newtonsoft.Json.JsonConvert.DeserializeObject<VermittlerModel>(apiErgebnis); myVermittler.Beruf = "Beruf:" + DateTime.Now; // Felder ändern myVermittler.Ort = "Ort" + DateTime.Now; AmsTransferContext myExport = new AmsTransferContext { Vermittler = new List<VermittlerModel> { myVermittler }, }; await GetTransferToken(httpClient, baseUriApi, bearerToken, License, myExport, ImportAction.iaNew, SendNulls:false); // Ihre Lizenz/Mandant eintragen und ImportFlags und TransferOptions in Parameter myExport als Rückgabewert zurückerhalten //geänderte Werte wieder zurück schreiben: apiPath = "/api/v1/Ams/Transfer"; var contenStr = Newtonsoft.Json.JsonConvert.SerializeObject(myExport, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore }); httpClient.DefaultRequestHeaders.Clear(); httpClient.DefaultRequestHeaders.TryAddWithoutValidation("Authorization", String.Format("Bearer {0}", bearerToken)); var content = new StringContent(contenStr, System.Text.Encoding.UTF8, "application/json"); var requestUri = new Uri(baseUriApi, apiPath); var results2 = await httpClient.PostAsync(requestUri, content); apiErgebnis = await results2.Content.ReadAsStringAsync(); if (results2.StatusCode != HttpStatusCode.OK) throw new Exception("Fehler: " + apiErgebnis); var mySuccessResponse = Newtonsoft.Json.JsonConvert.DeserializeObject<SuccessResponse>(apiErgebnis); if (mySuccessResponse == null || !mySuccessResponse.Success) throw new Exception("Fehler: nicht erfolgreich: "+ apiErgebnis); }

Anhang

Verweise


Noch Fragen? Ist etwas unklar geblieben?

Sollten Sie noch weitere Fragen zu diesem Thema haben, die in diesem Artikel nicht behandelt oder erklärt wurden, wenden Sie sich gerne über unser Kundenportal an unseren Support.