riskine

API Documentation

version 1.3.0

Welcome to the English documentation of the riskine API! In the following, the functionality of the riskine API and the structure of its resource will be described in general and also service by service.

This document describes the "vanilla" services. However the behaviour of the services are subject to change due to requirements stemming from our mutual project. Each client will be provided an own subdomain under which the customized services are available. For example, the insurance product universe subject to the calculations behind the service /empfehlung may be adopted to your in-house product universe.

Finally, there are several services in development which are briefly described in the end.

Contents


General


The services are hosted at https://api.riskine.com/<servicename> and the respective test-stage services are hosted at https://work.riskine.com/<servicename>. Please see detailed description of the services below. Some points to consider are:

This is a schematic overview of the service structure for the private customer main services:

api-schematic-overview

Country and language customization


For country customization we parameterize all services via a country parameter. Currently supported countries are Germany (de), Austria (at), Switzerland (ch) and Spain (es, under development). Different languages (for text content) are managed via the URL parameter culture with the usual values en, de, en-US, de-AT, etc.

Authentication


The basic flow of authentication is the following:

  1. When becoming a customer of the riskine API, you are supplied with a username and password
  2. On sending a GET-request containing the username and credentials in form of a Basic Authentication header /gettoken you will receive an API token (a JSON web token)
  3. When accessing any of the other services, the API token has to be included in the Authorization header in the form * Authorization = BEARER <API token>
  4. When failing to authorize, any of the other services send a 401
  5. The API token is valid for 2 weeks, users can generate as many keys as they like using their credentials

API Resource


This section describes the generic API input resource. The API resource models a person via individual parameters like age and sex as well as risk parameters like location of their home. All parameters currently known to the riskine API are described by name and content in the following table, respectively JSON schema:

