Topics on this page

Create and bind a quote

BriteQuote allows insurers to configure customized quoting and application workflows for targeted user experiences. BriteQuote is the API backend that stores quotes, risks, field answers, coverages, and premiums.

To create a quote, BriteQuote interacts with various back-end services, including BriteRules, BriteLines, and BriteCore. To summarize the interactions:

  • Lines controls the definition of the information to be collected on a quote.
    • Lines also defines calculations and rate tables, which it then passes to the rating engine to calculate the premium for quote.
  • Quoting controls the display of information on a quote.
  • Rules control the behaviors and validation of information on a quote.

In this tutorial, we will guide you through creating your own custom quoting application workflow using BriteQuote. This tutorial covers the key concepts, prerequisites, process flows, and steps involved to use BriteQuote’s endpoints.

Processing policy applications through API endpoints in BriteCore occurs in the following broad steps:

  1. Choose a product for a quote.
  2. Create a quote.
  3. Get form details, assets, and coverages from risk type states.
  4. Add an asset (risk type to a quote).
  5. Add coverages (items).
  6. Update an asset (risk type) and quote.
  7. Submit the quote for review.
  8. List possible quote transition states.
  9. Approve your quote.
  10. Bind a quote.
  11. Collect billing information.
  12. Upload an attachment to BriteQuote.

Key concepts

  • Application: An application is a form submitted to an insurer requesting an insurance policy. Applications extend quotes with additional information.
  • Bound/Unbound: Binding refers to insurance coverage and means that coverage is in place, although a policy has yet to be issued. Binding often takes place through a verbal agreement, in person, or by phone.
  • Coverage: Coverage is a guarantee of financial restoration in the event of a loss. In BriteCore, coverages are considered a line item under Items.
  • Policy: A policy is a contract that guarantees insurance coverage for a period of time.
  • Premium: A premium is money paid by a policyholder to an insurance carrier in exchange for insurance.
  • Quote: A quote is a snapshot of a quoted premium with supporting risk and insurance information.
  • Quoting: Quoting is the process of entering risk information, requesting a given level of insurance, and receiving a premium quote for a policy.
  • Risk: A risk is an asset protected by insurance.

Prerequisites

Define Line of Business in BriteLines

You can’t instantiate quotes without a Line of Business (LOB) definition in BriteLines. BriteLines includes a rating engine, which is a service that evaluates field answers and items (coverages) on a quote or policy and provides a premium. The rating engine is one of the primary features of BriteLines.

LOBs define:

  1. Different types of risks. Think of risk types as a class (for example, vehicles) and risks as instances of a risk type (for example, a particular vehicle).
  2. The relationship between risk types; for example, a policy with several drivers who have multiple driving violations.
  3. Fields that can be collected during a quote and their definitions. For example, the Vehicle Identification Number (VIN) field is defined as a string.
  4. Rate tables, rate factors, rate modifiers, and calculations, which are used to determine premiums on coverages.
  5. Items, which are coverages, fees, and other line items that might appear on the Policy Declaration.

BriteLines defines all of the data points that will be captured and evaluated during a quote, so it’s important to understand the structure of the LOB before working on building a quoting front end.

The quoting front end won’t interact with BriteLines directly. Instead, the quoting front end will submit requests to BriteQuote, which will communicate with BriteLines to create new quotes for a given line and new risks from a given risk group.

Define rules in BriteRules

BriteRules evaluates business rules during different transactions like new business (quoting), endorsement, and renewal.

For quoting, the following rule types are important:

  1. Validation rules: Rules that validate that field answer values and items are allowed.
  2. Behavior rules: Rules that change values on a quote, like adding/removing a field, adding/removing a coverage, or showing/hiding a field. It may also restrict the number of options for a given field.
  3. Underwriting rules: Rules that automatically evaluate a quote and approve/decline based on the contents.

BriteQuote handles submitting risks to BriteRules, so the quoting front end won’t be expected to interact directly with BriteRules.

BriteRules returns a list of actions for BriteQuote to perform. BriteQuote performs these actions by updating the risks on the quote and returning the changes. The quoting front end is expected to respond by displaying the changes that are received from BriteQuote. Those changes will include displaying validation errors, showing/hiding fields, and changing field values.

BriteRules also determines which documents and forms need to be generated by BriteDocs. BriteDocs then interacts directly with BriteQuote to deliver the appropriate forms and deliverables.

Set up vendor integrations (if applicable)

Each vendor integration is a REST API service that sits between the quoting front end (or other API consumers) and the third-party vendor product. Each vendor integration must provide a well-structured REST API that is documented with OpenAPI.

Vendor Integrations are called from the quoting front end. Requests are sent to the Integration REST API service. The response data is mapped on the frontend into risks and risk field answers.

Quoting proposal flow

Figure 1 shows the interactions between BriteQuote, BriteDocs, and BriteRules to deliver the appropriate documentation for a quote application.


