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:
- Choose a product for a quote.
- Create a quote.
- Get quote details
- Update details of your quote
- Add a driver risk to the quote
- Update driver risk
- Add a vehicle risk to the quote
- Update vehicle risk
- Add comprehensive coverage
- Remove comprehensive coverage
- Add collision coverage
- Remove collision coverage
- Rate your quote
- Retrieve a list of your quote risks
- Submit quote for a review
- Request quote review
- Approve your quote
- Collect billing information
- Retrieve billing information
- Bind a quote
- 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
curl --location --request GET 'https://{urL}/api/quote/quotable-products/?effective_before=06/24/2020' \ --header 'Authorization: Bearer
Sample response
{
"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
'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
{
"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
'curl --location -g --request GET '/api/ quote/:"Q-PA-2018-106"/'
Sample response
{
"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.
{
"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
'curl --location -g --request PUT '/api/ quote/:"Q-PA-2018-106"/'
Sample response
{
"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
curl --location --request POST '/api/quote/risks/?dry_run=false&rules_action=form-inline-change&rules_version=%3Cstring%3E' \
|
Sample response
{
|
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
curl --location -g --request PUT '/quote/risks/:risk_quote_id/?rules_action=form-inline-change&page_name=%3Cstring%3E&rules_version=%3Cstring%3E' \
|
Sample response
{
|
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
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
{
"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
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 '{
|
Sample response
{
"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
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
{
"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
curl --location -g --request DELETE '{{baseUrl}}/quote/items/:risk_item_name/?rules_action=form-inline-change&rules_version=%3Cstring%3E' \
|
Sample response
{
|
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
curl --location --request POST 'https:///quote/Q-personalAutoCW-2020-1139/rate/' \ --header 'Content-Type: application/vnd.api+json' \ --header 'Authorization:
Sample response
{
"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
curl --location --request GET '/api/quote/Quote-generalAutoCW-2020-74/risks/?page=1' \ --header 'Content-Type: application/json' \ --data-raw ''
Sample response
{
"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
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
{
"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.
{
"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
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
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
{
“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
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.
.{
"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 bindRequested quote/{quote_number}/bind_requested)
to request your endorsement binding. You can’t delete an endorsement after you bind it.
Sample request
curl --request POST \
--url /quote/Q-personalAutoCW-2020-180/bind_requested/ \
--header 'authorization: '
Sample response
{
"id": "7dc49992-af1d-46f8-9321-6f0d1af7bcf3",
"quote_number": "Q-personalAutoCW-2020-180",
"inception_date": "2020-07-31T00:00:00Z",
"is_conversion": "false",
"quote": { },
"term_type": "1 Year",
"transaction_type": "endorsement"
}
Bind status polling
Use getQuote to poll the bindRequested
operation status. The most relevant attributes are is_binding that indicates if the process is still being processed, is_bound that indicates if the quote has been bound and alerts where the error messages are stored in case they occur.
Sample request
curl --request GET \
--url /quote/Q-personalAutoCW-2020-180/ \
--header 'authorization: '
Sample response
{
"id": "d863265c-c75c-4231-a3a7-27a1b4f3546f",
"quote_number": "RWT-2022-221",
"transaction_type": "rewrite",
"source_quote_number": "RNW-2022-499",
"status": "Approved",
"policy_state": {},
"root_risk_quote_id": "1f7745e1-fff5-4541-864b-50c7f7a87142",
"product_name": "personalAutoCW",
"product_version": "58370e68-4a29-4775-a482-b4b6d1ce5799",
"product_label": "Personal Auto - Countrywide",
"agency": { },
"agents": [],
"alerts": [],
"is_bound": false,
"is_binding": true,
"redirect_uri": "/quote/RWT-2022-221/",
"owner": {},
"named_insureds": [],
"term": {},
"submitted_for_review_date": null,
"date_added": "2022-05-05T17:50:12.795994Z",
"last_rated_at": "2022-05-05T17:51:54.159724Z",
"premium": {},
"conversion_policy_number": "",
"meta": {
"locked": true
}
}
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.