> ## Documentation Index
> Fetch the complete documentation index at: https://docs.aiinsurance.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Data Models

This section provides complete reference documentation for all data structures used in the Submissions and Quotes API.

***

## **Submission Object**

| Field                                                                  | Type              | Description                       |
| ---------------------------------------------------------------------- | ----------------- | --------------------------------- |
| `id`                                                                   | string (UUID)     | Unique submission identifier      |
| `createdAt`                                                            | string (ISO 8601) | Submission creation timestamp     |
| `updatedAt`                                                            | string (ISO 8601) | Last update timestamp             |
| [`status`](/api-legacy-reference/data-models#submission-status-values) | string            | Current submission status         |
| [`type`](/api-legacy-reference/data-models#submission-types)           | string            | Type of submission                |
| `number`                                                               | string            | Human-readable submission number  |
| `primaryInsuredName`                                                   | string            | Name of the primary insured party |
| `applicationId`                                                        | string (UUID)     | Associated application identifier |
| `name`                                                                 | string            | Submission name/description       |

***

## **Quote Object (Lightweight)**

Returned by the **List Quote Info** endpoint (`GET /api/external/companies/{companyId}/quotes-info`). This lightweight representation includes essential fields only for efficient listing and searching.

| Field                                                             | Type                        | Description                                        |
| ----------------------------------------------------------------- | --------------------------- | -------------------------------------------------- |
| `id`                                                              | string (UUID)               | Unique quote identifier                            |
| `number`                                                          | string                      | Human-readable quote number (format: Q########-##) |
| [`status`](/api-legacy-reference/data-models#quote-status-values) | enum                        | Current quote status                               |
| `createdAt`                                                       | string (ISO 8601)           | Quote creation timestamp                           |
| `updatedAt`                                                       | string (ISO 8601, optional) | Last update timestamp                              |
| `description`                                                     | string (optional)           | Quote description from policy info                 |
| `policyId`                                                        | string (UUID, optional)     | Associated policy identifier (if bound)            |
| `policyCurrency`                                                  | string (optional)           | Policy currency code (e.g., "USD", "CAD")          |
| `grandTotal`                                                      | number (optional)           | Total premium amount including taxes and fees      |

***

## **Quote Object (Full)**

Returned by the **List Quotes** (`GET /api/external/companies/{companyId}/quotes`) and **Get Quote** (`GET /api/external/companies/{companyId}/quotes/{quoteId}`) endpoints. This complete representation includes all quote data, coverages, and billing information.

| Field                                                             | Type                    | Description                                                                     |
| ----------------------------------------------------------------- | ----------------------- | ------------------------------------------------------------------------------- |
| `id`                                                              | string (UUID)           | Unique quote identifier                                                         |
| `number`                                                          | string                  | Human-readable quote number                                                     |
| `wizardType`                                                      | enum                    | Quote workflow type: `quote`, `endorsement`, `renewal`, `forms`, `cancellation` |
| [`status`](/api-legacy-reference/data-models#quote-status-values) | enum                    | Current quote status                                                            |
| `submissionId`                                                    | string (UUID)           | Associated submission identifier                                                |
| `applicationId`                                                   | string (UUID, optional) | Associated application identifier                                               |
| `policyId`                                                        | string (UUID, optional) | Associated policy identifier (if bound)                                         |
| `data`                                                            | object                  | Complete quote data including policy info, coverages, insureds, and billing     |
| `previewData`                                                     | object (optional)       | Rating preview data with premium breakdowns                                     |
| `billingEmail`                                                    | string (optional)       | Email address for billing communications                                        |

See the **Get Quote** endpoint for the complete QuoteDetail schema with all nested fields.

***

## **ImportPolicy Object**

| Field                                                                 | Type              | Description                                                                                                          |
| --------------------------------------------------------------------- | ----------------- | -------------------------------------------------------------------------------------------------------------------- |
| `policyNumber`                                                        | string            | Customer facing policy identifier                                                                                    |
| `policyStartDate`                                                     | string (ISO 8601) | Date policy begins                                                                                                   |
| `policyEndDate`                                                       | string (ISO 8601) | Date policy ends                                                                                                     |
| [`policyType`](/api-legacy-reference/data-models#policy-type-options) | enum              | A single letter "C", "O", etc. (see below)                                                                           |
| `ratingData`                                                          | object            | All policy-level rating data (see [config tutorial](/api-legacy-reference/submissions/overview#ratingenginefields))  |
| `billingPeriod`                                                       | enum              | "doNotSendBill", "annual", "quarterly", "monthly"                                                                    |
| `renewingPolicyNumber`                                                | string (optional) | If a renewal, the number of the policy being renewed                                                                 |
| `policyCompanyEntityFields`                                           | object            | All non-rating policy-level data (see [config tutorial](/api-legacy-reference/submissions/overview#nonratingfields)) |
| `brokerName`                                                          | string (optional) | The name of the broker/agent                                                                                         |
| `brokerageName`                                                       | string (optional) | The name of the brokerage/agency                                                                                     |
| `brokerCommission`                                                    | number (optional) | A percentage (e.g. 12.3 means 12.3%)                                                                                 |

***

## **ImportPolicyCoverage Object**

```json theme={null}
{
  "coverageTypeId": enum,
  "deductible": number (in dollars, optional),
  "retroactibveDate": string (ISO 8601, optional),
  "priorOrPendingLitigationDate": string (ISO 8601, optional),
  "defenseInsideLimit": "inside" or "outside" (optional),
  "presetId": enum (optional),
  "limits": [{ "limitName": string, "amount": number | string }],
  "endorsements": {
    [insuredId]: {
      "deductible": number, (in dollars, optional)
      "retroactiveDate": string, // (ISO 8601, optional)
      "priorOrPendingLitigationDate": string (ISO 8601, optional),
      "limits": [{ "limitName": string, "amount": number | string }],
      "presetId": enum (optional)
    }
  }
}
```

***

## **ImportInsured Object**

| Field                        | Type              | Description                                                                                                           |
| ---------------------------- | ----------------- | --------------------------------------------------------------------------------------------------------------------- |
| `insuredName`                | string            | The name of the insured, used to identify in the system                                                               |
| `joinDate`                   | string (ISO 8601) | Date coverage begins for insured                                                                                      |
| `terminationDate`            | string (ISO 8601) | Date coverage ends for insured                                                                                        |
| `policyInsuredType`          | enum              | "primary", "additional", "named", or "related"                                                                        |
| `entityType`                 | enum              | The type of covered exposure                                                                                          |
| `applicationData`            | object            | All insured-level rating data                                                                                         |
| `insuredCompanyEntityFields` | object            | All non-rating insured-level data (see [config tutorial](/api-legacy-reference/submissions/overview#nonratingfields)) |

***

## **Policy Type Options**

| Value | Description                                  |
| ----- | -------------------------------------------- |
| `C`   | Claims Made                                  |
| `N`   | Claims Made "Nose" (Prior Acts)              |
| `T`   | Claims Made "Tail" (Reporting Endorsement)   |
| `O`   | Occurrence                                   |
| `P`   | Claims Paid                                  |
| `S`   | Slot Coverage - Claims Made                  |
| `Q`   | Slot Coverage "Tail" (Reporting Endorsement) |
| `R`   | Slot Coverage - Occurrence                   |

***

## **Submission Status Values**

| Value          | Description                              |
| -------------- | ---------------------------------------- |
| `draft`        | Submission is being prepared             |
| `submitted`    | Submission has been submitted for review |
| `under_review` | Submission is being reviewed             |
| `quoted`       | Quote has been generated                 |
| `bound`        | Policy has been bound                    |
| `declined`     | Submission was declined                  |

***

## **Submission Types**

| Value          | Description                                                                                                     |
| -------------- | --------------------------------------------------------------------------------------------------------------- |
| `new_business` | A submission that will create a new policy                                                                      |
| `renewal`      | Submission that will create a new policy from an existing one. This new policy can contain updated information. |
| `endorsement`  | Submission that will update an existing policy                                                                  |

***

## **Quote Status Values**

| Value               | Description                                 |
| ------------------- | ------------------------------------------- |
| `in_progress`       | Quote is being created                      |
| `complete`          | Quote is complete and ready for review      |
| `sent`              | Quote has been sent to the client           |
| `accepted`          | Quote has been accepted by the client       |
| `bound`             | Quote has been bound to a policy            |
| `cancelled`         | Quote was cancelled                         |
| `archived`          | Quote has been archived                     |
| `applied_to_policy` | Quote changes have been applied to a policy |

***

## Field Types

| Type                           | Description                                                                                                                                                                    | Usage in Submission                                                                                                         |
| ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------- |
| `InputField`                   | A field that takes a value of type `string` or `number`, based on the `fields.type` value                                                                                      | `"key" : "some string"` or `"key" : 555`                                                                                    |
| `DateField`                    | A field that takes a value of type `string` in the format `YYYY-MM-DD`                                                                                                         | `"key" : "2025-10-03"`                                                                                                      |
| `SelectField` or `RadioSelect` | A field that takes a value of type `string` or `number`, based on the `value` property of `fields.options`                                                                     | `"key" : "some option"`, where `fields.options:[{"value":"some option"},...]`                                               |
| `MultiSelectField`             | A field that takes a value of type `string`, based on the `value` properties of `fields.options`.                                                                              | `"key" : "some option 1, some option 2"`, where `fields.options:[{"value":"some option 1"}, {"value":"some option 2"},...]` |
| `GroupField`                   | A field that takes a value of type `array`. This `array` is made of objects, whose keys are found in `fields.subFields`. Each field in `fields.subFields` is a type of `Field` | `"key" : [{"subKey": "value"},...]`                                                                                         |

***

## JSON Schema Format Types

Configuration endpoints (like [GET /quotes/configuration](/api-reference/quotes/get-quotes-configuration)) return JSON Schema definitions for custom data fields. The `format` property indicates the semantic type of values:

| Format     | Type     | Description                | Example Value                      |
| ---------- | -------- | -------------------------- | ---------------------------------- |
| `date`     | `string` | ISO 8601 date (YYYY-MM-DD) | `"2025-01-15"`                     |
| `email`    | `string` | Email address              | `"user@example.com"`               |
| `phone`    | `string` | Phone number               | `"+1-555-123-4567"`                |
| `currency` | `number` | Currency amount (simple)   | `1500`                             |
| `currency` | `object` | Currency amount with code  | `{ "code": "USD", "value": 1500 }` |
| `percent`  | `string` | Percentage value           | `"15.5"`                           |
| `address`  | `string` | Physical address           | `"123 Main St, ..."`               |

### Currency Fields

There are two types of currency fields:

1. **Simple currency** (`type: "number", format: "currency"`): A plain numeric amount. The currency code is typically derived from the policy's currency setting.
   ```json theme={null}
   { "annualPremium": 1500 }
   ```

2. **Currency with code** (`type: "object", format: "currency"`): An object containing both the currency code and value. Used when the currency may differ from the policy default.
   ```json theme={null}
   { "foreignExpense": { "code": "EUR", "value": 2500 } }
   ```

These formats are used across all configuration endpoints (quotes, events, etc.) and follow [JSON Schema format semantics](https://json-schema.org/understanding-json-schema/reference/string#format).

***

## **Exposure-Level Rating**

**Exposure-level rating** is a method of calculating insurance premiums where each individual item or entity covered under a policy (called an "exposure") is rated independently based on its specific characteristics and risk factors.

### How Exposure-Level Rating Works

In exposure-level rating, each exposure within a policy is evaluated separately:

1. **Individual Assessment**: Each exposure (e.g., a building, vehicle, healthcare provider, or other entity type) is assessed based on its own unique characteristics, such as:
   * Physical attributes (size, construction type, location)
   * Operational details (usage patterns, safety features)
   * Risk factors specific to that exposure

2. **Independent Premium Calculation**: A premium is calculated for each exposure individually using exposure-specific rating questions and modifier factors.

3. **Aggregation**: The individual exposure premiums are then summed together to form the total exposure-level premium for the policy.

4. **Policy-Level Adjustments**: After exposure-level rating is complete, policy-level modification factors are applied to the aggregated total.

### Exposure-Level vs. Policy-Level Rating

* **Exposure-Level Rating**: Evaluates individual entities (exposures) within a policy. Each exposure has its own set of rating questions and modifier factors. Examples include rating a specific doctor's malpractice risk or a particular building's property risk.

* **Policy-Level Rating**: Evaluates the policy as a whole, applying factors that affect the entire policy regardless of individual exposures. Examples include organizational risk factors, program-level discounts, or overall policy terms.

### Example

Consider a medical malpractice policy covering a hospital with multiple doctors:

* **Exposure-Level Rating**: Each doctor (exposure) is rated individually based on:
  * Their medical specialty
  * Geographic location
  * Years of experience
  * Malpractice history

* **Policy-Level Rating**: The policy as a whole is evaluated based on:
  * Hospital-wide risk management programs
  * Overall claims history
  * Negotiated risk agreements

The final premium combines both exposure-level and policy-level calculations.

For more information about how exposure-level rating fits into the overall data model, see [Understanding the AI Insurance Model](/getting-started/intro-to-aiinsurance/understanding-the-ai-insurance-model#2-exposure-level-rating-data).