Figure 1: Interactions between BriteQuote, BriteDocs, and BriteRules.

Quoting submission flow

Figure 2 shows the quoting submission flow from agent log in to submission, highlighting all of the interactions between different BriteCore services.


Figure 2: The quoting submission flow from agent log in through submission.

Policy binding flow

Figure 3 illustrates how a quote is bound after submission.


Figure 3: Quote binding after submission.

Create and bind a quote using BriteQuote

Note: Blocks of code are hidden by default to make the page more navigable. Select View code and Hide code to view or hide these sections as needed.

Step 1: Get a security token

You will need to request an ID and Secret to use OAuth 2.0.

For more information, refer to How do I get started?

Step 2: Choose a product for a quote

Use the getQuotableProducts endpoint (/quote/quotable-products/) to view the list of products available for quoting. You pass the effective date as the starting point. It defaults to the current date. Use the name field from this list as a parameter to pass in the next step.

Sample request

View code
curl --location --request GET 'https://{urL}/api/quote/quotable-products/?effective_before=06/24/2020' \
--header 'Authorization: Bearer

Sample response

View code
[
{
"parent_product": null,
"line": {
"id": "0bae26bf-0daa-4c05-bd51-5d4dfdbb3a3f",
"label": "Personal Auto",
"name": "Personal Auto",
"description": "A line of business to represent personal auto "
},
"version": {
"id": "093cdf4e-8711-482a-bf22-94084bb42574",
"date_added": "2019-05-20",
"date_modified": "2019-08-19",
"name": "Initial Version",
"effective_date": "2020-05-19",
"status": "published",
"description": "The first version of the product.",
"previous": null
},
"name": "personalAutoCW",
"label": "Personal Auto LOB - Countrywide"
},
{
"parent_product": null,
"line": {
"id": "0bae26bf-0daa-4c05-bd51-5d4dfdbb3a3f",
"label": "Personal Auto",
"name": "Personal AutoLob",
"description": "Second version of the product"
} 
 
 
}
 
]

Step 3: Create a quote

BriteAPI uses the createQuote endpoint (/quote/)to create a quote. You must pass the required parameters effective_date and product_name (which maps to line_name or line of business) to instantiate a quote.

Sample request

View code
'curl --request POST \
--url /api/quote/ \
--header 'authorization: ' \
--header 'content-type: application/json' \
--data '{
"product_name": "personalAutoCW",
"effective_date": "2020-07-16",
"expiration_date": "2020-07-16"
}

Sample response

View code
{
"id": "8bd1a736-5d17-4bd8-8e47-1da7627ad102",
"quote_number": "Q-personalAutoCW-2020-159",
"transaction_type": "new_business",
"source_quote_number": null,
"status": "In Progress",
"policy_state": {
"policy": {
"inception_date": "2020-07-16",
"number": ""
},
"term": {
"effective_date": "2020-07-16",
"expiration_date": "2020-07-16"
},
"revision": {
"revision_date": "2020-07-16",
"description": "New Policy"
}
},
"root_risk_quote_id": "e54ef2f5-b129-4e4d-96a7-f8d6a7dba800",
"product_name": "personalAutoCW",
"product_version": "eaa6cb9f-4602-4c8e-9bbc-b064755143bf",
"product_label": "Personal Auto - Countrywide",
"agency": null,
"agents": [
{
"id": "5c7376a9-1ca8-4a1c-896e-7b9cb71fe26f",
"name": "Maliha Balala"
}
],
"is_bound": false,
"redirect_uri": "/quote/Q-personalAutoCW-2020-159/",
"owner": {
"id": "5c7376a9-1ca8-4a1c-896e-7b9cb71fe26f",
"name": "Maliha Balala"
},
"named_insured": {
"id": "e40f5f35-9ad1-4985-b38a-6d061ee7c368",
"name": ""
},
"submitted_for_review_date": null,
"date_added": "2020-07-16T19:24:21.687058Z",
"meta": {
"locked": false
}
}

Step 4: Get quote form details, assets, and coverages from risk type state

The risk type state returns a JSON representation of a risk type for a given product and version. It contains information regarding a risk type’s entities fields, rate tables, calculations, and items, as well as its line. The risk type state is used by the rating engine to rate a risk, as well as by quoting to display information about fields and items.

For more information, refer to Retrieve product definition tutorial to get all the relevant endpoints and details.

Step 5: Add an asset (risk type) to the quote

Use the createRisk object (/quote/risks/) to link an asset (risk type) to the quote and pull the relevant field definitions from Lines. For instance, a vehicle risk type will pull field information such as model, VIN, etc. This step creates a risk state which is a JSON representation of a risk type at a point in time.

Sample request

