Skip to main content
This page documents the data structures and conventions used across all V1 API endpoints.

Common Conventions

IDs

All entity identifiers are UUIDs (RFC 4122):
"550e8400-e29b-41d4-a716-446655440000"

Timestamps

All timestamp fields (createdAt, updatedAt, transactionTimestamp, etc.) are returned as ISO 8601 strings in UTC:
"2026-04-14T10:30:45.123Z"

Dates

Date-only fields (startDate, endDate, effectiveDate, policyStartDate, policyEndDate) use ISO 8601 date format:
"2026-01-15"

Nullable Fields

Fields that may be absent are typed as T | null. For example, policyId: string | null means the field is always present in the response but may be null.

Pagination

All list endpoints return the same paginated response shape:
{
  "items": [],
  "totalCount": 0
}
FieldTypeDescription
itemsarrayEntities for the current page
totalCountintegerTotal matching records across all pages
Query parameters for list endpoints:
ParameterTypeDefaultDescription
pageinteger11-based page number
sortBystringcreatedAtField to sort by (entity-specific)
sortDirectionasc | descdescSort direction
Page size is fixed at 50 items per page.

fieldModelV1Data

Most V1 entities store their custom field data in a fieldModelV1Data object. The shape of this object is defined by your company’s field configuration — call the entity’s /configuration endpoint to discover available fields, types, and validation rules. Keys in fieldModelV1Data are field reference IDs (the stable identifiers you define when configuring fields).

Field Value Types

Field TypeJSON TypeExample
Textstring"Acme Corp"
Numbernumber42
Booleanbooleantrue
Dateobject{ "day": 15, "month": 1, "year": 2026, "timezone": "America/New_York" }
Single-select option setstring"commercial"
Multi-select option setarray of string["general_liability", "property"]

Date Fields

Date fields in fieldModelV1Data are represented as objects with individual components:
{
  "policyEffectiveDate": {
    "day": 15,
    "month": 1,
    "year": 2026,
    "timezone": "America/New_York"
  }
}
PropertyTypeDescription
daynumberDay of the month (1-31)
monthnumberMonth (1-12)
yearnumberFour-digit year
timezonestringIANA timezone identifier
API parameters that accept dates directly (such as policyStartDate, effectiveDate, and other endpoint-level fields) use ISO 8601 date strings ("2026-01-15"), not the component object format. The component format is specific to custom field data inside fieldModelV1Data.

Option Set Fields

Option set values are stored as string keys (not labels). Use the /configuration endpoint to map keys to human-readable labels. Single-select:
{
  "exposureType": "commercial_property"
}
Multi-select:
{
  "coverageLines": ["general_liability", "property", "auto"]
}
The configuration schema uses oneOf to enumerate valid options:
{
  "exposureType": {
    "type": "string",
    "title": "exposureType",
    "oneOf": [
      { "const": "commercial_property", "title": "Commercial Property" },
      { "const": "residential", "title": "Residential" }
    ]
  }
}

Configuration Schema

All entity types have a /configuration endpoint that returns a JSON Schema (Draft 2020-12) describing valid field data:
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "fieldReferenceId": {
      "type": "string",
      "title": "fieldReferenceId",
      "format": "date"
    }
  },
  "required": ["fieldReferenceId"]
}

Schema Format Values

The format property indicates the semantic type of a field:
FormatJSON TypeDescriptionExample Value
datestringISO 8601 date"2026-01-15"
emailstringEmail address"user@example.com"
phonestringPhone number"+1-555-123-4567"
currencynumberMonetary amount15000
percentstringPercentage"15.5"
addressstringPhysical address"123 Main St, ..."
entity:exposurestringReference to an exposure type"commercial_property"

Entities

Exposure

Exposures represent insured entities (e.g., a building, vehicle, or healthcare provider).
FieldTypeDescription
idstring (UUID)Exposure identifier
companyIdstring (UUID)Company identifier
fieldModelV1DataobjectCustom field data
policyIdsstring[]Associated policy IDs
createdAtstring (ISO 8601) | nullCreation timestamp
updatedAtstring (ISO 8601) | nullLast update timestamp
createdBystring | nullUser ID of creator
updatedBystring | nullUser ID of last updater

Event

Events represent claims and incidents.
FieldTypeDescription
idstring (UUID)Event identifier
companyIdstring (UUID)Company identifier
policyIdstring (UUID) | nullAssociated policy
fieldModelV1DataobjectCustom field data
createdAtstring (ISO 8601) | nullCreation timestamp
updatedAtstring (ISO 8601) | nullLast update timestamp
createdBystring | nullUser ID of creator
updatedBystring | nullUser ID of last updater

Quote

Quotes contain policy-level and exposure-level field data. On bind, a quote creates a new policy.
FieldTypeDescription
idstring (UUID)Quote identifier
companyIdstring (UUID)Company identifier
submissionIdstring (UUID)Parent submission
policyIdstring (UUID) | nullAssociated policy (set after bind)
policyobjectPolicy-level custom field data
exposuresobject[]Array of exposure field data objects
createdAtstring (ISO 8601)Creation timestamp
updatedAtstring (ISO 8601) | nullLast update timestamp
createdBystring | nullUser ID of creator
Quotes use policy and exposures rather than fieldModelV1Data because they contain data for two entity types in a single response.
Quote configuration returns schemas for both entity types:
{
  "policy": { "$schema": "...", "type": "object", "properties": { ... } },
  "exposure": { "$schema": "...", "type": "object", "properties": { ... } }
}
The exposure schema (singular) describes the shape of each item in the quote’s exposures array (plural).

Custom Object

