# Composite Rest API

## Overview

Use REST API composite resources to improve your application’s performance by streamlining round-trips between the client and the server. Execute a series of REST API requests in a single call by using the same database transaction.

Composite calls consist of sub-requests, where the output of one request can serve as input for a subsequent request. You can choose which sub-request's response will be the final response body. In a sub-request’s body, specify a reference ID that maps to its response. You can then see the ID in the URL or body fields of later sub-requests with a JavaScript-like reference notation.

All sub-requests are executed in the same trace context, leaving only one record in trace/access log. 

With composite REST APIs, the Camel service orchestration becomes unnecessary. You can orchestrate REST APIs in the same microservices freely.


## API

* POST {{server}}/proposal/core/proposal/v1/process?needPersist=Y&needCalculate=Y&needUW=Y&needIssue=N
* POST {{server}}/proposal/core/proposal/v1/process?needPersist=Y&needCalculate=Y&needUW=Y&needIssue=Y&needGeneratePolicyNo=Y

* POST {{server}}/endo/core/endo/v1/process?needPersist=Y&needUW=Y&needBuildNewPolicy=Y&needCalculate=Y&needIssue=Y
* POST {{server}}/endo/core/endo/v1/process?needPersist=Y&needUW=Y&needBuildNewPolicy=Y&needCalculate=Y&needIssue=Y

### Proposal Process API

/proposal/core/proposal/v1/process

`{{server}}/{{apigw-platform-url}}/proposal/core/proposal/v1/process?needValidateForApplication=Y&additionalValidationEventCode=AutoTest_Preset_Event&needPersist=Y&needGenerateProposalNo=Y&needGeneratePolicyNo=Y&needCalculate=Y&needUW=Y&uwLangId=zh_CN&needIssue=Y&needIndex=Y`


#### Proposal Process API - Proposal Options

* needGenerateQuotationNo, default is "**N**".
* needAttachElement, default is "**N**".
* attachElementEventCode, default is **AttachElement4Proposal**.
* needValidateForApplication, default is "**N**".
* additionalValidationEventCode, the customized validation event code to call.  If set, although 
* needValidateForPolicyStructure, default is "**N**".
* needUW, default is "**N**", the underwriting event code is "**UnderwritingRuleCheck**".
* uwLangId, the language of the returned message, default is the user lang set.
* uwEventCode, customized uw event code.
* needCalculate, default is "**N**".
* needGenerateProposalNo, default is "**Y**".
* needPersist, default is "**N**", will be set to **Y** if needIssue=Y.
* needIndex, default is "**Y**", will be ignored if needPersist=N
* needGeneratePolicyNo, default is "**N**"，will be set to Y if needIssue=Y and **PolicyNo** is null.
* needIssue, default is "**N**".
* needSign, sign premium calculate.
* needGeneratePolicyFeed, default is "**N**".
* needAutoApplyDiscountLoadingToPolicyLevel, default is "**N**".
* needAutoApplyDiscountLoadingToCtLevel, default is "**N**".
* needSumCoverageLevelDiscountLoadingToPolicyLevel, default is "**N**".

You can set the policy process by set the flags. For example,
* Directly issue policy without calculation or UW ..etc.
  
  `{{server}}/{{apigw-platform-url}}/proposal/core/proposal/v1/process?needIssue=Y`

* Just to create the policy

   `{{server}}/{{apigw-platform-url}}/proposal/core/proposal/v1/process?needPersist=Y`

* Just to calculate the premium

  `{{server}}/{{apigw-platform-url}}/proposal/core/proposal/v1/process?needCalculate=Y`

* To create/calculate/issue the policy

  `{{server}}/{{apigw-platform-url}}/proposal/core/proposal/v1/process?needCalculate=Y&needIssue=Y`

####  Proposal Process API - Action Sequence

![process flow](./image/composite_rest_api/proposal_process_flow.png)


#### Proposal Process API - curl data for postman

```
curl -X POST \
  '{{server}}/{{apigw-platform-url}}/proposal/core/proposal/v1/process?needValidateForApplication=Y&additionalValidationEventCode=AutoTest_Preset_Event&needPersist=Y&needGenerateProposalNo=Y&needGeneratePolicyNo=Y&needCalculate=Y&needUW=Y&uwLangId=zh_CN&needIssue=Y&needIndex=Y' \
  -H 'Authorization: Bearer {{access_token}}' \
  -H 'Content-Type: application/json' \
  -H 'Postman-Token: 5f970dd1-ffa8-4d0e-ad30-6ab27a27dc2b' \
  -H 'cache-control: no-cache' \
  -d '{
    "ProductCode": "TBTI",
    "ProductVersion": "1.0",
    "ProposalDate": "2022-06-23T00:00:00",
    "EffectiveDate": "2022-06-24T00:00:00",
    "ExpiryDate": "2023-06-23T23:59:59",
    "AgentCode": "XXXXX0000516XXXXX",
    "BookCurrencyCode": "USD",
    "PremiumCurrencyCode": "USD",
    "OrgCode": "10002",
    "LocalCurrencyCode": "USD",
    "PremiumBookExchangeRate": 1,
    "PremiumLocalExchangeRate": 1,
    "PolicyLobList": [
        {
            "PolicyRiskList": [
                {
                    "CustomerName": "Customer",
                    "IdNo": "IdNo",
                    "IdType": "1",
                    "DateOfBirth": "1988-10-01",
                    "PolicyCoverageList": [
                        {
                            "ProductElementCode": "C100416",
                            "SumInsured": 300000
                        },
                         .....skip....
                    ],
                    "ProductElementCode": "R10007",
                    "RiskName": "AutoTest"
                }
            ],
            "ProductCode": "TBTI",
            "TotalInsuredCount": 1
        }
    ]
}'
```