View code
curl --request POST \
--url /api/quote/risks/ \
--header 'authorization: \
--header 'content-type: application/json' \
--data '{
"quote": "8bd1a736-5d17-4bd8-8e47-1da7627ad102",
"parent_risk_quote": "e54ef2f5-b129-4e4d-96a7-f8d6a7dba800",
"risk_type_name": "privatePassengerAutos",
"generated_by": "LexisNexis"
}

Sample response

View code
{
"id": "95fd4cbe-b34a-49a9-9977-4105ce99b75b",
"number": 1,
"risk_state": {
"schema_version": "1.3",
"id": "95fd4cbe-b34a-49a9-9977-4105ce99b75b",
"name": "Private Passenger Auto 1",
"number": 1,
"total_premium": 55.0,
"type": {
"id": "33ae7229-eaa5-4481-b330-f0fe8edbb4ac",
"name": "privatePassengerAutos",
"label": "Private Passenger Auto"
},
"items": {
"bodilyInjury": {
"premium": null,
"pro_rata": {
"value": null
},
"meta": {
"resolved_refs": [],
"unresolved_refs": []
},
"limits": {
"BIPerOccurrenceLimit": 300000.0,
"BIPerPersonLimit": 100000.0
}
},
"propertyDamage": {
"premium": null,
"pro_rata": {
"value": null
},
"meta": {
"resolved_refs": [],
"unresolved_refs": []
},
"limits": {
"PDLimit": 100000.0
}
},
"uninsuredMotorist": {
"premium": 55.0,
"pro_rata": {
"value": 55.0
},
"meta": {
"resolved_refs": [],
"unresolved_refs": []
},
"limits": {
"UMBIPerOccurrenceLimit": 300000.0,
"UMBIPerPersonLimit": 100000.0,
"UMPDLimit": 100000.0
}
}
},
"detached_items": [],
"item_overrides": {},
"field_answers": {
"zipCode5DigitsOnly": "",
"bodilyInjuryLimit": "bodilyInjuryLimit_100000300000",
"program": "program_standard",
"modelYear": null,
"performance": "performance_standard",
"vehiclePoints": null,
"assignedOwnerPrincipalOperator": "",
"vehicleUse": "vehicleUse_1530milestowork",
"additionalDriver": "",
"hasAntiLock": false,
"propertyDamageLimit": "propertyDamageLimit_100000",
"uninsuredMotoristBodilyInjuryLimit": "uninsuredMotoristBodilyInjuryLimit_100000300000",
"uninsuredMotoristPropertyDamageLimit": "uninsuredMotoristPropertyDamageLimit_100000",
"serialVin": "",
"make": "",
"model": "",
"garagingAddress": "",
"garagingTown": "",
"garagingState": "garagingState_vAVirginia",
"uninsuredMotoristFormRequired": false,
"grossWeight": null,
"jointOwned": false,
"bodyStyle": "",
"registrationState": "registrationState_VA",
"ownerFactor": "",
"additionalFactor": 0.5
},
"field_overrides": {
"modelYear": {
"required": false
},
"performance": {
"required": false
},
"vehiclePoints": {
"required": false
},
"additionalDriver": {
"required": false,
"options": []
},
"assignedOwnerPrincipalOperator": {
"options": []
},
"payee": {
"options": []
},
"lessor": {
"options": []
},
"trust": {
"options": []
}
},
"detached_answers": {},
"calculations": {
"additionalFactorComputedFieldCalculation": 0.5,
"otherAutoPolicy": 0.0,
"termFactor": 1.0,
"antiLockFactor": 1.0,
"multiCarFactor": 0.0
},
"rate_tables": {
"vehicleUseValue": "More than 15 miles to work",
"bodilyInjuryIncreasedLimitFactor": 1.47,
"bodilyInjuryPerOccurrenceLimit": 300000.0,
"bodilyInjuryPerPersonLimit": 100000.0,
"increasedBodilyInjuryCharge": 10.0,
"increasedPropertyDamageCharge": 5.0,
"propertyDamageDisplayLimit": 100000.0,
"propertyDamageIncreasedLimitFactor": 1.1,
"uninsuredMotoristBiPerOccurrenceLimit": 300000.0,
"uninsuredMotoristBiPerPersonLimit": 100000.0,
"uninsuredMotoristPdLimit": 100000.0
},
"pro_rata": {
"value": 55.0
},
"meta": {
"static_id": "95fd4cbe-b34a-49a9-9977-4105ce99b75b"
}
},
"final_rate": null,
"risk_quotes": [],
"generated_by": "LexisNexis",
"date_added": "2020-07-16T19:50:06.294818Z",
"date_modified": "2020-07-16T19:50:06.294861Z",
"meta": {
"locked": false
}
}

Step 6: Add coverage to the quote (item)

Use the addRiskQuoteItem endpoint(/quote/items/) to add additional coverages/items and details to the risk quotes.

Sample request

