Submission
In PolicyCenter, all quotes and policies are originated through the submission policy transaction. During this transaction, an insurer collects and evaluates account holder data for the purpose of quoting and possibly creating a policy for a specific insurance product. The submission policy transaction is supported by the Job API.
For a general overview of how to conduct policy transactions using the system APIs, see Policy transactions. For details on the business functionality of submissions, see the Application Guide.
Basic process
- Initiate the submission policy transaction by creating a submission job.
- Modify the submission job.
- Add coverables
- Apply coverages and modifiers
- Apply exposures, exclusions, or conditions
- Pre-qualify the account holder
- Generate a quote.
- Complete the submission policy transaction in one of the following ways:
- Bind the submission
- Reject the submission
- Withdraw the submission
Initiating the submission policy transaction
Initiating a submission policy transaction creates a new submission job that is in Draft state. All submissions, regardless of product or coverage, require the following data:
- Account ID: An existing account ID. If the account does not already exist, then you will have to create a new account before proceeding. For details, see Creating an account.
- Base state code: The jurisdiction of the primary location of the account, from the Jurisdiction typelist
- Job effective date: A date string in the form of
"YYYY-MM-DD"
- Producer code: The code of the producer that is selling the policy
- Product ID: The type of policy that will be created through the submission. For
example,
PersonalAuto
for a personal auto policy.
To initiate a submission, construct a request payload having the above data, and then submit
it through a business action POST to /job/v1/submissions
.
The following example contains a valid request payload for a personal auto line request:
{
"data": {
"attributes": {
"account": {
"id": "pc:401"
},
"baseState": {
"code": "CA"
},
"jobEffectiveDate": "2020-08-01",
"producerCode": {
"id": "pc:6"
},
"product": {
"id": "PersonalAuto"
}
}
}
}
Initiating the submission creates a job element, which is returned in the response payload.
All subsequent work in the transaction is executed on the job element. In the case of this
example, that element is /job/v1/jobs/pc:601
.
{
"data": {
"attributes": {
"account": {
"displayName": "0015863842",
"id": "pc:401",
"type": "Account",
"uri": "/account/v1/accounts/pc:401"
},
. . .
"id": "pc:601",
. . .
"jobStatus": {
"code": "Draft",
"name": "Draft"
},
"jobType": {
"code": "Submission",
"name": "Submission"
},
. . .
"product": {
"displayName": "Personal Auto",
"id": "PersonalAuto"
},
. . .
},
. . .
}
}
}
Modifying the submission job
Modifying a submission job involves adding to the new draft submission all data that is necessary in order to generate a quote and create a policy. The specific types of data to add will depend on your product or line of business (LOB). Applying necessary data can entail one or more calls. The following sections provide general guidance on the types of data that might need to be added.
Add coverables
A coverable refers to any risk exposure that can be covered by a policy. Coverables are accessible as collections on LOB endpoints, and can also be nested.
For example, in a personal auto line, vehicles and drivers are coverables. In the Jobs API,
vehicles can be added at
/job/v1/jobs/{jobId}/lines/PersonalAutoLine/vehicles
, with a request
payload that resembles the following:
{
"data": {
"attributes": {
"annualMileage": 10000,
"bodyType": {
"code": "convertible"
},
"color": "Yellow",
"commutingMiles": 50,
"costNew": {
"amount": "25000.00",
"currency": "usd"
},
"leaseOrRent": true,
"lengthOfLease": {
"code": "SixMonthsOrMore"
},
"licensePlate": "123456",
"licenseState": {
"code": "CA"
},
"make": "NewMake",
"model": "NewModel",
"modelYear": 2015,
"primaryUse": {
"code": "pleasure"
},
"statedValue": {
"amount": "20000.00",
"currency": "usd"
},
"vehicleType": {
"code": "PP"
},
"vin": "1234567890"
}
}
}
Drivers associated with a covered vehicle can be added at
/job/v1/jobs/{jobId}/lines/PersonalAutoLine/vehicles/{vehicleId}/drivers
,
with a request payload that resembles the following:
{
"data": {
"attributes": {
"percentageDriven": 100,
"policyDriver": {
"id": "pc:401"
}
}
}
}
The driver ID value must correspond to the ID of a contact element on the
/account/v1/accounts/{accountId}/contacts
collection.
Apply coverages and modifiers
A coverage is protection from a specific risk. Coverages are attached to coverables. There are two types of coverages: property and liability. To illustrate, on an automobile policy, a collision property coverage protects the insured's vehicle and a liability coverage protects the driver for damage done to another vehicle.
Typically, property coverages can be accessed at
/job/v1/jobs/{jobId}/lines/{lineId}/coverages
. Sometimes coverables are
nested. For example, a location (a coverable) can have a collection of buildings (child
coverables), and a coverage would be applied to each. The basic pattern is
/job/v1/jobs/{jobId}/lines/{lineId}/{coverableType}/{coverableId}/coverages
.
For liability coverages, the policy line itself is the coverable, and represents the named
insureds. The pattern is /job/v1/jobs/{jobId}/lines/{lineId}/coverages
.
A submission with multiple coverables and coverages can have implicit but unresolved
dependencies. Also, the LOB product might support policy modifiers. Depending on the LOB, it
might be necessary to synchronize the coverages and modifiers when composing the submission.
For this purpose, the Job API provides */sync-coverages
and
*/sync-modifiers
endpoints on jobs that are in Draft state. These
endpoints are accessible on the LOB as well as on each coverable, through the following
paths:
-
/job/v1/jobs/{jobId}/lines/{productId}/sync-coverages
-
/job/v1/jobs/{jobId}/lines/{productId}/{coverableType}/{coverableId}/sync-coverages
-
/job/v1/jobs/{jobId}/lines/{productId}/sync-modifiers
-
/job/v1/jobs/{jobId}/lines/{productId}/{coverableType}/{coverableId}/sync-modifiers
To synchronize coverages and modifiers on a submission, a caller would submit a business action POST to these endpoints.
For example, in a personal auto line submission, a caller would synchronize vehicle
coverages by submitting a business action POST to the
/job/v1/jobs/{jobId}/lines/PersonalAutoLine/vehicles/{vehicleId}/sync-coverages
endpoint. To apply coverages for the driver, a caller would submit a business action POST to
the /job/v1/jobs/{jobId}/lines/PersonalAutoLine/sync-coverages
endpoint.
Likewise, to synchronize the policy modifiers with the submission, a caller would submit a
business action POST to the
/job/v1/jobs/{jobId}/lines/PersonalAutoLine/sync-modifiers
and
/job/v1/jobs/{jobId}/lines/PersonalAutoLine/vehicles/{vehicleId}/sync-modifiers
endpoints.
Add exposures, exclusions, or conditions
Exposures, exclusions, and conditions are optional, and their applicability depends on the LOB.
In policies, exposures indicate exposure to risk, and are often identified by class code
and jurisdiction. Exposures are associated with a coverable. For example, a farm insurance
policy might support cow exposures, which could be accessed at the
/job/v1/jobs/{jobId}/lines/FarmInsuranceLine/farms/{farmId}/cows/{cowId}/cow-exposures
endpoint.
An exclusion is a specific cause of loss that will not be covered. For example, a workers
compensation policy might allow certain workplace locations to be excluded from coverage,
and those locations could be accessed at the
/job/v1/jobs/{jobId}/lines/WorkersCompLine/excluded-workplaces
endpoint.
Policy conditions are contractual obligations that neither provide nor exclude coverage. Policy conditions are diverse, and depend on the LOB.
Pre-qualify the account holder
Pre-qualifiction can be accomplished through a series of questions answered during the
submission process that can reveal possible underwriting issues. Answers to
pre-qualification questions can be used to raise underwriting issues or block binding of the
submission. If answers are satisfactory, then the requested coverage can be provisionally
approved by the producer. Pre-qualification questions are specific to an LOB product
configuration. In the Jobs API, a */questions
collection can be associated
with a job, an LOB product, or a coverable.
Pre-qualification could involve posing queries that are general to all products as well as specific to LOB, location, or coverable. As such, depending on the LOB, pre-qualification questions could be accessed through the following endpoints:
-
/job/v1/jobs/{jobId}/questions
-
/job/v1/jobs/{jobId}/locations/{locationId}/questions
-
/job/v1/jobs/{jobId}/lines/{productId}/questions
-
/job/v1/jobs/{jobId}/lines/{productId}/locations/{locationId}/questions
-
/job/v1/jobs/{jobId}/lines/{productId}/{coverableType}/{coverableId}/questions
To illustrate, in a personal auto line, a GET request to
/job/v1/jobs/{jobId}/questions
could return the following:
{
"data": {
"attributes": {
"answers": {
"q1": {
"question": {
"displayName": "Have you been convicted for a moving traffic violation
within the past 3 years?",
"id": "q1"
},
"questionType": {
"code": "Boolean",
"name": "Boolean"
}
},
"q2": {
"question": {
"displayName": "Has any policy or coverage been declined, canceled,
or non-renewed during the prior 3 years?",
"id": "q2"
},
"questionType": {
"code": "Boolean",
"name": "Boolean"
}
},
"q3": {
"question": {
"displayName": "Has your license ever been canceled, suspended or revoked?",
"id": "q3"
},
"questionType": {
"code": "Choice",
"name": "Choice"
}
},
"q4": {
"question": {
"displayName": "Are you currently insured?",
"id": "q4"
},
"questionType": {
"code": "Boolean",
"name": "Boolean"
}
}
}
},
"checksum": "*",
"links": "*"
}
}
The Job API only provides endpoints that support pre-qualification. It is up to implementors to write the backing code.
Generating a quote
After applying all necessary modifications to the draft submission, a caller can generate a policy quote. The insurer and account holder will review the quote to determine how they wish to proceed with the prospective policy.
To generate a quote, a caller can submit a business action POST to the
/job/v1/jobs/{jobId}/quote
endpoint. This call will return a response
payload containing the quote data, and will set the job to Quoted state.
If a quoted submission needs to be revised, then it must be reverted to draft status. This
can be achieved by submitting a business action POST to the
/job/v1/jobs/{jobId}/make-draft
endpoint. A job in Draft state can be
revised and re-quoted.
Also, a caller has the option to generate multiple quotes of the same job. This is useful for providing side-by-side comparison of policy options. For details, see Multi-version quoting.
Completing the submission
To complete the submission policy transaction, a caller must either bind, reject, or withdraw the quoted job.
Bind the submission
If the account holder and insurer agree to the terms and conditions associated with the quoted job, then the submission can be bound. Binding the submission transforms the quote into a policy, which is a legally binding contract between the two parties.
If at the time of binding the insurer requires no further information from the account holder, then the policy can also be issued. In issuing a policy, the insurer adds the new policy information to their systems and provides any necessary insurance documents to the account holder.
To bind and issue a quoted submission job, a caller can submit a business action POST to
the /job/v1/jobs/{jobId}/bind-and-issue
endpoint. Following the call, the
jobStatus
code will be set to Bound
.
Alternatively, a submission can be bound only, with issuance postponed to a later time. This scenario can occur when an account holder must provide additional paperwork, or the insurer is not ready to deliver the policy documentation.
To only bind a quoted submission job but not issue it, a caller can submit a business
action POST to the /job/v1/jobs/{jobId}/bind-only
endpoint. Following the
call, the jobStatus
code will be set to Bound
.
To later issue a bound-only policy, a caller can execute the issuance policy transaction on the policy. For details, see Issuance.
Reject the submission
A submission is rejected when the account holder does not accept the quote or the insurer declines to offer a policy to the account holder.
If the insurer declines to offer a policy, a caller can submit a business action POST to
the /job/v1/jobs/{jobId}/decline
endpoint.
Following the call, the jobStatus
code will be set to Declined
.
If the account holder does not accept the policy quote, a caller would submit a business
action POST to the /job/v1/jobs/{jobId}/not-take
endpoint.
Following the call, the jobStatus
code will be set to NotTaken
.
Withdraw the submission
If there is an error in the submission data, then the transaction can be withdrawn. To
withdraw a submission policy transaction, a caller can submit a business action POST to the
/job/v1/jobs/{jobId}/withdraw
endpoint.
Following the call, the jobStatus
code will be set to Withdrawn
.
The following table encapsulates the several ways that a quoted submission job can be completed:
Quote outcome | Condition | Target endpoint | Job status after call |
---|---|---|---|
Accepted | The account holder and insurer agree to the quote, and all necessary paperwork has been received by the insurer. The policy is bound and issued. |
/job/v1/jobs/{jobId}/bind-and-issue
|
Bound |
Accepted | The account holder and insurer agree to the quote, but the account holder must provide necessary paperwork. The policy is bound only. The policy can later be issued by executing the issuance policy transaction. |
/job/v1/jobs/{jobId}/bind-only
|
Bound |
Rejected | The insurer declines to offer a policy to the account holder. The policy request is declined. |
/job/v1/jobs/{jobId}/decline
|
Declined |
Rejected | The account holder rejects the quote. The policy is not taken. |
/job/v1/jobs/{jobId}/not-take
|
NotTaken |
Withdrawn | The quote contains erroneous data. |
/job/v1/jobs/{jobId}/withdrawn
|
Withdrawn |
Tutorial: Submission policy transaction
This tutorial presents a complete submission policy transaction for a personal auto line. It includes complete payload samples for each call.
The tutorial will demonstrate the following tasks:
- Create a new account for an individual
- Add an additional individual to the new account
- Initiate a submission policy transaction for a personal auto line
- Modify the job
- Add a vehicle
- Add a primary driver to the vehicle
- Add a secondary driver to the vehicle
- Synchronize coverages
- Synchronize modifiers
- Quote the job
- Bind and issue the policy
- Review the policy
Create a new account for an individual
Every submission must be associated with an existing account. If the account does not
already exist, then it must be created. With the Account API, a caller can create an
account by submitting a POST request to the /account/v1/accounts
endpoint
. For details on creating new accounts, see Creating an account.
The following code block contains the essential data for creating a new personal
account. This example takes advantage of request inclusion in applying
AccountContact
and AccountLocation
resource
data. For details on request inclusion, see Request inclusion.
{
"data": {
"attributes": {
"accountHolder": {
"refid": "newperson"
},
"organizationType": {
"code": "individual"
},
"primaryLocation": {
"refid": "newloc"
},
"producerCodes": [
{
"id": "pc:6"
}
]
}
},
"included": {
"AccountContact": [
{
"attributes": {
"contactSubtype": "Person",
"firstName": "Bill",
"lastName": "Preston",
"dateOfBirth": "1970-01-01",
"emailAddress1": "bpreston@example.com",
"licenseNumber": "D123456789",
"licenseState": {
"code": "CA"
},
"numberOfAccidents": {
"code": "0"
},
"numberOfViolations": {
"code": "0"
},
"primaryAddress": {
"addressLine1": "2850 S. Delaware St. #400",
"city": "San Mateo",
"postalCode": "94403",
"state": {
"code": "CA"
}
}
},
"method": "post",
"refid": "newperson",
"uri": "/account/v1/accounts/this/contacts"
}
],
"AccountLocation": [
{
"attributes": {
"nonSpecific": true,
"postalCode": "94403",
"state": {
"code": "CA"
}
},
"method": "post",
"refid": "newloc",
"uri": "/account/v1/accounts/this/locations"
}
]
}
}
Submitting the previous payload in a POST request to
/account/v1/accounts
will return a response payload similar to
the following:
{
"data": {
"attributes": {
"accountHolder": {
"displayName": "Bill Preston",
"id": "pc:697"
},
"accountNumber": "2768207338",
"accountStatus": {
"code": "Pending",
"name": "Pending"
},
"createdDate": "2020-07-23T00:21:48.323Z",
"frozen": false,
"id": "pc:8",
"numberOfContacts": "1",
"organizationType": {
"code": "individual",
"name": "Individual"
},
"preferredCoverageCurrency": {
"code": "usd",
"name": "USD"
},
"preferredSettlementCurrency": {
"code": "usd",
"name": "USD"
},
"primaryLanguage": {
"code": "en_US",
"name": "English (US)"
},
"primaryLocale": {
"code": "en_US",
"name": "United States (English)"
},
"primaryLocation": {
"displayName": "1: CA",
"id": "pc:799",
"type": "AccountLocation",
"uri": "/account/v1/accounts/pc:8/locations/pc:799"
},
"producerCodes": [
{
"displayName": "100-002541",
"id": "pc:6"
}
]
},
"checksum": "0",
"links": {
"activities": {
"href": "/account/v1/accounts/pc:8/activities",
"methods": [
"get",
"post"
]
},
"activity-assignees": {
"href": "/account/v1/accounts/pc:8/activity-assignees",
"methods": [
"get"
]
},
"activity-patterns": {
"href": "/account/v1/accounts/pc:8/activity-patterns",
"methods": [
"get"
]
},
"contacts": {
"href": "/account/v1/accounts/pc:8/contacts",
"methods": [
"get",
"post"
]
},
"documents": {
"href": "/account/v1/accounts/pc:8/documents",
"methods": [
"get",
"post"
]
},
"jobs": {
"href": "/account/v1/accounts/pc:8/jobs",
"methods": [
"get"
]
},
"locations": {
"href": "/account/v1/accounts/pc:8/locations",
"methods": [
"get",
"post"
]
},
"notes": {
"href": "/account/v1/accounts/pc:8/notes",
"methods": [
"get",
"post"
]
},
"policies": {
"href": "/account/v1/accounts/pc:8/policies",
"methods": [
"get"
]
},
"self": {
"href": "/account/v1/accounts/pc:8",
"methods": [
"get",
"patch"
]
}
}
}
}
The new account is in Pending status. The ID for this account is
pc:8
. This value will be used in the later sections.
Add an additional individual to the new account
In this exercise, the new account will include a second individual, who will be the
secondary driver. This contact can be added to the account by submitting the
following payload in a POST request to
/account/v1/accounts/pc:8/contacts
:
{
"data": {
"attributes": {
"contactSubtype": "Person",
"dateOfBirth": "1971-01-01",
"emailAddress1": "jill@example.com",
"firstName": "Jill",
"lastName": "Preston",
"licenseNumber": "D234567890",
"licenseState": {
"code": "CA"
},
"numberOfAccidents": {
"code": "0"
},
"numberOfViolations": {
"code": "0"
},
"primaryAddress": {
"addressLine1": "2850 S. Delaware St. #400",
"city": "San Mateo",
"postalCode": "94403",
"state": {
"code": "CA"
}
}
}
}
}
The response payload contains data for the new contact element, which is accessible
at /account/v1/accounts/pc:8/contacts/pc:698
:
{
"data": {
"attributes": {
"contactSubtype": "Person",
"dateOfBirth": "1971-01-01",
"displayName": "Jill Preston",
"emailAddress1": "jill@example.com",
"externalId": "pcext:698",
"firstName": "Jill",
"id": "pc:698",
"lastName": "Preston",
"licenseNumber": "D123456789",
"licenseState": {
"code": "CA",
"name": "California"
},
"numberOfAccidents": {
"code": "0",
"name": "0"
},
"numberOfViolations": {
"code": "0",
"name": "0"
},
"primaryAddress": {
"addressLine1": "2850 S. Delaware St. #400",
"city": "San Mateo",
"country": "US",
"displayName": "2850 S. Delaware St. #400, San Mateo, CA 94403",
"id": "pc:800",
"postalCode": "94403",
"state": {
"code": "CA",
"name": "California"
}
}
},
"checksum": "3df12e427af4fbcc5e92ac25418b18eb",
"links": {
"self": {
"href": "/account/v1/accounts/pc:8/contacts/pc:698",
"methods": [
"get",
"patch"
]
}
}
}
}
Initiate the submission policy transaction
A submission policy transaction can be initiated through a business action POST to
the /job/v1/submissions
endpoint. The request must include a
payload:
{
"data": {
"attributes": {
"account": {
"id": "pc:8"
},
"baseState": {
"code": "CA"
},
"jobEffectiveDate": "2020-08-01",
"producerCode": {
"id": "pc:6"
},
"product": {
"id": "PersonalAuto"
}
}
}
}
The payload contains the following properties:
account.id
: The account ID, as created in the previous examplebaseState.code
: The jurisdiction of the account. This value is derived from the Jurisdiction typelistjobEffectiveDate
: The date on which the transaction should take effectproducerCode.id
: The producer code IDproduct.id
: The product name
The call will create a new submission job in Draft status, the data for which will be returned in the response payload:
{
"data": {
"attributes": {
"account": {
"displayName": "2768207338",
"id": "pc:8",
"type": "Account",
"uri": "/account/v1/accounts/pc:8"
},
"baseState": {
"code": "CA",
"name": "California"
},
"createdDate": "2020-07-23T00:25:46.038Z",
"id": "pc:16",
"jobEffectiveDate": "2020-08-01T00:01:00.000Z",
"jobNumber": "0001584961",
"jobStatus": {
"code": "Draft",
"name": "Draft"
},
"jobType": {
"code": "Submission",
"name": "Submission"
},
"organization": {
"displayName": "Armstrong and Company",
"id": "pc:1"
},
"periodEnd": "2021-02-01T00:01:00.000Z",
"periodStart": "2020-08-01T00:01:00.000Z",
"primaryInsured": {
"displayName": "Bill Preston",
"id": "pc:697",
"type": "PolicyContact",
"uri": "/job/v1/jobs/pc:16/contacts/pc:697"
},
"producerCode": {
"displayName": "100-002541",
"id": "pc:6"
},
"product": {
"displayName": "Personal Auto",
"id": "PersonalAuto"
},
"quoteType": {
"code": "Full",
"name": "Full Application"
},
"termType": {
"code": "HalfYear",
"name": "6 months"
}
},
"checksum": "1b6514990bb9746dfaa78fbddef25733",
"links": {
"activities": {
"href": "/job/v1/jobs/pc:16/activities",
"methods": [
"get",
"post"
]
},
"activity-assignees": {
"href": "/job/v1/jobs/pc:16/activity-assignees",
"methods": [
"get"
]
},
"activity-patterns": {
"href": "/job/v1/jobs/pc:16/activity-patterns",
"methods": [
"get"
]
},
"change-version": {
"href": "/job/v1/jobs/pc:16/change-version",
"methods": [
"post"
]
},
"contacts": {
"href": "/job/v1/jobs/pc:16/contacts",
"methods": [
"get",
"post"
]
},
"costs": {
"href": "/job/v1/jobs/pc:16/costs",
"methods": [
"get"
]
},
"decline": {
"href": "/job/v1/jobs/pc:16/decline",
"methods": [
"post"
]
},
"documents": {
"href": "/job/v1/jobs/pc:16/documents",
"methods": [
"get",
"post"
]
},
"lines": {
"href": "/job/v1/jobs/pc:16/lines",
"methods": [
"get"
]
},
"locations": {
"href": "/job/v1/jobs/pc:16/locations",
"methods": [
"get",
"post"
]
},
"not-take": {
"href": "/job/v1/jobs/pc:16/not-take",
"methods": [
"post"
]
},
"notes": {
"href": "/job/v1/jobs/pc:16/notes",
"methods": [
"get",
"post"
]
},
"payment-plans": {
"href": "/job/v1/jobs/pc:16/payment-plans",
"methods": [
"get"
]
},
"questions": {
"href": "/job/v1/jobs/pc:16/questions",
"methods": [
"get",
"patch"
]
},
"quote": {
"href": "/job/v1/jobs/pc:16/quote",
"methods": [
"post"
]
},
"self": {
"href": "/job/v1/jobs/pc:16",
"methods": [
"get",
"patch"
]
},
"user-roles": {
"href": "/job/v1/jobs/pc:16/user-roles",
"methods": [
"get",
"patch"
]
},
"versions": {
"href": "/job/v1/jobs/pc:16/versions",
"methods": [
"get",
"post"
]
},
"withdraw": {
"href": "/job/v1/jobs/pc:16/withdraw",
"methods": [
"post"
]
}
}
}
}
The id
property contains the ID of the new job element that was
created by the request. Subsequent actions in the transaction will occur on the job
element, in this case /job/v1/jobs/pc:16
.
Modify the job: Add a vehicle
On a personal auto line, a vehicle is a coverable. For any submission job, each
coverable must be added through a POST request. To add a vehicle to this job, submit
a POST request to
/job/v1/jobs/pc:16/lines/PersonalAutoLine/vehicles
with the
following payload:
{
"data": {
"attributes": {
"annualMileage": 10000,
"bodyType": {
"code": "convertible"
},
"color": "Yellow",
"commutingMiles": 50,
"costNew": {
"amount": "25000.00",
"currency": "usd"
},
"leaseOrRent": true,
"lengthOfLease": {
"code": "SixMonthsOrMore"
},
"licensePlate": "7JDX543",
"licenseState": {
"code": "CA"
},
"make": "NewMake",
"model": "NewModel",
"modelYear": 2015,
"primaryUse": {
"code": "pleasure"
},
"statedValue": {
"amount": "20000.00",
"currency": "usd"
},
"vehicleType": {
"code": "PP"
},
"vin": "WDDHF8JB3CA549096"
}
}
}
This call returns the following response payload. The vehicle is now accessible at
the /job/v1/jobs/pc:16/lines/PersonalAutoLine/vehicles/6
endpoint:
{
"data": {
"attributes": {
"annualMileage": 10000,
"bodyType": {
"code": "convertible",
"name": "Convertible"
},
"color": "Yellow",
"commutingMiles": 50,
"costNew": {
"amount": "25000.00",
"currency": "usd"
},
"garageLocation": {
"displayName": "1: CA",
"id": "46"
},
"id": "6",
"leaseOrRent": true,
"lengthOfLease": {
"code": "SixMonthsOrMore",
"name": "6 months or greater"
},
"licensePlate": "7JDX543",
"licenseState": {
"code": "CA",
"name": "California"
},
"make": "NewMake",
"model": "NewModel",
"modelYear": 2015,
"primaryUse": {
"code": "pleasure",
"name": "Pleasure"
},
"statedValue": {
"amount": "20000.00",
"currency": "usd"
},
"vehicleNumber": 1,
"vehicleType": {
"code": "PP",
"name": "Passenger Vehicles"
},
"vin": "WDDHF8JB3CA549096"
},
"checksum": "d69df836a5af3ef1cd06d0025694c7bc",
"links": {
"coverages": {
"href": "/job/v1/jobs/pc:16/lines/PersonalAutoLine/vehicles/6/coverages",
"methods": [
"get",
"post"
]
},
"drivers": {
"href": "/job/v1/jobs/pc:16/lines/PersonalAutoLine/vehicles/6/drivers",
"methods": [
"get",
"post"
]
},
"modifiers": {
"href": "/job/v1/jobs/pc:16/lines/PersonalAutoLine/vehicles/6/modifiers",
"methods": [
"get"
]
},
"self": {
"href": "/job/v1/jobs/pc:16/lines/PersonalAutoLine/vehicles/6",
"methods": [
"delete",
"get",
"patch"
]
},
"sync-coverages": {
"href": "/job/v1/jobs/pc:16/lines/PersonalAutoLine/vehicles/6/sync-coverages",
"methods": [
"post"
]
},
"sync-modifiers": {
"href": "/job/v1/jobs/pc:16/lines/PersonalAutoLine/vehicles/6/sync-modifiers",
"methods": [
"post"
]
},
"vhcle-addl-interests": {
"href": "/job/v1/jobs/pc:16/lines/PersonalAutoLine/vehicles/6/vhcle-addl-interests",
"methods": [
"get",
"post"
]
}
}
}
}
Modify the job: Add a primary driver to the vehicle
In this example, Bill Preston will be the primary driver, and he will drive the
vehicle 75% of the time. The account contact ID for Bill is pc:697
.
To add Bill as a driver of this vehicle, submit a POST request to
/job/v1/jobs/pc:16/lines/PersonalAutoLine/vehicles/6/drivers
,
with the following payload:
{
"data": {
"attributes": {
"percentageDriven": 75,
"policyDriver": {
"id": "pc:697"
}
}
}
}
This call returns the following response:
{
"data": {
"attributes": {
"id": "5",
"percentageDriven": 75,
"policyDriver": {
"displayName": "Bill Preston",
"id": "pc:697",
"type": "PolicyContact",
"uri": "/job/v1/jobs/pc:16/contacts/pc:697"
}
},
"checksum": "109d5f8706f79c9481f6a61738e2b554",
"links": {
"self": {
"href": "/job/v1/jobs/pc:16/lines/PersonalAutoLine/vehicles/6/drivers/5",
"methods": [
"delete",
"get",
"patch"
]
}
}
}
}
Modify the job: Add a secondary driver to the vehicle
pc:698
. To add Jill as a driver of this vehicle, submit a
POST request to
/job/v1/jobs/pc:16/lines/PersonalAutoLine/vehicles/6/drivers
,
with the following payload:{
"data": {
"attributes": {
"percentageDriven": 25,
"policyDriver": {
"id": "pc:698"
}
}
}
}
This call returns the following response:
{
"data": {
"attributes": {
"id": "7",
"percentageDriven": 25,
"policyDriver": {
"displayName": "Jill Preston",
"id": "pc:698",
"type": "PolicyContact",
"uri": "/job/v1/jobs/pc:16/contacts/pc:698"
}
},
"checksum": "e10a37e9890009522fa8fa0c5574c2a0",
"links": {
"self": {
"href": "/job/v1/jobs/pc:16/lines/PersonalAutoLine/vehicles/6/drivers/7",
"methods": [
"delete",
"get",
"patch"
]
}
}
}
}
Modify the job: Synchronize coverages
To synchronize coverages, submit a business action POST to
/job/v1/jobs/pc:16/lines/PersonalAutoLine/vehicles/6/sync-coverages
.
To review coverages, submit a GET request to
/job/v1/jobs/pc:16/lines/PersonalAutoLine/vehicles/6/coverages
.
This call returns the following payload:
{
"count": 2,
"data": [
{
"attributes": {
"clauseType": "coverage",
"id": "PACollisionCov",
"pattern": {
"displayName": "Collision",
"id": "PACollisionCov"
},
"selected": true,
"terms": {
"PACollDeductible": {
"choiceValue": {
"code": "500",
"name": "500"
},
"covTermType": "choice",
"displayValue": "500",
"pattern": {
"displayName": "Collision Deductible",
"id": "PACollDeductible"
}
}
}
},
"checksum": "006b1f7b0a4a803105eeb6a6e86ee270",
"links": {
"self": {
"href": "/job/v1/jobs/pc:16/lines/PersonalAutoLine/vehicles/6/coverages/PACollisionCov",
"methods": [
"get"
]
}
}
},
{
"attributes": {
"clauseType": "coverage",
"id": "PAComprehensiveCov",
"pattern": {
"displayName": "Comprehensive",
"id": "PAComprehensiveCov"
},
"selected": true,
"terms": {
"PACompDeductible": {
"choiceValue": {
"code": "500",
"name": "500"
},
"covTermType": "choice",
"displayValue": "500",
"pattern": {
"displayName": "Comprehensive Deductible",
"id": "PACompDeductible"
}
}
}
},
"checksum": "77fae36ca9d0dcdc16a1edec63e94877",
"links": {
"self": {
"href": "/job/v1/jobs/pc:16/lines/PersonalAutoLine/vehicles/6/coverages/PAComprehensiveCov",
"methods": [
"get"
]
}
}
}
],
"links": {
"first": {
"href": "/job/v1/jobs/pc:16/lines/PersonalAutoLine/vehicles/6/coverages",
"methods": [
"get"
]
},
"self": {
"href": "/job/v1/jobs/pc:16/lines/PersonalAutoLine/vehicles/6/coverages",
"methods": [
"get"
]
}
}
}
Modify the job: Synchronize modifiers
To synchronize modifiers, submit a business action POST to
/job/v1/jobs/pc:16/lines/PersonalAutoLine/vehicles/6/sync-modifiers
.
To review modifiers, submit a GET request to
/job/v1/jobs/pc:16/lines/PersonalAutoLine/vehicles/6/modifiers
.
This call returns the following payload:
{
"count": 3,
"data": [
{
"attributes": {
"booleanModifier": false,
"eligible": true,
"id": "PAAntiLockBrakes",
"modifierType": {
"code": "boolean",
"name": "boolean"
},
"pattern": {
"displayName": "Anti-Lock Brakes Discount",
"id": "PAAntiLockBrakes"
},
"referenceDate": "2020-08-01T00:00:00.000Z",
"state": {
"code": "CA",
"name": "California"
},
"valueFinal": true
},
"checksum": "332014107be09a1a45b46398c2a730ea",
"links": {
"self": {
"href": "/job/v1/jobs/pc:16/lines/PersonalAutoLine/vehicles/6/modifiers/PAAntiLockBrakes",
"methods": [
"get"
]
}
}
},
{
"attributes": {
"eligible": true,
"id": "PAAntiTheft",
"modifierType": {
"code": "typekey",
"name": "typekey"
},
"pattern": {
"displayName": "Anti Theft Discount",
"id": "PAAntiTheft"
},
"referenceDate": "2020-08-01T00:00:00.000Z",
"state": {
"code": "CA",
"name": "California"
},
"valueFinal": true
},
"checksum": "63a2e842883e8993ce10073e4f5a33e7",
"links": {
"self": {
"href": "/job/v1/jobs/pc:16/lines/PersonalAutoLine/vehicles/6/modifiers/PAAntiTheft",
"methods": [
"get"
]
}
}
},
{
"attributes": {
"eligible": true,
"id": "PAPassiveRestraint",
"modifierType": {
"code": "typekey",
"name": "typekey"
},
"pattern": {
"displayName": "Passive Restraint System",
"id": "PAPassiveRestraint"
},
"referenceDate": "2020-08-01T00:00:00.000Z",
"state": {
"code": "CA",
"name": "California"
},
"valueFinal": true
},
"checksum": "cc898e3294ba4d68e81518d96e37c985",
"links": {
"self": {
"href": "/job/v1/jobs/pc:16/lines/PersonalAutoLine/vehicles/6/modifiers/PAPassiveRestraint",
"methods": [
"get"
]
}
}
}
],
"links": {
"first": {
"href": "/job/v1/jobs/pc:16/lines/PersonalAutoLine/vehicles/6/modifiers",
"methods": [
"get"
]
},
"self": {
"href": "/job/v1/jobs/pc:16/lines/PersonalAutoLine/vehicles/6/modifiers",
"methods": [
"get"
]
}
}
}
Quote the job
To quote the job, submit a business action POST to
/job/v1/jobs/pc:16/quote
. This call returns the following
payload:
{
"data": {
"attributes": {
"account": {
"displayName": "2768207338",
"id": "pc:8",
"type": "Account",
"uri": "/account/v1/accounts/pc:8"
},
"baseState": {
"code": "CA",
"name": "California"
},
"createdDate": "2020-7-23T00:25:46.038Z",
"id": "pc:16",
"jobEffectiveDate": "2020-08-01T00:01:00.000Z",
"jobNumber": "0001584961",
"jobStatus": {
"code": "Quoted",
"name": "Quoted"
},
"jobType": {
"code": "Submission",
"name": "Submission"
},
"organization": {
"displayName": "Armstrong and Company",
"id": "pc:1"
},
"periodEnd": "2021-02-01T00:01:00.000Z",
"periodStart": "2020-08-01T00:01:00.000Z",
"primaryInsured": {
"displayName": "Bill Preston",
"id": "pc:697",
"type": "PolicyContact",
"uri": "/job/v1/jobs/pc:16/contacts/pc:697"
},
"producerCode": {
"displayName": "100-002541",
"id": "pc:6"
},
"product": {
"displayName": "Personal Auto",
"id": "PersonalAuto"
},
"quoteType": {
"code": "Full",
"name": "Full Application"
},
"taxesAndSurcharges": {
"amount": "68.00",
"currency": "usd"
},
"termType": {
"code": "HalfYear",
"name": "6 months"
},
"totalCost": {
"amount": "1012.00",
"currency": "usd"
},
"totalPremium": {
"amount": "944.00",
"currency": "usd"
}
},
"checksum": "a90905400e592b9a525ca94b48ae7a1b",
"links": {
"activities": {
"href": "/job/v1/jobs/pc:16/activities",
"methods": [
"get",
"post"
]
},
"activity-assignees": {
"href": "/job/v1/jobs/pc:16/activity-assignees",
"methods": [
"get"
]
},
"activity-patterns": {
"href": "/job/v1/jobs/pc:16/activity-patterns",
"methods": [
"get"
]
},
"bind-and-issue": {
"href": "/job/v1/jobs/pc:16/bind-and-issue",
"methods": [
"post"
]
},
"bind-only": {
"href": "/job/v1/jobs/pc:16/bind-only",
"methods": [
"post"
]
},
"change-version": {
"href": "/job/v1/jobs/pc:16/change-version",
"methods": [
"post"
]
},
"contacts": {
"href": "/job/v1/jobs/pc:16/contacts",
"methods": [
"get"
]
},
"costs": {
"href": "/job/v1/jobs/pc:16/costs",
"methods": [
"get"
]
},
"decline": {
"href": "/job/v1/jobs/pc:16/decline",
"methods": [
"post"
]
},
"documents": {
"href": "/job/v1/jobs/pc:16/documents",
"methods": [
"get",
"post"
]
},
"lines": {
"href": "/job/v1/jobs/pc:16/lines",
"methods": [
"get"
]
},
"locations": {
"href": "/job/v1/jobs/pc:16/locations",
"methods": [
"get"
]
},
"make-draft": {
"href": "/job/v1/jobs/pc:16/make-draft",
"methods": [
"post"
]
},
"not-take": {
"href": "/job/v1/jobs/pc:16/not-take",
"methods": [
"post"
]
},
"notes": {
"href": "/job/v1/jobs/pc:16/notes",
"methods": [
"get",
"post"
]
},
"payment-info": {
"href": "/job/v1/jobs/pc:16/payment-info",
"methods": [
"get",
"patch"
]
},
"payment-plans": {
"href": "/job/v1/jobs/pc:16/payment-plans",
"methods": [
"get"
]
},
"questions": {
"href": "/job/v1/jobs/pc:16/questions",
"methods": [
"get"
]
},
"self": {
"href": "/job/v1/jobs/pc:16",
"methods": [
"get"
]
},
"user-roles": {
"href": "/job/v1/jobs/pc:16/user-roles",
"methods": [
"get"
]
},
"versions": {
"href": "/job/v1/jobs/pc:16/versions",
"methods": [
"get",
"post"
]
},
"withdraw": {
"href": "/job/v1/jobs/pc:16/withdraw",
"methods": [
"post"
]
}
}
}
}
Bind and issue the policy
To bind and issue the policy, submit a business action POST to
/job/v1/jobs/pc:16/bind-and-issue
. This call returns the bound
job. The policy
and policyNumber
properties
contain values that can be used to look up the new policy. The response payload
appears as follows:
{
"data": {
"attributes": {
"account": {
"displayName": "2768207338",
"id": "pc:8",
"type": "Account",
"uri": "/account/v1/accounts/pc:8"
},
"baseState": {
"code": "CA",
"name": "California"
},
"closeDate": "2020-07-23T01:02:02.119Z",
"createdDate": "2020-07-23T00:25:46.038Z",
"id": "pc:16",
"jobEffectiveDate": "2020-08-01T00:01:00.000Z",
"jobNumber": "0001584961",
"jobStatus": {
"code": "Bound",
"name": "Bound"
},
"jobType": {
"code": "Submission",
"name": "Submission"
},
"organization": {
"displayName": "Armstrong and Company",
"id": "pc:1"
},
"periodEnd": "2021-02-01T00:01:00.000Z",
"periodStart": "2020-08-01T00:01:00.000Z",
"policy": {
"displayName": "6036550150",
"id": "pc:7"
},
"policyNumber": "6036550150",
"primaryInsured": {
"displayName": "Bill Preston",
"id": "pc:697",
"type": "PolicyContact",
"uri": "/job/v1/jobs/pc:16/contacts/pc:697"
},
"producerCode": {
"displayName": "100-002541",
"id": "pc:6"
},
"product": {
"displayName": "Personal Auto",
"id": "PersonalAuto"
},
"quoteType": {
"code": "Full",
"name": "Full Application"
},
"taxesAndSurcharges": {
"amount": "68.00",
"currency": "usd"
},
"termType": {
"code": "HalfYear",
"name": "6 months"
},
"totalCost": {
"amount": "1012.00",
"currency": "usd"
},
"totalPremium": {
"amount": "944.00",
"currency": "usd"
}
},
"checksum": "426c4ebf6898be74546b06612523d224",
"links": {
"activities": {
"href": "/job/v1/jobs/pc:16/activities",
"methods": [
"get",
"post"
]
},
"activity-assignees": {
"href": "/job/v1/jobs/pc:16/activity-assignees",
"methods": [
"get"
]
},
"activity-patterns": {
"href": "/job/v1/jobs/pc:16/activity-patterns",
"methods": [
"get"
]
},
"contacts": {
"href": "/job/v1/jobs/pc:16/contacts",
"methods": [
"get"
]
},
"costs": {
"href": "/job/v1/jobs/pc:16/costs",
"methods": [
"get"
]
},
"documents": {
"href": "/job/v1/jobs/pc:16/documents",
"methods": [
"get",
"post"
]
},
"lines": {
"href": "/job/v1/jobs/pc:16/lines",
"methods": [
"get"
]
},
"locations": {
"href": "/job/v1/jobs/pc:16/locations",
"methods": [
"get"
]
},
"notes": {
"href": "/job/v1/jobs/pc:16/notes",
"methods": [
"get",
"post"
]
},
"payment-info": {
"href": "/job/v1/jobs/pc:16/payment-info",
"methods": [
"get"
]
},
"payment-plans": {
"href": "/job/v1/jobs/pc:16/payment-plans",
"methods": [
"get"
]
},
"questions": {
"href": "/job/v1/jobs/pc:16/questions",
"methods": [
"get"
]
},
"self": {
"href": "/job/v1/jobs/pc:16",
"methods": [
"get"
]
},
"user-roles": {
"href": "/job/v1/jobs/pc:16/user-roles",
"methods": [
"get"
]
},
"versions": {
"href": "/job/v1/jobs/pc:16/versions",
"methods": [
"get"
]
}
}
}
}
Review the policy
The new policy is accessible at /policy/v1/policies/pc:7
. Submitting
a GET request to that endpoint returns the following:
{
"data": {
"attributes": {
"account": {
"displayName": "2768207338",
"id": "pc:8",
"type": "Account",
"uri": "/account/v1/accounts/pc:8"
},
"baseState": {
"code": "CA",
"name": "California"
},
"createdDate": "2020-07-23T00:25:46.038Z",
"id": "pc:7",
"organization": {
"displayName": "Armstrong and Company",
"id": "pc:1"
},
"periodEnd": "2021-02-01T00:01:00.000Z",
"periodStart": "2020-08-01T00:01:00.000Z",
"policyNumber": "6036550150",
"primaryInsured": {
"displayName": "Bill Preston",
"id": "pc:697",
"type": "PolicyContact",
"uri": "/policy/v1/policies/pc:7/contacts/pc:697"
},
"producerCode": {
"displayName": "100-002541",
"id": "pc:6"
},
"product": {
"displayName": "Personal Auto",
"id": "PersonalAuto"
},
"taxesAndSurcharges": {
"amount": "68.00",
"currency": "usd"
},
"termType": {
"code": "HalfYear",
"name": "6 months"
},
"totalCost": {
"amount": "1012.00",
"currency": "usd"
},
"totalPremium": {
"amount": "944.00",
"currency": "usd"
}
},
"checksum": "1",
"links": {
"activities": {
"href": "/policy/v1/policies/pc:7/activities",
"methods": [
"get",
"post"
]
},
"activity-assignees": {
"href": "/policy/v1/policies/pc:7/activity-assignees",
"methods": [
"get"
]
},
"activity-patterns": {
"href": "/policy/v1/policies/pc:7/activity-patterns",
"methods": [
"get"
]
},
"cancel": {
"href": "/policy/v1/policies/pc:7/cancel",
"methods": [
"post"
]
},
"change": {
"href": "/policy/v1/policies/pc:7/change",
"methods": [
"post"
]
},
"contacts": {
"href": "/policy/v1/policies/pc:7/contacts",
"methods": [
"get"
]
},
"costs": {
"href": "/policy/v1/policies/pc:7/costs",
"methods": [
"get"
]
},
"documents": {
"href": "/policy/v1/policies/pc:7/documents",
"methods": [
"get",
"post"
]
},
"lines": {
"href": "/policy/v1/policies/pc:7/lines",
"methods": [
"get"
]
},
"locations": {
"href": "/policy/v1/policies/pc:7/locations",
"methods": [
"get"
]
},
"notes": {
"href": "/policy/v1/policies/pc:7/notes",
"methods": [
"get",
"post"
]
},
"payment-info": {
"href": "/policy/v1/policies/pc:7/payment-info",
"methods": [
"get"
]
},
"questions": {
"href": "/policy/v1/policies/pc:7/questions",
"methods": [
"get"
]
},
"renew": {
"href": "/policy/v1/policies/pc:7/renew",
"methods": [
"post"
]
},
"rewrite-account": {
"href": "/policy/v1/policies/pc:7/rewrite-account",
"methods": [
"post"
]
},
"self": {
"href": "/policy/v1/policies/pc:7",
"methods": [
"get"
]
}
}
}
}