#### Proposal Process API - Request

```
{
    "ProductCode": "TBTI",
    "ProductVersion": "1.0",
    "ProposalDate": "2022-06-23T00:00:00",
    "EffectiveDate": "2022-06-24T00:00:00",
    "ExpiryDate": "2023-06-23T23:59:59",
    "AgentCode": "{{scCode}}",
    "BookCurrencyCode": "USD",
    "PremiumCurrencyCode": "USD",
    "OrgCode": "10002",
    "LocalCurrencyCode": "USD",
    "PremiumBookExchangeRate": 1,
    "PremiumLocalExchangeRate": 1,
    "PolicyLobList": [
        {
            "PolicyRiskList": [
                {
                    "CustomerName": "Customer",
                    "IdNo": "IdNo",
                    "IdType": "1",
                    "DateOfBirth": "1988-10-01",
                    "PolicyCoverageList": [
                        {
                            "ProductElementCode": "C100416",
                            "SumInsured": 300000
                        },
                         .....skip....
                    ],
                    "ProductElementCode": "R10007",
                    "RiskName": "AutoTest"
                }
            ],
            "ProductCode": "TBTI",
            "TotalInsuredCount": 1
        }
    ]
}

```

#### Proposal Process API - Response

```
{
    "AdjustedPremium": 680.4,
    "AgentCode": "XXXXX0000545XXXXX",
    "AnnualPremium": 630,
    "AutoUnderwritingResult": {
        "AutoUwId": 10382200035,
        "BusinessObjectId": 370103370,
        "PolicyId": "10382200026,CED4A3D85B8DD60808BF448069F51750",
        "ProcessType": "1",
        "UnderwritingMessageList": [
            {
                "@pk": 10382200036,
                "@type": "AutoUnderwritingMessage-AutoUnderwritingMessage",
                "BusinessObjectId": 370103607,
                "MessageCode": "MO-PA-UW-BPRESETUWCODE002",
                "MessageDetail": "Preset UW Code 002 with param1-AutoTest and param2-1988-10-01T00:00.",
                "MessageParams": "[\"AutoTest\",\"1988-10-01T00:00\"]",
                "PolicyId": "10382200026,CED4A3D85B8DD60808BF448069F51750",
                "RuleName": "AutoTest_Preset_Rule_004",
                "UwRuleMessageId": 10382200036
            }
        ],
        "UwResultCode": "1",
        "UwTime": "2024-04-26T14:43:52"
    },
    "BeforeVatPremium": 630,
    "BookCurrencyCode": "USD",
    "BusinessCateCode": "1",
    "BusinessObjectId": 3517051304219,
    "Commission": 63,
    "CommissionRate": 0.1,
    "DuePremium": 680.4,
    "EffectiveDate": "2022-06-24",
    "ExpiryDate": "2023-06-23T23:59:59",
    "GrossPremium": 680.4,
    "InterestRate": 0.05,
    "IsPremiumCalcSuccess": "Y",
    "IsRenewable": "Y",
    "IsTakeUpPolicy": "N",
    "IssueDate": "2024-04-26T14:43:52",
    "IssueUserId": XXXXX0010XXXXX,
    "IssueUserRealName": "user003",
    "LocalCurrencyCode": "USD",
    "MaxUwLevelCode": "0",
    "OrgCode": "10002",
    "POIRate": 1,
    "PolicyElementId": 10382200026,
    "PolicyId": "10382200026,CED4A3D85B8DD60808BF448069F51750",
    "PolicyLobList": [
        {
            "AdjustedPremium": 680.4,
            "BeforeVatPremium": 630,
            "BusinessObjectId": 351861068,
            "DuePremium": 680.4,
            "GrossPremium": 680.4,
            "PolicyElementId": 10382200029,
            "PolicyId": "10382200026,CED4A3D85B8DD60808BF448069F51750",
            "PolicyRiskList": [
                {
                    "AdjustedPremium": 680.4,
                    "Age": 33,
                    "BeforeVatPremium": 630,
                    "BusinessObjectId": 351861075,
                    "CustomerName": "Customer",
                    "DateOfBirth": "1988-10-01",
                    "DuePremium": 680.4,
                    "GrossPremium": 680.4,
                    "IdNo": "IdNo",
                    "IdType": "1",
                    "PolicyCoverageList": [
                        {
                            "AdjustedPremium": 648,
                            "AnnualPremium": 600,
                            "BeforeVatPremium": 600,
                            "BusinessObjectId": 351861078,
                            "CoverageName": "Accident Death & Dismemberment",
                            "DuePremium": 648,
                            "GrossPremium": 648,
                            "PolicyElementId": 10382200031,
                            "PolicyId": "10382200026,CED4A3D85B8DD60808BF448069F51750",
                            "PolicyStatus": 2,
                            "ProductElementCode": "C100416",
                            "ProductElementId": 351926024,
                            "SequenceNumber": 1,
                            "SumInsured": 300000,
                            "Vat": 48
                        },
                         .....skip....
                    ],
                    "PolicyElementId": 10382200030,
                    "PolicyId": "10382200026,CED4A3D85B8DD60808BF448069F51750",
                    "PolicyStatus": 2,
                    "ProductElementCode": "R10007",
                    "ProductElementId": 351926021,
                    "RiskName": "AutoTest",
                    "SequenceNumber": 1,
                    "SumInsured": 900000,
                    "Vat": 50.4,
                    "TempData": {
                        "Mask-IdNo": "Jmf1vghdrScrTdpdeyKu7w==",
                        "IdNo": "Jmf1vghdrScrTdpdeyKu7w==",
                        "MaskAfter-IdNo": "IdNo"
                    }
                }
            ],
            "PolicyStatus": 2,
            "ProductCode": "TBTI",
            "ProductElementCode": "TBTI",
            "ProductElementId": 351925023,
            "ProductId": 351925022,
            "ProductLobId": 351925023,
            "SequenceNumber": 1,
            "SumInsured": 900000,
            "TechProductCode": "TR_POC",
            "TechProductId": 3516410623456,
            "TotalInsuredCount": 1,
            "Vat": 50.4
        }
    ],
    "PolicyNo": "POTBTI01237454",
    "PolicyStatus": 2,
    "PolicyType": "1",
    "PremCalcFactorHash": "20240426_144350_584,gGMh4O9SvqvPTtaDyQ8hmLpuxZ2OXbt5HeXobEQEVuM=",
    "PremCalcResultHash": "20240426_144350_618,CnvdgmvHBTipvJBsSe9PeBCyQMrbXgb9laGDBw8i/tU=",
    "PremiumBookExchangeRate": 1,
    "PremiumCurrencyCode": "USD",
    "PremiumInterest": 31.5,
    "PremiumLocalExchangeRate": 1,
    "ProductCode": "TBTI",
    "ProductId": 351925022,
    "ProductVersion": "1.0",
    "ProposalDate": "2022-06-23",
    "ProposalNo": "PABTBTI0001316121",
    "ProposalStatus": "3",
    "SchemaVersion": 2,
    "SumInsured": 900000,
    "TaxInterest": 2.52,
    "TechProductCode": "TR_POC",
    "TechProductId": 3516410623456,
    "TotalInterest": 34.02,
    "TotalPremium": 714.42,
    "Vat": 50.4,
    "VatRate": 0.08,
    "VersionSeq": 1
}
```