View code
curl --request POST \
--url /api/quote/items/ \
--header 'authorization: ' \
--header 'content-type: application/json' \
--data '{
"risk_quote": "95fd4cbe-b34a-49a9-9977-4105ce99b75b",
"risk_item_name": "medicalExpense"
}

Sample response

View code
{
"id": "95fd4cbe-b34a-49a9-9977-4105ce99b75b",
"number": 1,
"risk_state": {
"schema_version": "1.3",
"id": "95fd4cbe-b34a-49a9-9977-4105ce99b75b",
"name": "Private Passenger Auto 1",
"number": 1,
"total_premium": 55.0,
"type": {
"id": "33ae7229-eaa5-4481-b330-f0fe8edbb4ac",
"name": "privatePassengerAutos",
"label": "Private Passenger Auto"
},
"items": {
"bodilyInjury": {
"premium": null,
"pro_rata": {
"value": null
},
"meta": {
"resolved_refs": [],
"unresolved_refs": []
},
"limits": {
"BIPerOccurrenceLimit": 300000.0,
"BIPerPersonLimit": 100000.0
}
},
"propertyDamage": {
"premium": null,
"pro_rata": {
"value": null
},
"meta": {
"resolved_refs": [],
"unresolved_refs": []
},
"limits": {
"PDLimit": 100000.0
}
},
"uninsuredMotorist": {
"premium": 55.0,
"pro_rata": {
"value": 55.0
},
"meta": {
"resolved_refs": [],
"unresolved_refs": []
},
"limits": {
"UMBIPerOccurrenceLimit": 300000.0,
"UMBIPerPersonLimit": 100000.0,
"UMPDLimit": 100000.0
}
},
"medicalExpense": {
"premium": null,
"pro_rata": {
"value": null
},
"meta": {
"resolved_refs": [],
"unresolved_refs": []
}
}
},
"detached_items": [],
"item_overrides": {},
"field_answers": {
"zipCode5DigitsOnly": "",
"bodilyInjuryLimit": "bodilyInjuryLimit_100000300000",
"program": "program_standard",
"modelYear": null,
"performance": "performance_standard",
"vehiclePoints": null,
"assignedOwnerPrincipalOperator": "",
"vehicleUse": "vehicleUse_1530milestowork",
"additionalDriver": "",
"hasAntiLock": false,
"propertyDamageLimit": "propertyDamageLimit_100000",
"uninsuredMotoristBodilyInjuryLimit": "uninsuredMotoristBodilyInjuryLimit_100000300000",
"uninsuredMotoristPropertyDamageLimit": "uninsuredMotoristPropertyDamageLimit_100000",
"serialVin": "",
"make": "",
"model": "",
"garagingAddress": "",
"garagingTown": "",
"garagingState": "garagingState_vAVirginia",
"uninsuredMotoristFormRequired": false,
"grossWeight": null,
"jointOwned": false,
"bodyStyle": "",
"registrationState": "registrationState_VA",
"ownerFactor": "",
"additionalFactor": 0.5,
"medicalExpenseLimit": "",
"multiCarChargeME": true,
"passiveRestraint": "passiveRestraint_none"
},
"field_overrides": {
"modelYear": {
"required": false
},
"performance": {
"required": false
},
"vehiclePoints": {
"required": false
},
"additionalDriver": {
"required": false,
"options": []
},
"assignedOwnerPrincipalOperator": {
"options": []
},
"payee": {
"options": []
},
"lessor": {
"options": []
},
"trust": {
"options": []
}
},
"detached_answers": {},
"calculations": {
"additionalFactorComputedFieldCalculation": 0.5,
"otherAutoPolicy": 0.0,
"termFactor": 1.0,
"antiLockFactor": 1.0,
"multiCarFactor": 0.0
},
"rate_tables": {
"vehicleUseValue": "More than 15 miles to work",
"bodilyInjuryIncreasedLimitFactor": 1.47,
"bodilyInjuryPerOccurrenceLimit": 300000.0,
"bodilyInjuryPerPersonLimit": 100000.0,
"increasedBodilyInjuryCharge": 10.0,
"increasedPropertyDamageCharge": 5.0,
"propertyDamageDisplayLimit": 100000.0,
"propertyDamageIncreasedLimitFactor": 1.1,
"uninsuredMotoristBiPerOccurrenceLimit": 300000.0,
"uninsuredMotoristBiPerPersonLimit": 100000.0,
"uninsuredMotoristPdLimit": 100000.0,
"passiveRestraintFactor": 1.0
},
"pro_rata": {
"value": 55.0
},
"meta": {
"static_id": "95fd4cbe-b34a-49a9-9977-4105ce99b75b"
}
},
"final_rate": null,
"risk_quotes": [],
"generated_by": "LexisNexis",
"date_added": "2020-07-16T19:50:06.294818Z",
"date_modified": "2020-07-16T20:06:03.127207Z",
"meta": {
"locked": false
}
}

