Policy API

Create a policy

POST /policy

PolicyCreateRequest4

{
  // Required
  policyholderLocator : string
  productName : string

  // Optional
  exposures : [ExposureCreateRequest]
  fieldGroups : [FieldGroupCreateRequest]
  fieldValues : map<string,[string]>
  finalize : boolean
  paymentScheduleName : string
  policyEndTimestamp : timestamp
  policyStartTimestamp : timestamp
  premiumReportName : string
}

Fetch a policy

GET /policy/{policyLocator}
  • Request:

    Name

    Position

    Type

    Required

    policyLocator

    path

    string

    required

  • Response:Policy2Response

Update a policy application

POST /policy/{policyLocator}/update

Policy2UpdateRequest

{
  // Required
  addExposures : [ExposureCreateRequest]
  addFieldGroups : [FieldGroupCreateRequest]
  removeExposures : [string]
  removeFieldGroups : [string]
  updateExposures : [ExposureUpdateRequest]
  updateFieldGroups : [FieldGroupUpdateRequest]

  // Optional
  effectiveContractEndTimestamp : timestamp
  effectiveContractStartTimestamp : timestamp
  fieldValues : map<string,[string]>
  finalize : boolean
  paymentScheduleName : string
  policyEndTimestamp : timestamp
  policyStartTimestamp : timestamp
}

Policy2Response

{
  // Required
  characteristics : [PolicyCharacteristicsResponse]
  createdTimestamp : timestamp
  displayId : string
  documents : [PolicyDocumentResponse]
  effectiveContractEndTimestamp : timestamp
  exposures : [ExposureResponse]
  fees : [FeeResponse]
  grossFees : number
  grossFeesCurrency : string
  invoices : [PolicyInvoice2Response]
  locator : string
  modifications : [PolicyModificationResponse]
  originalContractEndTimestamp : timestamp
  originalContractStartTimestamp : timestamp
  policyholderLocator : string
  productLocator : string
  productName : string
  updatedTimestamp : timestamp

  // Optional
  cancellation : CancellationInfo
  issuedTimestamp : timestamp
  paymentScheduleName : string
  premiumReportName : string
  quoteSummary : QuoteSummaryResponse
}

Finalize a policy

POST /policy/{policyLocator}/finalize
  • Request:

    Name

    Position

    Type

    Required

    policyLocator

    path

    string

    required

  • Response:Policy2Response

Issue a policy

POST /policy/{policyLocator}/issue
  • Request:

    Name

    Position

    Type

    Required

    policyLocator

    path

    string

    required

  • Response:Policy2Response

Cancel a policy

POST /policy/{policyLocator}/cancel

PolicyCancellationIssueRequest

{
  // Required
  coverageEndTimestamp : timestamp
}

Fetch a policy’s cancellation value

GET /policy/{policyLocator}/cancellationValue
  • Request:

    Name

    Position

    Type

    Required

    coverageEndTimestamp

    query

    integer

    required

    policyLocator

    path

    string

    required

  • Response:CancellationValueResponse

CancellationValueResponse

{
  // Required
  balanceAfterCancellation : number
  commissions : [CommissionChangeResponse]
  exposurePrices : [ExposurePriceChangeResponse]
  grossCommissionsChange : number
  grossFeesChange : number
  grossPremiumChange : number
  grossTaxesChange : number
  newGrossCommissions : number
  newGrossFees : number
  newGrossPremium : number
  newGrossTaxes : number
  newTotal : number
  taxGroups : [TaxChangeResponse]
  totalChange : number
  value : number
}

Withdraw a policy

POST /policy/{policyLocator}/withdraw
  • Request:

    Name

    Position

    Type

    Required

    policyLocator

    path

    string

    required

  • Response:Policy2Response

Discard a policy

POST /policy/{policyLocator}/discard
  • Request:

    Name

    Position

    Type

    Required

    policyLocator

    path

    string

    required

  • Response:void

Add a document to a policy

POST /policy/{policyLocator}/addDocument
  • Request:

    Name

    Position

    Type

    Required

    displayName

    query

    string

    required

    document

    formdata

    file

    required

    documentType

    query

    string

    required

    policyLocator

    path

    string

    required

  • Response:Policy2Response

Upload a PDF or HTML file and add it to the documents attatched to the specified policy. This will not cause an endorsement or other policy transaction.

Remove a document from a policy

POST /policy/{policyLocator}/removeDocument
  • Remove a user-uploaded document from a policy.

  • The policy must not be already issued.

PolicyDocumentRemoveRequest

{
  // Required
  documentLocator : string
}

