×
Menu
Index
  • REST-API

REST-API


Introductie

De communicatie met de SoftRules® server kan op verschillende manieren.
Dit hoofdstuk beschrijft de communicatie via een REST API. Deze REST API is generiek opgezet zodat deze voor altijd voor alle toepassingen en alle formulieren gebruikt kan worden. De URL https://test.softrules.com is voor elke klant anders. De REST API draait altijd op een server bij de klant.
 

REST API

De URL van de REST API:
https://test.softrules.com/restsoftrules/softrules.svc
 
Om toegang te verkrijgen is een username en password nodig. Om te testen kunnen middels POSTMAN berichten direct aangeboden worden aan de REST API.
 

Het SoftRulesUserinterface xml

De userinterface Xml’s is een eigen formaat dat binnen SoftRules® gebruikt wordt. Voor alle formulieren (userinterfaces) geldt dat de structuur gelijk is. Onderstaand plaatje geeft een eerste indruk van het velden van een SoftRulesUserinterface.
 
 
Alle velden van van dit XML worden hier beschreven. Neem alstublieft contact met ons op voor het XML schema.
 

.net Standard Library en C# code voor het lezen en schrijven van de berichten

Voor het parsen van het verkregen Xml is een zip file beschikbaar met daarin een .net standard library welke aan het project toegevoegd kan worden. Deze wordt inclusief de C# code geleverd. Ook dit kan en mag door u gebruikt worden, bijvoorbeeld in een PHP implementatie.
Bij elke update van SoftRules® zal deze code meegeleverd worden zodat wijzigingen altijd meekomen en dus up-to-date zijn. Het heeft ook de voorkeur dat deze code opgegenomen wordt in het project voor de frontend. Ook functies voor het bepalen of een Group, Question, Button of Label zichtbaar of verplicht is, zijn hierin opgenomen.
 
Nadat het SoftRulesUserinterface van de REST API opgehaald is, kan met onderstaande code een scherm opgebouwd gaan worden.
De items uit de userinterface (Groups, Questions, Buttons en Labels) kunnen eigenschappen bezitten welke aangeven of ze getoond moeten worden (VisibleExpression), verplicht zijn (RequiredExpression), enabled of readonly zijn.
(DefaultStateExpression) en bij Groups en Questions of de UpdateUserinterface uitgevoerd moet worden (UpdateExpression). Middels een aantal functies uit de library kunnen deze expressions geresolved worden:
 
 

Aanvragen SessieID

Bij elke bevraging van de REST API is een sessieID nodig. Via de sessie wordt de autorisatie geregeld en houdt de REST API gegevens van de transactie vast.
Uri:
https://test.softrules.com/restsoftrules/softrules.svc/getsession?username=<username>&password=<password>
 
Methode: GET
<SoftRulesAPI>
    <Result>
        <Resultcode>0</Resultcode>
        <ResultDescription />
    </Result>
    <Session>
        <SessionID>34f96534-5df9-4d71-88a8-803a1d18b6c2</SessionID>
    </Session>
</SoftRulesAPI>
 
Een ongedige username/password combinatie levert een resultcode van 1 op.
<SoftRulesAPI>
    <Result>
        <Resultcode>1</Resultcode>
        <ResultDescription>De combinatie gebruikersnaam en wachtwoord kan niet geautoriseerd worden.</ResultDescription>
    </Result>
    <Session>
        <SessionID />
    </Session>
</SoftRulesAPI>
 

Opvragen beschikbare producten

De producten die beschikbaar zijn via de REST API worden opgehaald middels de volgende call:
Uri:
https://test.softrules.com/restsoftrules/softrules.svc/products/<sessieID>
 
Methode: GET
<SoftRulesAPI>
    <Result>
        <Resultcode>0</Resultcode>
        <ResultDescription />
    </Result>
    <Products>
        <Product>
            <Name>AVP</Name>
            <Description>Aansprakelijkheid particulieren</Description>
        </Product>
        <Product>
            <Name>WOONHUIS</Name>
            <Description>Woonhuis</Description>
        </Product>
        <Product>
            <Name>INBOEDEL</Name>
            <Description>Inboedel</Description>
        </Product>       
    </Products>
</SoftRulesAPI>
 

Opvragen van de eerste pagina van een product

Uri (POST):
 
Bij de POST kan eventueel in de body een Xml als input meegegeven worden. Hierin kunnen waarden vooraf ingevuld worden, zoals:
 