Step 7: Update an asset (risk quote)

When you make changes to the details of the quote, a new risk state is created. Use the updateRisk endpoint (/quote/risks/{risk_quote_id}), which triggers BriteRules and the rating engine to validate the details and adjust totals.

Sample request

View code
curl --request PUT \
--url /api/quote/risks/95fd4cbe-b34a-49a9-9977-4105ce99b75b/ \
--header 'authorization: \
--header 'content-type: application/json' \
--data '{ 
 
 
"risk_state": {
 
"schema_version": "1.3",
 
"id": "95fd4cbe-b34a-49a9-9977-4105ce99b75b",
 
"name": "Private Passenger Auto 1",
 
"number": 1,
 
"total_premium": 55,
 
"type": {
 
"id": "33ae7229-eaa5-4481-b330-f0fe8edbb4ac",
 
"name": "privatePassengerAutos",
 
"label": "Private Passenger Auto"
 
},
 
"items": {
 
"bodilyInjury": {
 
"premium": null,
 
"pro_rata": {
 
"value": null
 
},
 
"meta": {
 
"resolved_refs": [],
 
"unresolved_refs": []
 
},
 
"limits": {
 
"BIPerOccurrenceLimit": 300000,
 
"BIPerPersonLimit": 100000
 
}
 
},
 
"propertyDamage": {
 
"premium": null,
 
"pro_rata": {
 
"value": null
 
},
 
"meta": {
 
"resolved_refs": [],
 
"unresolved_refs": []
 
},
 
"limits": {
 
"PDLimit": 100000
 
}
 
},
 
"uninsuredMotorist": {
 
"premium": 55,
 
"pro_rata": {
 
"value": 55
 
},
 
"meta": {
 
"resolved_refs": [],
 
"unresolved_refs": []
 
},
 
"limits": {
 
"UMBIPerOccurrenceLimit": 300000,
 
"UMBIPerPersonLimit": 100000,
 
"UMPDLimit": 100000
 
}
 
}
 
},
 
"detached_items": [],
 
"item_overrides": {},
 
"field_answers": {
 
"zipCode5DigitsOnly": "",
 
"bodilyInjuryLimit": "bodilyInjuryLimit_100000300000",
 
"program": "program_standard",
 
"modelYear": null,
 
"performance": "performance_standard",
 
"vehiclePoints": null,
 
"assignedOwnerPrincipalOperator": "",
 
"vehicleUse": "vehicleUse_1530milestowork",
 
"additionalDriver": "",
 
"hasAntiLock": false,
 
"propertyDamageLimit": "propertyDamageLimit_100000",
 
"uninsuredMotoristBodilyInjuryLimit": "uninsuredMotoristBodilyInjuryLimit_100000300000",
 
"uninsuredMotoristPropertyDamageLimit": "uninsuredMotoristPropertyDamageLimit_100000",
 
"serialVin": "",
 
"make": "",
 
"model": "",
 
"garagingAddress": "",
 
"garagingTown": "",
 
"garagingState": "garagingState_vAVirginia",
 
"uninsuredMotoristFormRequired": false,
 
"grossWeight": null,
 
"jointOwned": false,
 
"bodyStyle": "",
 
"registrationState": "registrationState_VA",
 
"ownerFactor": "",
 
"additionalFactor": 0.5
 
},
 
"field_overrides": {
 
"modelYear": {
 
"required": false
 
},
 
"performance": {
 
"required": false
 
},
 
"vehiclePoints": {
 
"required": false
 
},
 
"additionalDriver": {
 
"required": false,
 
"options": []
 
},
 
"assignedOwnerPrincipalOperator": {
 
"options": []
 
},
 
"payee": {
 
"options": []
 
},
 
"lessor": {
 
"options": []
 
},
 
"trust": {
 
"options": []
 
}
 
},
 
"detached_answers": {},
 
"calculations": {
 
"additionalFactorComputedFieldCalculation": 0.5,
 
"otherAutoPolicy": 0,
 
"termFactor": 1,
 
"antiLockFactor": 1,
 
"multiCarFactor": 0
 
},
 
"rate_tables": {
 
"vehicleUseValue": "More than 15 miles to work",
 
"bodilyInjuryIncreasedLimitFactor": 1.47,
 
"bodilyInjuryPerOccurrenceLimit": 300000,
 
"bodilyInjuryPerPersonLimit": 100000,
 
"increasedBodilyInjuryCharge": 10,
 
"increasedPropertyDamageCharge": 5,
 
"propertyDamageDisplayLimit": 100000,
 
"propertyDamageIncreasedLimitFactor": 1.1,
 
"uninsuredMotoristBiPerOccurrenceLimit": 300000,
 
"uninsuredMotoristBiPerPersonLimit": 100000,
 
"uninsuredMotoristPdLimit": 100000
 
},
 
"pro_rata": {
 
"value": 55
 
},
 
"meta": {
 
"static_id": "95fd4cbe-b34a-49a9-9977-4105ce99b75b"
 
}
 
}
 
}