Fetch a policy’s automated underwriting result

GET /policy/{policyLocator}/automatedUnderwritingResult

AutomatedUnderwritingResultResponse

{
  // Required
  decision : string accept | reject | none
  decisionTimestamp : timestamp
  notes : [string]
}

Fetch a policy’s invoices

GET /policy/{policyLocator}/checkInvoices

Issue the next invoice for a policy

POST /policy/{policyLocator}/issueNextInvoice
  • Request:

    Name

    Position

    Type

    Required

    policyLocator

    path

    string

    required

  • Response:Policy2Response

  • Not recommended for use on live policies

  • This endpoint issues the next scheduled invoice for the policy (as visible from Check Invoices)

  • The invoice due date will be the same as if the invoice was issued automatically

CheckInvoicesResponse

{
  // Required
  futureInvoices : [FutureInvoiceResponse]
  generatedInvoices : [GeneratedInvoiceResponse]
}

FutureInvoiceResponse

{
  // Required
  endTimestamp : timestamp
  financialTransactions : [FinancialTransactionResponse]
  issueTimestamp : timestamp
  startTimestamp : timestamp
}

GeneratedInvoiceResponse

{
  // Required
  financialTransactions : [FinancialTransactionResponse]
}

FinancialTransactionResponse

{
  // Required
  amount : number
  amountCurrency : string
  endTimestamp : timestamp
  policyModificationLocator : string
  postedTimestamp : timestamp
  startTimestamp : timestamp
  type : string premium | tax | fee | commission

  // Optional
  commissionRecipient : string
  feeLocator : string
  feeName : string
  perilCharacteristicsLocator : string
  perilName : string
  taxLocator : string
  taxName : string
}

PolicyPriceChangeResponse

{
  // Required
  commissions : [CommissionChangeResponse]
  exposurePrices : [ExposurePriceChangeResponse]
  fees : [FeeChangeResponse]
  grossCommissionsChange : number
  grossFeesChange : number
  grossPremiumChange : number
  grossTaxesChange : number
  newGrossCommissions : number
  newGrossFees : number
  newGrossPremium : number
  newGrossTaxes : number
  newTotal : number
  taxGroups : [TaxChangeResponse]
  totalChange : number
}

ExposurePriceChangeResponse

{
  // Required
  commissions : [CommissionChangeResponse]
  grossCommissionsChange : number
  grossPremiumChange : number
  grossTaxesChange : number
  name : string
  newGrossCommissions : number
  newGrossPremium : number
  newGrossTaxes : number
  perilPrices : [PerilPriceChangeResponse]
  taxGroups : [TaxChangeResponse]

  // Optional
  locator : string
}

PerilPriceChangeResponse

{
  // Required
  commissions : [CommissionChangeResponse]
  grossCommissionsChange : number
  grossPremiumChange : number
  grossTaxesChange : number
  name : string
  newGrossCommissions : number
  newGrossPremium : number
  newGrossTaxes : number
  taxes : [TaxChangeResponse]

  // Optional
  locator : string
}

TaxChangeResponse

{
  // Required
  change : number
  name : string
  newAmount : number
}

CommissionChangeResponse

{
  // Required
  amountChange : number
  newAmount : number
  recipient : string
}

FeeChangeResponse

{
  // Required
  amountChange : number
  name : string
  newAmount : number

  // Optional
  locator : string
}

Fetch a policy’s pricing data

GET /policy/{policyLocator}/price

Price a policy

POST /policy/{policyLocator}/price

GetPolicyPriceResponse

{
  // Required
  commissions : [CommissionResponse]
  exposurePrices : [GetExposurePriceResponse]
  fees : [FeeResponse]
  grossCommissions : number
  grossCommissionsCurrency : string
  grossFees : number
  grossFeesCurrency : string
  grossPremium : number
  grossPremiumCurrency : string
  grossTaxes : number
  grossTaxesCurrency : string
  grossTechnicalPremiumCurrency : string
  taxGroups : [TaxGroupResponse]
  total : number
  totalCurrency : string

  // Optional
  grossTechnicalPremium : number
}

GetExposurePriceResponse

{
  // Required
  commissions : [CommissionResponse]
  grossCommissions : number
  grossCommissionsCurrency : string
  grossPremium : number
  grossPremiumCurrency : string
  grossTaxes : number
  grossTaxesCurrency : string
  grossTechnicalPremiumCurrency : string
  locator : string
  name : string
  perilPrices : [GetPerilPriceResponse]
  taxGroups : [TaxGroupResponse]
  total : number
  totalCurrency : string

  // Optional
  grossTechnicalPremium : number
}