<SR xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <ActionID>Nieuw</ActionID>
    <Relatiedocument>
        <Relatiemantel>
            <AL>
                <TP>
                    <TP_IDNR>1</TP_IDNR>
                    <TP_TPAAND>100</TP_TPAAND>
                    <KP>
                        <KP_EMAIL>hbienefelt@comparity.nl</KP_EMAIL>
                        <KP_ENTREF>253376a3-0e61-4931-ac50-0104dde88833</KP_ENTREF>
                        <KP_TEAM></KP_TEAM>
                    </KP>
                </TP>
                <VE>
                    <VE_IDNR>2</VE_IDNR>
                </VE>
            </AL>
            <VP>
                <VP_ANAAM></VP_ANAAM>
                <VP_EMAIL></VP_EMAIL>
                <VP_GEBDAT/>
                <VP_GESLACH/>
                <VP_GSSC></VP_GSSC>
                <VP_IBAN></VP_IBAN>
                <VP_LAND></VP_LAND>
                <VP_PARZAKC></VP_PARZAKC>
                <VP_PCODE></VP_PCODE>
                <VP_PLAATS></VP_PLAATS>
                <VP_RELNUM></VP_RELNUM>
                <VP_RELSRTC></VP_RELSRTC>
                <VP_STRAAT></VP_STRAAT>
                <VP_TOEVOEG></VP_TOEVOEG>
                <VP_VOORL></VP_VOORL>
                <VP_VOORV></VP_VOORV>
            </VP>
        </Relatiemantel>
        <Pakket>
            <Mantel>
                <PK>
                    <PK_NUMMER/>
                    <PK_EXTERN/>
                    <PK_OFFERTE/>
                    <PK_PRODUCC/>
                </PK>
            </Mantel>
            <Onderdeel>
                <PP>
                    <PP_PRODCFG></PP_PRODCFG>
                    <PP_NUMMER></PP_NUMMER>
                    <PP_EXTERN></PP_EXTERN>
                    <PP_OFFERTE></PP_OFFERTE>
                    <PP_PRODUCC/>
                </PP>
            </Onderdeel>
        </Pakket>
    </Relatiedocument>
</SR>
 
Het gaat hier om gegevens van de relatie, tussenpersoon en / of polisnummers.
 
We gaan in dit document het product AVP (Aansprakelijkheid particulieren) uitwerken. Samen met het verkregen sessionID wordt de aanroep voor de eerste pagina van het formulier:
 
 
De response is dan een userinterfaceXml met daarin dus alleen de eerste pagina. Na het parsen van de userinterfaceXml kan onderstaand scherm getoond worden:
 
Als we de Question Postcode verder bekijken:
 
<Question State="New">
     <Name>VP_PCODE</Name>
     <Description>Postcode</Description>
     <Value/>
     <HelpText>Postcode woonadres verzekeringnemer</HelpText>
     <DefaultState>Editable</DefaultState>
     <IncludeInvisibleQuestion>False</IncludeInvisibleQuestion>
     <UpdateExpression>
          <Conditions>
               <Condition>                   
               </Condition>
               <Condition>                   
               </Condition>
          </Conditions>
          <StartValue>True</StartValue>
          <Description/>
     </UpdateExpression>
     <DataType>string</DataType>
     <Restrictions>
          <pattern>/^[1-9][0-9]{3}[\s]?[A-Za-z]{2}$</pattern>
     </Restrictions>
     <Parameter>
          <Name>VP</Name>
          <Path>SR/Relatiedocument/Relatiemantel/VP</Path>
     </Parameter>
     <ElementPath>SR/Relatiedocument/Relatiemantel/VP</ElementPath>
     <UpdateUserInterface Description="" ProcessOnShow="False">True</UpdateUserInterface>
     <InvalidMessage>Vul een geldige postcode in</InvalidMessage>
     <QuestionID>d2b8a091-0b6a-4390-bbbb-e4338cd3b0da~8aba1f56-7703-4026-b472-8f038adad712</QuestionID>
</Question>
 
De helptext is gevuld waardoor een ‘?’ getoond kan worden. In het voorbeeld wordt na een hover over dit plaatje de tekst getoond.
 
Er is een pattern aanwezig welke het formaat aangeeft van de postcode. Als het ingevulde daar niet aan voldoet, met de tekst getoond worden uit InvalidMessage.
 
De DefaultState geeft aan of de Question default Editable of ReadOnly is. Middels een DefaultStateExpression kan deze eigenschap wel of niet van toepassing zijn.
 
Het veld UpdateUserinterface is True. Dit houdt in dat er een server side actie vereist is. In dit geval zal SoftRules® de postcode extern gaan ophalen. Eerst moet na het verlaten van dit veld een controle plaatsvinden of de waarde goed ingevuld is, daarna moet de UpdateExpression (indien aanwezig) ook True zijn. Bij een updateUserinterface (zie verderop) is het QuestionID van belang om samen met de tot zover ingevulde userinterfaceXml naar de REST API te sturen. Als response wordt de gehele userinterface weer teruggestuurd. Er kunnen andere Questions gevuld zijn zoals hier de Straatnaam en de Woonplaats. Deze Question zijn hier ReadOnly.
 