Sample response

View code
{
"id": "95fd4cbe-b34a-49a9-9977-4105ce99b75b",
"number": 1,
"risk_state": {
"schema_version": "1.3",
"id": "95fd4cbe-b34a-49a9-9977-4105ce99b75b",
"name": "Private Passenger Auto 1",
"number": 1,
"total_premium": 55.0,
"type": {
"id": "33ae7229-eaa5-4481-b330-f0fe8edbb4ac",
"name": "privatePassengerAutos",
"label": "Private Passenger Auto"
},
"items": {
"bodilyInjury": {
"premium": null,
"pro_rata": {
"value": null
},
"meta": {
"resolved_refs": [],
"unresolved_refs": []
},
"limits": {
"BIPerOccurrenceLimit": 300000.0,
"BIPerPersonLimit": 100000.0
}
},
"propertyDamage": {
"premium": null,
"pro_rata": {
"value": null
},
"meta": {
"resolved_refs": [],
"unresolved_refs": []
},
"limits": {
"PDLimit": 100000.0
}
},
"uninsuredMotorist": {
"premium": 55.0,
"pro_rata": {
"value": 55.0
},
"meta": {
"resolved_refs": [],
"unresolved_refs": []
},
"limits": {
"UMBIPerOccurrenceLimit": 300000.0,
"UMBIPerPersonLimit": 100000.0,
"UMPDLimit": 100000.0
}
}
},
"detached_items": [],
"item_overrides": {},
"field_answers": {
"zipCode5DigitsOnly": "",
"bodilyInjuryLimit": "bodilyInjuryLimit_100000300000",
"program": "program_standard",
"modelYear": null,
"performance": "performance_standard",
"vehiclePoints": null,
"assignedOwnerPrincipalOperator": "",
"vehicleUse": "vehicleUse_1530milestowork",
"additionalDriver": "",
"hasAntiLock": false,
"propertyDamageLimit": "propertyDamageLimit_100000",
"uninsuredMotoristBodilyInjuryLimit": "uninsuredMotoristBodilyInjuryLimit_100000300000",
"uninsuredMotoristPropertyDamageLimit": "uninsuredMotoristPropertyDamageLimit_100000",
"serialVin": "",
"make": "",
"model": "",
"garagingAddress": "",
"garagingTown": "",
"garagingState": "garagingState_vAVirginia",
"uninsuredMotoristFormRequired": false,
"grossWeight": null,
"jointOwned": false,
"bodyStyle": "",
"registrationState": "registrationState_VA",
"ownerFactor": "",
"additionalFactor": 0.5
},
"field_overrides": {
"modelYear": {
"required": false
},
"performance": {
"required": false
},
"vehiclePoints": {
"required": false
},
"additionalDriver": {
"required": false,
"options": []
},
"assignedOwnerPrincipalOperator": {
"options": []
},
"payee": {
"options": []
},
"lessor": {
"options": []
},
"trust": {
"options": []
}
},
"detached_answers": {},
"calculations": {
"additionalFactorComputedFieldCalculation": 0.5,
"otherAutoPolicy": 0.0,
"termFactor": 1.0,
"antiLockFactor": 1.0,
"multiCarFactor": 0.0
},
"rate_tables": {
"vehicleUseValue": "More than 15 miles to work",
"bodilyInjuryIncreasedLimitFactor": 1.47,
"bodilyInjuryPerOccurrenceLimit": 300000.0,
"bodilyInjuryPerPersonLimit": 100000.0,
"increasedBodilyInjuryCharge": 10.0,
"increasedPropertyDamageCharge": 5.0,
"propertyDamageDisplayLimit": 100000.0,
"propertyDamageIncreasedLimitFactor": 1.1,
"uninsuredMotoristBiPerOccurrenceLimit": 300000.0,
"uninsuredMotoristBiPerPersonLimit": 100000.0,
"uninsuredMotoristPdLimit": 100000.0
},
"pro_rata": {
"value": 55.0
},
"meta": {
"static_id": "95fd4cbe-b34a-49a9-9977-4105ce99b75b"
}
},
"final_rate": null,
"risk_quotes": [],
"generated_by": "LexisNexis",
"date_added": "2020-07-16T19:50:06.294818Z",
"date_modified": "2020-07-16T20:15:22.954648Z",
"meta": {
"locked": false
}
}

Step 8: Rate your quote 

Use the rateQuote endpoint (quote/{quote_number}/rate) to rate the entire quote. Quote number is the required parameter.

Sample request

View code

curl --location --request POST 'https://<client url>/quote/Q-personalAutoCW-2020-1139/rate/' \
--header 'Content-Type: application/vnd.api+json' \
--header 'Authorization:

Sample response

View code

{
"id": "0032775c-772a-4c24-bb5c-83c1c9278479",
"quote_number": "Q-personalAutoCW-2020-1139",
"transaction_type": "endorsement",
"source_quote_number": "Q-personalAutoCW-2020-1138",
"status": "In Progress",
"policy_state": {
"policy": {
"inception_date": "2020-10-22",
"number": ""
},
"term": {
"effective_date": "2020-10-31",
"expiration_date": "2021-10-22"
},
"revision": {
"revision_date": "2020-10-31",
"description": "New Policy"
}
},
"root_risk_quote_id": "56da4e52-e634-4e94-93cc-ea214c4127a8",
"product_name": "personalAutoCW",
"product_version": "98f2af68-c252-47d6-bbc1-7c925e1443ef",
"product_label": "Personal Auto - Countrywide",
"agency": {
"id": "dcadb160-128c-4586-88e0-18be6b9e1835",
"name": "Rogahn Insurance LLC"
},
"agents": [
{
"id": "bf0824bf-2982-4c67-9494-fa8868d420ff",
"name": "Matilde Langworth"
}
],
"is_bound": false,
"redirect_uri": "/quote/Q-personalAutoCW-2020-1139/",
"owner": {
"id": "c95f52e5-4816-48ed-bd59-4317759f107c",
"name": ""
},
"named_insured": {
"id": "ff358af6-dc1d-43b0-bfd8-9e11b6ad7f38",
"name": "driver1 driver"
},
"named_insureds": [
{
"id": "ff358af6-dc1d-43b0-bfd8-9e11b6ad7f38",
"name": "driver1 driver"
}
],
"submitted_for_review_date": null,
"date_added": "2020-10-22T14:15:06.919275Z",
"last_rated_at": "2020-11-10T12:59:14.901572Z",
"meta": {
"locked": true
}
}

Step 9: Submit quote for review

Use the rateQuote endpoint (quote/{quote_number}/rate) to rate the entire quote. Quote number is the required parameter.

Sample request

View code
curl --request POST \
--url /api/quote/Q-personalAutoCW-2020-159/submit/ \
--header 'authorization: '

Sample response

This request doesn’t return a response.

Step 10: List possible quote transition states

When a quote is submitted, it moves to the In Review state. Depending on your workflow, an underwriter may have to review the quote and approve it. BriteQuote uses triggers to change the state from one transition to another. Use the ListStatusTrigger endpoint (quote/{quote_number}/status/triggers) to see the possible transitions available for your quote.

Sample request

View code
{
"id": "0032775c-772a-4c24-bb5c-83c1c9278479",
"quote_number": "Q-personalAutoCW-2020-159",
"transaction_type": "endorsement",
"source_quote_number": "Q-personalAutoCW-2020-1138",
"status": "In Progress",
"policy_state": {
"policy": {
"inception_date": "2020-10-22",
"number": ""
},
"term": {
"effective_date": "2020-10-31",
"expiration_date": "2021-10-22"
},
"revision": {
"revision_date": "2020-10-31",
"description": "New Policy"
}
},
"root_risk_quote_id": "56da4e52-e634-4e94-93cc-ea214c4127a8",
"product_name": "personalAutoCW",
"product_version": "98f2af68-c252-47d6-bbc1-7c925e1443ef",
"product_label": "Personal Auto - Countrywide",
"agency": {
"id": "dcadb160-128c-4586-88e0-18be6b9e1835",
"name": "Rogahn Insurance LLC"
},
"agents": [
{
"id": "bf0824bf-2982-4c67-9494-fa8868d420ff",
"name": "Matilde Langworth"
}
],
"is_bound": false,
"redirect_uri": "/quote/Q-personalAutoCW-2020-1139/",
"owner": {
"id": "c95f52e5-4816-48ed-bd59-4317759f107c",
"name": ""
},
"named_insured": {
"id": "ff358af6-dc1d-43b0-bfd8-9e11b6ad7f38",
"name": "driver1 driver"
},
"named_insureds": [
{
"id": "ff358af6-dc1d-43b0-bfd8-9e11b6ad7f38",
"name": "driver1 driver"
}
],
"submitted_for_review_date": null,
"date_added": "2020-10-22T14:15:06.919275Z",
"last_rated_at": "2020-11-10T12:59:14.901572Z",
"meta": {
"locked": true
}
}

Sample response

View code
{ 
"data": [{"type": "transitions","id": "abandon","attributes": {"name": "abandon"}},
{"type": "transitions","id": "uw_approve","attributes": {"name": "uw_approve"}},
{"type": "transitions","id": "uw_decline","attributes": {"name": "uw_decline"}}],
"meta": {"pagination": {"page": 1,"pages": 1,"count": 3}}}

