curl --request POST \
--url https://go.aiinsurance.io/api/v1/companies/{companyId}/policies/transaction/renew \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"data": {
"policyStatus": "active",
"annualPremium": 90000,
"policyStartDate": {
"date": "2026-01-01",
"timezone": "America/New_York"
},
"policyEndDate": {
"date": "2027-01-01",
"timezone": "America/New_York"
},
"previousPolicy": "550e8400-e29b-41d4-a716-446655440001",
"fullTermPricingInfo": {
"pricingComponents": [
{
"label": "Policy Premium",
"classification": "policy-premium",
"value": 90000
},
{
"label": "Policy Fee",
"classification": "policy-fee",
"value": 500
}
]
},
"primaryInsured": {
"id": "550e8400-e29b-41d4-a716-446655440010",
"exposureType": "MedicalFacility",
"bedCount": 120
},
"additionalExposures": []
}
}
'import requests
url = "https://go.aiinsurance.io/api/v1/companies/{companyId}/policies/transaction/renew"
payload = { "data": {
"policyStatus": "active",
"annualPremium": 90000,
"policyStartDate": {
"date": "2026-01-01",
"timezone": "America/New_York"
},
"policyEndDate": {
"date": "2027-01-01",
"timezone": "America/New_York"
},
"previousPolicy": "550e8400-e29b-41d4-a716-446655440001",
"fullTermPricingInfo": { "pricingComponents": [
{
"label": "Policy Premium",
"classification": "policy-premium",
"value": 90000
},
{
"label": "Policy Fee",
"classification": "policy-fee",
"value": 500
}
] },
"primaryInsured": {
"id": "550e8400-e29b-41d4-a716-446655440010",
"exposureType": "MedicalFacility",
"bedCount": 120
},
"additionalExposures": []
} }
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
data: {
policyStatus: 'active',
annualPremium: 90000,
policyStartDate: {date: '2026-01-01', timezone: 'America/New_York'},
policyEndDate: {date: '2027-01-01', timezone: 'America/New_York'},
previousPolicy: '550e8400-e29b-41d4-a716-446655440001',
fullTermPricingInfo: {
pricingComponents: [
{label: 'Policy Premium', classification: 'policy-premium', value: 90000},
{label: 'Policy Fee', classification: 'policy-fee', value: 500}
]
},
primaryInsured: {
id: '550e8400-e29b-41d4-a716-446655440010',
exposureType: 'MedicalFacility',
bedCount: 120
},
additionalExposures: []
}
})
};
fetch('https://go.aiinsurance.io/api/v1/companies/{companyId}/policies/transaction/renew', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://go.aiinsurance.io/api/v1/companies/{companyId}/policies/transaction/renew",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'data' => [
'policyStatus' => 'active',
'annualPremium' => 90000,
'policyStartDate' => [
'date' => '2026-01-01',
'timezone' => 'America/New_York'
],
'policyEndDate' => [
'date' => '2027-01-01',
'timezone' => 'America/New_York'
],
'previousPolicy' => '550e8400-e29b-41d4-a716-446655440001',
'fullTermPricingInfo' => [
'pricingComponents' => [
[
'label' => 'Policy Premium',
'classification' => 'policy-premium',
'value' => 90000
],
[
'label' => 'Policy Fee',
'classification' => 'policy-fee',
'value' => 500
]
]
],
'primaryInsured' => [
'id' => '550e8400-e29b-41d4-a716-446655440010',
'exposureType' => 'MedicalFacility',
'bedCount' => 120
],
'additionalExposures' => [
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://go.aiinsurance.io/api/v1/companies/{companyId}/policies/transaction/renew"
payload := strings.NewReader("{\n \"data\": {\n \"policyStatus\": \"active\",\n \"annualPremium\": 90000,\n \"policyStartDate\": {\n \"date\": \"2026-01-01\",\n \"timezone\": \"America/New_York\"\n },\n \"policyEndDate\": {\n \"date\": \"2027-01-01\",\n \"timezone\": \"America/New_York\"\n },\n \"previousPolicy\": \"550e8400-e29b-41d4-a716-446655440001\",\n \"fullTermPricingInfo\": {\n \"pricingComponents\": [\n {\n \"label\": \"Policy Premium\",\n \"classification\": \"policy-premium\",\n \"value\": 90000\n },\n {\n \"label\": \"Policy Fee\",\n \"classification\": \"policy-fee\",\n \"value\": 500\n }\n ]\n },\n \"primaryInsured\": {\n \"id\": \"550e8400-e29b-41d4-a716-446655440010\",\n \"exposureType\": \"MedicalFacility\",\n \"bedCount\": 120\n },\n \"additionalExposures\": []\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://go.aiinsurance.io/api/v1/companies/{companyId}/policies/transaction/renew")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"data\": {\n \"policyStatus\": \"active\",\n \"annualPremium\": 90000,\n \"policyStartDate\": {\n \"date\": \"2026-01-01\",\n \"timezone\": \"America/New_York\"\n },\n \"policyEndDate\": {\n \"date\": \"2027-01-01\",\n \"timezone\": \"America/New_York\"\n },\n \"previousPolicy\": \"550e8400-e29b-41d4-a716-446655440001\",\n \"fullTermPricingInfo\": {\n \"pricingComponents\": [\n {\n \"label\": \"Policy Premium\",\n \"classification\": \"policy-premium\",\n \"value\": 90000\n },\n {\n \"label\": \"Policy Fee\",\n \"classification\": \"policy-fee\",\n \"value\": 500\n }\n ]\n },\n \"primaryInsured\": {\n \"id\": \"550e8400-e29b-41d4-a716-446655440010\",\n \"exposureType\": \"MedicalFacility\",\n \"bedCount\": 120\n },\n \"additionalExposures\": []\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://go.aiinsurance.io/api/v1/companies/{companyId}/policies/transaction/renew")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"data\": {\n \"policyStatus\": \"active\",\n \"annualPremium\": 90000,\n \"policyStartDate\": {\n \"date\": \"2026-01-01\",\n \"timezone\": \"America/New_York\"\n },\n \"policyEndDate\": {\n \"date\": \"2027-01-01\",\n \"timezone\": \"America/New_York\"\n },\n \"previousPolicy\": \"550e8400-e29b-41d4-a716-446655440001\",\n \"fullTermPricingInfo\": {\n \"pricingComponents\": [\n {\n \"label\": \"Policy Premium\",\n \"classification\": \"policy-premium\",\n \"value\": 90000\n },\n {\n \"label\": \"Policy Fee\",\n \"classification\": \"policy-fee\",\n \"value\": 500\n }\n ]\n },\n \"primaryInsured\": {\n \"id\": \"550e8400-e29b-41d4-a716-446655440010\",\n \"exposureType\": \"MedicalFacility\",\n \"bedCount\": 120\n },\n \"additionalExposures\": []\n }\n}"
response = http.request(request)
puts response.read_body{
"policyId": "550e8400-e29b-41d4-a716-446655440060",
"policyVersion": 1,
"transactionId": "550e8400-e29b-41d4-a716-446655440061",
"startDate": "2026-01-01",
"endDate": "2027-01-01",
"createdAt": "2025-12-15T10:30:00.000Z",
"primaryInsuredName": "Mercy General Hospital",
"primaryInsuredId": "550e8400-e29b-41d4-a716-446655440010",
"policyNumber": "POL-2026-000456",
"policyStartDate": {
"date": "2026-01-01",
"timezone": "America/New_York"
},
"policyEndDate": {
"date": "2027-01-01",
"timezone": "America/New_York"
},
"fullTermPricingInfo": {
"premium": 90000,
"taxes": 0,
"fees": 500,
"total": 90500,
"pricingComponents": [
{
"label": "Policy Premium",
"classification": "policy-premium",
"qualifier": "",
"earningSchedule": "pro-rata",
"value": 90000
},
{
"label": "Policy Fee",
"classification": "policy-fee",
"qualifier": "",
"earningSchedule": "pro-rata",
"value": 500
}
]
},
"fullTermBillingInfo": null,
"fullTermPolicyRatingResult": null,
"segments": [
{
"startDate": "2026-01-01",
"endDate": "2027-01-01",
"transactionType": "RENEW",
"data": {
"policyStatus": "active",
"policyNumber": "POL-2026-000456",
"policyStartDate": {
"date": "2026-01-01",
"timezone": "America/New_York"
},
"policyEndDate": {
"date": "2027-01-01",
"timezone": "America/New_York"
},
"previousPolicy": "550e8400-e29b-41d4-a716-446655440001",
"primaryInsuredId": "550e8400-e29b-41d4-a716-446655440010",
"primaryInsuredName": "Mercy General Hospital",
"annualPremium": 90000,
"fullTermPricingInfo": {
"premium": 90000,
"taxes": 0,
"fees": 500,
"total": 90500,
"pricingComponents": [
{
"label": "Policy Premium",
"classification": "policy-premium",
"qualifier": "",
"earningSchedule": "pro-rata",
"value": 90000
},
{
"label": "Policy Fee",
"classification": "policy-fee",
"qualifier": "",
"earningSchedule": "pro-rata",
"value": 500
}
]
},
"primaryInsured": {
"id": "550e8400-e29b-41d4-a716-446655440010",
"exposureType": "MedicalFacility",
"bedCount": 120
},
"additionalExposures": []
}
}
]
}Renew Policy Transaction
Creates a new policy via a RENEW transaction, linking it to a previous policy. RENEW is NEW_BUSINESS plus a renewal link: the new policy term must start on or after the previous policy’s end date.
The request body is the complete initial policy state in data, exactly like
NEW_BUSINESS. Term bounds and the renewal link all live at the policy root —
policyStartDate, policyEndDate and previousPolicy are read from data. There are
no top-level parameters. The transaction produces a new policy record with a single
segment covering the full renewal term.
Policy invoices. Optionally send invoicePlan, a fully explicit
keep/void/create plan. Nothing is defaulted or inferred; omission posts no
invoices on the new renewal term.
Required permission: policy.renew
curl --request POST \
--url https://go.aiinsurance.io/api/v1/companies/{companyId}/policies/transaction/renew \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"data": {
"policyStatus": "active",
"annualPremium": 90000,
"policyStartDate": {
"date": "2026-01-01",
"timezone": "America/New_York"
},
"policyEndDate": {
"date": "2027-01-01",
"timezone": "America/New_York"
},
"previousPolicy": "550e8400-e29b-41d4-a716-446655440001",
"fullTermPricingInfo": {
"pricingComponents": [
{
"label": "Policy Premium",
"classification": "policy-premium",
"value": 90000
},
{
"label": "Policy Fee",
"classification": "policy-fee",
"value": 500
}
]
},
"primaryInsured": {
"id": "550e8400-e29b-41d4-a716-446655440010",
"exposureType": "MedicalFacility",
"bedCount": 120
},
"additionalExposures": []
}
}
'import requests
url = "https://go.aiinsurance.io/api/v1/companies/{companyId}/policies/transaction/renew"
payload = { "data": {
"policyStatus": "active",
"annualPremium": 90000,
"policyStartDate": {
"date": "2026-01-01",
"timezone": "America/New_York"
},
"policyEndDate": {
"date": "2027-01-01",
"timezone": "America/New_York"
},
"previousPolicy": "550e8400-e29b-41d4-a716-446655440001",
"fullTermPricingInfo": { "pricingComponents": [
{
"label": "Policy Premium",
"classification": "policy-premium",
"value": 90000
},
{
"label": "Policy Fee",
"classification": "policy-fee",
"value": 500
}
] },
"primaryInsured": {
"id": "550e8400-e29b-41d4-a716-446655440010",
"exposureType": "MedicalFacility",
"bedCount": 120
},
"additionalExposures": []
} }
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
data: {
policyStatus: 'active',
annualPremium: 90000,
policyStartDate: {date: '2026-01-01', timezone: 'America/New_York'},
policyEndDate: {date: '2027-01-01', timezone: 'America/New_York'},
previousPolicy: '550e8400-e29b-41d4-a716-446655440001',
fullTermPricingInfo: {
pricingComponents: [
{label: 'Policy Premium', classification: 'policy-premium', value: 90000},
{label: 'Policy Fee', classification: 'policy-fee', value: 500}
]
},
primaryInsured: {
id: '550e8400-e29b-41d4-a716-446655440010',
exposureType: 'MedicalFacility',
bedCount: 120
},
additionalExposures: []
}
})
};
fetch('https://go.aiinsurance.io/api/v1/companies/{companyId}/policies/transaction/renew', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://go.aiinsurance.io/api/v1/companies/{companyId}/policies/transaction/renew",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'data' => [
'policyStatus' => 'active',
'annualPremium' => 90000,
'policyStartDate' => [
'date' => '2026-01-01',
'timezone' => 'America/New_York'
],
'policyEndDate' => [
'date' => '2027-01-01',
'timezone' => 'America/New_York'
],
'previousPolicy' => '550e8400-e29b-41d4-a716-446655440001',
'fullTermPricingInfo' => [
'pricingComponents' => [
[
'label' => 'Policy Premium',
'classification' => 'policy-premium',
'value' => 90000
],
[
'label' => 'Policy Fee',
'classification' => 'policy-fee',
'value' => 500
]
]
],
'primaryInsured' => [
'id' => '550e8400-e29b-41d4-a716-446655440010',
'exposureType' => 'MedicalFacility',
'bedCount' => 120
],
'additionalExposures' => [
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://go.aiinsurance.io/api/v1/companies/{companyId}/policies/transaction/renew"
payload := strings.NewReader("{\n \"data\": {\n \"policyStatus\": \"active\",\n \"annualPremium\": 90000,\n \"policyStartDate\": {\n \"date\": \"2026-01-01\",\n \"timezone\": \"America/New_York\"\n },\n \"policyEndDate\": {\n \"date\": \"2027-01-01\",\n \"timezone\": \"America/New_York\"\n },\n \"previousPolicy\": \"550e8400-e29b-41d4-a716-446655440001\",\n \"fullTermPricingInfo\": {\n \"pricingComponents\": [\n {\n \"label\": \"Policy Premium\",\n \"classification\": \"policy-premium\",\n \"value\": 90000\n },\n {\n \"label\": \"Policy Fee\",\n \"classification\": \"policy-fee\",\n \"value\": 500\n }\n ]\n },\n \"primaryInsured\": {\n \"id\": \"550e8400-e29b-41d4-a716-446655440010\",\n \"exposureType\": \"MedicalFacility\",\n \"bedCount\": 120\n },\n \"additionalExposures\": []\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://go.aiinsurance.io/api/v1/companies/{companyId}/policies/transaction/renew")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"data\": {\n \"policyStatus\": \"active\",\n \"annualPremium\": 90000,\n \"policyStartDate\": {\n \"date\": \"2026-01-01\",\n \"timezone\": \"America/New_York\"\n },\n \"policyEndDate\": {\n \"date\": \"2027-01-01\",\n \"timezone\": \"America/New_York\"\n },\n \"previousPolicy\": \"550e8400-e29b-41d4-a716-446655440001\",\n \"fullTermPricingInfo\": {\n \"pricingComponents\": [\n {\n \"label\": \"Policy Premium\",\n \"classification\": \"policy-premium\",\n \"value\": 90000\n },\n {\n \"label\": \"Policy Fee\",\n \"classification\": \"policy-fee\",\n \"value\": 500\n }\n ]\n },\n \"primaryInsured\": {\n \"id\": \"550e8400-e29b-41d4-a716-446655440010\",\n \"exposureType\": \"MedicalFacility\",\n \"bedCount\": 120\n },\n \"additionalExposures\": []\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://go.aiinsurance.io/api/v1/companies/{companyId}/policies/transaction/renew")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"data\": {\n \"policyStatus\": \"active\",\n \"annualPremium\": 90000,\n \"policyStartDate\": {\n \"date\": \"2026-01-01\",\n \"timezone\": \"America/New_York\"\n },\n \"policyEndDate\": {\n \"date\": \"2027-01-01\",\n \"timezone\": \"America/New_York\"\n },\n \"previousPolicy\": \"550e8400-e29b-41d4-a716-446655440001\",\n \"fullTermPricingInfo\": {\n \"pricingComponents\": [\n {\n \"label\": \"Policy Premium\",\n \"classification\": \"policy-premium\",\n \"value\": 90000\n },\n {\n \"label\": \"Policy Fee\",\n \"classification\": \"policy-fee\",\n \"value\": 500\n }\n ]\n },\n \"primaryInsured\": {\n \"id\": \"550e8400-e29b-41d4-a716-446655440010\",\n \"exposureType\": \"MedicalFacility\",\n \"bedCount\": 120\n },\n \"additionalExposures\": []\n }\n}"
response = http.request(request)
puts response.read_body{
"policyId": "550e8400-e29b-41d4-a716-446655440060",
"policyVersion": 1,
"transactionId": "550e8400-e29b-41d4-a716-446655440061",
"startDate": "2026-01-01",
"endDate": "2027-01-01",
"createdAt": "2025-12-15T10:30:00.000Z",
"primaryInsuredName": "Mercy General Hospital",
"primaryInsuredId": "550e8400-e29b-41d4-a716-446655440010",
"policyNumber": "POL-2026-000456",
"policyStartDate": {
"date": "2026-01-01",
"timezone": "America/New_York"
},
"policyEndDate": {
"date": "2027-01-01",
"timezone": "America/New_York"
},
"fullTermPricingInfo": {
"premium": 90000,
"taxes": 0,
"fees": 500,
"total": 90500,
"pricingComponents": [
{
"label": "Policy Premium",
"classification": "policy-premium",
"qualifier": "",
"earningSchedule": "pro-rata",
"value": 90000
},
{
"label": "Policy Fee",
"classification": "policy-fee",
"qualifier": "",
"earningSchedule": "pro-rata",
"value": 500
}
]
},
"fullTermBillingInfo": null,
"fullTermPolicyRatingResult": null,
"segments": [
{
"startDate": "2026-01-01",
"endDate": "2027-01-01",
"transactionType": "RENEW",
"data": {
"policyStatus": "active",
"policyNumber": "POL-2026-000456",
"policyStartDate": {
"date": "2026-01-01",
"timezone": "America/New_York"
},
"policyEndDate": {
"date": "2027-01-01",
"timezone": "America/New_York"
},
"previousPolicy": "550e8400-e29b-41d4-a716-446655440001",
"primaryInsuredId": "550e8400-e29b-41d4-a716-446655440010",
"primaryInsuredName": "Mercy General Hospital",
"annualPremium": 90000,
"fullTermPricingInfo": {
"premium": 90000,
"taxes": 0,
"fees": 500,
"total": 90500,
"pricingComponents": [
{
"label": "Policy Premium",
"classification": "policy-premium",
"qualifier": "",
"earningSchedule": "pro-rata",
"value": 90000
},
{
"label": "Policy Fee",
"classification": "policy-fee",
"qualifier": "",
"earningSchedule": "pro-rata",
"value": 500
}
]
},
"primaryInsured": {
"id": "550e8400-e29b-41d4-a716-446655440010",
"exposureType": "MedicalFacility",
"bedCount": 120
},
"additionalExposures": []
}
}
]
}Authorizations
API key authentication. Send your raw API key as the Authorization header value with NO scheme prefix — Authorization: YOUR-API-KEY. Do NOT prefix it with Bearer or ApiKey, and do not use an X-API-Key header; those are not accepted.
Path Parameters
Company identifier
Body
The renewal policy's policy-level fields, at the top level of this object.
Must include policyStatus, policyStartDate, policyEndDate and
previousPolicy. May also include fullTermPricingInfo,
fullTermBillingInfo,
fullTermPolicyRatingResult and any custom fields defined in your field
configuration — including embedded exposure fields (the default configuration
models a primaryInsured object + an additionalExposures list, but the
platform imposes no structural exposure shape).
Custom fields — including the values of any embedded exposure fields — are validated against your company's field configuration. Unknown fields are rejected, required fields must be present, and values must match their configured types (including option set membership). Embedded exposure values are validated per-field against that exposure's own configuration.
Before 2026-08-05 these same fields were sent one level deeper, inside
fieldModelV1Data.policy. Send data.policyNumber where you sent
fieldModelV1Data.policy.policyNumber.
Show child attributes
Show child attributes
When the business decision was made. Defaults to the current time if omitted. Set explicitly for imports (e.g., aligning to a bordereau booking date).
Optional user-visible author label (trimmed; must be non-empty). When set, the transaction is displayed as filed by this label (e.g. "Data Import") instead of the acting user; audit attribution (createdBy) stays server-set.
255A fully explicit, detached policy-invoice batch. Existing invoices not named in voidInvoices are kept. The complete kept-plus-created set must conserve every bound component of the policy's current pricing contract.
Show child attributes
Show child attributes
Response
Renewal policy created successfully
Response returned by policy transaction endpoints. Contains the policy version produced by the transaction, including all derived segments.
Policy identifier
Sequential version number produced by this transaction
Identifier of the transaction that produced this version
Policy term start date (ISO 8601)
Policy term end date (ISO 8601)
When the transaction was created (ISO 8601)
Plain-text primary-insured name, read from the policy's own
primaryInsuredName field — the source of truth for the primary insured.
Reported as of the END of
the term, so a policy whose insured changed mid-term returns the later name;
segments[] carries the per-segment history. Null only when the version
carries no policy data.
Id of the entity behind primaryInsuredName. Null when the policy's
configuration does not populate it.
The policy number, read from the policy's own policyNumber field — the
source of truth, invariant across the whole term. Null only when the version
carries no policy data.
Policy term start date as the structured date object, read from the policy's
own policyStartDate field — the source of truth, invariant across the whole
term. This is not startDate above: that is the ISO
span this version covers, which a cancellation makes shorter than the term.
Null only when the version carries no policy data.
Show child attributes
Show child attributes
Policy term end date as the structured date object, read from the policy's own
policyEndDate field — the source of truth, invariant across the whole term.
This is not endDate above: that is the ISO
span this version covers. Null only when the version carries no policy data.
Show child attributes
Show child attributes
The policy's full-term pricing contract, hoisted as a read-once convenience
(also duplicated in every segment): pricingComponents plus the four
server-computed, read-only rollups — premium, taxes and fees (each
the sum of the components whose classification reports into it) and
total (premium + taxes + fees). All four
are always present. The retired brokerCommission / programCommission
rollups are no longer computed; a version stored before their retirement
may still return the two keys until the per-tenant data sweeps.
Each newly written component carries
{label, value, classification, qualifier, earningSchedule} —
<classification, qualifier> is its identity, and label is cosmetic.
The legacy vocabulary is retired: a component stored before the
retirement may still echo the group / kind / earningBasis keys
until the per-tenant data sweeps remove them — treat those as historical
output, never as identity, and do not rely on their presence.
The policy's Billing Aggregate for the term, hoisted as a read-once convenience (also duplicated in every segment). Null when the policy states no billing obligations.
Show child attributes
Show child attributes
Derived canonical policy-level rating result for the full term, hoisted as a
read-once convenience (also duplicated in every segment). Element-level rating
output (crossSegmentRatingOutputs) stays inline at its host and is not hoisted.
Derived segments for this policy version. Each segment represents a maximal contiguous date range where policy state is identical. Adjacent segments with identical data are automatically merged.
Show child attributes
Show child attributes
