Zinnia Policy Transactions API

Enterprise API for enforcing policy transactions and validations across the in-force annuity and life book - financial and non-financial transaction management, policy party management, systematic program management and eligibility/validation pre-checks. 102 operations across eligibility check, validation and submit triples for withdrawals, surrenders, loans, fund transfers, premiums, RMDs, reinstatement, free-look cancellation, party and address/bank/phone/email changes.

Operations 102

GET /bpm/actuator/health Zahara BPM Health Check #
POST /policy/v1/transactions/{planCode}/{policyNumber}/multi-agent/validation Validation multi agent Transaction #
POST /policy/v1/transactions/{planCode}/{policyNumber}/Restrict Submit active restrict transaction #
GET /policy/v1/transactions/{planCode}/{policyNumber}/Restrict Get restriction alerts for a policy #
GET /policy/v1/transactions/{planCode}/{policyNumber}/Restrict/alerts Get restriction alerts for a policy #
POST /bpm/v1/policies/{planCode}/{policyNumber}/basecoverageupdate/eligibilitycheck base coverage update #
POST /bpm/v1/policies/{planCode}/{policyNumber}/{transactionType}/eligibilitycheck Eligibility Check For Non-Financial Transaction #
POST /policy/v1/transactions/{planCode}/{policyNumber}/bankaccount/eligibilitycheck Eligibility Check Bank Transaction #
POST /policy/v1/transactions/{planCode}/{policyNumber}/parties/{partyId}/{partyRole}/validation Party Change request #
POST /bpm/v1/policies/{planCode}/{policyNumber}/billingfeaturechange/eligibilitycheck Eligibility Check Billing Feature Change #
POST /bpm/v1/policies/{planCode}/{policyNumber}/billingfeaturechange/validation Validate Billing Feature Change #
POST /policy/v1/transactions/{planCode}/{policyNumber}/freelookcancellation/validation Validation Freelook Cancellation Transaction #
POST /policy/v1/transactions/case Create case for transaction #
PUT /policy/v1/cases/{caseId}/cancel Cancel a case #
POST /policy/v1/transactions/{planCode}/{policyNumber}/freelookcancellation/eligibilitycheck Freelook cancellation request #
POST /bpm/v1/policies/{planCode}/{policyNumber}/initialdeathclaim/eligibilitycheck Initial Death Claim Eligibility Check #
POST /bpm/v1/policies/{planCode}/{policyNumber}/initialdeathclaim/validation Initial Death Claim Validation #
POST /bpm/v1/policies/{planCode}/{policyNumber}/initialdeathclaim Submit Initial Death Claim Transaction #
PUT /bpm/v1/policies/{planCode}/{policyNumber}/authorization/status Receives policyholder authorization status from MPV and updates the status #
GET /bpm/v1/policies/withdrawals/transactionstore/entities/{transactionId} Secure API to get TransactionData by transactionId #
GET /bpm/v1/policies/{clientCode}/{planCode}/{transactionName}/paymentforms Get supported configurations for a transaction #
GET /bpm/v1/policies/{clientCode}/{planCode}/{transactionName}/prevalidationreference Get supported configurations for a transaction #
GET /policy/v1/transactions/{clientCode}/{planCode}/{transactionName}/prevalidationreference Get supported configurations for a transaction #
POST /policy/v1/transactions/{planCode}/{policyNumber}/onetimepremium/validation Validation OneTime Premium Transaction #
POST /policy/v1/transactions/{planCode}/{policyNumber}/onetimepremium Submit OneTime Premium Transaction #
POST /policy/v1/transactions/{planCode}/{policyNumber}/onetimepremium/eligibilitycheck Eligibility Check OneTime Premium Transaction #
POST /policy/v1/transactions/{planCode}/{policyNumber}/onetimermd/validation Validation OneTime RMD Transaction #
POST /policy/v1/transactions/{planCode}/{policyNumber}/onetimermd Submit OneTime RMD Transaction #
POST /policy/v1/transactions/{planCode}/{policyNumber}/onetimermd/eligibilitycheck Eligibility Check OneTime RMD Transaction #
POST /policy/v1/transactions/{planCode}/{policyNumber}/reinstatement/eligibilitycheck Eligibility Check Reinstatement Request #
POST /policy/v1/transactions/{planCode}/{policyNumber}/reinstatement Submit reinstatement transaction request #
POST /policy/v1/transactions/{planCode}/{policyNumber}/systematicprograms/quote Systematic Program Quote Request #
POST /policy/v1/transactions/{planCode}/{policyNumber}/systematicprograms/{arrangementId}/validation Validate Systematic Program Update Transaction #
PUT /policy/v1/transactions/{planCode}/{policyNumber}/systematicprograms/{arrangementId} Submit Systematic Program Update Transaction #
POST /policy/v1/transactions/{planCode}/{policyNumber}/systematicprograms/{arrangementId}/eligibilitycheck EligibilityCheck Systematic Program Update Transaction #
PUT /policy/v1/transactions/{planCode}/{policyNumber}/parties/{partyId}/address/{addressId} Address Change Request #
POST /policy/v1/transactions/{planCode}/{policyNumber}/emailaddress/eligibilitycheck Eligibility Check Email Address Transaction #
POST /policy/v1/transactions/{planCode}/{policyNumber}/address/eligibilitycheck Eligibility Check Address Transaction #
POST /policy/v1/transactions/{planCode}/{policyNumber}/parties/{partyId}/address Create new address based on request #
POST /policy/v1/transactions/{planCode}/{policyNumber}/emailaddress/{partyId}/validation Add new Email Address based on request #
POST /policy/v1/transactions/{planCode}/{policyNumber}/address/{partyId}/validation Validate Address based on request #
POST /policy/v1/transactions/{planCode}/{policyNumber}/parties/{partyId}/emailaddress Create new Emailaddress based on request #
PUT /policy/v1/transactions/{planCode}/{policyNumber}/parties/{partyId}/emailaddress/{emailId} Email Address Change Request #
PUT /policy/v1/transactions/{planCode}/{policyNumber}/parties/{partyId}/emailaddresses Multiple Email Address Change Request #
POST /policy/v1/transactions/{planCode}/{policyNumber}/parties/{partyId}/phone Create new Phone Number based on request #
PUT /policy/v1/transactions/{planCode}/{policyNumber}/parties/{partyId}/phone/{phoneId} Phone Number Change Request #
PUT /policy/v1/transactions/{planCode}/{policyNumber}/parties/{partyId}/phones Multiple Phone Number Change Request #
PATCH /policy/v1/transactions/{planCode}/{policyNumber}/parties/{partyId}/identifiers Identifier change Request #
POST /policy/v1/transactions/{planCode}/{policyNumber}/parties/{partyId}/bankaccount Add new Bank Account based on request #
PUT /policy/v1/transactions/{planCode}/{policyNumber}/parties/{partyId}/bankaccount/{bankId} Bank Account Change Request #
POST /policy/v1/transactions/{planCode}/{policyNumber}/communicationpreference/eligibilitycheck Eligibility Check Communication Preference Transaction #
POST /policy/v1/transactions/{planCode}/{policyNumber}/parties/{partyId}/communicationpreference/validation Validate Communication Preference based on request #
POST /policy/v1/transactions/{planCode}/{policyNumber}/parties/{partyId}/communicationpreference Update Communication Preference based on request #
POST /policy/v1/transactions/{planCode}/{policyNumber}/parties/{partyId}/partyname Update Party Name based on request #
POST /policy/v1/transactions/{planCode}/{policyNumber}/parties/{partyRole} Party Add request #
PUT /policy/v1/transactions/{planCode}/{policyNumber}/parties/{partyId}/{partyRole} Party Change request #
POST /policy/v1/transactions/{planCode}/{policyNumber}/parties/{partyRole}/eligibilitycheck EligibilityCheck For Party Role Transaction #
POST /policy/v1/transactions/{planCode}/{policyNumber}/parties/taxwithholding/eligibilitycheck Eligibility Check Tax Withholding #
POST /policy/v1/transactions/{planCode}/{policyNumber}/parties/taxwithholding/validation Validate Tax Withholding #
POST /policy/v1/transactions/{planCode}/{policyNumber}/parties/taxwithholding Submit Tax Withholding Transaction #
POST /policy/v1/transactions/{planCode}/{policyNumber}/partialwithdrawalonetime/eligibilitycheck Eligibility Check Partial Withdrawal One Time #
POST /policy/v1/transactions/{planCode}/{policyNumber}/partialwithdrawalonetime/validation Eligibility Check Partial Withdrawal One Time #
POST /policy/v1/transactions/{planCode}/{policyNumber}/partialwithdrawalonetime Submit Partial Withdrawal OneTime #
POST /policy/v1/transactions/{planCode}/{policyNumber}/billingfeaturechange/eligibilitycheck Eligibility Check Billing Feature Change #
POST /policy/v1/transactions/{planCode}/{policyNumber}/billingfeaturechange/validation Validate Billing Feature Change #
POST /policy/v1/transactions/{planCode}/{policyNumber}/fullsurrender/eligibilitycheck FullSurrender Eligibility Check endpoint #
POST /policy/v1/transactions/{planCode}/{policyNumber}/fullsurrender/validation Fullsurrender Validation Endpoint #
POST /policy/v1/transactions/{planCode}/{policyNumber}/fullsurrender Submit full surrender #
POST /policy/v1/transactions/{planCode}/{policyNumber}/newloan/eligibilitycheck NewLoan Eligibility Check endpoint #
POST /policy/v1/transactions/{planCode}/{policyNumber}/newloan/validation Fullsurrender Validation Endpoint #
POST /policy/v1/transactions/{planCode}/{policyNumber}/newloan Submit New Loan Request #
POST /policy/v1/transactions/{planCode}/{policyNumber}/systematicprograms/validation Validate Systematic Program Transaction #
POST /policy/v1/transactions/{planCode}/{policyNumber}/systematicprograms Submit Systematic Program Transaction #
POST /policy/v1/transactions/{planCode}/{policyNumber}/systematicprograms/eligibilitycheck Eligibility Check Systematic Program Transaction #
POST /policy/v1/transactions/{planCode}/{policyNumber}/loanrepaymentonetime/validation Validate loan Repayment One Time Transaction #
POST /policy/v1/transactions/{planCode}/{policyNumber}/loanrepaymentonetime Submit loan Repayment OneTime Transaction #
POST /policy/v1/transactions/{planCode}/{policyNumber}/loanrepaymentonetime/eligibilitycheck EligibilityCheck Loan Repayment OneTime Transaction #
POST /policy/v1/transactions/{planCode}/{policyNumber}/canceltransaction Cancel Transaction #
POST /policy/v1/transactions/{planCode}/{policyNumber}/freelookcancellation Freelook cancellation request #
POST /policy/v1/transactions/{planCode}/{policyNumber}/reverserecreate Request to reverse and recreate #
POST /policy/v1/transactions/{planCode}/{policyNumber}/deliverydatesetup/eligibilitycheck Eligibility Check to Set Delivery Date #
POST /policy/v1/transactions/{planCode}/{policyNumber}/deliverydatesetup Set Delivery Date Transaction #
POST /policy/v1/transactions/{planCode}/{policyNumber}/edeliveryenrollment EDelivery Enrollment #
POST /policy/v1/transactions/{planCode}/{policyNumber}/initialpremium/eligibilitycheck Eligibility Check For Initial Premium #
POST /policy/v1/transactions/{planCode}/{policyNumber}/initialpremium/validation Validation Check For Initial Premium #
POST /policy/v1/transactions/{planCode}/{policyNumber}/initialpremium Initial Premium Transaction #
POST /policy/v1/transactions/{planCode}/{policyNumber}/fundallocations/eligibilitycheck Eligibility Check For Fund Allocation #
POST /policy/v1/transactions/{planCode}/{policyNumber}/fundallocations/validation Validation Check For Fund Allocation #
POST /policy/v1/transactions/{planCode}/{policyNumber}/fundallocations Fund Allocation Transaction #
POST /policy/v1/transactions/{planCode}/{policyNumber}/fundtransfer/eligibilitycheck Eligibility Check For Fund Transfer #
POST /policy/v1/transactions/{planCode}/{policyNumber}/fundtransfer/validation Validation Check For Fund Transfer #
POST /policy/v1/transactions/{planCode}/{policyNumber}/fundtransfer Fund Transfer Transaction #
POST /policy/v1/transactions/{planCode}/{policyNumber}/outgoingfundtransfer/eligibilitycheck Eligibility Check For Outgoing Fund Transfer #
POST /policy/v1/transactions/{planCode}/{policyNumber}/outgoingfundtransfer/validation Validation Check For Outgoing Fund Transfer #
POST /policy/v1/transactions/{planCode}/{policyNumber}/outgoingfundtransfer Outgoing Fund Transfer Transaction #
GET /bpm/v1/policies/{cusip}/{policyNumber}/eligibleTransactions Get eligible transaction types for a policy by CUSIP and policy number #
GET /bpm/v1/policies/{planCode}/{policyNumber}/refdata Get PPFA Reference Data by Policy #
GET /policy/v1/transactions/{planCode}/{policyNumber}/refdata Get PPFA Reference Data by Policy #
POST /policy/v2/transactions/{planCode}/{policyNumber}/eligibility/transaction Transaction eligibility #
POST /policy/v1/transactions/{planCode}/{policyNumber}/nonforfeiture/eligibilitycheck Eligibility Check For Non-Forfeiture Transaction #
POST /policy/v1/transactions/{planCode}/{policyNumber}/nonforfeiture/validation Validation Check For Non-Forfeiture Transaction #
POST /policy/v1/transactions/{planCode}/{policyNumber}/nonforfeiture Non-Forfeiture Transaction #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/zinnia-policy-transactions-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

