8 minute read

Vave API Reference Guide

Full Policy Lifecycle

Flood Product

Advertisement

Vave API reference guide

Vave is an established web services platform, serving to integrate Canopius’ underwriting expertise with coverholder quote, bind and issue systems. The API provides instant access to pricing, binding, unbinding and live policy adjustment functionality for a range of insurance products.

This document describes how to use Vave API to quote, offer, bind, adjust and unbind for the Vave Flood product For a functional view of the API please refer to the accompanying “Vave API Overview”.

Complete lists of parameter values and mapping options are available in “Vave API Data Dictionary”

Vave API at a glance

Vave API is a set of HTTP-based RESTful web services that use OAuth 2.0 for authorization. API request and response bodies are formatted in JSON.

The endpoints are grouped by functionality into the following domains:

 Login – endpoints for authentication and authorization.

 Quote – endpoints supporting quote workflows: pricing a new quote option (New Business or Renewal), offering a quote, editing an existing quote, requesting and notifying a bind

 Policy – endpoints supporting bound policy workflows: pricing a mid-term adjustment option (Endorsement, Cancellation or Reinstatement), accepting an adjustment option and unbind a new policy or a policy MTA.

To get a priced quote option you need to submit the risk information to Quote/PriceNew endpoint.

Once received, a priced quote option is valid for 24 hours. To lock the price for the duration of the quote validity period (usually 30 days) you need to set the status to Offered by sending a notification to Quote/Offer endpoint. This converts a priced option to an offered quote, which can be bound before the quote validity period runs out.

To amend any risk information or pricing terms on an offered quote, use the Quote/Edit endpoint.

Binding a risk is a two-steps process First, send a message to Quote/RequestBind endpoint to get approval to proceed After the risk is bound in the coverholder system, send a notification to Quote/NotifyBind to confirm and to submit additional information about the bound policy.

Once a policy is live, a mid-term adjustment can be priced using one of the three Policy endpoints that price Endorsements, Cancellations and Reinstatements To accept a priced mid-term adjustment option, make a call to Policy/AcceptMTA.

If you want to undo a Quote/NotifyBind or a Policy/AcceptMTA use the Policy/Unbind. This is only an Admin Function and should only be used by the coverholder when they need to undo a Bind/Accept action that has been done in error (this endpoint should not be exposed to the agent/customer)

As you approach a policy’s expiry date, you can price a renewal option by calling Quote/PriceRenewal and follow the same steps to offer and bind it as described above.

Getting started

Vave API will not accept requests from unknown sources, so the first step is sending us IP ranges of your organization.

To start using Vave API you will need a username and password to authenticate your requests.

Authentication and authorization

Vave API uses OAuth 2.0 for authorization.

To gain accesstocorefunctionality, your application will need toobtain anaccesstoken bysubmittingyourusername and password to: https://vave.canopius.com/insure-dev/api/login

{

"UserName": "JohnSmith@somedomain.com", "Password": "UserPassword123!" }

Once you have the access token your application will need to send it in the HTTP Authorization header for all subsequent requests.

Please note that the access token has a lifespan of 60 minutes, and once it expires you will need to trade in your username and password for another token.

Alternatively, you can trade your refresh token for a new pair of tokens by submitting it to: https://vave.canopius.com/insure-dev/api/token

{

"RefreshToken":

"fdgeghyJ0eXfJKV1QiLCJhbGciOfds1NiIsIng1dCI6IkhsQzBSMTJza3hOWjFXUXdtak9GXzZ0XsfdSIsImtpZCI6sfzBSMTJzafF XUXdtak9GXzZ0X3RERSJ9[. . .]BBWVcjGIzJzhbqWLsQAAF3pUTwLOKJ-J9iErgIRm9dsfsdfgfdgdds" }

You are now ready to use Vave API!

Integration endpoints

API Response

Generic Response format

All Vave API response messages follow the same template Common sections returned in every response are message metadata, warnings and errors. The body of the response specific to each endpoint is returned in the Response section.

 Request metadata – contains fields for request traceability, such as RequestId and RequestDate. These are used to correlate messages between Vave and coverholder systems.

 Response – contains the body of the response, which is specific to each endpoint (see section Endpoints)

 Errors – contains errors caused by invalid data or formats, or failed business rules (such as underwriting guidelines or validating risk data)

 Warnings – containsmessages explaining why the original request could not be processed if the Response section contains a response offered by Vave API as a substitute for the failed original. An example of this is attempting to edit an expired quote and receiving a new priced option as a substitute, with a Warning message providing additional information

"RequestId": "52D927C2-1F17-4302-AAF4-79A97537419B", “

RequestDate": "2020-05-03T20:16:01.482Z", //UTC time zone.

"RequestTimeStamp": 1588533361482,

