Topics on this page

BriteAPI Tutorial: Create and bind a quote

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.

For more details, review how quotes are set up in BriteCore.

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 quote details
  4. Update details of your quote
  5. Add a driver risk to the quote
  6. Update driver risk
  7. Add a vehicle risk to the quote
  8. Update vehicle risk
  9. Add comprehensive coverage
  10. Remove comprehensive coverage
  11. Add collision coverage
  12. Remove collision coverage
  13. Rate your quote
  14. Retrieve a list of your quote risks
  15. Submit quote for a review
  16. Request quote review
  17. Approve your quote
  18. Collect billing information
  19. Retrieve billing information
  20. Bind a quote
  21. 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.

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 Line of Business for a quote

Use the getQuotableProducts endpoint (/quote/quotable-products/) to view the list of products (LOBs) 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 code

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.

Save the quote_number & id as quote_id for use later.

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":"Tester"
}
],
"is_bound":false,
"redirect_uri":"/quote/Q-personalAutoCW-2020-159/",
"owner":{
"id":"5c7376a9-1ca8-4a1c-896e-7b9cb71fe26f",
"name":"Test Testing"
},
"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 details

Get the details of a Quote by using the endpoint getQuote. quote_number is the required parameter.

Save the root_risk_quote_id as root_risk_id for use later.

Sample request

View code

'curl --location -g --request GET '/api/ quote/:"Q-PA-2018-106"/'

Sample response

View code

{
"id":"017398f5-9191-40e4-95a5-e900f884cdec",
"quote_number":"Q-PA-2018-106",
"status":"In Progress",
"policy_state":{
"policy":{
"external_id":"dec0c695-bf33-462d-bf02-9d3f6240e998",
"number":"P-2019-1",
"redirect_uri":"/policies/policy/572ae798-489b-4381-ad2b-57177de059ef",
"inception_date":"2018-04-25"
},
"term":{
"effective_date":"2018-04-25",
"expiration_date":"2019-04-25"
},
"revision":{
"revision_date":"2018-04-25",
"description":"New Policy"
}
},
"root_risk_quote_id":"50d61656-bf33-462d-bf02-9d3f6240e998",
"product_name":"personalAutoCW",
"product_version":"3d152ef4-9123-4ff2-b8d5-df9fb1c04ca0",
"product_label":"Personal Auto - Countrywide",
"agency":{
"id":"e2cdc695-cfd4-4376-a8bb-5411ad4516ca",
"name":"John Smith"
},
"agents":[
{
"id":"327023a5-8fc7-4cd2-801e-45269df6d4a9",
"name":"John Doe"
},
{
"id":"7b6ee056-5861-4a1a-b4fc-345172b913e3",
"name":"Emily Wallace"
}
],
"is_bound":false,
"owner":{
"id":"327023a5-8fc7-4cd2-801e-45269df6d4a9",
"name":"John Doe"
},
"named_insured":{
"id":"33d17bd2-919c-46fa-b4d2-f4aa8aef75e7",
"name":"Marry Jones"
},
"submitted_for_review_date":"2019-12-30T22:02:44.491266Z",
"meta":{
"locked":false
}
}

Step 5: Update details of your quote

Update the details of your quote using the updateQuote endpoint. quote_number is required.

Note: You can update only the effective date, agency, and agents.

Include the following JSON payload in your request to associate an agency and agent to your quote.

View code

{
"effective_date": "2019-08-24",
"agency": {
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08"
},
"agents": [{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08"
}],
"conversion_policy_number": "string",
"term": {
"granularity": "years",
"units": 1
}

}

Sample request

View code

'curl --location -g --request PUT '/api/ quote/:"Q-PA-2018-106"/'

Sample response

View code

