Calculation as a Service (CaaS)
Allgemeines
Für einige Vergleichsrechner kann die Berechnung getrennt über eine API konsumiert werden. Erwartet man als Endergebnis einen Vergleichsrechner, muss man also alles außer der Berechnungen selbst kreieren.
Authentifizierung und Autorisierung
Für die Autorisierung der Zugriffe auf die Rechner wird ein JSON Web Token nach RFC7519 verwendet.
Einen Token erhält man nach einer erfolgreichen Authentifizierung.
Authentifizierung
Die Authentifizierung erfolgt mit Benutzername und Passwort.
Hierzu senden Sie einen POST-Request an /api/login mit ihren JSON-kodierten Zugangsdaten im Body.
Bei erfolgreicher Authentifizierung erhalten Sie eine Response mit einem Autorisierungstoken.
Beispiel Request:
POST /api/login
Content-Type: application/json
{
"username": "Bob",
"password": "BobsPassword"
}
Beispiel Response:
Transfer-Encoding: chunked
Content-Type: application/json
Expires: Tue, 05 Dec 2017 15:17:17 GMT
{
"token": "eyJhbGciOiJSUzI1NiJ9.ey..."
}
Autorisierung
Senden Sie den erhaltenen Token als Bearer-Token im Authorisation-Header mit jedem weiteren Request.
Bsp. für den Aufruf zur Berechnung einer Privathaftpflicht-Versicherung:
POST api/v1/calculate/private-liability
Authorisation: "Bearer eyJhbGciOiJSUzI1NiJ9.ey..."
Content-Type: "application/json"
{
"policyholder": {"birthdate":315529200,"sex":"female","name":"Kiefer"},
"subject_matter": {
"policyholder": {"civil_servant":false}
},
"previous_insurance_exists":false,
"previous_damages_exist":false,
"desired_payment_mode":"monthly"
}
Token erneuern
Bitte beachten Sie, dass der Token nur eine begrenzte Zeit gültig ist und erneuert werden muss. Die relevanten Daten sind JWT-konform im Token enkodiert.
Um einen neuen Token zu erhalten, führen Sie die Authentifizierung erneut aus.
API
Die Definition der API ist nach der OpenAPI 3.0 Spezifikation dokumentiert und im JSON-Format unter https://calculation.dionera.com/api/doc/v1/swagger.json abrufbar.
Beispiel Privathaftpflicht
Die Anfrage zur Berechnung ist in 3 Bereiche unterteilt.
Allgemeine Angaben zum Versicherungsnehmer (Name, Vorname, Geschlecht und Geburtsdatum) erfolgen im Attribut "policyholder". Hierbei ist die Angabe des Geburtsdatums Pflicht und es wird ein Fehler ausgegeben, wenn diese Angabe fehlt.
Angaben zu den versicherten Personen erfolgen im Attribut "subject_matter". Hier werden auch tarifrelevante Angaben (z.B. im öffentlichen Dienst beschäftigt oder Einschluss einer Diensthaftpflicht gewünscht) zum Versicherungsnehmer, sowie zu weiteren zu versichernden Personen gemacht. Für den Versicherungsnehmer und ggf. dessen Partner ist die Angabe des Status "civil_servant" Pflichtangabe. Sollte eine Diensthaftpflicht ("include_civil_service_liability") mit eingeschlossen werden, dann ist auch die Angabe der Tätigkeit ("civil_service_occupation") (zulässige Werte siehe components/schemas/CivilServiceOccuption aus der oben verlinkten json) auszufüllen.
Im 3. Teil befinden sich allgemeine Angaben wie die gewünschte Zahlweise.
Request
Bsp.-Request für einen Versicherungsnehmer, der nicht im öffentl. Dienst beschäftigt ist und keine weiteren Personen mitversichert werden sollen.
POST /v1/calculate/private-liability
Authorization: "Bearer eyJhbGciOiJSUzI1NiJ9.ey..."
Content-Type: "application/json"
{
"policyholder": {"birthdate":315529200,"sex":"female","name":"Kiefer"},
"subject_matter":
{
"policyholder": {
"civil_servant": false
},
},
"previous_insurance_exists": false,
"previous_damages_exist": false,
"desired_payment_mode": "monthly"
}
Bsp für eine Familie, bei der Versicherungsnehmer im öffentl. Dienst beschäftigt ist, und den Einschluss einer Diensthaftpflicht haben möchte.
POST /v1/calculate/private-liability
Authorization: "Bearer eyJhbGciOiJSUzI1NiJ9.ey..."
Content-Type: "application/json"
{
"policyholder": {"birthdate":315529200},
"subject_matter":
{
"policyholder": {
"civil_servant":true,
"civil_service_occupation": "lehrer",
"include_civil_service_liability": true
},
"partner": {
"civil_servant": false
},
"include_children": true
},
"previous_insurance_exists": false,
"previous_damages_exist": false,
"desired_payment_mode": "monthly"
}
Response
Die Antwort des Services für eine Berechnungsanfrage ist in zwei Bereiche unterteilt.
In calculation_parameters
sind die Daten der Anfrage enthalten. Dabei
ist zu beachten, dass die Daten vom Service transformiert und mit
Standard-Werten ergänzt werden können.
In calculation_result
sind unter success
die Tarife, welche
erfolgreich berechnet werden konnten. Die Struktur ist an das
BiPRO-Modell für Produkte angelehnt. Unter errors
sind Produkte,
welche mit den Daten der Anfrage nicht berechnet werden konnten.
{
"calculation_parameters": {
"policyholder": {
"birthdate": 315529200,
"sex": "female"
},
"subject_matter": {
"policyholder": {
"civil_servant": false
},
"partner": {
"civil_servant": true,
"birthdate": 631148400,
"include_civil_service_liability": false,
"civil_service_occupation": "lehrer"
},
"include_children": true
},
"previous_insurance": {
"damage_free": false,
"pre_insured": true
},
"desired_payment_mode": "yearly"
},
"calculation_result": {
"success": [
{
"name": null,
"provider": null,
"duration": null,
"contract_commencement": null,
"policyholder": {
"birthdate": 315529200,
"first_name": null,
"last_name": null,
"sex": null,
"postal_address": null
},
"products": [
{
"subject_matter": {
"policyholder": {
"civil_servant": false
},
"children": {
"civil_servant": false
},
"partner": {
"birthdate": 631148400,
"civil_servant": true,
"civil_service_occupation": "lehrer"
}
},
"previous_insurance": true,
"previous_damage": true,
"name": "Einfach Komplett",
"provider": {
"name": "Konzept & Marketing GmbH",
"origin_id": "10002"
},
"duration": null,
"fees": [
{
"amount": {
"amount": "5899",
"currency": "EUR"
},
"payment_mode": "yearly",
"taxes": [
{
"type": "percent",
"amount": 19
}
]
}
],
"product_attributes": {
....
},
"origin_id": "13360",
"insurance_commencement": null
}
]
}
],
"errors": [
{
"title": "Excellent ",
"sub_title": "",
"product": "Excellent ",
"id": "15111",
"messages": [
"Es konnte kein Beitrag ermittelt werden"
]
}
]
}
}