"Response": {

// this is the block where the response will be injected. },

"Warnings": [ {

"number": 1003, "title": "Quote Flow Switch", "description": "Switched from Edit Quote to New Quote.", "userInfo": "The validity period on PricingOption 1345 has expired." }, {

"number": 1004, "title": "Unable to offer sub product Flood Endorsement", "description": "Unable to offer sub product (Flood)", "userInfo": "Building value cannot be greater than $2M" }

"Errors": [{

"number": 1201, "title": "Data quality error", "description": "Invalid cover type (WaterDamage)” "userInfo": "Water damage deductible must be greater than $1k for this region." }, {

"number": 1004, "title": "Data quality error", "description": "Unable to accurately locate risk address", "userInfo": "Unable to accurately locate risk address." }]

HTTP Status and error codes

Vave API uses standard HTTP codes

200 – OK

The request is processed successfully Errors section is empty.

Warnings section is empty if a request is processed without any modifications. Warnings section contains additional informationwhen businessrulespreventthe original request from being processed and a substituteoptionisreturned instead.

400

Bad Request

The request failed because message format or data are invalid

401 – Unauthorized

The request is unauthorised. Check your credentials and refresh the access token.

422 – Unprocessable Entity

The format and syntax of the request are correct, but it failed business or validation rules. Response and Warnings sections are empty.

429

Too Many Requests

The number of requests your application is sending has exceeded the allowed limit.

500 - Internal Server Error

The request failed due to unexpected errors. For example, essential query parameters are missing from the URL, or message data is using unsupported data types.

See “Vave API Data Dictionary” for the full list of Vave error numbers and additional information.

Rate limiting and thresholds

Integration

We do not limit requests to Integration endpoints during development and testing. Some internal features of Vave API, including reaching out to 3rd party systems, will be turned off or will operate in Test mode.

When we moveto UAT phase we will enablefull functionality to allowend to end testing with realistic response times, and we may impose rate limits at that time

Production

Rate limits on Production will be agreed separately. Generally, we prefer to not restrict the number of requests, subject to terms of usage and periodic reviews.

Moving to Production

When you are ready to move to Production, you will need to request Live credentialsfor your application and update the URL to the following: https://vave.canopius.com/insure/

API Reference

The rest of this document describes how to use Vave API endpoints and how to construct request messages for quoting, editing and binding Flood insurance products.

“Calculating Premiums” section describes how to obtain different types of priced options: New Business, Renewal, pre-bind Edit and post-bind Mid-Term Adjustment/Cancellation/Reinstatement

“Offer and Bind Methods” section describes actions you perform on these priced options: Offer, Request Bind and Notify Bind/Accept MTA.

Calculating Premiums

Depending on the type of quote you want to request, submit risk information to one of these 6 endpoints:

5

6

All pricing endpointsexpect to receiveinformation about a risk, requested coverage optionsand pricing terms. These are submitted in the RiskInformation object.

A successful response from these endpoints contains calculated premium and a summary of terms and coverages. They are returned in the PricingOptionResponse object.

These core objects, described in the next section, are the base for calls to all pricing endpoints

General Quote format

RiskInformation example

This is the format of a request containing information about the risk It contains information about the customer, their property and possessions, as well as requested coverages and quote terms.

"ProductType": "FLOOD",

"InsuredName": "John Smith",

"DateOfBirth": "6976dc21ccea21520f3a041b2bdd9406bb7b4a5a",

"QuoteType": "New Business",

"PolicyType": "FLOOD",

"Currency": "USD",

"Inception": "2020-07-20T00:00:00Z",

"Expiry": "2021-07-20T00:00:00Z",

"Construction": "5050", "Occupancy": "1051", "OccupancyType": "1", "Address": {

"Street": "123 Main St", "City": "El Paso", "PostalCode": "79925", "StateCode": "TX", "Country": "US"

"Covers": [

"CoverType": "BUILDINGS", "CoverValue": 175000

"CoverType": "CONTENTS", "CoverValue": 20000, "CoverValueType": "RCV"

"Claims": [

"ClaimType": "FLOOD", "ClaimValue": 10000, "ClaimDate": "2018-09-07T00:00:00Z", "ClaimSettled": "true", "ClaimFullyRepaired": "true",

"ClaimDescription": "Flooding from water ponding in road"

"AdditionalInformation": [

"InformationType": "YEARBUILT", "InformationValue": "1974"

"InformationType": "FLOORAREA", "InformationValue": "1829"

"InformationType": "BASEMENT", "InformationValue": "0"

"InformationType": "NUMBEROFSTORIES", "InformationValue": "1"

"InformationType": "ABOVEWATER", "InformationValue": "1"

"InformationType": "NFIPPOLICY",

"InformationValue": "0"

"RequiredPricingTerms": [

"Peril": "ALL", "Terms":

"CoverType": "BUILDINGS", "Limit": 175000, "Deductible": 5000

"CoverType": "CONTENTS", "Limit": 20000, "Deductible": 5000

RiskInformation parameters

For a full list of values, see “Vave API Data Dictionary”.

PricingOptionResponse example

Below is an example of a successful priced option This object is returned in the “Response” section of the response message (see API Response)

"pricingOptions": [

"pricingOptionId": 602715, "quoteGroupId": "cb422d47-1f9d-4fd7-902d-898d95573882", "currency": "USD", "annualisedPremium": 1444.08, "premium": 1444.08, "pricingTerms": [ {

"peril": "FLOOD", "terms": [

"coverType": "BUILDINGS", "limit": 175000, "deductible": 5000, "limitPercentage": null, "deductiblePercentage": null

"coverType": "CONTENTS", "limit": 20000, "deductible": 5000, "limitPercentage": null, "deductiblePercentage": null

"peril": "STORMSURGE", "terms": [ {

"coverType": "BUILDINGS",

"limit": 175000, "deductible": 5000, "limitPercentage": null, "deductiblePercentage": null

"coverType": "CONTENTS", "limit": 20000, "deductible": 5000, "limitPercentage": null, "deductiblePercentage": null

"addOns": null, "paf": null

"pricingOptionId": 602716, "quoteGroupId": "cb422d47-1f9d-4fd7-902d-898d95573882", "currency": "USD", "annualisedPremium": 1245.11, "premium": 1245.11, "pricingTerms": [

"peril": "FLOOD", "terms": [

"coverType": "BUILDINGS", "limit": 175000, "deductible": 10000, "limitPercentage": null, "deductiblePercentage": null

"coverType": "CONTENTS", "limit": 20000, "deductible": 10000, "limitPercentage": null, "deductiblePercentage": null

"peril": "STORMSURGE", "terms": [

"coverType": "BUILDINGS", "limit": 175000, "deductible": 10000, "limitPercentage": null, "deductiblePercentage": null

"coverType": "CONTENTS", "limit": 20000,

For see “Vave API

Quote/PriceNew

Used to price New Business quotes, the request and response messages are the base RiskInformation and PricingOptionResponse objects described in section General Quote format

Quote/Edit

Used to change risk information and pricing terms on an offered quote.

When a request to Edit cannot be completed (for example a request to edit a quote outside of the quote validity period), the API may return a new priced option as an alternative. In this case the Warnings section on the main response object will clearly state that the returned quote is a new priced option, and not the edited quote that was originally requested. You may choose to use the substituted priced option, or to treat the Edit request as failed.

The Request message and parameters are identical to RiskInformation described above, with one additional field:

Quote you editing

The Response object is identical to the PricingOptionResponse, and will return a new PricingOptionID

Policy/PriceAdjustment

Used to price Mid-Term Adjustments on a live policy.

The Request message and parameters are identical to RiskInformation described above, with several additional fields:

EffectiveDate

The Response format follows PricingOptionResponse, with different objects for calculated premium returning the difference from the original policy premium. Detailed description below.

AdjustmentPricingOptionResponse example

"PricingOptionId": 111376,

"QuoteGroupId": "e2ba9c68-35a4-43ca-99c0-97c285f2e3e8",

"ValidUntil": "2020-05-15T00:00:00Z",

"Currency": "USD",

"AdjustedPolicyPremium": 1245.45,

"AnnualisedPremium": 1245.45,

"PremiumChange": -22.43,

"AnnualisedPremiumChange": -220.21, "pricingTerms": [

"peril": "FLOOD", "terms": [

"coverType": "BUILDINGS", "limit": 175000, "deductible": 5000, "limitPercentage": null, "deductiblePercentage": null

"coverType": "CONTENTS", "limit": 20000, "deductible": 5000, "limitPercentage": null,

"deductiblePercentage": null

"peril": "STORMSURGE", "terms":

"coverType": "BUILDINGS", "limit": 175000, "deductible": 5000, "limitPercentage": null, "deductiblePercentage": null

"coverType": "CONTENTS", "limit": 20000, "deductible": 5000, "limitPercentage": null, "deductiblePercentage": null

AdjustmentPricingOptionResponse object description:

Policy/PriceCancellation

Used to price a cancelation request

The Request message contains only three mandatory fields: the policy Id, the effective date of the cancellation and the cancellation reason. There are two additional optional fieldsthat can used to overridethe default earned premium calculation method If the optional fields are not populated the Vave API will determine which calculation method should apply based on the risk and effective date. An example is shown below:

"PolicyId": "274095"

"EffectiveDate": "2020-07-01T00:00:00Z",

"TransactionReason": "Sold the house",

"OverrideMethod": "MEP",

"OverrideMEP": "35.0"

The Responsemessage will containinformationaboutearnedandreturnpremiums. Asampleof responsemessage:

"PricingOptionId": "123445"

"PolicyId": "274095"

"AdjustedPolicyPremium": "161", "PremiumChange": "-299", "ValidUntil": "2020-06-15T00:00:00Z"

Policy/PriceReinstatement

This endpoint returns calculated premium for a reinstatement request.

The Request message will contain only the policy identifier and the reason for reinstatement, as shown in the example below:

"PolicyId": "274095"

"TransactionReason": " Updated CC number, collected payment "

Request parameters:

The Response message will contain information about the original policy premium, delta premium calculated for reinstatement and the date marking the validity period for this quote. A sample of response message:

“PricingOptionId”: “123445”

“PolicyId”: “274095”

“AdjustedPolicyPremium”: “390”,

“PremiumChange”: “70”

“ValidUntil”: “2020-06-15T00:00:00Z”

Response object description:

This article is from: