Overview
Configuration rating presets define the available coverage limit options for each coverage type. Each preset specifies a set of named limits (e.g., “Per Occurrence”, “Aggregate”) with their amounts, and can include additional settings for deductibles, defense costs, retroactive dates, and waiting periods. Presets are stored in thecoverage_limit_presets table and are scoped to a company via company_id. Each preset references a coverage type via coverageTypeKey.
Key Concepts
- coverageTypeKey: The string key of an existing coverage type (global or company-specific). Must exist in the
coverage_typestable. - limits: An object containing an array of named limit amounts and an optional
allowLimitEditsflag controlling whether users can modify amounts on quotes. - isDefault: Whether this preset is the default for its coverage type. Multiple presets per coverage type are allowed, but only one can be the default. When creating a preset with
isDefault: true, any existing default for the same coverage type is automatically set to non-default. - defenseInsideLimit: Whether defense costs count inside or outside the limit (
"inside"or"outside"). - Settings fields: Optional JSONB configuration for deductibles, limits, retroactive dates, waiting periods, and prior/pending litigation dates. These are opaque blobs passed through to the rating engine.
API Endpoints
| Method | Endpoint | Description |
|---|---|---|
| GET | /configuration/rating/presets | List coverage limit presets |
| POST | /configuration/rating/presets | Create a new coverage limit preset |
| DELETE | /configuration/rating/presets/{presetId} | Soft-delete a coverage limit preset |
Permissions
| Action | Permission |
|---|---|
| List presets | company:read |
| Create preset | company:update |
| Delete preset | company:update |
Request Properties
| Property | Type | Required | Description |
|---|---|---|---|
| coverageTypeKey | string | Yes | Coverage type key (must exist) |
| setName | string | Yes | Display name for the preset |
| limits | object | Yes | Limit definitions (see below) |
| isDefault | boolean | No | Whether this is the default preset (defaults to false) |
| defenseInsideLimit | string | No | "inside" or "outside" |
| deductible | number | No | Deductible amount in dollars |
| retroactiveDate | string | No | ISO date (YYYY-MM-DD) |
| waitingPeriodSettings | object | No | Waiting period configuration |
| deductibleSettings | object | No | Deductible default amount configuration |
| limitSettings | object | No | Limit default amounts configuration |
| retroactiveDateSettings | object | No | Retroactive date default amount configuration |
| priorPendingLitigationDateSettings | object | No | Prior/pending litigation date configuration |
Limits Object
| Property | Type | Required | Description |
|---|---|---|---|
| limits | array | Yes | Array of limit definitions |
| limits[].id | string | Yes | Unique identifier for this limit |
| limits[].name | string | Yes | Display name (e.g., “Per Occurrence”) |
| limits[].amount | number | Yes | Limit amount in dollars |
| allowLimitEdits | boolean | No | Whether users can edit limit amounts on quotes |
Response Properties (GET)
The list endpoint returns{ items, totalCount } where each item includes all request properties plus:
| Property | Type | Description |
|---|---|---|
| id | string (UUID) | Preset identifier |
| createdAt | string | null | ISO 8601 timestamp |
| updatedAt | string | null | ISO 8601 timestamp |
defenseInsideLimit, deductible, retroactiveDate, and all settings) return null when not set.