{
"id":"017398f5-9191-40e4-95a5-e900f884cdec",
"quote_number":"Q-PA-2018-106",
"status":"In Progress",
"policy_state":{
"policy":{
"external_id":"dec0c695-bf33-462d-bf02-9d3f6240e998",
"number":"P-2019-1",
"redirect_uri":"/policies/policy/572ae798-489b-4381-ad2b-57177de059ef",
"inception_date":"2018-04-25"
},
"term":{
"effective_date":"2018-04-25",
"expiration_date":"2019-04-25"
},
"revision":{
"revision_date":"2018-04-25",
"description":"New Policy"
}
},
"root_risk_quote_id":"50d61656-bf33-462d-bf02-9d3f6240e998",
"product_name":"personalAutoCW",
"product_version":"3d152ef4-9123-4ff2-b8d5-df9fb1c04ca0",
"product_label":"Personal Auto - Countrywide",
"agency":{
"id":"e2cdc695-cfd4-4376-a8bb-5411ad4516ca",
"name":"John Smith"
},
"agents":[
{
"id":"327023a5-8fc7-4cd2-801e-45269df6d4a9",
"name":"John Doe"
},
{
"id":"7b6ee056-5861-4a1a-b4fc-345172b913e3",
"name":"Emily Wallace"
}
],
"is_bound":false,
"owner":{
"id":"327023a5-8fc7-4cd2-801e-45269df6d4a9",
"name":"John Doe"
},
"named_insured":{
"id":"33d17bd2-919c-46fa-b4d2-f4aa8aef75e7",
"name":"Marry Jones"
},
"submitted_for_review_date":"2019-12-30T22:02:44.491266Z",
"meta":{
"locked":false
}
}

Step 6: Add a driver risk 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.

Save the id as driver_id.

For more information, refer to the retrieve product definition tutorial to get product definition endpoints and details.

Sample request

View code
curl --location --request POST '/api/quote/risks/?dry_run=false&rules_action=form-inline-change&rules_version=%3Cstring%3E' \

--header 'X-Disable-Rules-Engine;' \

--header 'X-Disable-Rating-Engine;' \

--header 'Content-Type: application/json' \

--data-raw '{

"quote": "26eab8e3-7b13-4fb5-8c0c-d28479422158",

"parent_risk_quote": "7a7d9501-475e-47a5-9c1b-93fe0c86a6f7",

"risk_type_name": "drivers"

}'

Sample response

View code
{

"id": "7c4233da-f046-4747-8a81-88adc9abe27b",

"number": 1,

"risk_state": {

"schema_version": "1.3",

"id": "7c4233da-f046-4747-8a81-88adc9abe27b",

"name": "Driver 1",

"number": 1,

"total_premium": 0,

"type": {

"id": "fe881857-475f-4c73-9162-3b8452169fc2",

"name": "drivers",

"label": "Driver"

},

"items": {},

"detached_items": [],

"item_overrides": {},

"field_answers": {

"driverName": "",

"dob": "",

"gender": "",

"maritalStatus": "",

"driverLicenseNumber": "",

"goodStudent": false,

"driverTraining": false,

"includeSeniorDiscount": false,

"numberOfYearsLicensed": null

},

"field_overrides": {},

"detached_answers": {},

"calculations": {},

"rate_tables": {},

"pro_rata": {

"value": 0

},

"meta": {

"static_id": "7c4233da-f046-4747-8a81-88adc9abe27b"

}

},

"final_rate": null,

"risk_quotes": [],

"generated_by": "",

"date_added": "2020-07-29T03:57:26.053706Z",

"date_modified": "2020-07-29T03:57:26.053743Z",

"meta": {

"locked": false

}

}

Step 7: Update driver risk

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 --location -g --request PUT '/quote/risks/:risk_quote_id/?rules_action=form-inline-change&page_name=%3Cstring%3E&rules_version=%3Cstring%3E' \

--header 'X-Disable-Rules-Engine;' \

--header 'X-Disable-Rating-Engine;' \

--data-raw '{

"risk_state": {

"schema_version": "1.3",

"id": "7c4233da-f046-4747-8a81-88adc9abe27b",

"name": "Driver 1",

"number": 1,

"total_premium": 0,

"type": {

"id": "fe881857-475f-4c73-9162-3b8452169fc2",

"name": "drivers",

"label": "Driver"

},

"items": {},

"detached_items": [],

"item_overrides": {},

"field_answers": {

"driverName": "",

"dob": "",

"gender": "",

"maritalStatus": "",

"driverLicenseNumber": "",

"goodStudent": false,

"driverTraining": false,

"includeSeniorDiscount": false,

"numberOfYearsLicensed": null

},

"field_overrides": {},

"detached_answers": {},

"calculations": {},

"rate_tables": {},

"pro_rata": {

"value": 0

},

"meta": {

"static_id": "7c4233da-f046-4747-8a81-88adc9abe27b"

}

},

