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
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
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
eigene ams.5-Spartendaten in assfinet cloud hochladen siehe: Eigene Spartenmasken in assfinet cloud definieren
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 |
|---|---|---|
kundeId | Text | zu welcher KundenId, andernfalls alle |
vertragId | Text | zu welcher VertragId, andernfalls alle |
vermittlerId | Text | zu welcher VermittlerId, andernfalls alle |
Text | zu welcher Email-Adresse, andernfalls alle | |
vmGroups | Boolean | Kundenfreischaltungen (false=Voreinstellung) oder Vermittlerfreischaltungen |
name | Text | Name der Freischaltung |
Details zu einer Freischaltungen abfragen
GET /api/v2/Sharing/Group/{id}
Als Parameter z.B.
Parameter | Typ | Hinweis |
|---|---|---|
groupId | Text | Id der Freischaltung |
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
Mitarbeiterzugriff über AccessMode API anmelden: Entwicklungsphase und Produktionsphase | API Mitarbeiterzugriff über AccessMode
BearerToken ermitteln GetBearerToken() Verweise | BearerToken ermitteln
Meine Konstanten ForeignTable/LinkAdresseKeyArt Neue-AmsNr Verweise | Meine Konstanten
Klasse KundeModel Verweise | Klasse KundeModel
Klasse VertragModel Verweise | Klasse VertragModel
Klasse VertragSparteModel Verweise | Klasse VertragSparteModel
Klasse SchadenModel Verweise | Klasse SchadenModel
Klasse AdressModel Verweise | Klasse AdresseModel
Klasse BriefModel Verweise | Klasse BriefModel
GetKunde, GetVertrag, GetVertragKunde, GetVertragSparten, GetSchaden, GetSchadenVertrag,
GetBrief Verweise | GetKunde, GetVertrag, GetVertragKunde, GetVertragSparten, GetSchaden, GetSchade...
Klasse AmsTransferContext Verweise | Klasse AmsTransferContext
SearchObject Verweise | SearchObject
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.