Line-level and object-level modifiers
When a job is created, specific modifier values are attached either to the line itself (such as a MultiPolicyDiscount modifier) or to an object on that line (such as a vehicle with an AntiLockBreaks discount).
Modifier endpoints
Every line has endpoints to get a collection of modifiers, and to get or modify a modifier element. These endpoints follow these patterns:
- Line-level modifiers
- GET
/jobs/{jobId}/lines/{lineId}/modifiers - GET
/jobs/{jobId}/lines/{lineId}/modifiers/{modifierId} - PATCH
/jobs/{jobId}/lines/{lineId}/modifiers/{modifierId}
- GET
- Object-level modifiers
- GET
/jobs/{jobId}/lines/{lineId}/{objectName}/{objectNameId}/modifiers - GET
/jobs/{jobId}/lines/{lineId}/{objectName}/{objectNameId}/modifiers/{modifierId} - PATCH
/jobs/{jobId}/lines/{lineId}/{objectName}/{objectNameId}/modifiers/{modifierId}
- GET
For example, personal auto lines can have line-level modifiers and modifiers attached to vehicles. For a personal auto line, the endpoints to work with modifiers might be:
- Line-level modifiers
- GET
/jobs/{jobId}/lines/PersonalAutoLine/modifiers - GET
/jobs/{jobId}/lines/PersonalAutoLine/modifiers/{modifierId} - PATCH
/jobs/{jobId}/lines/PersonalAutoLine/modifiers/{modifierId}
- GET
- Object-level modifiers
- GET
/jobs/{jobId}/lines/PersonalAutoLine/vehicles/{vehicleId}/modifiers - GET
/jobs/{jobId}/lines/PersonalAutoLine/vehicles/{vehicleId}/modifiers/{modifierId} - PATCH
/jobs/{jobId}/lines/PersonalAutoLine/vehicles/{vehicleId}/modifiers/{modifierId}
- GET
Creating modifiers
When a line or modifiable object is created, a set of modifier objects is
automatically created. Thus, there are no POST /modifiers or DELETE
/modifiers endpoints.
You cannot specify defaults in the product definition. Modifiers might have built-in default values, depending on the type:
- For Boolean modifiers, PolicyCenter defaults them value to false.
- For schedule rate modifiers, PolicyCenter defaults the
rateOverrideto $0. - For all other modifiers, there are no default values.
Modifier values are always expressed as one of the following datatypes: Boolean, date, rate (decimal), or typekey.
Retrieving modifiers and their values
Use the following endpoints to retrieve modifiers and their values.
| Type of modifiers | Endpoint |
|---|---|
| Line-level modifiers |
GET GET
|
| Object-level modifiers |
GET
GET
|
The following is the syntax for the fundamental attributes of a modifier:
"attributes": {
"id": "PAMultiPolicyDiscount",
"modifierType": {
"code": "<modifierTypeCode>"
},
"booleanModifier": <value>,
"dateModifier": "<value">,
"rateModifier": "<value>",
"typekeyModifier": {
"code": "<value>"
}
},
For any given modifier, the id and modifierType are
always included in the response. If the modifier has been set to a value, then the
corresponding *Modifier property is also included. If the modifier
is a typekey modifier, the typelist that defines its values is specified in the
product definition. If the modifier has not been set, the response has no
*Modifier property.
Note that even though the Modifier schema has multiple
*Modifier fields, for a given modifier only one of them will
have a value. The other *Modifier fields will be null.
For example, the following are modifiers for a Personal Auto vehicle. Note the following:
- The first modifier is a Boolean modifier and has been set to false.
- The second modifier is a typekey modifier and has been set to
alarmonly. (Based on the product definition, this modifier uses theAntiTheftTypetypelist.) - The third modifier is also a typekey modifier, but its value has not been set.
{
"attributes": {
"id": "PAAntiLockBrakes",
"modifierType": {
"code": "boolean"
}
"booleanModifier": false,
}
},
{
"attributes": {
"id": "PAAntiTheft",
"modifierType": {
"code": "typekey"
},
"typekeyModifier": {
"code": "alarmonly"
}
}
},
{
"attributes": {
"id": "PAPassiveRestraint",
"modifierType": {
"code": "typekey",
"name": "typekey"
}
}
}
...
Specifying modifier values
To specify a value for a modifier, use the following endpoints.
| Type of modifiers | Endpoint |
|---|---|
| Line-level modifiers | PATCH
/jobs/{jobId}/lines/{lineId}/modifiers/{modifierId} |
| Object-level modifiers | PATCH
/jobs/{jobId}/lines/{lineId}/{objectName}/{objectNameId}/modifiers/{modifierId} |
For example, the following call sets the value of the PAPassiveRestraint modifier on
vehicle 505 to "Driver Side Only" (code driver from the
PassiveRestraintType typelist).
Command
PATCH /job/v1/jobs/pc:1111/lines/PersonalAutoLine/vehicles/505/modifiers/PAPassiveRestraint
Response
{
"data": {
"attributes": {
"typekeyModifier": {
"code": "driver"
}
}
}
}