Endorsement JSON Example
The endorsement effective date must be between the policy effective date and expiry date (within the policy’s period of insurance).
BIE (Basic Information Endorsement)
BIE JSON Example
{
"EndoEffectiveDate": "2019-10-29T00:00:00",
// highlight-next-line
"EndoType": "1",
"IsAdminChange": "Y",
// highlight-next-line
"NewPolicy":{{modified_base_on_latest_policy}},
"PolicyNo": "{{PolicyNo}}",
"ProductId": "{{ProductId}}",
"ProductCode": "{{ProductId}}",
"EndorsementPaymentInfoList": [
{
"PayModeCode": "30",
"IsInstallment": "Y",
"InstallmentType": "1"
}
],
"IsAdminChange": "N"
}BIE Key Field Description
| Field Description | Details |
|---|---|
| PolicyNo. | PolicyNo. is required for all endorsements. |
| ProductCode | It is the same as that of the current policy. |
| ProductId | It is the same as that of the current policy. |
| EndoType | Some of the EndoTypes are as below:
|
| EndorsementPaymentInfoList | Payment information as new business |
| EndoEffectiveDate | Effective date for the endorsement |
| IsAdminChange | If IsAdminChange=N, for BIE, the system will call NB rating, and then do endorsement rating. After calling rating, in rating tracking, there will be 2 records for each calculation, 1 for new business, another for endorsement. If IsAdminChange=Y, for BIE, the system will not call the NB rating, and just do endorsement rating. After calling rating, in rating tracking, there will be only 1 record for each calculation and 1 for endorsement. If some non-rating factors are changed for the BIE, you can set the IsAdminChange=Y. |
NewPolicy (Super Important)
If any policy details need to be updated, please update the information under the NewPolicy. The NewPolicy structure is the same as that of Policy.
- The NewPolicy is required when doing BIE. It should be changed based on the latest Policy. To create the NewPolicy, we always load the latest Policy, copy it to the NewPolicy, and then modify the NewPolicy as required. To load the latest Policy, please try API {{server}}/proposal/core/proposal/v1/load:
- {{server}}/proposal/core/proposal/v1/load?proposalNo={{proposalNo}}
- {{server}}/proposal/core/proposal/v1/load?quotationNo={{quotationNo}}
- {{server}}/proposal/core/proposal/v1/load?policyNo={{policyNo}}
- {{server}}/proposal/core/proposal/v1/load?policyId={{policyId}}
- BIE Scenario - Add or Delete Cover or Benefit or Risk
In GIMO, we have the FLAG-PolicyStatus to label the object status.
- 2: Added
- 4: Deleted/Removed
The status is set based on the last issued Policy/Endorsement, not the last change. (This means that when a 2nd Endorsement is issued, it will compare with the first issued endorsement.) For Example, the latest policy is covered with CTA and CTB:
"PolicyCoverageList": [
{
"SumInsured": 225,
"ProductElementCode": "TMEB004",
"PolicyStatus": 2,
"IsAutoAttachedForm": "Y",
"IsFinalLevelCt": "Y",
"PolicyElementId": {{PolicyElementId}},
"PolicyId": {{PolicyId}},
"ProductElementId": {{ProductElementId}},
"SequenceNumber": 4,
"VersionSeq": 1
},
{
"SumInsured": 1000,
"ProductElementCode": "CTB",
"PolicyStatus": 2,
"PolicyElementId": {{PolicyElementId}},
"PolicyId": {{PolicyId}},
"ProductElementId": {{ProductElementId}},
"SequenceNumber": 4,
"VersionSeq": 1
}
]- PolicyElementId,PolicyId,ProductElementId,SequenceNumber,VersionSeq,IsAutoAttachedForm,IsFinalLevelCt are gotten by load API.
| NB Issued | 1st Endor 1st Save | 1st Request 1st Endor | 2nd Save | 2nd request |
|---|---|---|---|---|
| CT A | keep | keep | keep | keep |
| CT B | delete | Policystatus=4 | Revert delete | Keep it as issued |
| CT C | add | Add CTs | keep | Add CT |
To add Cover/Benefit/Risk is to set the PolicyStatus =2 or no input.
{
"SumInsured": 1000,
"ProductElementCode": "CTC",
}Or
{
"SumInsured": 1000,
"ProductElementCode": "CTC",
// highlight-next-line
"PolicyStatus": 2
}To delete Cover/Benefit/Risk is to set the PolicyStatus=4.
{
"SumInsured": 1000,
"ProductElementCode": "CTB",
// highlight-next-line
"PolicyStatus": 4,
"PolicyElementId": {{PolicyElementId}},
"PolicyId": {{PolicyId}},
"ProductElementId": {{ProductElementId}},
"SequenceNumber": 4,
"VersionSeq": 1
}When doing endorsement, the request data JSON should be:
{
"SumInsured": 225,
"ProductElementCode": "TMEB004",
"PolicyStatus": 2,
"IsAutoAttachedForm": "Y",
"IsFinalLevelCt": "Y",
"PolicyElementId": {{PolicyElementId}},
"PolicyId": {{PolicyId}},
"ProductElementId": {{ProductElementId}},
"SequenceNumber": 4,
"VersionSeq": 1
},
{
"SumInsured": 1000,
"ProductElementCode": "CTB",
"PolicyStatus": 2,
"PolicyElementId": {{PolicyElementId}},
"PolicyId": {{PolicyId}},
"ProductElementId": {{ProductElementId}},
"SequenceNumber": 4,
"VersionSeq": 1
},
{
"SumInsured": 1000,
"ProductElementCode": "CTC"
}After endorsement is issued, the deleted objects’ PolicyStatus will be updated to 3.
{
"SumInsured": 225,
"ProductElementCode": "TMEB004",
"PolicyStatus": 2,
"IsAutoAttachedForm": "Y",
"IsFinalLevelCt": "Y",
"PolicyElementId": {{PolicyElementId}},
"PolicyId": {{PolicyId}},
"ProductElementId": {{ProductElementId}},
"SequenceNumber": {{SequenceNumber}},
"VersionSeq": {{VersionSeq}}
},
{
"SumInsured": 1000,
"ProductElementCode": "CTB",
// highlight-next-line
"PolicyStatus": 3,
"PolicyElementId": {{PolicyElementId}},
"PolicyId": {{PolicyId}},
"ProductElementId": {{ProductElementId}},
"SequenceNumber": {{SequenceNumber}},
"VersionSeq": {{VersionSeq}}
},,
{
"SumInsured": 1000,
"ProductElementCode": "CTC",
"PolicyStatus": 2,
"PolicyElementId": {{PolicyElementId}},
"PolicyId": {{PolicyId}},
"ProductElementId": {{ProductElementId}},
"SequenceNumber": {{SequenceNumber}},
"VersionSeq": {{VersionSeq}}
}OldPolicy
It will be automatically attached in the response when calling endorsement/creation or endorsement/quotation.
Cancellation
Cancellation JSON Example
{
"EndoEffectiveDate": "2019-10-29T00:00:00",
// highlight-next-line
"EndoType":"3",
"IsAdminChange": “Y",
"CauseType": “C01",
"IsHasClaim": “Y",
"CancelType":"31",
"CancelReasonCode":"Cancel Reason",
"OtherCancelReason":"Other Cancel Reason",
"PolicyNo":"{{PolicyNo}}",
"ProductCode": "{{ProductCode}}",
"ProductId": {{ProductId}},
"EndorsementPaymentInfoList": [
{
"PayModeCode": "30",
"IsInstallment": "Y",
"InstallmentType": "1"
}
]
}Please note that NewPolicy & OldPolicy is not required.
Cancellation Key Field Description
- CancelType
31 - from start/injection
32 - Midway
- CancelReasonCode
For more options, see CodeTable-EndorsementCancellationReason.
Cancellation Policy Expiry Date update
For cancellation endorsement, after ‘Issue Endo’ API is called, the expiry date will set to endorsement effective date, this logical is same for cancellation since inception and in midway.
When set policy expiry date to effective date, the policy period is 0 day, not 1 day, the expiry date time point is not included Set the policy period to endo effective date can ensure the policy insurance term is consistent with the policy due premium.
If user want to record the original policy expiry date, user can add new dynamic field at policy level, and set it to policy expiry date when issue policy.
Reinstatement
Reinstatement JSON Example
{
"EndoEffectiveDate": "2019-10-29T00:00:00",
// highlight-next-line
"EndoType": "17",
"PolicyNo": "{{PolicyNo}}",
"ProductCode": "{{ProductCode}}",
"ProductId": {{ProductId}},
"EndorsementPaymentInfoList": [
{
"PayModeCode": "30",
"IsInstallment": "Y",
"InstallmentType": "1"
}
]
}Please note that NewPolicy & OldPolicy is not required.
POI Extension/Shorten/Move
POI JSON Example
{
"EndoEffectiveDate": "2020-07-30T00:00:00",
// highlight-next-line
"EndoType": "20",
"NewPolEffDate": "2020-07-30T23:59:59",
"NewPolExpDate": "2021-04-25T23:59:59",
"OldPolExpDate": "2020-09-12T23:59:59",
"PoiAltType": 201,
"PoiAltReason": "ABC",
"PolicyNo": "{{PolicyNo}}",
"ProductId": "{{productId}}",
"ProductCode": "{{productCode}}",
"EndorsementPaymentInfoList": [
{
"PayModeCode": "30",
"IsInstallment": "Y",
"InstallmentType": "1"
}
]
}Please note that NewPolicy & OldPolicy is not required.
POI Key Field Description
- PoiAltType
201:extension
202:shortening
203:move
- PoiAltReason
Please define it on your own if needed.
- NewPolEffDate
New Effective Date of the policy
- NewPolExpDate
New Expiration Date of the policy
- OldPolExpDate
Current Expiration Date of the policy
POI Move Logic
Before Version 26.01 We can only let users change the policy expiry date to shorten or extend the policy; modifying the effective date would have too great an impact on historical versions.
After Version 26.01 Starting from version 26.01, POI Move supports adjusting the effective date to reposition the POI. However, the following restrictions still apply:
- Sequence Constraint: POI Move must be the first endorsement processed on the policy. If any prior endorsements exist, the API will return an error.
- Effective Date: The policy effective date can be modified. The endorsement effective date must equal the policy new effective date.
- Expiry Date: Atomic API layer does not perform validation on the
Expiry Datefield; tenants need to extend the validation logic via UI or tenant-side code or rating or rule configurations, covering special scenarios such as non-full-year periods and leap months. TheExpiry Dateis calculated from the newEffective Dateplus the fixed POI, and the premium generated by endorsement must be 0. - EndoSubType: Backward compatibility is maintained for the SubEndoType tenant field used by existing tenants. For new tenants requiring endorsement, it is recommended to prioritize the platform field EndoSubType for representing the endorsement sub-type, for example: “EndoSubType”: “203”.
Summary of Restrictions
| Feature | Restriction |
|---|---|
| Effective Date | ✅ Adjustable (must equal policy new effective date) |
| Expired Date | ❌ Tenant extended logic (ensure POI unchanged) |
| Other Policy Info | ❌ Not modifiable |
| Endorsement Order | Must be the first endorsement on the policy |
| Field Requirement | EndoSubType is recommended (while SubEndoType remains available) |
Undo Endorsement
Undo Endorsement JSON Example
{
"EndoEffectiveDate": "{{NowDate}}",
// highlight-next-line
"EndoType":"37",
// highlight-next-line
"SourceEndoId":"{{EndoId}}",
"UndoReason":"Undo Reason",
"EndorsementPaymentInfoList": [{
"PayModeCode": "1",
"IsInstallment": "Y",
"InstallmentType": "1"
}],
"PolicyNo":"{{PolicyNo}}",
"ProductId": "{{productId}}",
"ProductCode": "{{productCode}}"
}Please note that NewPolicy & OldPolicy is not required.
Undo Key Field Description
- SourceEndoId
The endorsement to be undone
- UndoReason
The reason to be undone
Rating
There are APIs supporting premium calculation:
- {{server}}/endo/core/endo/v1/calculate
- {{server}}/endo/core/endo/v1/quotation
The logic description document link is endorsement rating introduction.
Nil Financial Impact
- IsAdminChange.val=“N”
- Return 0 to related Premium fields
Additional Premium/Reduction in Premium
- IsAdminChange.val=“Y”
- Re-calculate Premium
- Compare/Diff current premium with the last version (BeforeRevisionId)
- Get Delta Premium
- Additional-Positive
- Reduction-Negative
Validation
The validated APIs support to call the rules for validation, and to compare the data with the market product structures and technical product DD, fields and codetable:
- {{server}}/endo/core/endo/v1/validate?eventCode=
Please map target rules to rule groups, and map the groups to events. Then call the APIs by related event codes.
If the conditions are met, a message will pop up with the unmatched information:
- Rules are fired.
- The value of field does not match the defined data type.
- The value is not in codetable.
- The value length is not the same as defined.
- The structure is not the same as that of the market product. For example, the benefit may be assigned an incorrect coverage or may not be defined within the market product.
- Some systems require rules. For example, PolicyLob should be there, with Risk nested beneath it.
FAQ
If I want to change a field after policy is issued but I don’t want to create new endorsemnet, what can I do?
Normally, if you want to change any field after policy is issued, you need to create new endorsement to achieve it.
In some special case when user really don’t want to create any endorsement, you need to define such field as non-version related and adopt seperate API to achieve it.
User can refer to Policy Non Version Information guide for more information.