De Question Gezinssamenstelling heeft ook nog een aantal TextValues.
 
<TextValues TextValuesID="14" TextQuestionID="">
     <Item>
          <Value>#</Value>
          <Text>Maak uw keuze</Text>
     </Item>
     <Item>
          <Value>A</Value>
          <Text>Eenpersoonshuishouding</Text>
     </Item>
     <Item>
          <Value>I</Value>
          <Text>Meerpersoonshuishouding</Text>
     </Item>
</TextValues>
 
Hiervan wordt een selectbox van gemaakt. De Value uit de Question is de default selectie voor de selectbox.
 
Dit is pagina 1 van 5 waardoor een volgende knop getoond moet worden.
 

Let op!
Na het verlaten van elke question:
Eigenschap UpdateUserinterace is True? ->UpdateUserinterface
Anders alle expressies op het formulier voor alle compomenten langslopen:

 
Als extra mogelijk kan hier bij de aanroep van de pagina het eerder verkregen SoftRulesSessionID meegegeven worden. Je hebt dan een mogelijkheid ‘verder’ te gaan met een eerder gestarte berekening, offerte of aanvraag.
 
Uri (POST):
 

UpdateUserinterface

Questions en Groups hebben een eigenschap UpdateUserinterface. Indien deze de waarde True hebben en de UpdateExpression is True is een server side actie noodzakelijk. Welke dat is, bepaalt SoftRules® zelf. Dit kan een bevraging van een postcode zijn, het ophalen van kentekengegevens of een ander in SoftRules® gedefinieerde actie.
 
Voor alle UpdateUserinterfaces geldt dat het gehele userinterfaceXml opgestuurd moet worden in de body van het bericht en dat de Guid van de control welke de update initieert in de URL komt te staan gevolgd door het sessionID.
 
Uri (POST):
 
 

POSTMAN

 
 
In de response is weer een UserinterfaceXml.
 

Opvragen van de volgende pagina van een product

Uri (POST):
 
Ingevuld:
https://test.softrules.com/restsoftrules/softrules.svc/ Userinterface/AVP/nextpage/34f96534-5df9-4d71-88a8-803a1d18b6c2
 
De eerder verkregen userinterfaceXml wordt meegeven in de body van het bericht.
 
Pagina 2 uit het voorbeeld kan er zo uitzien:
 
 
In de userinterfaceXml staat nu de volgende pagina. Page is nu 2 geworden en Pages staat nog steeds 5. Nu mag een Volgende en een Vorige knop getoond worden.
 
Op deze pagina staat een Group van het type table met daaronder een Group van het type row.
 
 
Op de Questions Provisie en Relatiekorting staat een displayType Slider. Hierbij horen Customproperties MinValue, StepSize en MaxValue.
 
<Question State="Changed">
    ..
    <DisplayType>Slider</DisplayType>
    <CustomProperties>
        <CustomProperty>
            <Name>MinValue</Name>
            <Value>0</Value>
        </CustomProperty>
        <CustomProperty>
            <Name>StepSize</Name>
            <Value>1</Value>
        </CustomProperty>
        <CustomProperty>
            <Name>MaxValue</Name>
            <Value>25</Value>
        </CustomProperty>
    </CustomProperties>
    ..
</Question>
 
Op de Button staat een updateUserinterface die een (her)berekening uitvoert.
Nadat alle velden gevuld en geldig zijn volgens de Expressions kan de volgende pagina opgeroepen worden. Er is geen validatie van toepassing op Questions die niet zichtbaar zijn.
 

Opvragen van de vorige pagina van een product

Uri (POST):
 
Ingevuld:
https://test.softrules.com/restsoftrules/softrules.svc/ Userinterface/AVP/ previouspage/34f96534-5df9-4d71-88a8-803a1d18b6c2
 
De eerder verkregen UserinterfaceXml wordt meegeven in de body van het bericht.
 

Laatste pagina: Process

Op de laatste pagina (pagina 5) staat geen volgende button, maar een button met de tekst verwerken of afsluiten. De actie naar SoftRules® wordt nu:
 
Uri (POST):
https://test.softrules.com/restsoftrules/softrules.svc/Process/<product>/<sessionID>
 
In de body staat weer de gehele userinterfaceXml.
 
Naast een process op de laatste pagina kan met de process functie ook gebruikt worden voor losstaande functies zoals het ophalen van Clausules, Voorwaarden, Verzekeringskaarten, Relaties enz. De input zal dan afhankelijk van de functionaliteit een (AFD) Xml zijn met daarin de gegevens om de bewerking te kunnen doen.
 
Bovenstaande is afhankelijk van de implementatie bij de klant.
 

DisplayTypes en Customproperties

Deze zijn hier beschreven.