zinnia-policy-transactions-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Zinnia Policy Transactions API.
  description: Enterprise API for enforcing policy transactions and validations. This API provides a comprehensive interface
    for - Policy transaction validation and processing<br> - Financial and non-financial transaction management<br> - Policy
    party management and updates<br> - Systematic program management<br> **Version History** * Draft version 1.0.6<br> - Added
    Two Endpoints- Reinstatement eligibility check api, Reinstatement actual transaction api<br> * Draft Specifications (Subject
    to Change Upon Review)<br>
  version: 1.0.8
  x-changelog:
  - date: '2026-08-13'
    change: 'ZCLA-649 Initial death claim — aligned InitialDeathClaimRequest with the revised FNOL payload: added policy.isContestable/isFuneralHomeAssigned,
      deathDetails.causeOfDeath, COVEREDINSURED party role, deathNotification.partyRole enum; renamed documents[].edsDocumentId
      to documents[].documentId; removed parties[].isFuneralHomeAssigned (now policy-level only)'
  - date: '2026-08-13'
    change: 'ZCLA-649 Initial death claim — added deathNotification.partyId (now required, enforced via bean validation on
      submit) and deathNotification.partyRole to identify the deceased party, and a riderClaim[] array (DeathClaimRiderClaim:
      riderCode, riderName, riderElected, partyId)'
  - date: '2026-08-03'
    change: Initial death claim — added POST initialdeathclaim/eligibilitycheck (no request body; returns TransactionResponse)
  - date: '2026-08-03'
    change: Initial death claim submit — aligned InitialDeathClaimRequest with IdnClaimRequest (added documents/DeathClaimDocument,
      party isNotifier, expanded partyRole and relationshipToInsured enums); responses now use shared TransactionAcceptedResponse
      (202) and TransactionResponse (errors)
  - date: '2026-07-29'
    change: Billing feature change — eligibility and validation endpoints with BillingFeatureChangeRequest payload (policyFeatures,
      transactionReason, signatures, documents, selfServeFlow)
  - date: '2026-07-24'
    change: Partial withdrawal one-time — updated PartialWithdrawalOneTime payload (selfServeFlow; tax withholding top-level
      fields and w4r; removed authorization from request body)
  - date: '2026-05-26'
    change: Added POST initialdeathclaim endpoint with standalone Initial Death Claim schemas
  - date: '2026-05-11'
    change: Systematic program — extended SystematicProgramUpdate request (MFA, agent, policyHolder, tax, funds, feature product,
      submittedDate, currency, disbursementType); PaymentForm EFT; Frequency BIANNUAL/DEFAULT; optional pdfId on TransactionAcceptedResponse
      for systematic program submit 202
  - date: '2026-03-18'
    change: Active restrict — POST/GET /bpm/v1/policies/{planCode}/{policyNumber}/Restrict and policy API alias
  - date: '2025-07-17'
    change: CMW-29105 - Updated SystematicProgramUpdate Post to PUT
  - date: '2025-07-22'
    change: CMW-30437 - New End point for Systematic Programs Quote API
  - date: '2025-09-01'
    change: CMW-31343 - New End point for Reinstatement Quote API and Reinstatement Actual Transaction API
  - date: '2025-09-03'
    change: ZDR-3002 - Added One time premium 400 error example