#### Proposal Process API - Response with validation message

```
{
    "timestamp": "2024-10-10T12:01:59",
    "timestampServer": "2024-10-10T04:01:59",
    "traceId": "XXXXX2511XXXXXfd1760faf8a91XXXXX",
    "traceIdContainer": null,
    "messages": [
        {
            "code": "MO-PA-Validation-WPRESETCODE001",
            "message": "The policy is not applicable for the Insureds'-(2) age is not in the age from 20 to 60."
        }
    ],
    "status": 422,
    "code": "MO-PLATFORM-Rule-B4000",
    "message": "validation failed"
}
```


### Endorsement Process API

/endo/core/endo/v1/process

`{{{server}}/{{apigw-platform-url}}/endo/core/endo/v1/process?needBuildNewPolicy=Y&needGenerateEndoNo=Y&needValidate=N&validationEventCode=AutoTest_Preset_Event&needPersist=Y&needCalculate=Y&needUW=Y&uwLangId=zh_CN&needIssue=Y&needIndex=Y`

#### Endorsement Process API - Endo Options

* needBuildNewPolicy, default is **N**. if set to Y, system will return the NewPolicy in response.
* needGenerateEndoNo, default is "**Y**", will be set to Y if needIssue=Y and **EndoNo** is **null**.
* needValidate, default is "**N**".
* validationEventCode, the customized validation event code to call, if not set, sytem will take the **EndoValidationCheck** as default.  system will call the event when **needValidate=Y**.
* additionalNbValidationEventCodeForBIE, default is "**PolicyValidationCheck**".
* needPersist, default is "**Y**", will be set to **Y** if needIssue=Y.
* needCalculate, default is "**N**".
* needUW, default is "**N**", the underwriting event code is "**UnderwritingRuleCheck**".
* uwLangId, the langguage of the returned message, default is the user lang set.
* uwEventCode, default is "**EndoUnderwritingRuleCheck**".
* additionalNbUwEventCodeForBIE, default is "**UnderwritingRuleCheck**".
* needIssue, default is "**N**".
* needIndex, default is "**Y**" , will be set to **Y** if needIssue=Y.
* needGenerateEndoContent, default is "**N**".
* needGeneratePolicyFee, default is "**N**".

You can set the endo process by set the flags. For example,
* Directly issue endo without calculation or UW ..etc.
  
  `{{server}}/{{apigw-platform-url}}/endo/core/endo/v1/process?needIssue=Y`

* Just to create the endo

   `{{server}}/{{apigw-platform-url}}/endo/core/endo/v1/process?needPersist=Y`

* Just to calculate the premium

  `{{server}}/{{apigw-platform-url}}/endo/core/endo/v1/process?needCalculate=Y`

* To create/calculate/issue the endo

  `{{server}}/{{apigw-platform-url}}/endo/core/endo/v1/process?needCalculate=Y&needIssue=Y`


#### Endorsement Process API - Action Sequence

![endo process flow](./image/composite_rest_api/endo_process_flow.png)


#### Endorsement Process API - curl data for postman

```
curl -X POST 
'{{server}}/{{apigw-platform-url}}/endo/core/endo/v1/process?needBuildNewPolicy=Y&needGenerateEndoNo=Y&needValidate=N&validationEventCode=AutoTest_Preset_Event&needPersist=Y&needCalculate=Y&needUW=Y&uwLangId=zh_CN&needIssue=Y&needIndex=Y' 
-H 'Accept: /' 
-H 'Accept-Encoding: gzip, deflate' 
-H 'Authorization: Bearer {{access_token}}' 
-H 'Cache-Control: no-cache' 
-H 'Connection: keep-alive' 
-H 'Content-Length: 7892' 
-H 'Content-Type: application/json' 
-H 'Host: {{TenantCode}}-gi-smkmysql.insuremo.com' 
-H 'Postman-Token: a922c8cb-67e7-4085-95cc-0943317e5519,d7654859-8e0f-47af-b403-49559c625312' 
-H 'User-Agent: PostmanRuntime/7.15.2' 
-H 'cache-control: no-cache'
-d '{
"EndoEffectiveDate": "2024-10-11",
"EndoType": 1,
"SubEndoType": "11",
"NewPolicy": {..skip..},
"PolicyNo": "POTBTI01248065",
"ProductCode": "TBTI",
"ProductId": 351925022,
"IsAdminChange": "Y"
}'
```


#### Endorsement Process API - Request

```
{
    "EndoEffectiveDate": "{{NowDate}}",
    "EndoType": 1,
    "SubEndoType": "11",
    "NewPolicy": {
    "AdjustedPremium": 38.52,
    "AgentCode": "XXXXX0000545XXXXX",
    "AnnualPremium": 930,
    "AutoUwResultCode": "1",
    "BeforeVatPremium": 35.67,
    "BookCurrencyCode": "USD",
    "BusinessCateCode": "1",
    "BusinessObjectId": 3517051304219,
    "Commission": 10.7,
    "CommissionRate": 0.3,
    "DuePremium": 38.52,
    "EffectiveDate": "2024-04-19",
    "ExpiryDate": "2024-05-03",
    "GrossPremium": 38.52,
    "InterestRate": 0,
    "IsPremiumCalcSuccess": "Y",
    "IsRenewable": "Y",
    "IsTakeUpPolicy": "N",
    "IssueDate": "2024-04-26T14:50:27",
    "IssueUserId": XXXXX0010XXXXX,
    "IssueUserRealName": "user003",
    "LocalCurrencyCode": "USD",
    "MaxUwLevelCode": "0",
    "OrgCode": "10002",
    "POIRate": 1,
    "PolicyElementId": 10382200067,
    "PolicyId": "10382200067,D73C9903399E9697A903E004AD1C73CA",
    "PolicyLobList": [
        {
            "AdjustedPremium": 38.52,
            "BeforeVatPremium": 35.67,
            "BusinessObjectId": 351861068,
            "DuePremium": 38.52,
            "GrossPremium": 38.52,
            "PolicyElementId": 10382200071,
            "PolicyId": "10382200067,D73C9903399E9697A903E004AD1C73CA",
            "PolicyRiskList": [
                {
                    "AdjustedPremium": 38.52,
                    "Age": 35,
                    "BeforeVatPremium": 35.67,
                    "BusinessObjectId": 351861075,
                    "CustomerName": "Customer",
                    "DateOfBirth": "1988-10-01",
                    "DuePremium": 38.52,
                    "GrossPremium": 38.52,
                    "IdNo": "IdNo",
                    "IdType": "1",
                    "PolicyCoverageList": [
                        {
                            "AdjustedPremium": 37.28,
                            "AnnualPremium": 900,
                            "BeforeVatPremium": 34.52,
                            "BusinessObjectId": 351861078,
                            "CoverageName": "Accident Death & Dismemberment",
                            "DuePremium": 37.28,
                            "GrossPremium": 37.28,
                            "PolicyBenefitList": [
                                {
                                    "BusinessObjectId": 528044218,
                                    "CoverageName": "Permanent Total Disability",
                                    "IsAutoAttachedForm": "Y",
                                    "PolicyElementId": 10382200074,
                                    "PolicyId": "10382200067,D73C9903399E9697A903E004AD1C73CA",
                                    "PolicyStatus": 2,
                                    "ProductElementCode": "B00248",
                                    "ProductElementId": 522209920,
                                    "SequenceNumber": 1
                                }
                            ],
                            "PolicyElementId": 10382200073,
                            "PolicyId": "10382200067,D73C9903399E9697A903E004AD1C73CA",
                            "PolicyStatus": 2,
                            "ProductElementCode": "C100416",
                            "ProductElementId": 351926024,
                            "SequenceNumber": 1,
                            "SumInsured": 300000,
                            "Vat": 2.76
                        },
                         .....skip....
                    ],
                    "PolicyElementId": 10382200072,
                    "PolicyId": "10382200067,D73C9903399E9697A903E004AD1C73CA",
                    "PolicyStatus": 2,
                    "ProductElementCode": "R10007",
                    "ProductElementId": 351926021,
                    "RiskName": "AutoTest",
                    "SequenceNumber": 1,
                    "SumInsured": 900000,
                    "Vat": 2.85,
                    "TempData": {
                        "Mask-IdNo": "Jmf1vghdrScrTdpdeyKu7w==",
                        "IdNo": "Jmf1vghdrScrTdpdeyKu7w==",
                        "MaskAfter-IdNo": "IdNo"
                    }
                }
            ],
            "PolicyStatus": 2,
            "ProductCode": "TBTI",
            "ProductElementCode": "TBTI",
            "ProductElementId": 351925023,
            "ProductId": 351925022,
            "ProductLobId": 351925023,
            "SequenceNumber": 1,
            "SumInsured": 900000,
            "TechProductCode": "TR_POC",
            "TechProductId": 3516410623456,
            "TotalInsuredCount": 1,
            "Vat": 2.85
        }
    ],
    "PolicyNo": "POTBTI01237462",
    "PolicyStatus": 2,
    "PolicyType": "1",
    "PremCalcFactorHash": "20240426_145027_227,9NX0W0QrJHbaEU2cEcEcu9sya12R76UXr6AQ72y7teM=",
    "PremCalcResultHash": "20240426_145027_232,2aO2WXXcWkyFOsMKtmTHt3Elk07xyxhCSB3/rbqx0TE=",
    "PremiumBookExchangeRate": 1,
    "PremiumCurrencyCode": "USD",
    "PremiumInterest": 0,
    "PremiumLocalExchangeRate": 1,
    "ProductCode": "TBTI",
    "ProductId": 351925022,
    "ProductVersion": "1.0",
    "ProposalDate": "2022-03-22",
    "ProposalNo": "PABTBTI0001316119",
    "ProposalStatus": "3",
    "SchemaVersion": 2,
    "SumInsured": 900000,
    "TaxInterest": 0,
    "TechProductCode": "TR_POC",
    "TechProductId": 3516410623456,
    "TotalInterest": 0,
    "TotalPremium": 38.52,
    "Vat": 2.85,
    "VatRate": 0.08,
    "VersionSeq": 1
},
    "PolicyNo": "{{PolicyNo}}",
    "ProductCode": "TBTI",
    "ProductId": 351925022,
    "IsAdminChange": "Y"
}

```

#### Endorsement Process API - Response