Step 11: Approve your quote

Once you verify that you can approve your quote, use Execute StatusTrigger (quote/{quote_number}/status/triggers/{trigger_name}) to change the quote status from In Review to Approved.

Sample request

View code
curl --request POST \
--url /api/quote/Q-personalAutoCW-2020-159/status/triggers/uw_approve/ \
--header 'authorization: ' \
--header 'content-type: application/vnd.api+json'

Sample response

This request doesn’t return a response when successful.

Step 12: Collect billing information

The saveBilling endpoint (quote/{quote_number}/billing) allows you to persist the billing information collected by the agent. You need to pass the quote number and the required parameters included in the data JSON object below:

Sample request

View code
curl --request POST \
--url /api/quote/Q-personalAutoCW-2020-159/billing/ \
--header 'authorization: \
--header 'content-type: application/vnd.api+json' \
--cookie XSRF-TOKEN=11d50576-ef36-4e31-a985-c19ab0c3895e \
--data '{
"data": {
"type": "billing",
"attributes": {
"initial": {
"bill_whom_id": "36951e65-238d-4a64-ab82-90d734584c7c",
"bill_how_id": "c032a916-4ebb-4498-b387-3928fd575591",
"billing_schedule_id": "b2b3ad64-07a5-462f-bdf4-dfe21b5160b0",
"payment_method_id": ""
},
"recurring": {
"bill_whom_id": "36951e65-238d-4a64-ab82-90d734584c7c",
"bill_how_id": "c032a916-4ebb-4498-b387-3928fd575591",
"billing_schedule_id": "b2b3ad64-07a5-462f-bdf4-dfe21b5160b0",
"payment_method_id": ""
}
}
}
}

Sample response

A successful response returns the billing detail object.

View code
{
"data": {
"type": "billing",
"id": "ef950421-f3e6-4717-b40f-e55a1ebadbc1",
"attributes": {
"initial": {
"bill_whom_id": "300fb32f-06ab-4c72-be9a-58dc3193e2c1",
"bill_how_id": "2c8d0142-53fe-4e18-b826-608b06e7baf6",
"billing_schedule_id": "",
"payment_method_id": ""
},
"recurring": {
"bill_whom_id": "300fb32f-06ab-4c72-be9a-58dc3193e2c1",
"bill_how_id": "2c8d0142-53fe-4e18-b826-608b06e7baf6",
"billing_schedule_id": "98e9aa11-ed5e-4d4f-94aa-2e442eff0bec",
"payment_method_id": "7e33f2ee-3989-4f6e-8532-ebea9d9cd8ac"
}
}
}

Step 13: Get billing information

Once a quote has been reviewed, you can use getBilling (quote/{quote_number}/billing) to get the billing details for your quote.

Sample request

View code
curl --request GET \
--url https://{client urL}/api/quote/Q-personalAutoCW-2020-1/billing/ \
--header 'authorization: Bearer \
--header 'content-type: application/vnd.api+json'

Sample response

View code
{
"data": {
"type": "billing",
"id": "ef950421-f3e6-4717-b40f-e55a1ebadbc1",
"attributes": {
"initial": {
"bill_whom_id": "300fb32f-06ab-4c72-be9a-58dc3193e2c1",
"bill_how_id": "2c8d0142-53fe-4e18-b826-608b06e7baf6",
"billing_schedule_id": "",
"payment_method_id": "7e33f2ee-3989-4f6e-8532-ebea9d9cd8ac"
},
"recurring": {
"bill_whom_id": "300fb32f-06ab-4c72-be9a-58dc3193e2c1",
"bill_how_id": "2c8d0142-53fe-4e18-b826-608b06e7baf6",
"billing_schedule_id": "98e9aa11-ed5e-4d4f-94aa-2e442eff0bec",
"payment_method_id": ""
}
}
}
}
]

Step 14: Bind a quote

Use bindQuote (quote/{quote_number}/bind) to bind your quote in BriteCore. This step essentially turns a quote into an actual policy. The required parameter is the quote number. You will receive a policy number, and the effective date is set to the same date the quote is bound.

Sample request

View code
curl --request POST \
--url /api/quote/Q-personalAutoCW-2020-159/bind/ \
--header 'authorization: '

Sample response

View code
{
"id": "e12b9951-0751-4a6f-95b1-76536d017714",
"number": "10-2020-231",
"inception_date": "2020-07-16T00:00:00Z",
"external_id": "6d2c4dcd-04df-421e-aba3-f7cc92dfc725",
"revision_id": "f032869a-e8fa-42f6-ab00-2659e5cbe356",
"redirect_uri": "/policies/policy/6d2c4dcd-04df-421e-aba3-f7cc92dfc725"
}

Step 15: Upload an attachment to BriteQuote

For more information, refer to View, upload, and delete an attachment to an existing quote.

You have successfully created and bound a quote.