servers:
- url: https://dev.api.zinnia.io
  description: DEV Environment
- url: https://qa.api.zinnia.io
  description: QA Environment
tags:
- name: Financial Transactions
  description: Financial Transactions
- name: Non Financial Transactions
  description: Non Financial Transactions
- name: Policy - Transactions
  description: All Apis related to policy operations
- name: Ref-Data
  description: Ref-Data
- name: Transactions Eligibility
  description: Eligibility evaluation for different operations
paths:
  /bpm/actuator/health:
    get:
      x-internal: true
      summary: Zahara BPM Health Check
      tags:
      - Policy - Transactions
      description: Returns the health status of the application
      operationId: getHealth
      responses:
        '200':
          description: Application is healthy
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                    - UP
                    - DOWN
                    example: UP
        '503':
          description: Application is unhealthy
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                    - DOWN
                    example: DOWN
  /policy/v1/transactions/{planCode}/{policyNumber}/multi-agent/validation:
    post:
      x-kong-plugin-pre-function:
        config:
          access:
          - 'local path = kong.request.get_path()

            local new_path = path:gsub("^/policy/v1/transactions", "/bpm/v1/policies")

            kong.service.request.set_path(new_path)

            '
      tags:
      - Non Financial Transactions
      summary: Validation multi agent Transaction
      operationId: validationMultiAgentTransaction1
      parameters:
      - name: planCode
        in: path
        required: true
        schema:
          type: string
      - in: path
        name: policyNumber
        schema:
          type: string
        required: true
        description: Policy Number
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AgentChangeDto'
        required: true
      responses:
        '200':
          description: Multi Agent Change Success Response.yaml
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionResponse'
              examples:
                success:
                  $ref: '#/components/examples/successTransactionResponse'
        '400':
          description: Multi Agent Change Failure Response.yaml
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionResponse'
              examples:
                failure:
                  $ref: '#/components/examples/failureTransactionResponse'
        '500':
          description: Internal server error. Please check server logs for more details.
      security:
      - Auth0: []
  /bpm/v1/policies/{planCode}/{policyNumber}/Restrict:
    parameters:
    - name: planCode
      in: path
      required: true
      schema:
        type: string
      description: Plan code
      example: EVGFIA909
    - name: policyNumber
      in: path
      required: true
      schema:
        type: string
      description: Policy number
      example: EVFIA09222243202
  /bpm/v1/policies/{planCode}/{policyNumber}/Restrict/alerts:
    parameters:
    - name: planCode
      in: path
      required: true
      schema:
        type: string
      description: Plan code
      example: EVGFIA909
    - name: policyNumber
      in: path
      required: true
      schema:
        type: string
      description: Policy number
      example: EVFIA09222243202
  /policy/v1/transactions/{planCode}/{policyNumber}/Restrict:
    x-kong-plugin-pre-function:
      config:
        access:
        - 'local path = kong.request.get_path()

          local new_path = path:gsub("^/policy/v1/transactions", "/bpm/v1/policies")

          kong.service.request.set_path(new_path)

          '
    parameters:
    - name: planCode
      in: path
      required: true
      schema:
        type: string
      description: Plan code
      example: EVGFIA909
    - name: policyNumber
      in: path
      required: true
      schema:
        type: string
      description: Policy number
      example: EVFIA09222243202
    post:
      tags:
      - Non Financial Transactions
      summary: Submit active restrict transaction
      description: 'Submits restriction add/delete requests for a policy. Kong rewrites this path to the BPM service

        `/bpm/v1/policies/{planCode}/{policyNumber}/Restrict`.

        '
      operationId: submitActiveRestrictPolicyApi
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ActiveRestrictTransactionRequest'
      responses:
        '202':
          description: Request accepted; transaction is being processed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionAcceptedResponse'
        '400':
          description: Bad request or rules validation failure
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionResponse'
        '500':
          description: Internal server error
      security:
      - Auth0: []
    get:
      tags:
      - Non Financial Transactions
      summary: Get restriction alerts for a policy
      description: 'Returns the restriction alert aggregate from TDS. When none exists, response body is `{}`.

        Kong rewrites this path to `/bpm/v1/policies/{planCode}/{policyNumber}/Restrict`.

        '
      operationId: getActiveRestrictAlertsPolicyApi
      responses:
        '200':
          description: Alert aggregate or empty object when no TDS record exists
          content:
            application/json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/ActiveRestrictPolicyAlertDocument'
                - type: object
                  maxProperties: 0
                  description: No alert aggregate stored for this policy yet
        '500':
          description: Internal server error
      security:
      - Auth0: []
  /policy/v1/transactions/{planCode}/{policyNumber}/Restrict/alerts:
    x-kong-plugin-pre-function:
      config:
        access:
        - 'local path = kong.request.get_path()

          local new_path = path:gsub("^/policy/v1/transactions", "/bpm/v1/policies")

          kong.service.request.set_path(new_path)

          '
    parameters:
    - name: planCode
      in: path
      required: true
      schema:
        type: string
      description: Plan code
      example: EVGFIA909
    - name: policyNumber
      in: path
      required: true
      schema:
        type: string
      description: Policy number
      example: EVFIA09222243202
    get:
      tags:
      - Non Financial Transactions
      summary: Get restriction alerts for a policy
      description: 'Returns the restriction alert aggregate from TDS. When none exists, response body is `{}`.

        Kong rewrites this path to `/bpm/v1/policies/{planCode}/{policyNumber}/Restrict/alerts`.

        '
      operationId: getActiveRestrictAlertsV2PolicyApi
      responses:
        '200':
          description: Alert aggregate or empty object when no TDS record exists
          content:
            application/json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/ActiveRestrictPolicyAlertDocument'
                - type: object
                  maxProperties: 0
                  description: No alert aggregate stored for this policy yet
        '500':
          description: Internal server error
      security:
      - Auth0: []
  /bpm/v1/policies/{planCode}/{policyNumber}/basecoverageupdate/eligibilitycheck:
    post:
      tags:
      - Financial Transactions
      summary: base coverage update
      operationId: post_bpm_v1_policies_planCode_policyNumber_basecoverageupdate_eligibilitycheck
      parameters:
      - name: planCode
        in: path
        required: true
        schema:
          type: string
      - in: path
        name: policyNumber
        schema:
          type: string
        required: true
        description: Policy Number
      responses:
        '200':
          description: basecoverageupdate Eligibility Success Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionResponse'
              examples:
                success:
                  $ref: '#/components/examples/successTransactionResponse'
        '400':
          description: basecoverageupdate Eligibility Client Error Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionResponse'
              examples:
                failure:
                  $ref: '#/components/examples/failureTransactionResponse'
        '500':
          description: basecoverageupdate Eligibility Server Error Response
      security:
      - Auth0: []
  /bpm/v1/policies/{planCode}/{policyNumber}/{transactionType}/eligibilitycheck:
    post:
      x-internal: true
      tags:
      - Non Financial Transactions
      summary: Eligibility Check For Non-Financial Transaction
      operationId: eligibilitycheckNonFinancialTransaction
      parameters:
      - name: planCode
        in: path
        required: true
        schema:
          type: string
      - in: path
        name: policyNumber
        schema:
          type: string
        required: true
        description: Policy Number
      - in: path
        name: transactionType
        schema:
          type: string
          enum:
          - address
          - emailaddress
          - phone
          - bankaccount
          - communicationpreference
        required: true
        description: Transaction Type
      responses:
        '200':
          description: Non Financial Eligibility Success Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionResponse'
              examples:
                success:
                  $ref: '#/components/examples/successTransactionResponse'
        '400':
          description: Non Financial Eligibility Failure Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionResponse'
              examples:
                failure:
                  $ref: '#/components/examples/failureTransactionResponse'
        '500':
          description: Unexpected error occured, please check server logs
      security:
      - Auth0: []
  /policy/v1/transactions/{planCode}/{policyNumber}/bankaccount/eligibilitycheck:
    post:
      tags:
      - Non Financial Transactions
      summary: Eligibility Check Bank Transaction
      operationId: eligibilitycheckbankTransaction1
      parameters:
      - name: planCode
        in: path
        required: true
        schema:
          type: string
      - in: path
        name: policyNumber
        schema:
          type: string
        required: true
        description: Policy Number
      responses:
        '200':
          description: Bank Success Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionResponse'
              examples:
                success:
                  $ref: '#/components/examples/successTransactionResponse'
        '400':
          description: Bank Failure Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionResponse'
              examples:
                failure:
                  $ref: '#/components/examples/failureTransactionResponse'
        '500':
          description: Unexpected error occured, please check server logs
      security:
      - Auth0: []
      x-kong-plugin-pre-function:
        config:
          access:
          - 'local path = kong.request.get_path()

            local new_path = path:gsub("^/policy/v1/transactions", "/bpm/v1/policies")

            kong.service.request.set_path(new_path)

            '
  /policy/v1/transactions/{planCode}/{policyNumber}/parties/{partyId}/{partyRole}/validation:
    post:
      x-kong-plugin-pre-function:
        config:
          access:
          - 'local path = kong.request.get_path()

            local new_path = path:gsub("^/policy/v1/transactions", "/bpm/v1/policies")

            kong.service.request.set_path(new_path)

            '
      tags:
      - Non Financial Transactions
      summary: Party Change request
      description: Validate Business Rules for Payee/Payor/Owner/TPD/Beneficiary and Add new Payee/Payor/Owner/ThirdPartyDesignee/PrimaryBeneficiary/ContingentBeneficiary
        based on the request
      operationId: updatePartyValidation1
      parameters:
      - name: planCode
        in: path
        required: true
        schema:
          type: string
      - name: policyNumber
        in: path
        required: true
        schema:
          type: string
      - name: partyId
        in: path
        required: true
        schema:
          type: string
      - name: partyRole
        in: path
        required: true
        example: Owner
        description: Party for which details are being entered. Possible values are - Owner, Payor, Payee, PrimaryBeneficiary,
          ContingentBeneficiary, ThirdPartyDesignee
        schema:
          type: string
          enum:
          - Payee
          - Payor
          - Owner
          - ThirdPartyDesignee
          - PrimaryBeneficiary
          - ContingentBeneficiary
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PartyChangeRequest'
      responses:
        '202':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionAcceptedResponse'
        '400':
          description: Rules and Transaction Failure
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionResponse'
              examples:
                failure:
                  $ref: '#/components/examples/failureTransactionResponse'
        '500':
          description: Unexpected error occured, please check server logs
  /bpm/v1/policies/{planCode}/{policyNumber}/billingfeaturechange/eligibilitycheck:
    post:
      x-internal: true
      tags:
      - Non Financial Transactions
      summary: Eligibility Check Billing Feature Change
      description: Evaluates whether the policy is eligible for a billing feature change transaction.
      operationId: billingFeatureChangeEligibilityCheck
      parameters:
      - name: planCode
        in: path
        required: true
        schema:
          type: string
        description: Plan Code
      - name: policyNumber
        in: path
        required: true
        schema:
          type: string
        description: Policy Number
      responses:
        '200':
          description: Billing Feature Change Eligibility Success Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionResponse'
              examples:
                success:
                  $ref: '#/components/examples/successTransactionResponse'
        '400':
          description: Billing Feature Change Eligibility Failure Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionResponse'
              examples:
                failure:
                  $ref: '#/components/examples/failureTransactionResponse'
        '500':
          description: Unexpected error occured, please check server logs
      security:
      - Auth0: []
  /bpm/v1/policies/{planCode}/{policyNumber}/billingfeaturechange/validation:
    post:
      x-internal: true
      tags:
      - Non Financial Transactions
      summary: Validate Billing Feature Change
      description: Validates the billing feature change request against business rules before submission.
      operationId: billingFeatureChangeValidation
      parameters:
      - name: planCode
        in: path
        required: true
        schema:
          type: string
        description: Plan Code
      - name: policyNumber
        in: path
        required: true
        schema:
          type: string
        description: Policy Number
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BillingFeatureChangeRequest'
            examples:
              billingFeatureChangeValidationExample:
                summary: Billing feature change validation request example
                value:
                  correlationId: e3bdb22b-790f-4357-ae60-42cdb0ff0d12
                  effectiveDate: '2026-07-24'
                  transactionReason: AMOUNT
                  policyFeatures:
                  - featureType: BILLING
                    paymentAmount: 1000
                    approvalDate: '2026-07-24'
                    frequency: DAILY
                  signatures:
                  - isSignedPresent: true
                    signDate: '2026-06-26'
                    signDesignation: null
                    signType: OWNER
                    signTypeForUI: Owner
                  - isSignedPresent: false
                    signDate: null
                    signDesignation: null
                    signType: JOINTOWNER
                    signTypeForUI: Joint Owner
                  documents:
                  - documentId: DOC123456
                    documentType: NFO_FORM
                    documentDate: '2026-06-26'
                    caseId: CA0000007389
                    policyNumber: WL987654321
                    planCode: WL1001
                  selfServeFlow: true
                  supportingDocumentAttached: true
      responses:
        '200':
          description: Billing Feature Change Validation Success Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionResponse'
              examples:
                success:
                  $ref: '#/components/examples/successTransactionResponse'
        '400':
          description: Billing Feature Change Validation Failure Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionResponse'
              examples:
                failure:
                  $ref: '#/components/examples/failureTransactionResponse'
        '500':
          description: Unexpected error occured, please check server logs
      security:
      - Auth0: []
  /policy/v1/transactions/{planCode}/{policyNumber}/freelookcancellation/validation:
    post:
      tags:
      - Financial Transactions
      summary: Validation Freelook Cancellation Transaction
      operationId: validationFreelookCancellationTransaction1
      parameters:
      - name: planCode
        in: path
        required: true
        schema:
          type: string
      - in: path
        name: policyNumber
        schema:
          type: string
        required: true
        description: Policy Number
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FreeLookCancellationRequest'
      responses:
        '200':
          description: Freelook Cancellation Validation Success Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionResponse'
              examples:
                success:
                  $ref: '#/components/examples/successTransactionResponse'
        '400':
          description: Freelook Cancellation Validation Failure Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionResponse'
              examples:
                failure:
                  $ref: '#/components/examples/failureTransactionResponse'
        '500':
          description: Unexpected error occured, please check server logs
      security:
      - Auth0: []
  /policy/v1/transactions/case:
    post:
      x-kong-plugin-pre-function:
        config:
          access:
          - 'local path = kong.request.get_path()

            local new_path = path:gsub("^/policy/v1/transactions", "/bpm/v1/policies")

            kong.service.request.set_path(new_path)

            '
      tags:
      - Policy - Transactions
      summary: Create case for transaction
      description: This operation must be invoked before submitting a transaction request. The service is responsible for
        creating a new case record, which becomes the prerequisite reference for all subsequent transaction activities.
      operationId: createCase
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateCaseRequest'
      responses:
        '201':
          description: Case Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CaseSuccessResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationResponse'
        '401':
          description: Authentication failed
          content:
            application/json:
              examples:
                NewBusiness:
                  value:
                    message: Unauthorized
        '403':
          description: Access denied
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessDeniedResponse'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerErrorResponse'
      security:
      - Auth0: []
  /policy/v1/cases/{caseId}/cancel:
    put:
      x-kong-plugin-pre-function:
        config:
          access:
          - 'local path = kong.request.get_path()

            local new_path = path:gsub("^/policy/v1/cases", "/bpm/v1/cases")

            kong.service.request.set_path(new_path)

            '
      tags:
      - Policy - Transactions
      summary: Cancel a case
      description: 'Cancels an existing case based on eligibility rules. The API validates that the case exists and that the
        associated BPM process has not yet started. If eligible, the case is transitioned to a CANCELLED status, cancellation
        metadata is persisted, and a NES cancellation event is emitted. Only cases in NOT_STARTED BPM state can be cancelled.

        '
      operationId: cancelCase
      parameters:
      - name: caseId
        in: path
        required: true
        description: The unique identifier of the case to cancel
        schema:
          type: string
          example: CA0000007516
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CaseCancellationRequest'
            example:
              correlationId: 218d8992-3783-42ac-b59a-66cbc36adaa2
              planCode: TL0101
              policyNumber: FIUL463340020
              reason: User requested cancellation
              requestedBy: CLIENT
              type: Reinstatement
              subType: Reinstatement
      responses:
        '202':
          description: Cancellation accepted and BPM process triggered
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CaseCancellationResponse'
              example:
                caseId: CA0000007516
                correlationId: 218d8992-3783-42ac-b59a-66cbc36adaa2
                caseStatus: CANCELLED
                message: Case cancellation initiated successfully
        '400':
          description: Bad Request - Missing or invalid required fields
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationResponse'
              example:
                statusCode: 400
                timestamp: '2026-02-18T10:30:00Z'
                errorId: a4a57ed0-2c1b-4922-9959-3b85dd8a96d3
                message: Validation failed
                error:
                - reason is required
                - type is required
        '401':
          description: Authentication failed
          content:
            application/json:
              examples:
                Unauthorized:
                  value:
                    message: Unauthorized
        '403':
          description: Access denied
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessDeniedResponse'
        '404':
          description: Case not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationResponse'
              example:
                statusCode: 404
                timestamp: '2026-02-18T10:30:00Z'
                errorId: b5b68ed1-3d2c-5933-0060-4c96ee9b97e4
                message: Case not found
                error:
                - 'No case found for caseId: CA0000007516'
        '409':
          description: Cancellation not allowed - BPM process is not in an eligible state
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationResponse'
              example:
                statusCode: 409
                timestamp: '2026-02-18T10:30:00Z'
                errorId: c6c79fe2-4e3d-6044-1171-5da7fface85
                message: Cancellation not allowed
                error:
                - Cancellation not allowed once transaction processing has started.
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerErrorResponse'
      security:
      - Auth0: []
  /policy/v1/transactions/{planCode}/{policyNumber}/freelookcancellation/eligibilitycheck:
    post:
      x-kong-plugin-pre-function:
        config:
          access:
          - 'local path = kong.request.get_path()

            local new_path = path:gsub("^/policy/v1/transactions", "/bpm/v1/policies")

            kong.service.request.set_path(new_path)

            '
      tags:
      - Non Financial Transactions
      summary: Freelook cancellation request
      description: If freelook endDate is less than or equal to policy effective Date, cancel the policy based on the request
      operationId: freelookcancellationEligibility1
      parameters:
      - name: planCode
        in: path
        required: true
        schema:
          type: string
      - name: policyNumber
        in: path
        required: true
        schema:
          type: string
        description: Policy Number
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FreeLookCancellationRequest'
      responses:
        '202':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionAcceptedResponse'
        '500':
          description: Unexpected error occured, please check server logs
      security:
      - Auth0: []
  /bpm/v1/policies/{planCode}/{policyNumber}/initialdeathclaim/eligibilitycheck:
    post:
      tags:
      - Financial Transactions
      summary: Initial Death Claim Eligibility Check
      description: 'Checks whether an initial death claim can be submitted for the given policy.

        No request body is required; eligibility is derived from the policy identified

        by planCode and policyNumber. An eligible policy returns status success; an

        ineligible policy returns status failure with the reasons in error.

        '
      operationId: initialDeathClaimEligibilityCheck
      parameters:
      - name: planCode
        in: path
        required: true
        schema:
          type: string
        description: Plan Code
        example: EVIU101
      - name: policyNumber
        in: path
        required: true
        schema:
          type: string
        description: Policy

# --- truncated at 32 KB (511 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/zinnia/refs/heads/main/openapi/zinnia-policy-transactions-openapi.yml