Custom objects are configurable entity types with relationships to other objects.
FieldTypeDescription
idstring (UUID)Object identifier
companyIdstring (UUID)Company identifier
typestringObject type name
displayNamestringComputed display name
dataobjectCustom field data
relationshipsobjectRelationship mappings
createdAtstring (ISO 8601) | nullCreation timestamp
updatedAtstring (ISO 8601) | nullLast update timestamp
createdBystring | nullUser ID of creator
updatedBystring | nullUser ID of last updater
Custom object configuration includes field schema and relationship definitions:
{
  "data": { "$schema": "...", "type": "object", "properties": { ... } },
  "relationships": [
    {
      "fieldRefId": "primaryBroker",
      "label": "Primary Broker",
      "targetType": "broker",
      "cardinality": "many_to_one"
    }
  ]
}
Relationship cardinality values: one_to_one, one_to_many, many_to_one, many_to_many

Policy Model

Policies use a transaction-based, temporally-versioned data model. Rather than directly editing policy fields, you submit transactions (new business, endorsement, cancellation, etc.) that produce immutable versions. For a deep dive, see Policy Concepts.

Policy Version

Each transaction produces a new policy version containing one or more segments — date ranges where the policy state is identical.
FieldTypeDescription
policyIdstring (UUID)Policy identifier
policyVersionintegerVersion number (incrementing)
transactionIdstring (UUID)Transaction that produced this version
startDatestring (date)Policy term start
endDatestring (date)Policy term end
createdAtstring (ISO 8601)Version creation timestamp
fullTermPolicyBillingobject | nullBilling data for the full term
fullTermPolicyInfoobject | nullPolicy info for the full term
segmentsPolicySegment[]Array of policy segments

Policy Segment

A segment is a date range within the policy term where the policy state is constant. Segments are derived from final state — they are not one-per-transaction.
FieldTypeDescription
startDatestring (date)Segment start date
endDatestring (date)Segment end date
fieldModelV1DataobjectPolicy field data for this date range

Policy Transaction

Transactions are the immutable record of changes to a policy.
FieldTypeDescription
idstring (UUID)Transaction identifier
policyIdstring (UUID)Policy identifier
policyVersionintegerVersion this transaction produced
actionstringTransaction type (see below)
effectiveDatestring (date)When this change takes effect
transactionTimestampstring (ISO 8601)When this transaction was recorded
createdAtstring (ISO 8601)Creation timestamp
createdBystring | nullUser ID of creator
deltasTransactionDelta[]Field-level changes (optional)
Transaction action values: NEW_BUSINESS, ENDORSE, CANCEL, REINSTATE, RENEW

Transaction Delta

Deltas describe the field-level changes a transaction made within a date range.
FieldTypeDescription
idstring (UUID)Delta identifier
transactionIdstring (UUID)Parent transaction
startDatestring (date)Date range start
endDatestring (date)Date range end
pathstringJSON pointer to the changed field
actionstringAdd, Remove, or Modify
valuestring, number, or objectNew value (for Add and Modify)

Policy List Item

List endpoints return a summary with optional segment detail:
{
  "summary": {
    "id": "...",
    "policyId": "...",
    "companyId": "...",
    "createdAt": "2026-01-15T10:30:00.000Z",
    "policyVersion": 3,
    "versionCreatedAt": "2026-03-01T14:00:00.000Z",
    "fullTermPolicyBilling": null,
    "fullTermPolicyInfo": { ... },
    "matchedSegments": [
      { "startDate": "2026-01-15", "endDate": "2026-07-15" }
    ]
  },
  "segments": []
}

Earned Premium

Per-policy earned premium calculations, available at different detail levels.
FieldTypeDescription
policyIdstring (UUID)Policy identifier
policyNumberstringHuman-readable policy number
earnedPremiumTotalnumberTotal earned premium for the period
transactionTotalsarrayPer-transaction contribution breakdown
daysarray | undefinedPer-day breakdown (when requested)
Detail levels (set via detail query parameter):
ValueDescription
transactionsPer-transaction totals only (default)
daysAdds daily earned premium totals
daysAndTransactionsAdds daily totals with per-transaction contributions

Bordereau Row

Bordereau export provides a flat row per policy transaction for reporting.
FieldTypeDescription
policyNumberstring | nullPolicy number
primaryInsuredNamestring | nullPrimary insured
transactionActionstringTransaction type
policyVersionintegerVersion number
effectiveDatestring (date)Transaction effective date
transactionTimestampstring (ISO 8601)When recorded
policyStartDatestring (date)Term start
policyEndDatestring (date)Term end
policyStatusstring | nullCurrent status
createdAtstring (ISO 8601)Creation timestamp
createdBystring | nullCreator
policyPremiumnumber | nullTotal premium at this version
policyPremiumChangenumber | nullPremium change from prior version
additionalColumnsobjectCompany-configured additional columns

Entity Relationships

Submission ──has many──> Quotes
Quote ──binds to──> Policy (one-to-one)
Policy ──has many──> Transactions ──produces──> Versions ──contains──> Segments
Exposure ──standalone entity──
Quote / Policy ──embeds──> Exposure data (snapshot, can diverge)
Event ──optionally linked──> Policy (via policyId)
Custom Object ──relationships──> Custom Object (configurable cardinality)
RelationshipDescription
Quote → PolicyBinding a quote creates a policy and sets policyId on the quote
Policy → TransactionsTransactions are the write path; each produces a new version
Policy → Versions → SegmentsVersions contain segments representing the policy state over time
Quote / Policy → ExposureQuotes and policies embed exposure data. They store a reference back to the standalone exposure object, but the embedded exposure data can evolve independently — e.g., an endorsement may change exposure fields on the policy without modifying the standalone exposure record
Event → PolicyEvents may reference a policy via policyId
Custom Object → Custom ObjectConfigurable relationships with defined cardinality