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

  1. Initiate the submission policy transaction by creating a submission job.
  2. Modify the submission job.
    • Add coverables
    • Apply coverages and modifiers
    • Apply exposures, exclusions, or conditions
    • Pre-qualify the account holder
  3. Generate a quote.
  4. 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 example
  • baseState.code: The jurisdiction of the account. This value is derived from the Jurisdiction typelist
  • jobEffectiveDate: The date on which the transaction should take effect
  • producerCode.id: The producer code ID
  • product.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

In this example, Jill Preston will be the secondary driver, and she will drive the vehicle 25% of the time. The account contact ID for Jill is
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"
                ]
            }
        }
    }
}