GetPerilPriceResponse

{
  // Required
  commissions : [CommissionResponse]
  grossCommissions : number
  grossCommissionsCurrency : string
  grossTaxes : number
  grossTaxesCurrency : string
  locator : string
  name : string
  premium : number
  premiumCurrency : string
  taxes : [TaxGroupResponse]
  technicalPremiumCurrency : string
  total : number
  totalCurrency : string

  // Optional
  technicalPremium : number
}

CommissionResponse

{
  // Required
  amount : number
  amountCurrency : string
  recipient : string
}

PolicyInvoice2Response

{
  // Required
  createdTimestamp : timestamp
  displayId : string
  documents : [PolicyDocumentResponse]
  dueTimestamp : timestamp
  endTimestamp : timestamp
  locator : string
  payments : [PaymentResponse2]
  policyLocator : string
  settlementStatus : string outstanding | settled
  startTimestamp : timestamp
  totalDue : number
  totalDueCurrency : string
  updatedTimestamp : timestamp

  // Optional
  policyModificationLocator : string
  premiumReportName : string
  settlementType : string paid | writtenOff | zeroDue | invalidated
}

ExposureCreateRequest

{
  // Required
  exposureName : string

  // Optional
  fieldGroups : [FieldGroupCreateRequest]
  fieldValues : map<string,[string]>
  perils : [PerilCreateRequest]
}

PolicyCharacteristicsResponse

{
  // Required
  createdTimestamp : timestamp
  endTimestamp : timestamp
  fieldGroupsByLocator : map<string,map<string,[string]>>
  fieldValues : map<string,[string]>
  grossPremiumCurrency : string
  grossTaxesCurrency : string
  locator : string
  mediaByLocator : map<string,Media>
  policyEndTimestamp : timestamp (deprecated)
  policyholderLocator : string
  policyLocator : string
  policyStartTimestamp : timestamp (deprecated)
  productLocator : string
  startTimestamp : timestamp
  taxGroups : [TaxGroupResponse]
  updatedTimestamp : timestamp

  // Optional
  grossPremium : number
  grossTaxes : number
  issuedTimestamp : timestamp
  replacedTimestamp : timestamp
}

TaxGroupResponse

{
  // Required
  amount : number
  amountCurrency : string
  name : string
}

FeeResponse

{
  // Required
  amount : number
  amountCurrency : string
  description : string
  locator : string
  name : string
}

PolicyDocumentResponse

{
  // Required
  displayName : string
  fileName : string
  locator : string
  type : string pdf | html
  url : string
  urlExpirationTimestamp : timestamp

  // Optional
  createdTimestamp : timestamp
  policyModificationLocator : string
}

PolicyModificationResponse

{
  // Required
  createdTimestamp : timestamp
  displayId : string
  exposureModifications : [ExposureModificationResponse]
  fieldGroupsByLocator : map<string,map<string,[string]>>
  fieldValues : map<string,[string]>
  locator : string
  mediaByLocator : map<string,Media>
  name : string
  newPolicyCharacteristicsLocators : [string]
  number : integer
  policyholderLocator : string
  policyLocator : string
  premiumChangeCurrency : string
  productLocator : string
  updatedTimestamp : timestamp

  // Optional
  automatedUnderwritingResult : AutomatedUnderwritingResultResponse
  effectiveTimestamp : timestamp
  endorsementLocator : string
  issuedTimestamp : timestamp
  newPolicyCharacteristicsLocator : string
  premiumChange : number
  renewalLocator : string
}

ExposureResponse

{
  // Required
  characteristics : [ExposureCharacteristicsResponse]
  createdTimestamp : timestamp
  displayId : string
  locator : string
  name : string
  perils : [PerilResponse]
  policyholderLocator : string
  policyLocator : string
  productLocator : string
  updatedTimestamp : timestamp
}

PolicyPriceResponse

{
  // Required
  commissions : [CommissionResponse]
  exposurePrices : [GetExposurePriceResponse]
  fees : [FeeResponse]
  grossCommissions : number
  grossCommissionsCurrency : string
  grossFees : number
  grossFeesCurrency : string
  grossPremium : number
  grossPremiumCurrency : string
  grossTaxes : number
  grossTaxesCurrency : string
  grossTechnicalPremiumCurrency : string
  premiumsByExposureLocator : map<string,number>
  premiumsByPerilLocator : map<string,number>
  taxGroups : [TaxGroupResponse]
  totalDue : number
  totalDueCurrency : string

  // Optional
  grossTechnicalPremium : number
}

PolicyInvoice2StatusAndTimeResponse