"final_rate": null,

"risk_quotes": [],

"generated_by": "",

"date_added": "2020-07-29T03:57:26.053706Z",

"date_modified": "2020-07-29T03:57:26.053743Z",

"meta": {

"locked": false

}

}

}'

Sample response

View code
{

"id": "7c4233da-f046-4747-8a81-88adc9abe27b",

"number": 1,

"risk_state": {

"schema_version": "1.3",

"id": "7c4233da-f046-4747-8a81-88adc9abe27b",

"name": "Driver 1",

"number": 1,

"total_premium": 0,

"type": {

"id": "fe881857-475f-4c73-9162-3b8452169fc2",

"name": "drivers",

"label": "Driver"

},

"items": {},

"detached_items": [],

"item_overrides": {},

"field_answers": {

"driverName": "",

"dob": "",

"gender": "",

"maritalStatus": "",

"driverLicenseNumber": "",

"goodStudent": false,

"driverTraining": false,

"includeSeniorDiscount": false,

"numberOfYearsLicensed": null

},

"field_overrides": {},

"detached_answers": {},

"calculations": {},

"rate_tables": {},

"pro_rata": {

"value": 0

},

"meta": {

"static_id": "7c4233da-f046-4747-8a81-88adc9abe27b"

}

},

"final_rate": null,

"risk_quotes": [],

"generated_by": "",

"date_added": "2020-07-29T03:57:26.053706Z",

"date_modified": "2020-07-29T03:57:26.053743Z",

"meta": {

"locked": false

}

}

Step 8: Add a vehicle risk 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.

Save the id as vehicle_id.

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 9: Update vehicle risk

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 --location -g --request PUT '{{baseUrl}}/quote/risks/:risk_quote_id/?rules_action=form-inline-change&page_name=%3Cstring%3E&rules_version=%3Cstring%3E' \ --data-raw '{

"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

}

}

}'

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 10: Add comprehensive coverage

Use the addRiskQuoteItem endpoint(/quote/items/) to add an item to a risk quote.

Sample request

View code

curl --location -g --request POST '{{baseUrl}}/quote/items/?rules_action=form-inline-change&rules_version=%3Cstring%3E' \ --header 'X-Disable-Rules-Engine;' \ --header 'X-Disable-Rating-Engine;' \ --data-raw '{

"risk_quote": "e6d85d78-dd7d-4231-8c7a-1c89346bc5e2",

"risk_item_name": "comprehensive"

}'

Sample response

View code

{
"id": "e6d85d78-dd7d-4231-8c7a-1c89346bc5e2"
", "
number ": 1, "
risk_state ": { "
schema_version ": "
1.4 ", "
name ": "
Auto 1 ", "
number ": 1, "
total_premium ": 0, "
pro_rata ": { "
value ": 0 }, "
type ": { "
id ": "
75 ebb35d - 6938 - 4755 - aa4e - 818 b95d2e8ab ", "
name ": "
autos ", "
label ": "
Auto " }, "
items ": { }, "
field_answers ": { }, "
field_overrides ": { }, "
detached_answers ": { }, "
id ": "
1 a6275d3 - 2 bdc - 4 f41 - b185 - 21 f9fb757274 ", "
inception_date ": "
2020 - 12 - 31 ", "
meta ": {} }, "
final_rate ": 0, "
final_prorated_rate ": 0, "
generated_by ": "
", "
date_added ": "
2019 - 08 - 19 T23: 24: 57.138149 + 00: 00 ", "
date_modified ": "
2019 - 08 - 19 T23: 25: 23.159705 + 00: 00 ", "
meta ": { "
locked ": false, "
messages ": [] } }

Step 11: Remove comprehensive coverage

Use the removeRiskQuoteItem endpoint(/quote/items/{risk_item_name}) to remove an item from a risk quote.

Sample request

View code
curl --location -g --request DELETE '{{baseUrl}}/quote/items/:risk_item_name/?rules_action=form-inline-change&rules_version=%3Cstring%3E' \

--header 'X-Disable-Rules-Engine;' \

--header 'X-Disable-Rating-Engine;' \

--data-raw '{

"risk_quote": "1a6275d3-2bdc-4f41-b185-21f9fb757274"

}'

