Skip to main content
POST

Authorizations

Authorization
string
header
required

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

companyId
string<uuid>
required

Company identifier

policyId
string<uuid>
required

Policy identifier

Body

application/json
effectiveDate
string<date>
required

The effective date of the endorsement in ISO 8601 format. It must fall within the policy term.

transactionTimestamp
string<date-time>

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).

displayAuthor
string

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.

Maximum string length: 255
deltas
object[]

Policy-data deltas. Each delta specifies a date range (startDate / endDate) within the policy term, a predicate path, an action (Add / Remove / Overwrite), and the new value. Paths must not contain any reserved full-term container (fullTermPricingInfo, fullTermBillingInfo, fullTermPolicyRatingResult, crossSegmentRatingOutputs) — those have their own channel. A delta on one of the four whole-term ROOT paths (policy.policyNumber, policy.policyStartDate, policy.policyEndDate, policy.previousPolicy) must span the whole term.

fullTermPricingInfo
object

Optional whole-object overwrite of the policy-root full-term pricing contract. Supply pricingComponents (each {label, value, classification[, qualifier, earningSchedule]}; label a string, value a plain number, classification a key naming a LIVE entry in your company's classification registry — required on every component, for every company; qualifier defaults to "" and earningSchedule — pro-rata or immediate — defaults to pro-rata). The four rollups (premium, taxes, fees, total) are computed by the platform from the components' classifications; caller-supplied rollup values are ignored and recomputed. Additive on either input channel. The full component contract and its refusals (400, InvalidFieldModelV1Data on this endpoint) are spelled out on the New Business Transaction endpoint.

The retired legacy fields (group/kind/earningBasis) are ignored and discarded on input — never validated, never stored on a newly written component — so a stored component that still echoes them can be posted back unchanged.

fullTermBillingInfo
object

Optional whole-object overwrite of the policy-root Billing Aggregate — the term's billing obligations per line item, free of invoices. Additive on either input channel, and independent of fullTermPricingInfo: no conservation rule ties the two together yet.

fullTermPolicyRatingResult
object

Optional whole-object overwrite of the policy-root canonical rating result. The twin of fullTermPricingInfo; additive on either input channel.

crossSegmentRatingOutputs
object[]

Optional element-level rating output. Each entry overwrites the crossSegmentRatingOutputs container at its host; the server derives the write range from the host's presence across segments (write where the host-selector resolves to exactly one element, skip where zero, throw on many or if it never resolves). Additive; ENDORSE only.

invoicePlan
object

A 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.

Response

Endorsement applied successfully

Response returned by policy transaction endpoints. Contains the policy version produced by the transaction, including all derived segments.

policyId
string<uuid>
required

Policy identifier

policyVersion
integer
required

Sequential version number produced by this transaction

transactionId
string<uuid>
required

Identifier of the transaction that produced this version

startDate
string<date>
required

Policy term start date (ISO 8601)

endDate
string<date>
required

Policy term end date (ISO 8601)

createdAt
string<date-time>
required

When the transaction was created (ISO 8601)

primaryInsuredName
string | null
required

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.

primaryInsuredId
string | null
required

Id of the entity behind primaryInsuredName. Null when the policy's configuration does not populate it.

policyNumber
string | null
required

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.

policyStartDate
object | null
required

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.

policyEndDate
object | null
required

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.

fullTermPricingInfo
object | null
required

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.

fullTermBillingInfo
object | null
required

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.

fullTermPolicyRatingResult
object | null
required

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.

segments
object[]
required

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.