```
{
    "AdjustedPremium": 0,
    "AfterRevisionId": 10382210002,
    "AgentCode": "XXXXX0000545XXXXX",
    "ApplyDate": "2024-04-26T14:50:57",
    "AutoUnderwritingResult": {
        "AutoUwId": 10381920032,
        "BusinessObjectId": 370103370,
        "EndoId": "10381920029,46F2B284750AB88D3527EB1E03E7843D",
        "PolicyId": "10382200067,D73C9903399E9697A903E004AD1C73CA",
        "ProcessType": "2",
        "UwResultCode": "2",
        "UwTime": "2024-04-26T14:50:58"
    },
    "AutoUwResultCode": "1",
    "BeforeRevisionId": 10382200081,
    "BeforeVatPremium": 0,
    "BusinessObjectId": 300243915,
    "Commission": 0,
    "CommissionRate": 0.3,
    "DataEntryUserId": XXXXX0010XXXXX,
    "DataEntryUserRealName": "user003",
    "DuePremium": 0,
    "EndoEffectiveDate": "2024-04-26",
    "EndoId": "10381920029,46F2B284750AB88D3527EB1E03E7843D",
    "EndoNo": "POTBTI01237462-001",
    "EndoStatus": "300",
    "EndoType": "1",
    "EntryOperId": XXXXX0010XXXXX,
    "GrossPremium": 0,
    "IndexNumber": 0,
    "IsAdminChange": "Y",
    "IsLockedByRi": "N",
    "IssueDate": "2024-04-26T14:50:58",
    "IssueUserId": XXXXX0010XXXXX,
    "IssueUserRealName": "user003",
    "NewPolicy": {
        "AdjustedPremium": 38.52,
        "AdjustedPremiumDelta": 0,
        "AgentCode": "XXXXX0000545XXXXX",
        "AnnualPremium": 930,
        "AutoUwResultCode": "1",
        "BeforeVatPremium": 35.67,
        "BeforeVatPremiumDelta": 0,
        "BookCurrencyCode": "USD",
        "BusinessCateCode": "1",
        "BusinessObjectId": 3517051304219,
        "Commission": 10.7,
        "CommissionDelta": 0,
        "CommissionRate": 0.3,
        "DuePremium": 38.52,
        "DuePremiumDelta": 0,
        "EffectiveDate": "2024-04-19",
        "ExpiryDate": "2024-05-03",
        "GrossPremium": 38.52,
        "GrossPremiumDelta": 0,
        "InterestRate": 0,
        "IsPremiumCalcSuccess": "Y",
        "IsRenewable": "Y",
        "IsTakeUpPolicy": "N",
        "IssueDate": "2024-04-26T14:50:27",
        "IssueUserId": XXXXX0010XXXXX,
        "IssueUserRealName": "user003",
        "LocalCurrencyCode": "USD",
        "MaxUwLevelCode": "0",
        "OrgCode": "10002",
        "POIRate": 1,
        "PolicyElementId": 10382200067,
        "PolicyId": "10382200067,D73C9903399E9697A903E004AD1C73CA",
        "PolicyLobList": [
            {
                "AdjustedPremium": 38.52,
                "AdjustedPremiumDelta": 0,
                "BeforeVatPremium": 35.67,
                "BeforeVatPremiumDelta": 0,
                "BusinessObjectId": 351861068,
                "Commission": 0,
                "CommissionDelta": 0,
                "DuePremium": 38.52,
                "DuePremiumDelta": 0,
                "GrossPremium": 38.52,
                "GrossPremiumDelta": 0,
                "ParentPolicyElementId": 10382200067,
                "PolicyElementId": 10382200071,
                "PolicyId": "10382200067,D73C9903399E9697A903E004AD1C73CA",
                "PolicyRiskList": [
                    {
                        "AdjustedPremium": 38.52,
                        "AdjustedPremiumDelta": 0,
                        "Age": 35,
                        "BeforeVatPremium": 35.67,
                        "BeforeVatPremiumDelta": 0,
                        "BusinessObjectId": 351861075,
                        "Commission": 0,
                        "CommissionDelta": 0,
                        "CustomerName": "Customer",
                        "DateOfBirth": "1988-10-01",
                        "DuePremium": 38.52,
                        "DuePremiumDelta": 0,
                        "GrossPremium": 38.52,
                        "GrossPremiumDelta": 0,
                        "IdNo": "IdNo",
                        "IdType": "1",
                        "ParentPolicyElementId": 10382200071,
                        "PolicyCoverageList": [
                            {
                                "AdjustedPremium": 37.28,
                                "AnnualPremium": 900,
                                "BeforeVatPremium": 34.52,
                                "BusinessObjectId": 351861078,
                                "CoverageName": "Accident Death & Dismemberment",
                                "DuePremium": 37.28,
                                "GrossPremium": 37.28,
                                "ParentPolicyElementId": 10382200072,
                                "PolicyBenefitList": [
                                    {
                                        "BusinessObjectId": 528044218,
                                        "CoverageName": "Permanent Total Disability",
                                        "IsAutoAttachedForm": "Y",
                                        "ParentPolicyElementId": 10382200073,
                                        "PolicyElementId": 10382200074,
                                        "PolicyId": "10382200067,D73C9903399E9697A903E004AD1C73CA",
                                        "PolicyStatus": 2,
                                        "ProductElementCode": "B00248",
                                        "ProductElementId": 522209920,
                                        "SequenceNumber": 1
                                    }
                                ],
                                "PolicyElementId": 10382200073,
                                "PolicyId": "10382200067,D73C9903399E9697A903E004AD1C73CA",
                                "PolicyStatus": 2,
                                "ProductElementCode": "C100416",
                                "ProductElementId": 351926024,
                                "SequenceNumber": 1,
                                "SumInsured": 300000,
                                "Vat": 2.76
                            },
                             .....skip....
                        ],
                        "PolicyElementId": 10382200072,
                        "PolicyId": "10382200067,D73C9903399E9697A903E004AD1C73CA",
                        "PolicyStatus": 2,
                        "ProductElementCode": "R10007",
                        "ProductElementId": 351926021,
                        "RiskName": "AutoTest",
                        "SequenceNumber": 1,
                        "SumInsured": 900000,
                        "SumInsuredDelta": 0,
                        "TempData": {
                            "Mask-IdNo": "Jmf1vghdrScrTdpdeyKu7w==",
                            "IdNo": "Jmf1vghdrScrTdpdeyKu7w==",
                            "MaskAfter-IdNo": "IdNo"
                        },
                        "Vat": 2.85,
                        "VatDelta": 0
                    }
                ],
                "PolicyStatus": 2,
                "ProductCode": "TBTI",
                "ProductElementCode": "TBTI",
                "ProductElementId": 351925023,
                "ProductId": 351925022,
                "ProductLobId": 351925023,
                "SequenceNumber": 1,
                "SumInsured": 900000,
                "SumInsuredDelta": 0,
                "TechProductCode": "TR_POC",
                "TechProductId": 3516410623456,
                "TempData": {},
                "TotalInsuredCount": 1,
                "Vat": 2.85,
                "VatDelta": 0
            }
        ],
        "PolicyNo": "POTBTI01237462",
        "PolicyStatus": 2,
        "PolicyType": "1",
        "PremCalcFactorHash": "20240426_145027_227,9NX0W0QrJHbaEU2cEcEcu9sya12R76UXr6AQ72y7teM=",
        "PremCalcResultHash": "20240426_145027_232,2aO2WXXcWkyFOsMKtmTHt3Elk07xyxhCSB3/rbqx0TE=",
        "PremiumBookExchangeRate": 1,
        "PremiumCurrencyCode": "USD",
        "PremiumInterest": 0,
        "PremiumLocalExchangeRate": 1,
        "ProductCode": "TBTI",
        "ProductId": 351925022,
        "ProductVersion": "1.0",
        "ProposalDate": "2022-03-22",
        "ProposalNo": "PABTBTI0001316119",
        "ProposalStatus": "3",
        "SchemaVersion": 2,
        "SumInsured": 900000,
        "SumInsuredDelta": 0,
        "TaxInterest": 0,
        "TechProductCode": "TR_POC",
        "TechProductId": 3516410623456,
        "TempData": {},
        "TotalInterest": 0,
        "TotalPremium": 38.52,
        "Vat": 2.85,
        "VatDelta": 0,
        "VatRate": 0.08,
        "VersionSeq": 2
    },
    "OldPolicy": {
        "AdjustedPremium": 38.52,
        "AgentCode": "XXXXX0000545XXXXX",
        "AnnualPremium": 930,
        "AutoUwResultCode": "1",
        "BeforeVatPremium": 35.67,
        "BookCurrencyCode": "USD",
        "BusinessCateCode": "1",
        "BusinessObjectId": 3517051304219,
        "Commission": 10.7,
        "CommissionRate": 0.3,
        "DuePremium": 38.52,
        "EffectiveDate": "2024-04-19",
        "ExpiryDate": "2024-05-03",
        "GrossPremium": 38.52,
        "InterestRate": 0,
        "IsPremiumCalcSuccess": "Y",
        "IsRenewable": "Y",
        "IsTakeUpPolicy": "N",
        "IssueDate": "2024-04-26T14:50:27",
        "IssueUserId": XXXXX0010XXXXX,
        "IssueUserRealName": "user003",
        "LocalCurrencyCode": "USD",
        "MaxUwLevelCode": "0",
        "OrgCode": "10002",
        "POIRate": 1,
        "PolicyElementId": 10382200067,
        "PolicyId": "10382200067,D73C9903399E9697A903E004AD1C73CA",
        "PolicyLobList": [
            {
                "AdjustedPremium": 38.52,
                "BeforeVatPremium": 35.67,
                "BusinessObjectId": 351861068,
                "DuePremium": 38.52,
                "GrossPremium": 38.52,
                "ParentPolicyElementId": 10382200067,
                "PolicyElementId": 10382200071,
                "PolicyId": "10382200067,D73C9903399E9697A903E004AD1C73CA",
                "PolicyRiskList": [
                    {
                        "AdjustedPremium": 38.52,
                        "Age": 35,
                        "BeforeVatPremium": 35.67,
                        "BusinessObjectId": 351861075,
                        "CustomerName": "Customer",
                        "DateOfBirth": "1988-10-01",
                        "DuePremium": 38.52,
                        "GrossPremium": 38.52,
                        "IdNo": "IdNo",
                        "IdType": "1",
                        "ParentPolicyElementId": 10382200071,
                        "PolicyCoverageList": [
                            {
                                "AdjustedPremium": 37.28,
                                "AnnualPremium": 900,
                                "BeforeVatPremium": 34.52,
                                "BusinessObjectId": 351861078,
                                "CoverageName": "Accident Death & Dismemberment",
                                "DuePremium": 37.28,
                                "GrossPremium": 37.28,
                                "ParentPolicyElementId": 10382200072,
                                "PolicyBenefitList": [
                                    {
                                        "BusinessObjectId": 528044218,
                                        "CoverageName": "Permanent Total Disability",
                                        "IsAutoAttachedForm": "Y",
                                        "ParentPolicyElementId": 10382200073,
                                        "PolicyElementId": 10382200074,
                                        "PolicyId": "10382200067,D73C9903399E9697A903E004AD1C73CA",
                                        "PolicyStatus": 2,
                                        "ProductElementCode": "B00248",
                                        "ProductElementId": 522209920,
                                        "SequenceNumber": 1
                                    }
                                ],
                                "PolicyElementId": 10382200073,
                                "PolicyId": "10382200067,D73C9903399E9697A903E004AD1C73CA",
                                "PolicyStatus": 2,
                                "ProductElementCode": "C100416",
                                "ProductElementId": 351926024,
                                "SequenceNumber": 1,
                                "SumInsured": 300000,
                                "Vat": 2.76
                            },
                             .....skip....
                        ],
                        "PolicyElementId": 10382200072,
                        "PolicyId": "10382200067,D73C9903399E9697A903E004AD1C73CA",
                        "PolicyStatus": 2,
                        "ProductElementCode": "R10007",
                        "ProductElementId": 351926021,
                        "RiskName": "InsuredName",
                        "SequenceNumber": 1,
                        "SumInsured": 900000,
                        "Vat": 2.85,
                        "TempData": {
                            "Mask-IdNo": "Jmf1vghdrScrTdpdeyKu7w==",
                            "IdNo": "Jmf1vghdrScrTdpdeyKu7w==",
                            "MaskAfter-IdNo": "IdNo"
                        }
                    }
                ],
                "PolicyStatus": 2,
                "ProductCode": "TBTI",
                "ProductElementCode": "TBTI",
                "ProductElementId": 351925023,
                "ProductId": 351925022,
                "ProductLobId": 351925023,
                "SequenceNumber": 1,
                "SumInsured": 900000,
                "TechProductCode": "TR_POC",
                "TechProductId": 3516410623456,
                "TotalInsuredCount": 1,
                "Vat": 2.85
            }
        ],
        "PolicyNo": "POTBTI01237462",
        "PolicyStatus": 2,
        "PolicyType": "1",
        "PremCalcFactorHash": "20240426_145027_227,9NX0W0QrJHbaEU2cEcEcu9sya12R76UXr6AQ72y7teM=",
        "PremCalcResultHash": "20240426_145027_232,2aO2WXXcWkyFOsMKtmTHt3Elk07xyxhCSB3/rbqx0TE=",
        "PremiumBookExchangeRate": 1,
        "PremiumCurrencyCode": "USD",
        "PremiumInterest": 0,
        "PremiumLocalExchangeRate": 1,
        "ProductCode": "TBTI",
        "ProductId": 351925022,
        "ProductVersion": "1.0",
        "ProposalDate": "2022-03-22",
        "ProposalNo": "PABTBTI0001316119",
        "ProposalStatus": "3",
        "SchemaVersion": 2,
        "SumInsured": 900000,
        "TaxInterest": 0,
        "TechProductCode": "TR_POC",
        "TechProductId": 3516410623456,
        "TotalInterest": 0,
        "TotalPremium": 38.52,
        "Vat": 2.85,
        "VatRate": 0.08,
        "VersionSeq": 1
    },
    "PolicyDiffSign": "N9ipWdK4serykKX2L/sZ5kDRQ6R03mRUjItmFVLNiLg=",
    "PolicyId": "10382200067,D73C9903399E9697A903E004AD1C73CA",
    "PolicyNo": "POTBTI01237462",
    "PremCalcFactorHash": "20240426_145058_008,85CktSdyLdbYTwEbCMJC38IDAkajQf+Uf3zHfXpoE7k=",
    "PremCalcResultHash": "20240426_145058_027,X0CvRVeae21HrFOsUiAeoiRIh6i0s8f0TrSJtn81bxw=",
    "PremiumInterest": 0,
    "ProductCode": "TBTI",
    "ProductId": 351925022,
    "SubEndoType": "11",
    "TaxInterest": 0,
    "TotalInterest": 0,
    "TotalPremium": 0,
    "Vat": 0,
    "VersionSeq": 1
}
```