{
  // Required
  status : string unfulfilled | paid | writtenOff | zeroDue | invalidated
  timestamp : timestamp
}

PerilCreateRequest

{
  // Required
  name : string

  // Optional
  deductible : number
  fieldGroups : [FieldGroupCreateRequest]
  fieldValues : map<string,[string]>
  indemnityInAggregate : string
  indemnityPerEvent : string
  indemnityPerItem : string
  locator : string
  lumpSumPayment : number
}

ExposureModificationResponse

{
  // Required
  exposureLocator : string
  locator : string
  perilModifications : [PerilModificationResponse]
  policyholderLocator : string
  policyLocator : string
  policyModificationLocator : string
  productLocator : string

  // Optional
  newExposureCharacteristicsLocator : string
}

ExposureCharacteristicsResponse

{
  // Required
  createdTimestamp : timestamp
  endTimestamp : timestamp
  exposureLocator : string
  fieldGroupsByLocator : map<string,map<string,[string]>>
  fieldValues : map<string,[string]>
  locator : string
  mediaByLocator : map<string,Media>
  policyholderLocator : string
  policyLocator : string
  productLocator : string
  startTimestamp : timestamp
  updatedTimestamp : timestamp

  // Optional
  issuedTimestamp : timestamp
  replacedTimestamp : timestamp
}

PerilResponse

{
  // Required
  characteristics : [PerilCharacteristicsResponse]
  createdTimestamp : timestamp
  displayId : string
  exposureLocator : string
  locator : string
  name : string
  policyholderLocator : string
  policyLocator : string
  productLocator : string
  renewalGroup : string
  updatedTimestamp : timestamp
}

PerilModificationResponse

{
  // Required
  exposureModificationLocator : string
  locator : string
  perilLocator : string
  policyholderLocator : string
  policyLocator : string
  premiumChangeCurrency : string
  productLocator : string

  // Optional
  newPerilCharacteristicsLocator : string
  premiumChange : number
  replacedPerilCharacteristicsLocator : string
}

PerilCharacteristicsResponse

{
  // Required
  coverageEndTimestamp : timestamp
  coverageStartTimestamp : timestamp
  createdTimestamp : timestamp
  deductibleCurrency : string
  exposureCharacteristicsLocator : string
  fieldGroupsByLocator : map<string,map<string,[string]>>
  fieldValues : map<string,[string]>
  indemnityInAggregateCurrency : string
  indemnityPerEventCurrency : string
  indemnityPerItemCurrency : string
  locator : string
  lumpSumPaymentCurrency : string
  mediaByLocator : map<string,Media>
  perilLocator : string
  policyCharacteristicsLocator : string
  policyholderLocator : string
  policyLocator : string
  policyModificationLocator : string
  premiumCurrency : string
  productLocator : string
  updatedTimestamp : timestamp

  // Optional
  deductible : number
  indemnityInAggregate : string
  indemnityPerEvent : string
  indemnityPerItem : string
  issuedTimestamp : timestamp
  lumpSumPayment : number
  monthPremium : number
  premium : number
  replacedTimestamp : timestamp
  technicalPremium : number
}

CancellationInfo

{
  // Required
  effectiveTimestamp : timestamp
  modificationLocator : string
  modificationName : string
}

ExposureUpdateRequest

{
  // Required
  addFieldGroups : [FieldGroupCreateRequest]
  addPerils : [PerilCreateRequest]
  exposureLocator : string
  removeFieldGroups : [string]
  removePerils : [string]
  updateFieldGroups : [FieldGroupUpdateRequest]
  updatePerils : [PerilUpdateRequest]

  // Optional
  fieldValues : map<string,[string]>
}

FieldGroupCreateRequest

{
  // Required
  fieldName : string

  // Optional
  fieldValues : map<string,[string]>
}

FieldGroupUpdateRequest

{
  // Required
  fieldGroupLocator : string
  fieldName : string
  fieldValues : map<string,[string]>
}

PerilUpdateRequest

{
  // Required
  addFieldGroups : [FieldGroupCreateRequest]
  fieldValues : map<string,[string]>
  perilLocator : string
  removeFieldGroups : [string]
  updateFieldGroups : [FieldGroupUpdateRequest]

  // Optional
  deductible : number
  indemnityInAggregate : string
  indemnityPerEvent : string
  indemnityPerItem : string
  lumpSumPayment : number
  removeDeductible : boolean
  removeIndemnityInAggregate : boolean
  removeIndemnityPerEvent : boolean
  removeIndemnityPerItem : boolean
  removeLumpSumPayment : boolean
}