Sample response

View code
{

"id": "1a6275d3-2bdc-4f41-b185-21f9fb757274",

"number": 1,

"risk_state": {

"schema_version": "1.1",

"name": "Auto 1",

"number": 1,

"total_premium": 0,

"pro_rata": {

"value": 0

},

"type": {

"id": "75ebb35d-6938-4755-aa4e-818b95d2e8ab",

"name": "autos",

"label": "Auto"

},

"items": {},

"field_answers": {},

"field_overrides": {},

"detached_answers": {},

"id": "1a6275d3-2bdc-4f41-b185-21f9fb757274"

},

"final_rate": 0,

"generated_by": "",

"date_added": "2019-08-19T23:24:57.138149+00:00",

"date_modified": "2019-08-19T23:25:23.159705+00:00",

"meta": {

"locked": false,

"messages": [

{

"code": "warning",

"detail": "A warning message received from BriteRules.",

"source": {

"pointer": "/data"

},

"meta": {

"risk": "327023a5-8fc7-4cd2-801e-45269df6d4a9"

}

}

]

}

}

Step 12: 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:///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 13: Retrieve a list of your quote risks

The listRisks returns a JSON representation of a Risk Type for a given Quote, including all Premiums. The quote_number is required.

Sample request

View code

curl --location --request GET '/api/quote/Quote-generalAutoCW-2020-74/risks/?page=1' \ --header 'Content-Type: application/json' \ --data-raw ''

Sample response

View code

{
"id": "f8958407-2fed-4a45-a52d-924763a243ec",
"number": 1,
"risk_state": {
"schema_version": "1.3",
"id": "f8958407-2fed-4a45-a52d-924763a243ec",
"name": "Policy 1",
"number": 1,
"total_premium": 0,
"type": {
"id": "c0d8f920-fa35-4da4-8d81-a70fd8c954fb",
"name": "policy",
"label": "Policy"
},
"items": {},
"detached_items": [],
"item_overrides": {},
"field_answers": {
"uninsuredMotoristBodilyInjury": "uninsuredMotoristBodilyInjury_50000100000",
"uninsuredMotoristPropertyDamage": "uninsuredMotoristPropertyDamage_25000",
"firstNameNI": "",
"middleInitialNI": "",
"lastNameNI": "",
"suffixNI": "",
"socialSecurityNumberNI": "123-45-6789",
"dateOfBirthNI": "",
"licenseNumberNI": "",
"licenseStateNI": "",
"cityNI": "",
"streetAddressNI": "",
"stateOfNI": "",
"zipCodeNI": "12345",
"emailNI": "",
"uber": null,
"rentedToOthers": null,
"coverageDeclinedInThree": null,
"deliveryUse": null,
"hasAnyDriversLicenseBeenSuspendedOrRevoked": null,
"financialFilings": null
},
"field_overrides": {},
"detached_answers": {},
"calculations": {},
"rate_tables": {},
"pro_rata": {
"value": 0
},
"meta": {
"static_id": "f8958407-2fed-4a45-a52d-924763a243ec"
}
},
"final_rate": null,
"risk_quotes": [],
"generated_by": "",
"date_added": "2020-07-29T03:20:36.708642Z",
"date_modified": "2020-07-29T03:20:36.708680Z",
"meta": {
"locked": false
}
}

Step 14: Submit quote for review

Use the submitQuote endpoint (quote/{quote_number}/submit) to submit the 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 15: Request review

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

This request returns a 204 status response when successful.

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 16: 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 returns a 204 status response when successful.

Step 17: Retrieve 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 18: 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 19: 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 20: 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.