Parametername Description Example
vorname First name 'Max'
nachname Last name 'Mustermann'
alter Age in years 27
geburtstag Date of birth '1989-10-22'
geschlecht Gender. 1: male, 2:female 2
bildung Highest educational attainment/Höchste abgeschlossene Ausbildung. 1: Mandatory school, 2: Apprenticeship, 3: High school diploma, 4: University degree, 5: Middle school 3
bundesland County/Bundesland. 1: Burgenland, 2: Kärnten, 3: Niederösterreich, 4: Oberösterreich, 5: Salzburg, 6: Steiermark, 7: Tirol, 8: Vorarlberg, 9: Wien 9
plz Post code of the persons home 1010
ort Home Town 'Wien'
strassenname Street name 'Riemergasse'
hausnummer Street or house number '11a'
adresseid ID of the adress, see the respective service for more information 37261829
sport Sport habit. 1: yes, regularly, 2: yes, rarely, 3: no 1
rauchen Smoking habit. 1: yes, regularly, 2: yes, rarely, 3: no 2
familienstand Family status. 1: single, 2: married/in a civil union, 3: divorced, 4: widowed, 5: in a relationship, 9: other 1
personen Income dependent persons. Array. 1: partner, 2: 1 child, 3: 2 children, 4: 3 children, 5: more than 3 children, 6: none, 7: other person [1,3]
kfztyp Type of vehicle in use. Array. 999: sonstige, ANH: anhänger, KRA: kraftrad, LKW: lastkraftwagen, MOP: motorfahrrad, OMN: omnibus, PKW: personenkraftwagen, PRO: probekennzeichen, SON: sonderfahrzeuge, ZUG: zugmaschine, kein: none ['PKW,'MOP']
kfzwert Sum of the values of vehicles in EUR 12400
haustiere Specification of pets. 1: at least one dog, 2: others, 3: none 1
wohntyp Type of home. 1: rented flat, 2: rented house, 3: own flat, 4: own house, 5: with parents/partner 1
wohngroesse Size of home in square meters 98
wohnniveau Niveau of home and interior. 1: simple, 2: standard, 3: luxurious, 4: unknown 2
beruf Type of job. 1: labourer, 2: self-employed, 3: farmer, 5: public sector employee, 7: student, 8: housewife/-husband, 9: unemployed, 10: retired, 11: on (maternity) leave, 12: apprentice, 13: employee 2
nettomonat Net monthly income in EUR 1748.65
bruttomonat Gross monthly income in EUR 2500
svmonate Number of months counting towards pension/SV-Monate 143
pensionskonto Pension account in EUR 10345.32
pensionskontojahr Year of Pensionkonto information 2016
partnergeburtstag Date of birth partner '1993-02-23'
partneralter Age of partner in years 23
dauerehe Duration of marriage in years 3
partnereinkommen Gross monthly income of partner 2700
gemkind Is there a common child with the partner? 1: yes, 2: no 2
lohnsteigerung Expected p.a. mean inrease in incomes across the country in percent. Will be preset by riskine 1.7
karriereverlauf Expected p.a. increase of own income in percent. Will default to 0 1.5
barwertverzinsung Interest for present value for calculation of pension. Will be prefilled. 1748.65
pensionswunsch Which part in percent should the net pension plus the bonus annuity make up of the last net income? (Pensionswunsch) 85
inflation Expected p.a. inflation during the saving period in percent. Will be preset by riskine 2.17
kind Definition of income dependent children. Array. Each should be of the form [Date, 1/0 for lives at home/does not live at home, 1/0 for in education/not in education] [['2008-03-19',1,1],['1994-01-12',0,1]]
lon The longitude of the geopoint you are interested in (EPSG 4326) 15.558229
lat The latitude of the geopoint you are interested in (EPSG 4326) 46.758571
branche The ID of the sector A1
ortwie location of the business Wien
mitarbeiter number of employees in total 29
besitztum items owned by the company. 1: Cars, 2:Maschines, 3:Computers/Laptops, 4:Building/Real Estate, 5:Stocks, 6:owned or rented office, 7:electronic tools [1,3,5]
cybereinstieg exposure to cyber risks [1,2,3]
gesellschaftsform type of legal entity. 1: GmbH/private limited, 2:KGaA, 3:AG/public limites, 4:Verein, 5:Selbstständig/Freiberuflich, 6:OG, 7:KG, 8:GesBr, 9:Genossenschaft,10:empty 1
jahresumsatz turnover 10000
mitarbeiterneu number of new and active employees since 2003 16
zukunfthoehe amount of pension savings per employee/year [3,5]
zukunftichhoehe Pension savings relevance for the owner, 1: yes, 2:no 1
optiabfert optimizing employee accruals via insurances. 1: yes, 2:no 1
zukunftwer for whom are pension savings relevant, 1: owner, 2: all/many of the employees, 3: selected key players, 4:no one [2,3]
buftrelevant Additional accident/illness protection for the owner/managing director relevant 1
bauplan responsible at a building site or transporting goods 1: responsible, 2:transporting, 3:none, [1]
country de: Germany, at: Austria, ch:Switzerland at
de_education Highest educational attainment/Höchste abgeschlossene Ausbildung. 1: No graduation, 2: Vocational training , 3: High school diploma, 4: University degree, 5: Secondary school (Hauptschule) certificate, 6: Secondary school (Realschule) certificate 3
de_region Home town 3
de_postcode Post code code of the persons home 12249
de_familystatus Family status. 1: single, 2: married/in a civil union, 3: divorced, 4: widowed, 5: in a relationship, 9: other 2
de_livingsituation Where do you live? 1: rented flat, 2: rented house, 3: own flat, 4: own house, 5: with parents/partner 3
de_professiontype Type of job. 1: labourer, 2: self-employed, 3: farmer, 5: public sector employee, 7: student, 8: housewife/-husband, 9: unemployed, 10: retired, 11: on (maternity) leave, 12: apprentice, 13: employee, 14: civil servant, 15: mining industry 5
de_taxclass What is your tax class? 1: I, 2: II, 3: III, 4: IV, 5: V, 6: VI 2
de_oeltank Yes (1) if you have an oil tank in your house 1
de_bauherr Yes (1) if you are responsible at a building site 1
de_healthinstype private (1) or statutory (2) health insurance before switching work to 7,8,10,11 1
de_healthinstype_hausfrau private (1) or statutory (2) health insurance before switching work to 7,8,10,11 1
premiumpaymentway Frequency of premium payment, '12': Monthly, '4': Quarterly, '2': Six-monthly 12
premiumamount Amount of the premium 100
surchargeamount Amount of the installment surcharge 5

All of the information in the above table was generated from the following JSON schema, which is also used internally for validation purposes:

{
    "definitions": {
        "alter": {
            "type": "integer",
            "minimum": 0,
            "maximum": 120
        },
        "date": {
            "type": "string",
            "pattern": "^\\d\\d\\d\\d-\\d\\d-\\d\\d$"
        },
        "plz": {
            "type": "integer",
            "minimum": 10,
            "maximum": 9999
        },
        "adresseid": {
            "type": "integer",
            "minimum": 1
        },
        "person": { "enum": [1,2,3,4,5,6,7] },
        "personen": {
            "type": "array",
            "minItems": 1,
            "items": { "$ref": "#/definitions/person" }
        },
        "kfztypsingle": { "enum": ["999","ANH","KRA","LKW",
            "MOP","OMN","PKW","PRO","SON","ZUG","kein"] },
        "kfztyp": {
            "type": "array",
            "minItems": 1,
            "items": { "$ref": "#/definitions/kfztypsingle" }
        },
        "wert": {
            "type": "number",
            "minimum": 0
        },
        "intwert": {
            "type": "integer",
            "minimum": 0
        },
        "pensionskontojahr": {
            "type": "integer",
            "minimum": 2014,
            "maximum": 2018
        },
        "percent": {
            "type": "number",
            "minimum": 0,
            "maximum": 100
        },
        "kindsingle": {
            "type": "object",
            "properties": {
                "geburtstag": { "$ref": "#/definitions/date" },
                "lebtinhh": { "enum": [1,0] },
                "inausbildung": { "enum": [1,0] }
            }
        },
        "kind": {
            "type": "array",
            "minItems": 1,
            "items": { "$ref": "#/definitions/kindsingle" }
        },
        "ebesitz": { "enum": [1,2,3,4,5,6] },
        "besitz":{
            "type": "array",
            "minItems": 1,
            "items": { "$ref": "#/definitions/ebesitz" }
        }
    },
    "properties": {
        "vorname": {
            "type": "string",
            "description": "First name",
            "examples": ["'Max'"]
        },
        "nachname": {
            "type": "string",
            "description": "Last name",
            "examples": ["'Mustermann'"]
        },
        "alter": {
            "$ref": "#/definitions/alter",
            "description": "Age in years",
            "examples": [27]
        },
        "geburtstag": {
            "$ref": "#/definitions/date",
            "description": "Date of birth",
            "examples": ["'1989-10-22'"]
        },
        "geschlecht": {
            "enum": [1,2],
            "description": "Gender. `1`: male, `2`:female",
            "examples": [2]
        },
        "bildung": {
            "enum": [1,2,3,4,5],
            "description": "Highest educational attainment/Höchste abgeschlossene Ausbildung.  `1`: Mandatory school, `2`: Apprenticeship, `3`: High school diploma, `4`: University degree, `5`: Middle school",
            "examples": [3]
        },
        "bundesland": {
            "enum": [1,2,3,4,5,6,7,8,9],
            "description": "County/Bundesland. `1`: Burgenland, `2`: Kärnten, `3`: Niederösterreich, `4`: Oberösterreich, `5`: Salzburg, `6`: Steiermark, `7`: Tirol, `8`: Vorarlberg, `9`: Wien",
            "examples": [9]
        },
        "plz": {
            "$ref": "#/definitions/plz",
            "description": "Post code of the persons home",
            "examples": [1010]
        },
        "ort": {
            "type": "string",
            "description": "Home Town",
            "examples": ["'Wien'"]
        },
        "strassenname": {
            "type": "string",
            "description": "Street name",
            "examples": ["'Riemergasse'"]
        },
        "hausnummer": {
            "type": "string",
            "description": "Street or house number",
            "examples": ["'11a'"]
        },
        "adresseid": {
            "$ref": "#/definitions/adresseid",
            "description": "ID of the adress, see the respective service for more information",
            "examples": [37261829]
        },
        "sport": {
            "enum": [1,2,3,4],
            "description": "Sport habit. `1`: yes, regularly, `2`: yes, rarely, `3`: no",
            "examples": [1]
        },
        "rauchen": {
            "enum": [1,2,3,4],
            "description": "Smoking habit. `1`: yes, regularly, `2`: yes, rarely, `3`: no",
            "examples": [2]
        },
        "familienstand": {
            "enum": [1,2,3,4,5,9],
            "description": "Family status. `1`: single, `2`: married/in a civil union, `3`: divorced, `4`: widowed, `5`: in a relationship, `9`: other",
            "examples": [1]
        },
        "personen": {
            "$ref": "#/definitions/personen",
            "description": "Income dependent persons. Array. `1`: partner, `2`: 1 child, `3`: 2 children, `4`: 3 children, `5`: more than 3 children, `6`: none, `7`: other person",
            "examples": ["[1,3]"]
        },
        "kfztyp": {
            "$ref": "#/definitions/kfztyp",
            "description": "Type of vehicle in use. Array. `999`: sonstige, `ANH`: anhänger, `KRA`: kraftrad, `LKW`: lastkraftwagen, `MOP`: motorfahrrad, `OMN`: omnibus, `PKW`: personenkraftwagen, `PRO`: probekennzeichen, `SON`: sonderfahrzeuge, `ZUG`: zugmaschine, `kein`: none",
            "examples": ["['PKW,'MOP']"]
        },
        "kfzwert" : {
            "$ref": "#/definitions/wert",
            "description": "Sum of the values of vehicles in EUR",
            "examples": [12400]
        },
        "haustiere": {
            "enum": [1,2,3],
            "description": "Specification of pets. `1`: at least one dog, `2`: others, `3`: none",
            "examples": [1]
        },
        "wohntyp": {
            "enum": [1,2,3,4,5],
            "description": "Type of home. `1`: rented flat, `2`: rented house, `3`: own flat, `4`: own house, `5`: with parents/partner",
            "examples": [1]
        },
        "wohngroesse": {
            "$ref": "#/definitions/wert",
            "description": "Size of home in square meters",
            "examples": [98]
        },
        "wohnniveau": {
            "enum": [1,2,3,4],
            "description": "Niveau of home and interior. `1`: simple, `2`: standard, `3`: luxurious, `4`: unknown",
            "examples": [2]
        },
        "beruf": {
            "enum": [1,2,3,5,7,8,9,10,11,12,13],
            "description": "Type of job. `1`: labourer, `2`: self-employed, `3`: farmer, `5`: public sector employee, `7`: student, `8`: housewife/-husband, `9`: unemployed, `10`: retired, `11`: on (maternity) leave, `12`: apprentice, `13`: employee",
            "examples": [2]
        },
        "nettomonat": {
            "$ref": "#/definitions/wert",
            "description": "Net monthly income in EUR",
            "examples": [1748.65]
        },
        "bruttomonat": {
            "$ref": "#/definitions/wert",
            "description": "Gross monthly income in EUR",
            "examples": [2500]
        },
        "svmonate": {
            "$ref": "#definitions/wert",
            "description": "Number of months counting towards pension/SV-Monate",
            "examples": [143]
        },
        "pensionskonto": {
            "$ref": "#definitions/wert",
            "description": "Pension account in EUR",
            "examples": [10345.32]
        },
        "pensionskontojahr": {
            "$ref": "#/definitions/pensionskontojahr",
            "description": "Year of Pensionkonto information",
            "examples": [2016]
        },
        "partnergeburtstag": {
            "$ref": "#/definitions/date",
            "description": "Date of birth partner",
            "examples": ["'1993-02-23'"]
        },
        "partneralter": {
            "$ref": "#/definitions/alter",
            "description": "Age of partner in years",
            "examples": [23]
        },
        "dauerehe": {
            "$ref": "#definitions/wert",
            "description": "Duration of marriage in years",
            "examples": [3]
        },
        "partnereinkommen": {
            "$ref": "#definitions/wert",
            "description": "Gross monthly income of partner",
            "examples": [2700]
        },
        "gemkind": {
            "enum": [1,0],
            "description": "Is there a common child with the partner? `1`: yes, `2`: no",
            "examples": [2]
        },
        "lohnsteigerung": {
            "$ref": "#/definitions/percent",
            "description": "Expected p.a. mean inrease in incomes across the country in percent. Will be preset by __riskine__",
            "examples": [1.7]
        },
        "karriereverlauf": {
            "$ref": "#/definitions/percent",
            "description": "Expected p.a. increase of own income in percent. Will default to `0`",
            "examples": [1.5]
        },
        "barwertverzinsung": {
            "$ref": "#/definitions/percent",
            "description": "Interest for present value for calculation of pension. Will be prefilled.",
            "examples": [1748.65]
        },
        "pensionswunsch": {
            "$ref": "#/definitions/percent",
            "description": "Which part in percent should the net pension plus the bonus annuity make up of the last net income? (Pensionswunsch)",
            "examples": [85]
        },
        "inflation": {
            "$ref": "#/definitions/percent",
            "description": "Expected p.a. inflation during the saving period in percent. Will be preset by __riskine__",
            "examples": [2.17]
        },
        "kind": {
            "$ref": "#/definitions/kind",
            "description": "Definition of income dependent children. Array. Each should be of the form `[Date, 1/0 for lives at home/does not live at home, 1/0 for in education/not in education]`",
            "examples": ["[['2008-03-19',1,1],['1994-01-12',0,1]]"]
        },
        "lon": {
            "type": "number",
            "description": "The longitude of the geopoint you are interested in (EPSG 4326)",
            "examples": [15.5582290]
        },
        "lat": {
            "type": "number",
            "description": "The latitude of the geopoint you are interested in (EPSG 4326)",
            "examples": [46.7585710]
        },
        "branche":{
            "type": "string",
            "description": "The ID of the sector",
            "examples": ["A1"]
        },
        "ortwie":{
            "type":"integer",
            "description": "location of the business",
            "examples": ["Wien"]
        },
        "mitarbeiter":{
            "type":"integer",
            "description": "number of employees in total",
            "examples": [29]
        },
        "besitztum":{
            "type": "array",
            "minItems": 0,
            "items": { "enum": [1,2,3,4,5,6,7] },
            "description": "items owned by the company. `1`: Cars, `2`:Maschines, `3`:Computers/Laptops, `4`:Building/Real Estate, `5`:Stocks, `6`:owned or rented office, `7`:electronic tools",
            "examples": ["[1,3,5]"]
        },
        "cybereinstieg": {
            "type": "array",
            "minItems": 1,
            "items": { "enum": [1,2,3,4,5] },
            "description": "exposure to cyber risks",
            "examples": ["[1,2,3]"]
        },
        "gesellschaftsform":{
            "enum": [1,2,3,4,5,6,7,8,9,10],
            "description": "type of legal entity. `1`: GmbH/private limited, `2`:KGaA, `3`:AG/public limites, `4`:Verein, `5`:Selbstständig/Freiberuflich, `6`:OG, `7`:KG, `8`:GesBr, `9`:Genossenschaft,`10`:empty",
            "examples": [1]
        },
        "jahresumsatz":{
            "type": "integer",
            "description": "turnover",
            "examples": [10000]
        },
        "mitarbeiterneu":{
            "type":"integer",
            "description": "number of new and active employees since 2003",
            "minimum": 0,
            "maximum": 9999999999,
            "examples": [16]
        },
        "zukunfthoehe":{
            "type":"array",
            "minItems": 1,
            "items": { "enum":[1,2,3,4] },
            "description": "amount of pension savings per employee/year",
            "examples": ["[3,5]"]
        },
        "zukunftichhoehe":{
            "enum":[1,2],
            "description": "Pension savings relevance for the owner, `1`: yes, `2`:no",
            "examples": [1]
        },
        "optiabfert":{
            "enum":[1,2],
            "description": "optimizing employee accruals via insurances. `1`: yes, `2`:no",
            "examples": [1]
        },
        "zukunftwer":{
            "type":"array",
            "minItems":1,
            "items":{"enum":[1,2,3,4]},
            "description": "for whom are pension savings relevant, `1`: owner, `2`: all/many of the employees, `3`: selected key players, `4`:no one",
            "examples": ["[2,3]"]
        },
        "buftrelevant":{
            "type": "integer",
            "enum":[1,2],
            "description": "Additional accident/illness protection for the owner/managing director relevant",
            "examples": [1]
        },
        "bauplan":{
            "type": "array",
            "minItems": 1,
            "items": { "enum": [1,2,3] },
            "description": "responsible at a building site or transporting goods `1`: responsible, `2`:transporting, `3`:none,",
            "examples": ["[1]"]
        },
        "country": {
            "type": "string",
            "description": "`de`: Germany, `at`: Austria, `ch`:Switzerland", 
            "enum": ["de", "at", "ch"],
            "examples":["at"]
        },
        "de_education": {
            "type": "integer",
            "description": "Highest educational attainment/Höchste abgeschlossene Ausbildung.  `1`: No graduation, `2`: Vocational training , `3`: High school diploma, `4`: University degree, `5`: Secondary school (Hauptschule) certificate, `6`: Secondary school (Realschule) certificate",
            "enum": [1,2,3,4,5,6],
            "examples": [3]
        },
        "de_region": {
            "type": "integer",
            "enum": [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,30],
            "description": "Home town",
            "examples": [3]
        },
        "de_postcode": {
            "type": "integer",
            "minimum": 1000,
            "maximum": 99999,
            "description": "Post code code of the persons home",
            "examples": [12249]
        },
        "de_familystatus": {
            "enum": [1,2,3,4,5,9],
            "description": "Family status. `1`: single, `2`: married/in a civil union, `3`: divorced, `4`: widowed, `5`: in a relationship, `9`: other",
            "examples": [2]
        },
        "de_livingsituation": {
            "enum": [1,2,3,4,5],
            "description": "Where do you live? `1`: rented flat, `2`: rented house, `3`: own flat, `4`: own house, `5`: with parents/partner",
            "examples":[3]
        },
        "de_professiontype": {
            "enum": [1,2,3,5,7,8,9,10,11,12,13,14,15],
            "description": "Type of job. `1`: labourer, `2`: self-employed, `3`: farmer, `5`: public sector employee, `7`: student, `8`: housewife/-husband, `9`: unemployed, `10`: retired, `11`: on (maternity) leave, `12`: apprentice, `13`: employee, `14`: civil servant, `15`: mining industry",
            "examples": [5]
        },
        "de_taxclass": {
            "enum": [1,2,3,4,5,6],
            "description": "What is your tax class? `1`: I, `2`: II, `3`: III, `4`: IV, `5`: V, `6`: VI",
            "examples":[2]
        },
        "de_oeltank": {
            "enum": [1,2],
            "description":"Yes (1) if you have an oil tank in your house",
            "examples":[1]
        },
        "de_bauherr": {
            "enum": [1,2],
            "description":"Yes (1) if you are responsible at a building site",
            "examples":[1]
        },
        "de_healthinstype": {
            "enum":[1,2],
            "description":"private (1) or statutory (2) health insurance before switching work to 7,8,10,11",
            "examples":[1]
        },
        "de_healthinstype_hausfrau": {
            "enum":[1,2],
            "description":"private (1) or statutory (2) health insurance before switching work to 7,8,10,11",
            "examples":[1]
        },
        "premiumpaymentway": {
            "enum":[12,4,2],
            "description":"Frequency of premium payment, '12': Monthly, '4': Quarterly, '2': Six-monthly",
            "examples":[12]
        },
        "premiumamount": {
            "type": "integer",
            "minimum": 0,
            "maximum": 10000,
            "description": "Amount of the premium",
            "examples": [100]
        },
        "surchargeamount":{
            "type": "integer",
            "minimum": 0,
            "maximum": 10,
            "description": "Amount of the installment surcharge",
            "examples": [5]
        }
    },
    "type": "object"
}

Whenever you send data that does not fit the schema, you will receive a response containing one of the following resultcodes:

Result code Description
1 Data type did not validate
2 Parameter content did not validate
3 Problem with parameter dependencies

Note: These error codes will be replaced by fully descriptive messages about where validation went wrong. Implementation is currently in progress.

Services


This section describes functionality as well as schemata of the in- and outputs of the riskine API services. In general, each service imposes its own constraints on the resource structure, representing the required parameters for each service. This way, not every service requires every parameter to be set in the posted data. The obvious exception is the /gettoken service, which only needs a Basic Authentication header to return success.

GET /gettoken


As descriped in the section about Authentication, This service expects only a Basic Authentication header containing your username and password` and returns an API key which you can use to access any of the other services. The API key will be valid for 2 weeks.

Status code Description
200 Success
401 Failed to authenticate

Example result:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzZWNyZXQgbWVzc2FnZSI6IkhpIGZyb20gdGhlIGRlcHRocyBvZiB0aGUgQVBJISIsImZyb20iOiJyaXNraW5lIn0.T0-ymeJK7HSa_bZGTRLFSm6XJYJfPfGpJu-h5DuBwVQ

POST /deckung


As in the service /empfehlung, this addresses the optimal insurance portfolio and calculates recommended coverages fo certain products. Just like the rest of the riskine API services, the rules and logic behind these calculations as well as the results have been developed in cooperation with and were validated by the expert team at Verein für Konsumenteninformation. As mentioned in the introduction, there may well be the need to adjust the product universe or results during our mutual project. Refer to the additional input schema to find out about required parameters and their dependencies.

Additional input schema:

{
    "allOf": [
        { "$ref": "https://api.riskine.com/schema/riskine.schema.json" },
        {
            "properties": {
                "geburtstag": { "default": "1986-05-03" },
                "nettomonat": { "default": 1700 },
                "bundesland": { "default": 9 },
                "geschlecht": { "default": 1 },
                "bildung": { "default": 3 },
                "sport": { "default": 1 },
                "rauchen": { "default": 1 },
                "familienstand": { "default": 2 },
                "personen": { "default": [6] },
                "haustiere": { "default": 2 },
                "wohntyp": { "default": 1 },
                "wohngroesse": { "default": 50 },
                "wohnniveau": { "default": 2 },
                "beruf": { "default": 13 }
            }
        },
        {
            "allOf": [
                {
                    "anyOf": [
                        { "required": ["alter"] },
                        { "required": ["geburtstag"] }
                    ]
                },
                {
                    "anyOf": [
                        { "required": ["nettomonat"] },
                        { "required": ["bruttomonat"] }
                    ]
                },
                {
                    "anyOf": [
                        { "required": ["bundesland"] },
                        { "required": ["plz", "ort"] },
                        { "required": ["adresseid"] }
                    ]
                }
            ]
        },
        {
            "required": [
                "geschlecht",
                "bildung",
                "sport",
                "rauchen",
                "familienstand",
                "personen",
                "haustiere",
                "wohntyp",
                "wohngroesse",
                "wohnniveau",
                "beruf"
            ]
        }
    ]
}

Possible response status:

Status code Description
200 Success
400 Data not properly specified

Example result:

{
  "returncode": 0,
  "result": {
    "unfalleinmal": 150000,
    "unfdauerhges": 255000,
    "unfdauerhmon": 520,
    "ableben": 71000,
    "pluecke": 240,
    "nettopension": 1504.6094916667,
    "anspar1": 487.84140538719,
    "anspar2": 220.54458840454,
    "anspar3": 350.75520170271,
    "anspar4": 148.59674217299,
    "anspar5": 169.09361180068,
    "anspar6": 64.099264922145,
    "haushalt": 112000,
    "liquires": 5200
  }
}

... where the values refer to the following coverages:

response field description
unfalleinmal Coverage for one-time damage after an accident (modify home etc)
unfdauerhges Total damage in case of invalidity, summed over the rest of the expected life span spent earning
unfdauerhmon Monthly loss of income in case of invalidity
ableben Coverage for risk life insurance
pluecke net expected pension gap in current worth
nettopension net expected pension in current worth
anspar1 needed monthly saving amount to reach desired pension coverage (0.5% p.a. net returns, constant premium)
anspar2 needed monthly saving amount to reach desired pension coverage (0.5% p.a. net returns, dynamic premium)
anspar3 needed monthly saving amount to reach desired pension coverage (2.5% p.a. net returns, constant premium)
anspar4 needed monthly saving amount to reach desired pension coverage (2.5% p.a. net returns, dynamic premium)
anspar5 needed monthly saving amount to reach desired pension coverage (5.0% p.a. net returns, constant premium)
anspar6 needed monthly saving amount to reach desired pension coverage (5.0% p.a. net returns, dynmic premium)
haushalt recommended coverage for household insurance
liquires recommended saved up liquidity

POST /empfehlung


This service calculates a recommendation ranking for insurance products, based on the risk impact evaluations as in /riskprio. The ranking is discrete, ranging from 3 indicating 'absolutely recommended' down to 0 indicating 'not recommended' (e.g. pet insurance for persons without pets). As mentioned in the introduction, there may well be the need to adjust the product universe during our mutual project. Refer to the additional input schema to find out about required parameters and their dependencies.

Additional input schema:

{
    "allOf": [
        { "$ref": "https://api.riskine.com/schema/riskine.schema.json" },
        {
            "allOf": [
                {
                    "anyOf": [
                        { "required": ["alter"] },
                        { "required": ["geburtstag"] }
                    ]
                },
                {
                    "anyOf": [
                        { "required": ["nettomonat"] },
                        { "required": ["bruttomonat"] }
                    ]
                },
                {
                    "anyOf": [
                        { "required": ["bundesland"] },
                        { "required": ["plz", "ort"] },
                        { "required": ["plz"] },
                        { "required": ["adresseid"] },
                        { "required": ["de_region"] },
                        { "required": ["de_postcode"] },
                        { "required": ["ch_region"] },
                        { "required": ["ch_postcode"] }
                    ]
                }
            ]
        },
        {
            "properties": {
                "wohngroesse": { "default": 50 },
                "wohnniveau": { "default": 2 }
            }
        },
        {
            "required": [
                "geschlecht",
                "bildung",
                "sport",
                "rauchen",
                "familienstand",
                "personen",
                "haustiere",
                "wohntyp",
                "wohngroesse",
                "wohnniveau",
                "beruf"
            ]
        }
    ]
}

Possible response status:

Status code Description
200 Success
400 Data not properly specified

Example result:

{
  "returncode": 0,
  "result": {
    "unfall": 3,
    "haftpfl": 3,
    "grundhaftpfl": 0,
    "liquires": 2,
    "bu": 3,
    "kfzhaftpfl": 0,
    "hundehaftpfl": 3,
    "vorsorge": 2,
    "eigenheim": 0,
    "ableben": 3,
    "kfzkasko": 0,
    "haushalt": 3,
    "recht": 1,
    "heilbeh": 1,
    "khtaggeld": 1,
    "khsonderkl": 1,
    "kfzrecht": 0,
    "reise": 1,
    "pflege": 1
  }
}

Product list for Austria adjusted jointly during project together with the customer

product description
ableben Term life insurance
heilbeh Supplementary health insurance (ambulant)
liquires Liquidity reserve
bu Disability insurance
eigenheim Home (homeowners insurance)
grundhaftpfl Landowner liability
haushalt Household insurance
tierhaftpfl Livestock/pet owner liability
kfzhaftpfl Motor vehicle liability
kfzkasko Motor vehicle own-damage
kfzrecht Motor legal protection
khsonderkl Supplementary health insurance (for hospital)
khtaggeld Daily benefits insurance
pflege Nursing care insurance
haftpfl Private liability
recht Legal protection
reise Travel insurance
unfall Accident insurance
vorsorge Private pension insurance

Product list for Germany adjusted jointly during project together with the customer

product description
unfall Accident insurance
haftpfl Private liability
grundhaftpfl Landowner liability
buerwerbsunf Disability insurance
kfzhaftpfl Motor vehicle liability
tierhaftpfl Livestock/pet owner liability
leben Life insurance 3rd column
eigenheim Home (homeowners insurance)
ableben Term life insurance
kfzkasko Motor vehicle own-damage
haushalt Household insurance
recht Legal protection
khtaggeld Daily benefits insurance
reise Travel insurance
pflege Nursing care insurance
privatekranken Private health insurance
kzusatz Supplementary health insurance
riesterrente Riester pension
ruruprente Rürup pension
bauherrenhp Builders liability
gewaesserhp Water damage liability
gesetzkranken Statutory health insurance
kinderinval Children invalidity insurance
begraebnisk Funeral expense insurance

Product list for Switzerland adjusted jointly during project together with the customer (in progress, coming soon)

POST /nextq


Service to dynamically supply the content of a customer journey / dynamic question or decision tree. This service delivers a list of all parameters (and therefore next questions to be asked) in a schematic/descriptive way as well as meta-information like ordering. With each user interaction, the list is adapted and grows as the end user is guided through a smart process that is supposed to extract information in an optimal way.

Features are

This service is intended be the main access point for all of the dynamic front end applications using the riskine API. The resource structure supports integration with different front-ends, e.g. sequential questionnaire, forms, chatbot views and voice.

Customization for institutional clients includes predefining the questions as well as adapting the definition format to the specific product needs. In the following, you'll find a description of the resource tags respectively the features of the API. Below, you'll find an example interaction flow.

The service needs one additional input from the client:

tag Description
path Workflow id. E.g. "main" for the entry path/initial D&N analysis (Bedarfsanalyse). All other pathes, a list of all paths will be provided for each client separately, work the same way.

The response can contain the following tags. Note that the riskine API omits redundant tags (null, false, []) in the response to reduce load:

tag Description
params Parameter list to include all parameters to be collected from the user.
type Rendering type of the control in the front-end. "radio" are radiobuttons, "multi" are multiselect buttons, "ddown" are dropdowns, "date" are date fields, "text" are freeform inputs, "inline-text" are readonly-texts, "hidden" are hidden forms and finally "group" are grouped controls which recursively contain a params tag.
validate A JSON Schema v7 to schematize the expected user answer. This always concurs with the schema of the fields in the general riskine API resource
label Textlabel to display as question text. Contains raw for raw text and, if needed md for markdown-formatted text. Also contains gluemiddle and gluelast for mapping the user's answer to a fully conversational answer. See section on Chatbot view below
required Boolean describing whether the answer is required from the user or no
pos Position in the Parameter list
schemanode If true, the list needs to be regenerated after the client has a valid answer from the user. It means that there is more than one branch in the model and the correct path is decided after this question. A new request has to be done. Only needed for sequential questionnaire
dependencynode If true, the list needs to be regenerated after the client has a valid answer from the user. It means that there is more than one branch in the model and the correct path is decided based upon this question. Only needed when the questionnaire is shown in form-style (all questions at once)
showonce If true, show this question only if the client does not yet have a valid answer from the user. This serves to minimize questions by not showing questions often asked in various different paths. Although the questions were not asked again the will remain, and not crossed out, in the path filled up already.
reset Array of parameters to be reset (deleted) after the client got a valid answer to this question. Empty in most cases.
dependencies Array of parameters. Show the question tagged with dependency only when there is a valid answers from the user to all dependencies, otherwise hide it
booldependencies Array of other questions. Tagged question should only be shown when all questions in the array are answered with a 1
placeholder Text to be shown as a normal placeholder in freeform questions
override Text to be shown as a normal placeholder in freeform questions
options Will be given for radio, multi, and ddown questions. Contains the possible options complete with a label, longlabel (see Chatbot view for more), value (which is the value the riskine API expects back) ,exclusive and an alwaysselected tag. The exclusive tag will always be true for radio questions, but can vary for multi questions
exclusive Always true for radio options. For multi options, can be either true (deselect all other options), "<identifier>" (deselect all other options with the same identifier) or false (don't deselect any other options)
alwaysselected Tag for options. If true, the option should always be selected and the user should be unable to deselect the option
infotext Contains a textlabel for either smallprint under the question title or tooltip text etc.
fieldwrap Contains a textlabel to wrap around the question field where a $ delimits the field position in the text
suggest a value to be prefilled in case there is no answer from the user yet. Always a valid JSON according to the validate schema of the question
format Contains format instructions. E.g. "money" for integers that need to be displayed in currency style
autofill Servicehook for asking into a domain. This tag is a JSON containing a micro servicedescription to get the needed suggestions from the riskine API
fillother Servicehook for filling other fields with calculation results. This tag is a JSON containing a micro servicedescription to get the needed suggestions from the riskine API

Here is how you interact with the API:

// first request - gives back the initial question list
{
    "path": "main"
}

with the response

// first response - shown until the first question with schemanode: true
// Objects under "params" are the questions respectively question groups (e.g. "geburtstag", "geschlecht")
// the client should sequentially run through all the questions in the list until it arrives at the question "kfztyp"
// "kfztyp" contains the tag "schemanode": true, which means that immediately after the question, there is a potential branch in the question tree
// after the user gives a validated answer to "kfztyp", the client needs to request /next again with all the information it collected from the user
// questions contain the tag "validate" - this is a JSON schema (v6) that defines the data field
// request is shown below this response...
{
    "returncode": 0,
    "result": {
        "paramcount": 0,
        "params": {
            "geschlecht": {
                "type": "radio",
                "label": {
                    "raw": "Sind Sie männlich oder weiblich?"
                },
                "options": [
                    {
                        "label": "männlich",
                        "exclusive": "true",
                        "value": 1
                    },
                    {
                        "label": "weiblich",
                        "exclusive": "true",
                        "value": 2
                    }
                ],
                "validate": {
                    "enum": [
                        1,
                        2
                    ],
                    "type": "integer"
                },
                "showonce": true,
                "required": true,
                "pos": 1
            },
            "geburtstag": {
                "type": "date",
                "label": {
                    "raw": "Wann sind Sie geboren? (Mindestalter 16 Jahre)"
                },
                "validate": {
                    "type": "string",
                    "pattern": "\\d\\d\\d\\d-\\d\\d-\\d\\d",
                    "min-date": "-120Y",
                    "max-date": "-16Y"
                },
                "showonce": true,
                "required": true,
                "pos": 2
            },
            "sport": {
                "type": "radio",
                "label": {
                    "raw": "Machen Sie Sport?"
                },
                "options": [
                    {
                        "label": "ja, gerne und regelmäßig",
                        "exclusive": "true",
                        "value": 1
                    },
                    {
                        "label": "ja, aber unregelmäßig",
                        "exclusive": "true",
                        "value": 2
                    },
                    {
                        "label": "nein",
                        "exclusive": "true",
                        "value": 3
                    }
                ],
                "validate": {
                    "enum": [
                        1,
                        2,
                        3
                    ],
                    "type": "integer"
                },
                "required": true,
                "pos": 3
            },
            "rauchen": {
                "type": "radio",
                "label": {
                    "raw": "Rauchen Sie?"
                },
                "options": [
                    {
                        "label": "ja",
                        "exclusive": "true",
                        "value": 1
                    },
                    {
                        "label": "gelegentlich",
                        "exclusive": "true",
                        "value": 2
                    },
                    {
                        "label": "nein",
                        "exclusive": "true",
                        "value": 3
                    },
                    {
                        "label": "will ich nicht sagen",
                        "exclusive": "true",
                        "value": 4
                    }
                ],
                "validate": {
                    "enum": [
                        1,
                        2,
                        3,
                        4
                    ],
                    "type": "integer"
                },
                "required": true,
                "pos": 4
            },
            "familienstand": {
                "type": "radio",
                "label": {
                    "raw": "Wie ist Ihre Familiensituation?"
                },
                "options": [
                    {
                        "label": "Single/ledig",
                        "exclusive": "true",
                        "value": 1
                    },
                    {
                        "label": "Verheiratet/eingetragene Partnerschaft",
                        "exclusive": "true",
                        "value": 2
                    },
                    {
                        "label": "Geschieden",
                        "exclusive": "true",
                        "value": 3
                    },
                    {
                        "label": "Verwitwet",
                        "exclusive": "true",
                        "value": 4
                    },
                    {
                        "label": "in Partnerschaft",
                        "exclusive": "true",
                        "value": 5
                    }
                ],
                "validate": {
                    "enum": [
                        1,
                        2,
                        3,
                        4,
                        5,
                        9
                    ],
                    "type": "integer"
                },
                "required": true,
                "pos": 5
            },
            "personen": {
                "type": "multi",
                "label": {
                    "gluemiddle": ", ",
                    "raw": "Wer ist neben Ihnen noch von Ihrem Einkommen abhängig?",
                    "gluelast": " und "
                },
                "options": [
                    {
                        "label": "Partner/in",
                        "exclusive": "false",
                        "value": 1
                    },
                    {
                        "label": "1 Kind ",
                        "exclusive": "children",
                        "value": 2
                    },
                    {
                        "label": "2 Kinder",
                        "exclusive": "children",
                        "value": 3
                    },
                    {
                        "label": "3 Kinder",
                        "exclusive": "children",
                        "value": 4
                    },
                    {
                        "label": " >3 Kinder",
                        "exclusive": "children",
                        "value": 5
                    },
                    {
                        "label": "keine Personen",
                        "exclusive": "true",
                        "value": 6
                    },
                    {
                        "label": "andere Personen",
                        "exclusive": "false",
                        "value": 7
                    }
                ],
                "validate": {
                    "type": "array",
                    "minItems": 1,
                    "items": {
                        "enum": [
                            1,
                            2,
                            3,
                            4,
                            5,
                            6,
                            7
                        ],
                        "type": "integer"
                    }
                },
                "required": true,
                "pos": 6
            },
            "kfztyp": {
                "type": "multi",
                "label": {
                    "gluemiddle": ", ",
                    "raw": "Welchen KFZ-Typ besitzen Sie?",
                    "gluelast": " und "
                },
                "options": [
                    {
                        "label": "Pkw",
                        "exclusive": "false",
                        "value": "PKW"
                    },
                    {
                        "label": "Motorrad",
                        "exclusive": "false",
                        "value": "KRA"
                    },
                    {
                        "label": "Lkw",
                        "exclusive": "false",
                        "value": "LKW"
                    },
                    {
                        "label": "anderes",
                        "exclusive": "false",
                        "value": "SON"
                    },
                    {
                        "label": "kein KFZ",
                        "exclusive": "true",
                        "value": "kein"
                    }
                ],
                "validate": {
                    "type": "array",
                    "minItems": 1,
                    "items": {
                        "enum": [
                            "999",
                            "ANH",
                            "KRA",
                            "LKW",
                            "MOP",
                            "OMN",
                            "PKW",
                            "PRO",
                            "SON",
                            "ZUG",
                            "kein"
                        ],
                        "type": "string"
                    }
                },
                "required": true,
                "schemanode": true,
                "pos": 7
            },
            "haustiere": {
                "type": "radio",
                "label": {
                    "raw": "Haben Sie Haustiere?"
                },
                "options": [
                    {
                        "label": "ja, mind. einen Hund",
                        "exclusive": "true",
                        "value": 1
                    },
                    {
                        "label": "ja, andere Haustiere",
                        "exclusive": "true",
                        "value": 2
                    },
                    {
                        "label": "nein, keine Haustiere",
                        "exclusive": "true",
                        "value": 3
                    }
                ],
                "validate": {
                    "enum": [
                        1,
                        2,
                        3
                    ],
                    "type": "integer"
                },
                "required": true,
                "pos": 9
            },
            ...

the client sequentially collects all the answers from the user and then requests the question list again:

// second request
{
    "path": "main",
    "geschlecht": 1,
    "geburtstag": "1980-01-01",
    "sport": 2,
    "rauchen": 1,
    "familienstand": 1,
    "personen": [1,3],
    "kfztyp": ["PKW"]
}

with the response

// response
// the updated list comes back - see the end of the list - now the question "kfzwert" comes before the question "haustiere"
// the client should now continue to sequentially collect answers from the user until it hits a "schemanode": true question
// when the end of the list is reached and the last question doesn't contain the tag "schemanode": true, there are no more questions
{
    "returncode": 0,
    "result": {
        "paramcount": 0,
        "params": {
            "geschlecht": {
                "type": "radio",
                "label": {
                    "raw": "Sind Sie männlich oder weiblich?"
                },
                "options": [
                    {
                        "label": "männlich",
                        "exclusive": "true",
                        "value": 1
                    },
                    {
                        "label": "weiblich",
                        "exclusive": "true",
                        "value": 2
                    }
                ],
                "validate": {
                    "enum": [
                        1,
                        2
                    ],
                    "type": "integer"
                },
                "showonce": true,
                "required": true,
                "pos": 1
            },
            "geburtstag": {
                "type": "date",
                "label": {
                    "raw": "Wann sind Sie geboren? (Mindestalter 16 Jahre)"
                },
                "validate": {
                    "type": "string",
                    "pattern": "\\d\\d\\d\\d-\\d\\d-\\d\\d",
                    "min-date": "-120Y",
                    "max-date": "-16Y"
                },
                "showonce": true,
                "required": true,
                "pos": 2
            },
            "sport": {
                "type": "radio",
                "label": {
                    "raw": "Machen Sie Sport?"
                },
                "options": [
                    {
                        "label": "ja, gerne und regelmäßig",
                        "exclusive": "true",
                        "value": 1
                    },
                    {
                        "label": "ja, aber unregelmäßig",
                        "exclusive": "true",
                        "value": 2
                    },
                    {
                        "label": "nein",
                        "exclusive": "true",
                        "value": 3
                    }
                ],
                "validate": {
                    "enum": [
                        1,
                        2,
                        3
                    ],
                    "type": "integer"
                },
                "required": true,
                "pos": 3
            },
            "rauchen": {
                "type": "radio",
                "label": {
                    "raw": "Rauchen Sie?"
                },
                "options": [
                    {
                        "label": "ja",
                        "exclusive": "true",
                        "value": 1
                    },
                    {
                        "label": "gelegentlich",
                        "exclusive": "true",
                        "value": 2
                    },
                    {
                        "label": "nein",
                        "exclusive": "true",
                        "value": 3
                    },
                    {
                        "label": "will ich nicht sagen",
                        "exclusive": "true",
                        "value": 4
                    }
                ],
                "validate": {
                    "enum": [
                        1,
                        2,
                        3,
                        4
                    ],
                    "type": "integer"
                },
                "required": true,
                "pos": 4
            },
            "familienstand": {
                "type": "radio",
                "label": {
                    "raw": "Wie ist Ihre Familiensituation?"
                },
                "options": [
                    {
                        "label": "Single/ledig",
                        "exclusive": "true",
                        "value": 1
                    },
                    {
                        "label": "Verheiratet/eingetragene Partnerschaft",
                        "exclusive": "true",
                        "value": 2
                    },
                    {
                        "label": "Geschieden",
                        "exclusive": "true",
                        "value": 3
                    },
                    {
                        "label": "Verwitwet",
                        "exclusive": "true",
                        "value": 4
                    },
                    {
                        "label": "in Partnerschaft",
                        "exclusive": "true",
                        "value": 5
                    }
                ],
                "validate": {
                    "enum": [
                        1,
                        2,
                        3,
                        4,
                        5,
                        9
                    ],
                    "type": "integer"
                },
                "required": true,
                "pos": 5
            },
            "personen": {
                "type": "multi",
                "label": {
                    "gluemiddle": ", ",
                    "raw": "Wer ist neben Ihnen noch von Ihrem Einkommen abhängig?",
                    "gluelast": " und "
                },
                "options": [
                    {
                        "label": "Partner/in",
                        "exclusive": "false",
                        "value": 1
                    },
                    {
                        "label": "1 Kind ",
                        "exclusive": "children",
                        "value": 2
                    },
                    {
                        "label": "2 Kinder",
                        "exclusive": "children",
                        "value": 3
                    },
                    {
                        "label": "3 Kinder",
                        "exclusive": "children",
                        "value": 4
                    },
                    {
                        "label": " >3 Kinder",
                        "exclusive": "children",
                        "value": 5
                    },
                    {
                        "label": "keine Personen",
                        "exclusive": "true",
                        "value": 6
                    },
                    {
                        "label": "andere Personen",
                        "exclusive": "false",
                        "value": 7
                    }
                ],
                "validate": {
                    "type": "array",
                    "minItems": 1,
                    "items": {
                        "enum": [
                            1,
                            2,
                            3,
                            4,
                            5,
                            6,
                            7
                        ],
                        "type": "integer"
                    }
                },
                "required": true,
                "pos": 6
            },
            "kfztyp": {
                "type": "multi",
                "label": {
                    "gluemiddle": ", ",
                    "raw": "Welchen KFZ-Typ besitzen Sie?",
                    "gluelast": " und "
                },
                "options": [
                    {
                        "label": "Pkw",
                        "exclusive": "false",
                        "value": "PKW"
                    },
                    {
                        "label": "Motorrad",
                        "exclusive": "false",
                        "value": "KRA"
                    },
                    {
                        "label": "Lkw",
                        "exclusive": "false",
                        "value": "LKW"
                    },
                    {
                        "label": "anderes",
                        "exclusive": "false",
                        "value": "SON"
                    },
                    {
                        "label": "kein KFZ",
                        "exclusive": "true",
                        "value": "kein"
                    }
                ],
                "validate": {
                    "type": "array",
                    "minItems": 1,
                    "items": {
                        "enum": [
                            "999",
                            "ANH",
                            "KRA",
                            "LKW",
                            "MOP",
                            "OMN",
                            "PKW",
                            "PRO",
                            "SON",
                            "ZUG",
                            "kein"
                        ],
                        "type": "string"
                    }
                },
                "required": true,
                "schemanode": true,
                "pos": 7
            },
            "kfzwert": {
                "type": "radio",
                "label": {
                    "raw": "Wieviel ist/sind Ihr/e KFZ derzeit wert?"
                },
                "options": [
                    {
                        "label": "weniger als 5.000 €",
                        "exclusive": "true",
                        "value": 5000
                    },
                    {
                        "label": "bis 10.000 €",
                        "exclusive": "true",
                        "value": 10000
                    },
                    {
                        "label": "bis 20.000 €",
                        "exclusive": "true",
                        "value": 20000
                    },
                    {
                        "label": "bis 60.000 €",
                        "exclusive": "true",
                        "value": 60000
                    },
                    {
                        "label": "mehr als 60.000 €",
                        "exclusive": "true",
                        "value": 150000
                    }
                ],
                "validate": {
                    "enum": [
                        5000,
                        10000,
                        20000,
                        60000,
                        150000
                    ],
                    "type": "integer"
                },
                "required": true,
                "pos": 8
            },
            "haustiere": {
                "type": "radio",
                "label": {
                    "raw": "Haben Sie Haustiere?"
                },
                "options": [
                    {
                        "label": "ja, mind. einen Hund",
                        "exclusive": "true",
                        "value": 1
                    },
                    {
                        "label": "ja, andere Haustiere",
                        "exclusive": "true",
                        "value": 2
                    },
                    {
                        "label": "nein, keine Haustiere",
                        "exclusive": "true",
                        "value": 3
                    }
                ],
                "validate": {
                    "enum": [
                        1,
                        2,
                        3
                    ],
                    "type": "integer"
                },
                "required": true,
                "pos": 9
            },
            ...

Chatbot view


To support chatbot-like front-ends we include additional textlabels that serve to mimic conversation flow, e.g. when asked the gender, user picks "male" yet the chatbot view prints out "I am male". This textcontent also varies based on rules and different user inputs. The functionality is achieved by tagging questions and options with longlabels as described in the following table:

tag desription example
longlabel inside textlabel of freeform question Should be filled in with the user's answer at the $ "I was born on the $" -> "I was born on the 22.10.1989"
longlabel inside radio option Complete answer - can simply be printed out label: "yes", longlabel: "Yes please, I need additional coverage for my second motorcycle"
longlabel inside multi option To be used with the gluemiddle and gluelast parameters given at question level. The long answer needs to be built like first answer + gluemiddle + second answer + gluemiddle + ... + gluelast + last answer first answer longlabel: "My partner", second answer longlabel: "3 kids", Third answer longlabel: "other persons", gluemiddle: ", ", gluelast: "and" -> "My partner, 3 kids and other persons"
gluemiddle inside multi question textlabel See above first answer longlabel: "My partner", second answer longlabel: "3 kids", Third answer longlabel: "other persons", gluemiddle: ", ", gluelast: "and" -> "My partner, 3 kids and other persons"
gluelast inside multi question textlabel See above first answer longlabel: "My partner", second answer longlabel: "3 kids", Third answer longlabel: "other persons", gluemiddle: ", ", gluelast: "and" -> "My partner, 3 kids and other persons"

POST /pathresults


This service is intended to be used after all the user answers in a path (productgroup) were collected to summarize the advisory process. The service response contains categories, productgroups, products, tariffs, reasons for the recommendations. The specific content is customized for each of our clients.

A pathresult is hierarchically structured as follows:

category

Categories can be used to sort product groups for e.g. frontends or reports into logical groups for your customers. A category contains the following fields:

type description examples
name name of the category "Life and Living", "Health", "Mobility"
id ID of the category "lifeliving"
productgroups a productgroup contains reasons and optional modules

productgroups

Product groups are typically the results of the demand and needs analysis and are most of the times identical with a path. A productgroup contains the following fields:

type description examples
name name of the product "Accident Insurance", "Car Insurance", ""Livestock/pet owner liability"
id ID of the propduct group "animalliablity"
products products of the insurance

products

Product are typically the results of a path (e.g. path accident insurance), would lead to a family accident insurance. Products can have specific tariffs as attributes. A product contains the following fields

type description example
name name of the product "Family accident insurance","cat insurance"
id ID of the module "tierstd"
reasons list of all reasons of the product "Covers any damages caused by your cat(s)."
modules a specification of one product. Modules usually contain different components.
tariff (optional) Reference to a specific tariff id UF1200

module

Modules are uses to describe either the insured subject/object or the coverages. A module contains the following fields

type description example
name name of the module "Dog Liability Insurance"
id ID of the module "hund"
parameter contains the parsed label "Date of birth dog: 01.01.2010"

Example request:

{
  "country":"ch",
  "path":"pathtier",
  "ch_pets[0]":1,
  "ch_dog_birth[0]":"2010-01-01",
  "ch_pets_looper[0]":1,
  "ch_pets[1]":2,
  "ch_cat_birth[1]":"2012-04-02",
  "ch_pets_looper[1]":2,
  "ch_startdate_tier":"2018-01-01",
  "ch_comments_tier":"Insurance for cat need to be for 3 cats."
}

Example result:

{
    "returncode": 0,
    "result": {
        "categories": [
            {
                "name": "Life and Living",
                "productgroups": [
                    {
                        "name": "Livestock/pet owner liability",
                        "id": "tier",
                        "products": [
                            {
                                "name": "Animal insurance",
                                "id": "tierstd",
                                "modules": [
                                    {
                                        "name": "Dog Liability Insurance",
                                        "id": "hund",
                                        "parameter": [
                                            {
                                                "parsedlabel": "Date of birth dog: 01.01.2010"
                                            }
                                        ]
                                    },
                                    {
                                        "name": "Cat Liability Insurance",
                                        "id": "katze",
                                        "parameter": [
                                            {
                                                "parsedlabel": "Date of birth cat: 02.04.2012"
                                            }
                                        ]
                                    }
                                ],
                                "reasons": [
                                    "Covers any damages caused by your dog(s).",
                                    "Covers any damages caused by your cat(s).",
                                    "Desired start of insurance: 01.01.2018",
                                    "Comments: Insurance for cat needs to be for 3 cats."
                                ]
                            }
                        ]
                    }
                ],
                "id": "lifeliving"
            }
        ]
    }
}

POST /pensionsrechner


Can be used to calculate

Description of response fields:

Field description
pluecke net expected pension gap in current worth
nettopension net expected pension in current worth
anspar1 needed monthly saving amount to reach desired pension coverage (0.5% p.a. net returns, constant premium)
anspar2 needed monthly saving amount to reach desired pension coverage (0.5% p.a. net returns, dynamic premium)
anspar3 needed monthly saving amount to reach desired pension coverage (2.5% p.a. net returns, constant premium)
anspar4 needed monthly saving amount to reach desired pension coverage (2.5% p.a. net returns, dynamic premium)
anspar5 needed monthly saving amount to reach desired pension coverage (5.0% p.a. net returns, constant premium)
anspar6 needed monthly saving amount to reach desired pension coverage (5.0% p.a. net returns, dynmic premium)

Example response:

{
    "returncode": 0,
    "result": {
        "pluecke": 360,
        "nettopension": 1242.0035797101,
        "anspar1": 732.21307475539,
        "anspar2": 510.07134052797,
        "anspar3": 627.15320899246,
        "anspar4": 429.78252787306,
        "anspar5": 453.62504040364,
        "anspar6": 301.38727172705
    }
}

POST /recommendationdetails


Shows the results of the general demands and needs analysis for private clients. The results contain per productgroup/path a description text including the calculated amount of coverage and additional, optional, info text

type description example
description description of the details (can be empty) "The insured sum should correlate with your car's value."
id path information "kfzkasko"
title title of recommendation "Motor vehicle own-damage"
info additional information of the details (can be empty) null

Example request:

{
    "country":"de",
    "path":"pathvorsorge"
}

Example result:

{
    "returncode": 0,
    "result": [
        {
            "description": null,
            "id": "kinderinval",
            "title": "Children invalidity insurance",
            "info": "Check exactly when your insurance company renders which services. In addition to a lump sum, if affordable, a lifelong pension is desirable."
        },
        {
            "description": null,
            "id": "begraebnisk",
            "title": "Funeral expense insurance",
            "info": "Please note that the contributions are very high at the age of 65 at the beginning of the contract. Check if subareas are already included in your term life insurance."
        }
    ]
}

POST /riskprio


This service uses the core riskine algorithm to calculate impact evaluations for the 8 life risks. On a discrete scale from 0 to 6, each of the 8 life risks is assigned a ranking or prioritization based upon their respective financial impacts. As in the riskine analysis, this can be used complementary to the life risk probability values. For example, death may have a seemingly insignificant probability in younger years, yet the financial impact can be enormous for income-dependent persons. Thus, although the risk probability values may be low, this service still indicates a possible danger and need to insure. Refer to the additional input schema to find out about required parameters and their dependencies.

Additional input schema:

{
    "allOf": [
        { "$ref": "https://api.riskine.com/schema/riskine.schema.json" },
        {
            "properties": {
                "alter": { "default": 35 },
                "geschlecht": { "default": 2 },
                "bildung": { "default": 3 },
                "bundesland": { "default": 9 },
                "sport": { "default": 2 },
                "rauchen": { "default": 2 },
                "familienstand": { "default": 1 },
                "personen": { "default": [6] },
                "kfztyp": { "default": ["kein"] },
                "kfzwert": { "default": 10000 },
                "haustiere": { "default": 3 },
                "wohntyp": { "default": 1 },
                "wohngroesse": { "default": 100 },
                "wohnniveau": { "default": 2 },
                "beruf": { "default": 1 },
                "nettomonat": { "default": 1700 }
            }
        },
        {
            "allOf": [
                {
                    "anyOf": [
                        { "required": ["alter"] },
                        { "required": ["geburtstag"] }
                    ]
                },
                {
                    "anyOf": [
                        { "required": ["nettomonat"] },
                        { "required": ["bruttomonat"] }
                    ]
                },
                {
                    "anyOf": [
                        { "required": ["bundesland"] },
                        { "required": ["plz", "ort"] },
                        { "required": ["adresseid"] }
                    ]
                }
            ]
        },
        {
            "required": [
                "geschlecht",
                "bildung",
                "sport",
                "rauchen",
                "familienstand",
                "personen",
                "haustiere",
                "wohntyp",
                "wohngroesse",
                "wohnniveau",
                "beruf"
            ]
        }
    ]
}

Possible response status:

Status code Description
200 Success
400 Data not properly specified

Example result:

{
  "returncode": 0,
  "result": {
    "erkrankung": {
      "total": 6,
      "vverl": 2,
      "einkverl": 6,
      "leist": 2
    },
    "unfall": {
      "total": 6,
      "vverl": 3,
      "einkverl": 6,
      "leist": 3
    },
    "altersarmut": {
      "total": 3,
      "vverl": 0,
      "einkverl": 5,
      "leist": 2
    },
    "natkat": {
      "total": 4,
      "vverl": 4,
      "einkverl": 0,
      "leist": 0
    },
    "arbeitsplatzverlust": {
      "total": 1,
      "vverl": 0,
      "einkverl": 2,
      "leist": 1
    },
    "kriminalitaet": {
      "total": 2,
      "vverl": 2,
      "einkverl": 0,
      "leist": 0
    },
    "tod": {
      "total": 6,
      "vverl": 1,
      "einkverl": 6,
      "leist": 1
    },
    "recht": {
      "total": 1,
      "vverl": 1,
      "einkverl": 0,
      "leist": 0
    }
  }
}

POST /risks


This service calculates the yearly probabilities for sufferig from one of 8 life risks. It accepts any input from the empty object {} to the fully specified resource. When not specified, a parameter will range over all possible values. For example, posting the empty object {} will result in the average probability for all of Austria. As demonstrated in the riskine analysis, this could be used in a customer journey to start from the average probabilities and individualize them step-by-step as the user specifies their parameters.

The additional scale parameter indicates a maximum scale value against which all the risks fit nicely in a bars UI, e.g.

Additional input schema:

{}

Possible response status:

Status code Description
200 Success
400 Data not properly specified

Example result:

{
  "returncode": 0,
  "result": {
    "erkrankung": 0.11696953107391739,
    "unfall": 0.23388260206963,
    "altersarmut": 0.0865,
    "natkat": 0.15622024346942,
    "arbeitsplatzverlust": 0.020535087725331,
    "kriminalitaet": 0.029205914710566,
    "tod": 0.0008179974782330868,
    "recht": 0.0774564608542615,
    "scale": 0.33411800295662
  }
}

POST /subrisks


This service is the big brother of the service /risks. It takes into account the full resource (although not every parameter needs to be specified) and calculates yearly probabilities for the 8 life risks as well as the constituting subrisks and moreover various damage numbers like expected natural disaster damage or expected loss in income at retirement. Refer to the additional input schema to find out about required parameters and their dependencies.

The additional scale parameter indicates a maximum scale value against which all the risks fit nicely in a bars UI, e.g.

Additional input schema:

{
    "allOf": [
        { "$ref": "https://api.riskine.com/schema/riskine.schema.json#" },
        {
            "allOf": [
                {
                    "anyOf": [
                        { "required": ["alter"] },
                        { "required": ["geburtstag"] }
                    ]
                },
                {
                    "anyOf": [
                        { "required": ["nettomonat"] },
                        { "required": ["bruttomonat"] }
                    ]
                },
                {
                    "anyOf": [
                        { "required": ["bundesland"] },
                        { "required": ["plz", "ort"] },
                        { "required": ["adresseid"] }
                    ]
                }
            ]
        },
        {
            "properties": {
                "wohngroesse": { "default": 50 },
                "wohnniveau": { "default": 2 }
            }
        },
        {
            "required": [
                "geschlecht",
                "bildung",
                "sport",
                "rauchen",
                "familienstand",
                "personen",
                "haustiere",
                "wohntyp",
                "wohngroesse",
                "wohnniveau",
                "beruf"
            ]
        }
    ]
}

Possible response status:

Status code Description
200 Success
400 Data not properly specified

Example result:

{
  "returncode": 0,
  "result": {
    "erkrankung": {
      "gesamt": 0.11696953107391739,
      "geszust": 0.01,
      "chron": 0.1341503833904,
      "pflege": 0.008917912389738724,
      "kstand": 9.20000,
      "khausaufenth": 4.10000,
      "invalid": 0.0154,
      "pflegest": 120.0000,
      "topdiagn": {
        "ws1": 17.6748,
        "ws2": 14.8994,
        "ws3": 14.8994,
        "b1": "Psychische und Verhaltensstörungen",
        "b2": "Krankheiten des Verdauungssystems",
        "b3": "Krankheiten des Atmungssystems"
      },
      "topchron": {
        "ws1": 29.7521,
        "ws2": 8.5399,
        "ws3": 4.4077,
        "b1": "Allergien, wie allergischer Schnupfen, Heuschnupfen, allergische Reaktionen der Augen oder der Haut (Dermatitis), Lebensmittelallergie oder andere Allergien (ausgenommen allergisches Asthma)",
        "b2": "Chronische Kreuzschmerzen oder ein anderes chronisches Rückenleiden",
        "b3": "Asthma (einschließlich allergisches Asthma)"
      }
    },
    "unfall": {
      "gesamt": 0.23020098530616,
      "arbeit": 0.10110999925472,
      "heim": 0.043434171812098854,
      "sport": 0.09141982994441644,
      "verkehr": 0.014645089612629558,
      "krankenst": 20,
      "krankenh": 5.00000,
      "stationaer": 22,
      "invalide": 2
    },
    "altersarmut": {
      "gesamt": 0.0865,
      "plueckenormpct": 0.1395593791401,
      "plueckenormeur": 244.04050833333,
      "plueckekarrpct": 0.37185204542172,
      "plueckekarreur": 650.23907922669,
      "plueckeuntpct": 0.27122549299936,
      "plueckeunteur": 474.27845833333
    },
    "natkat": {
      "gesamt": 0.16273318234449,
      "hagel": 0.06630000,
      "hochw": 0.0001,
      "sturm": 0.09620000,
      "brand": 0.0082,
      "leitungsw": 0.06800000,
      "dambrand": 11184,
      "damhagel": 3000,
      "damhw": 10000,
      "damsturmkfz": 3000,
      "damsturmheim": 1500,
      "damleitungsw": 2000
    },
    "arbeitsplatzverlust": {
      "gesamt": 0.020535087725331,
      "arblgkeit": 0.020535087725331254,
      "insolvenz": 0,
      "arblgeldpct": 0.45
    },
    "kriminalitaet": {
      "gesamt": 0.044617304193057,
      "kfzeinbr": 0.012969463180097063,
      "kfzdiebst": 0,
      "einbruch": 0,
      "person": 0.03206368985799091,
      "dameinbruch": 2200
    },
    "tod": {
      "gesamt": 0.0008179974782330868,
      "krankheit": 0.00022194002675898815,
      "krim": 1e-7,
      "selbstm": 0.0002,
      "unfall": 0.0004624184241619803,
      "wipenseur": 0,
      "wipenspct": 0,
      "wapenseur": 327.29,
      "wapenspct": 0.18716724330198
    },
    "recht": {
      "gesamt": 0.0899710313314454,
      "verlsch": 0.0092,
      "familie": 0.04691212,
      "arbeit": 0.0083,
      "mahnung": 0.0765,
      "verkehr": 0,
      "miete": 0.0325
    },
    "scale": 0.32885855043738
  }
}

POST /ucheckempfehlung


This service calculates a recommendation ranking for corporate insurance products, based on the risk impact evaluations and regulatory requirements. The ranking is discrete, ranging from 3 indicating 'absolutely recommended' down to 0 indicating 'not recommended' (e.g. building insurance for businesses without an owned building). As mentioned in the introduction, there may well be the need to adjust the product universe during our mutual project. Refer to the additional input schema to find out about required parameters and their dependencies.

Possible response status:

Status code Description
200 Success
400 Data not properly specified

Example request:

{
    "branche": "A1",
    "mitarbeiter": 20,
    "cybereinstieg": [3],
    "besitztum": [1,2,3,4,5]
}

Example result:

{
    "returncode": 0,
    "result": {
        "urecht": 2,
        "ubuperson": 1,
        "uveranstalterhp": 1,
        "udo": 1,
        "ureise": 1,
        "ugunfall": 2,
        "ugkranken": 2,
        "ukfz": 3,
        "umaschinen": 2,
        "umaschinenbu": 2,
        "uelektro": 2,
        "ugeb": 3,
        "uinhalt": 1,
        "ucyber": 3,
        "uvorsorgema": 1,
        "uvorsorgesess": 1
    }
}

POST /ucheckriskprio


This service returns an indication which parameter in the general demands and needs analysis for corporate clients has an impact on which risk category.

Possible response status:

Status code Description
200 Success
400 Data not properly specified

Example request:

{
    "qrel": "branche"
}

Example result:

{
    "returncode": 0,
    "result": {
        "fragenid": "branche",
        "uperson": 1,
        "usachwerte": 1,
        "ufinanzielle": 1
    }
}

Supporting Services


POST /adresse


This service is used to validate an address data set against the riskine adress database. The service will return an array of matches from the database including an ID. It is intended to be used as a pre-validation of address parameters prior to using the other services. As the riskine algorithm takes into account elementary risk on a GPS-exact basis, posting validated adresses is important for exact calculation. Once matched, the ID adresseid can be used to quickly match the adress in the future. The ID is the same across all services.

The /adresse service was designed with the consideration in mind that every client may have addresses of their users which are incomplete, contain typos or are generally written down in a non-standard way. Using this service, clients of the riskine API could also implement validation routines to prompt their users with suggestions of correct addresses during the customer journey (As in the riskine analysis).

There is of course a more generic and less-imposing way to match a users address, and the service is currently undergoing development.

Note a few things about usage:

Refer to the additional input schema to find out about required parameters and their dependencies.

Additional input schema:

{
    "allOf": [
        { "$ref": "https://api.riskine.com/schema/riskine.schema.json" },
        {
            "anyOf": [
                { "required": ["adresseid"] },
                { "required": ["plz"] }
            ]
        }
    ]
}

Possible response status:

Status code Description
200 Success
400 Data not properly specified

Example result:

{
  "returncode": 0,
  "result": [
    {
      "id": 2303328303,
      "bundesland": "9",
      "plz": "1100",
      "ort": "Wien",
      "strassenname": "Alfred-Stix-Platz",
      "hausnummer": "1"
    },
    {
      "id": 2303393839,
      "bundesland": "9",
      "plz": "1100",
      "ort": "Wien",
      "strassenname": "Alfred-Stix-Platz",
      "hausnummer": "2"
    },
    {
      "id": 2303459375,
      "bundesland": "9",
      "plz": "1100",
      "ort": "Wien",
      "strassenname": "Alfred-Stix-Platz",
      "hausnummer": "3"
    },
    {
      "id": 1381957683,
      "bundesland": "9",
      "plz": "1100",
      "ort": "Wien",
      "strassenname": "Alfred-Stix-Platz",
      "hausnummer": null
    }
  ]
}

POST /branchenliste


Possible response status:

Status code Description
200 Success
400 Data not properly specified

Example request:

{
    "branche": "kernbre"
}

Example result:

{
    "returncode": 0,
    "result": [
        {
            "edvcode": "C2446",
            "branche": "Aufbereitung v. Kernbrennstoffen"
        }
    ]
}

POST /berufsliste


Possible response status:

Status code Description
200 Success
400 Data not properly specified

Example request:

{
    "berufsliste": "arz"
}

Example result:

{
    "returncode": 0,
    "result": [
        {
            "id": 22,
            "berufe": "Arzt (außer Chirurg und Notarzt)"
        },
        {
            "id": 23,
            "berufe": "Arzthelfer/in"
        }
    ]
}

POST /bruttonetto


This service serves as a gross/net calculator. Given a job description and either net monthly or gross monthly income, this calculates the missing value in accordance with the Austrian Law. The service exposes the same calculator used by the riskine algorithm interally. Refer to the additional input schema to find out about required parameters and their dependencies.

Additional input schema:

{
    "allOf": [
        { "$ref": "https://api.riskine.com/schema/riskine.schema.json" },
        {
            "anyOf": [
                { "required": ["nettomonat"] },
                { "required": ["bruttomonat"] }
            ]
        },
        { "required": [ "beruf" ] }
    ]
}

Possible response status:

Status code Description
200 Success
400 Data not properly specified

Example result:

{
  "returncode": 0,
  "result": {
    "brutto": 2500,
    "netto": 1748.65
  }
}

POST /cards?area=:questionarea


The service cards loads risk related pictures out of a database. The parameter area specifies the question, for which the images are requested. If the question is within a group, area would be set with the groupname of this group, otherwise with the paramname the question. Possible format values are base64, svg and url describing the data value.

Url parameter

Required:
questionarea = [string]
example: questionarea = branche

Possible response status:

Status code Description
200 Success
400 Data not properly specified

Example request:

{
    "branche": "224",
    "besitztum": [1, 2, 3, 4, 5, 6, 7]
}

Example result:

[
    {
        "id": "gastronomy",
        "title": "Gastronomie",
        "infotext": "",
        "risk": "usachwerte",
        "image": {
            "data": "/9j/4AAQSk...",
            "format": "base64"
        },
        "mediatype": "jpg"
    }
]

POST /carpower


Calculates PS from kW and vice versa.

Possible response status:

Status code Description
200 Success
400 Data not properly specified

Example request:

{
    "unit_kw": 999
}

Example result:

{
    "returncode": 0,
    "result": {
        "unit_ps": 1358.26,
        "unit_kw": 999
    }
}

GET /edges/{workflowname}


This service can be used to create a visualisation of a given workflow. Returns all edges relevant vor the visualisation.

Possible response status:

Status code Description
200 Success

Example request:

riskine.com/edges/pension-insurance

Example result:

{
    "returncode": 0,
    "result": [
          {
             "data": {
                 "source": "e5187660-9cc5-4958-9474-ef5692902b5a",
                 "label": "BEFORE",
                 "annotation": [
                     "customer is over 18 years of age"
                 ],
                 "id": "a8d669c1-05d9-430c-bc95-e64d69dafa77",
                 "nodegroup": "",
                 "target": "c4da6bc5-aeca-4380-bbc7-4c987256a950"
             },
             "classes": "before"
         },
         {
             "data": {
                 "source": "b5d89912-f7b3-414f-bbd3-343054e9c9ee",
                 "label": "OPTION",
                 "id": "cf352540-f2bc-417d-aabe-03ab28e89785",
                 "nodegroup": "b5d89912-f7b3-414f-bbd3-343054e9c9ee",
                 "target": "5d3723fc-6303-426c-83a3-fb4ae7e19d00"
             },
             "classes": "option"
         },
         {
             "data": {
                 "id": "66da907f-e521-4f8c-b222-463f850c1fdc",
                 "source": "2ce440d1-5b33-4691-9dba-a0eba9c17ceb",
                 "target": "3cf331b8-a7ad-4627-9170-02fc9360e09f",
                 "label": "RECOMMEND"
             },
             "classes": "recommend"
         }
    ]
}

(The rest of the result was omitted)

POST /hwrisk


Calculates and returns statistical risk of flood in terms of yearly probability. Needs Lat and Lon coordinates.

Possible response status:

Status code Description
200 Success
400 Data not properly specified

Example request:

{
    "lon": 16.65939,
    "lat": 47.89328
}

Example result:

{
    "returncode": 0,
    "result": {
        "hochwasserrisiko": 0.033333
    }
}

POST /markenlisteauto


Possible response status:

Status code Description
200 Success
400 Data not properly specified

Example request:

{
    "automarke": "la"
}

Example result:

{
    "returncode": 0,
    "result": [
        {
            "id": 8,
            "automarke": "Cadillac"
        },
        {
            "id": 32,
            "automarke": "Lada"
        },
        {
            "id": 33,
            "automarke": "Lamborghini"
        },
        {
            "id": 34,
            "automarke": "Lancia"
        },
        {
            "id": 35,
            "automarke": "Land Rover"
        },
        {
            "id": 43,
            "automarke": "McLaren"
        },
        {
            "id": 66,
            "automarke": "Tesla"
        }
    ]
}

POST /markenlistemotorrad


Possible response status:

Status code Description
200 Success
400 Data not properly specified

Example request:

{
    "motorradmarke": "su"
}

Example result:

{
    "returncode": 0,
    "result": [
        {
            "id": 50,
            "motorradmarke": "Hsun"
        },
        {
            "id": 53,
            "motorradmarke": "Hyosung"
        },
        {
            "id": 105,
            "motorradmarke": "Suzuki"
        }
    ]
}

POST /nationalities


Returns a lists of countries matching the search term.

Possible response status:

Status code Description
200 Success
400 Data not properly specified

Example request:

{
    "country": "united"
}

Example result:

{
    "returncode": 0,
    "result": [
        {
            "iso_code": "ARE",
            "country": "United Arab Emirates"
        },
        {
            "iso_code": "GBR",
            "country": "United Kingdom (UK)"
        },
        {
            "iso_code": "USA",
            "country": "United States of America"
        }
    ]
}

GET /nodes/{workflowname}


This service can be used to create a visualisation of a given workflow. Returns all nodes relevant vor the visualisation.

Possible response status:

Status code Description
200 Success

Example request:

riskine.com/nodes/pension-insurance

Example result:

{
    "returncode": 0,
    "result": [
         {
                    "data": {
                        "id": "156cb3bb-e02c-42ab-942d-e4be8711e2cc",
                        "textlabel": "Vorname",
                        "nodegroup": "",
                        "parent": "01f88390-a7ef-4003-b08d-09e80d4ba8aa"
                    },
                    "classes": "question"
        },
        {
                    "data": {
                        "id": "73ac5b4f-fe07-4bc1-aff1-95d06c9139f8",
                        "product": "PENS001",
                        "productname": "CustomPensionProduct"
                    },
                    "classes": "product"
        },
        {
                    "data": {
                        "id": "0dfc4e0a-f0c6-43ac-8bf4-8831430a5108",
                        "templatename": "InfoText"
                    },
                    "classes": "template"
        }
    ]
}

(The rest of the result was omitted)

POST /zulassungsliste


Possible response status:

Status code Description
200 Success
400 Data not properly specified

Example request:

{
    "zulassungsbezirk": "neu"
}

Example result:

{
    "returncode": 0,
    "result": [
        {
            "id": 44,
            "zulassungsbezirk": "KO Korneuburg"
        },
        {
            "id": 64,
            "zulassungsbezirk": "ND Neusiedl/See"
        },
        {
            "id": 65,
            "zulassungsbezirk": "NK Neunkirchen"
        },
        {
            "id": 95,
            "zulassungsbezirk": "WB Wr. Neustadt/Bezirk"
        },
        {
            "id": 98,
            "zulassungsbezirk": "WN Wr. Neustadt BPD"
        }
    ]
}

Services under development


POST /projection


Under development. This service is intended to provide a possibility to scale the riskine risk model into the future. Could be used, for example, to warn the user of coming drastic changes in risk or to show additional analytics to the user.

POST /rules


Under development. Intended to be an API accessible rules engine specialized on the insurance sales workflow to manage rules directly in the graph database.

GET /rules


Under development. Intended to be an API accessible rules engine specialized on the insurance sales workflow to manage rules directly in the graph database.

Site automatically generated from md via Parsedown