---
title: "Submit Policy Coverage Changes"
url: "https://developers.zinnia.com/apis/policy-transactions-1-0-2/versions/d0006570-ab9d-464e-814f-d120ba425e84/operations/policyCoverageChanges1"
---

> Full API specification: https://developers.zinnia.com/apis/policy-transactions-1-0-2/versions/d0006570-ab9d-464e-814f-d120ba425e84.md

# Submit Policy Coverage Changes

`POST` `/policy/v1/transactions/{planCode}/{policyNumber}/policycoveragechanges`

Operation ID: `policyCoverageChanges1`

Submits a bundle of in-force coverage/rider changes (death benefit option change, face amount increase, risk-class reclassification, rider add, rider update/termination) for a single policy, along with the underwriting decision and any resulting premium/one-time payment that supports them.

## Path parameters

- `planCode` (string, required)
- `policyNumber` (string, required)

## Request body (required)

Content types: `application/json`

## Responses

- `202` - Submit Transaction Successful
- `500` - Internal server error. Please check server logs for more details.

## OpenAPI definition

```yaml
openapi: 3.1.0
info:
  title: Zinnia Policy Transactions API.
  version: 1.0.9
servers:
  - url: https://dev.api.zinnia.io
    description: DEV Environment
  - url: https://qa.api.zinnia.io
    description: QA Environment
paths:
  /policy/v1/transactions/{planCode}/{policyNumber}/policycoveragechanges:
    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:
        - Financial Transactions
      summary: Submit Policy Coverage Changes
      description: >
        Submits a bundle of in-force coverage/rider changes (death benefit
        option change, face amount increase, risk-class reclassification, rider
        add, rider update/termination) for a single policy, along with the
        underwriting decision and any resulting premium/one-time payment that
        supports them.
      operationId: policyCoverageChanges1
      parameters:
        - name: planCode
          in: path
          required: true
          schema:
            type: string
        - name: policyNumber
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/PolicyCoverageChangesRequest"
            examples:
              policyCoverageChangesExample:
                summary: Policy coverage changes request example
                value:
                  caseId: CA1234567890
                  correlationId: 381ee1cc-7f34-47b1-a007-948d26b68a0f
                  effectiveDate: 2026-07-15
                  externalIdentifiers:
                    externalTransactionId: test
                    referenceNumber: uniquetest1233
                  policyUpdateRequest:
                    - requestType: DEATHBENEFITOPTIONCHANGE
                      deathBenefitOption: LEVEL
                      deathBenefitComplianceTest: GPT
                      coverageId: Base_Coverage
                      coverageType: BASE
                    - requestType: BASECOVERAGEUPDATE
                      coverageId: Base_Coverage
                      coverageType: BASE
                      effectiveDate: 2026-07-15
                      faceAmount: 250000
                      tableRatings:
                        tableRating: TABLEA
                        flatExtras:
                          - type: PERMANENT
                            amount: 250000
                            duration: 250000
                            durationType: YEARS
                    - requestType: RECLASSIFICATION
                      coverageId: Base_Coverage
                      effectiveDate: 2026-07-15
                      coverageType: BASE
                      riskClass: ULTRANONTOBACCO
                      tableRatings:
                        tableRating: TABLEA
                        flatExtras:
                          - type: PERMANENT
                            amount: 250000
                            duration: 5
                            durationType: YEARS
                    - requestType: RIDERADD
                      type: Rider_ABRTRM
                      effectiveDate: 2026-07-15
                      faceAmount: 25000
                      premium: 15
                      status: ACTIVE
                      optedForPolicy: YES
                      tableRatings:
                        tableRating: TABLEA
                        flatExtras:
                          - type: PERMANENT
                            amount: 250000
                            duration: 5
                            durationType: YEARS
                      party:
                        - 5f8f2f5c-6c3b-4e3b-8f2f-5c6c3b4e3b8f
                    - requestType: RIDERUPDATE
                      type: Rider_ABRTRM
                      effectiveDate: 2026-07-15
                      faceAmount: 25000
                      premium: 15
                      status: ACTIVE
                      optedForPolicy: YES
                      tableRatings:
                        tableRating: TABLEA
                        flatExtras:
                          - type: PERMANENT
                            amount: 250000
                            duration: 5
                            durationType: YEARS
                      party:
                        - 5f8f2f5c-6c3b-4e3b-8f2f-5c6c3b4e3b8f
                    - requestType: RIDERUPDATE
                      riderId: Rider_ABRTRM_2
                      type: Rider_ABRTRM
                      effectiveDate: 2026-07-15
                      status: TERMINATE
                      reasonCode: INSUREDREQUEST
                      party:
                        - 5f8f2f5c-6c3b-4e3b-8f2f-5c6c3b4e3b8f
                  payment:
                    referenceNumber: 5f2e0c1a-6b3d-4d3f-8b7f-3f7b6d5e4c3a
                    method: ACH
                    arrangementType: PAYMENT
                    frequency: MONTHLY
                    amount: 250000
                    draftDate: 2023-01-01
                    paymentDate: 2023-01-01
                    externalTransactionId: A12345
                    externalArrangementId: B45678
                    party:
                      - 5f8f2f5c-6c3b-4e3b-8f2f-5c6c3b4e3b8f
                    bankInformation:
                      nameOnAccount: abc
                      accountStatus: ACTIVE
                      accountNumber: "1234567890"
                      routingNumber: "123456789"
                      accountType: CHECKING
                      ibaNumber: "123456789"
                      branchName: XYZ Branch
                      address:
                        addressType: RESIDENCE
                        addressLine1: 123 Main St
                        addressLine2: Apt 4B
                        addressLine3: Apt 4B
                        city: San Francisco
                        state: CA
                        zipCode: "94105"
                        zipCodeExt: "4465"
                        country: US
                  oneTimePayment:
                    requestedAmount: 25000
                    parties:
                      - partyId: Party_PI_1
                        paymentForm: DTCC
                        bankId: bank_1
                        partyRole: PAYOR
                  illustrations:
                    source: ZINNIA
                    illustrationId: Q12345
                  parties:
                    - partyId: 2ad51ecf-9923-437f-a6f0-70968e464cdb
                      partyRole: INSURED
                      partyType: INDIVIDUAL
                      personalInformation:
                        firstName: John
                        middleName: M
                        lastName: Doe
                        suffix: SR
                        prefix: MR
                        dateOfBirth: 1990-01-01
                        gender: MALE
                        birthSex: MALE
                        birthCountry: US
                        citizenCountry: US
                      partyCommunication: REGULARMAIL
                      identifiers:
                        - type: PASSPORT
                          value: "123456789"
                          description: Passport number
                          source: State of California
                          issueDate: 2015-08-15
                          expirationDate: 2025-08-15
                          status: ACTIVE
                          countryOfIssue: US
                      address:
                        preferredAddressId: 2ad51ecf-9923-437f-a6f0-70968e464cdb
                        addresses:
                          - id: 2ad51ecf-9923-437f-a6f0-70968e464cdb
                            addressType: RESIDENCE
                            addressLine1: 123 Main St
                            addressLine2: Apt 4B
                            addressLine3: Apt 4B
                            city: San Francisco
                            state: CA
                            zipCode: "94105"
                            zipCodeExt: "4465"
                            country: US
                      phoneNumber:
                        preferredPhoneId: 2ad51ecf-9923-437f-a6f0-70968e464cdb
                        phoneNumbers:
                          - type: MOBILE
                            countryCode: "9"
                            areaCode: "973"
                            dialNumber: "765789"
                            extension: null
                            bestTime: null
                            timezone: null
                            id: 2ad51ecf-9923-437f-a6f0-70968e464cdb
                      email:
                        preferredEmailId: 2ad51ecf-9923-437f-a6f0-70968e464cdb
                        emails:
                          - type: PERSONAL
                            address: user@example.com
                            id: 2ad51ecf-9923-437f-a6f0-70968e464cdb
                      signatures:
                        - date: 2021-01-12
                          city: Quincy
                          state: CA
                  underwriting:
                    underwritingCaseId: CA1234567890
                    decision: APPROVED
                    status: CLEAN_CASE
                    underwritingSourceName: Source Details
                    underwritingRiskClass: ULTRANONTOBACCO
                    decisionRiskClass: ULTRANONTOBACCO
                    underwritingMethod: FULLUNDERWRITING
                    tobaccoPremiumBasis: SMOKER
                    approvedFaceAmount: 250000
                    approvedFaceAmountMaximum: 250000
                    riders:
                      - type: Rider_ABRTRM
                        approvedRiderFaceAmountMaximum: 100000
                    exclusionReview:
                      - description: Aviation Activities
                        reasonCode: AVIATION
                  identifiers:
                    - identifier: zlCaseId
                      value: CA0001296422
        required: true
      responses:
        "202":
          description: Submit Transaction Successful
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TransactionAcceptedResponse"
        "500":
          description: Internal server error. Please check server logs for more details.
      security:
        - Auth0: []
security:
  - Auth0: []
components:
  schemas:
    PolicyCoverageChangesRequest:
      type: object
      description: |
        Request body for a bundle of in-force coverage/rider changes
        (POST `/bpm/v1/policies/{planCode}/{policyNumber}/policyCoverageChanges`
        and policy API alias).
      properties:
        caseId:
          type: string
          example: CA1234567890
          description: Unique identifier of the in-force case associated with this policy
            update, used to correlate the request with the case management
            system
        correlationId:
          type: string
          format: uuid
          example: 381ee1cc-7f34-47b1-a007-948d26b68a0f
          description: The unique ID to track this transaction request across all systems
        effectiveDate:
          type: string
          format: date
          example: 2026-07-15
          description: Transaction-level effective date, used as the default effective
            date for any policyUpdateRequest item that does not specify its own
            effectiveDate
        externalIdentifiers:
          $ref: "#/components/schemas/PolicyCoverageChangesExternalIdentifiers"
        policyUpdateRequest:
          type: array
          minItems: 1
          description: Request items applicable for the policy update
          items:
            $ref: "#/components/schemas/PolicyCoverageChangesRequestItem"
        payment:
          $ref: "#/components/schemas/PolicyCoverageChangesPayment"
        oneTimePayment:
          $ref: "#/components/schemas/PolicyCoverageChangesOneTimePayment"
        illustrations:
          $ref: "#/components/schemas/PolicyCoverageChangesIllustration"
        parties:
          type: array
          description: Parties referenced by this transaction's policyUpdateRequest,
            payment, and oneTimePayment items
          items:
            $ref: "#/components/schemas/PolicyCoverageChangesParty"
        underwriting:
          $ref: "#/components/schemas/PolicyCoverageChangesUnderwriting"
        identifiers:
          type: array
          description: Business identifiers associated with the case
          items:
            $ref: "#/components/schemas/PolicyCoverageChangesIdentifierDocument"
      required:
        - caseId
        - correlationId
        - effectiveDate
        - policyUpdateRequest
    TransactionAcceptedResponse:
      type: object
      properties:
        correlationId:
          type: string
          example: 3a2a3435-2089-4b81-9959-e0d569ccf4f0
          description: Unique identifier which used by every system to trace the request
        caseId:
          type: string
          example: CA0000369469
          description: Zinnia Live Case ID
        caseStatus:
          type: string
          example: IN_PROGRESS
          description: Zinnia Live Case Status
        pdfId:
          type: string
          description: Identifier for the generated or associated PDF document (e.g.
            OnBase document number). Returned on systematic program setup and
            update submit when available.
          example: DOC-10004567
    PolicyCoverageChangesExternalIdentifiers:
      type: object
      properties:
        externalTransactionId:
          type: string
          description: Transaction identifier assigned by the external/source system
            submitting the request
          example: test
        referenceNumber:
          type: string
          description: Additional reference number supplied by the external system for
            tracking purposes
          example: uniquetest1233
    PolicyCoverageChangesRequestItem:
      type: object
      description: A single policy-update request item. The shape of the remaining
        properties depends on requestType.
      discriminator:
        propertyName: requestType
        mapping:
          DEATHBENEFITOPTIONCHANGE: "#/components/schemas/DeathBenefitOptionChange"
          BASECOVERAGEUPDATE: "#/components/schemas/BASECOVERAGEUPDATE"
          RECLASSIFICATION: "#/components/schemas/Reclassification"
          RIDERADD: "#/components/schemas/RiderAdd"
          RIDERUPDATE: "#/components/schemas/RiderUpdate"
      oneOf:
        - $ref: "#/components/schemas/DeathBenefitOptionChange"
        - $ref: "#/components/schemas/BASECOVERAGEUPDATE"
        - $ref: "#/components/schemas/Reclassification"
        - $ref: "#/components/schemas/RiderAdd"
        - $ref: "#/components/schemas/RiderUpdate"
    PolicyCoverageChangesPayment:
      type: object
      description: >
        Recurring premium/billing arrangement for this transaction, required
        only if at least one policyUpdateRequest item impacts premium
        (BASECOVERAGEUPDATE, RIDERADD, RIDERUPDATE).
      properties:
        referenceNumber:
          type: string
          description: Reference number of the payment/EFT arrangement
          example: 5f2e0c1a-6b3d-4d3f-8b7f-3f7b6d5e4c3a
        method:
          $ref: "#/components/schemas/PaymentForm"
        arrangementType:
          $ref: "#/components/schemas/ArrangementType"
        frequency:
          $ref: "#/components/schemas/Frequency"
        amount:
          type: number
          format: double
          description: Premium/payment amount for this transaction (not a coverage/rider
            face amount)
          example: 250000
        draftDate:
          type: string
          format: date
          description: Date on which the automatic draft occurs
          example: 2023-01-01
        paymentDate:
          type: string
          format: date
          description: Date the payment is applied
          example: 2023-01-01
        externalTransactionId:
          type: string
          description: Identifier from the external payment/billing system for this
            transaction
          example: A12345
        externalArrangementId:
          type: string
          description: Identifier from the external payment/billing system for this
            recurring arrangement
          example: B45678
        party:
          type: array
          description: partyId reference(s) identifying who is paying; must match a
            partyId declared in the top-level parties array
          items:
            type: string
            example: 5f8f2f5c-6c3b-4e3b-8f2f-5c6c3b4e3b8f
        bankInformation:
          $ref: "#/components/schemas/PolicyCoverageChangesBankInformation"
      required:
        - method
        - frequency
        - amount
        - party
    PolicyCoverageChangesOneTimePayment:
      type: object
      description: One-time payment accompanying this transaction, present only when
        the transaction includes a one-time payment
      properties:
        requestedAmount:
          type: number
          format: double
          description: Gross amount of the one-time payment being requested
          example: 25000
        parties:
          type: array
          minItems: 1
          description: Payor/party details for this one-time payment
          items:
            $ref: "#/components/schemas/PolicyCoverageChangesOneTimePaymentParty"
      required:
        - requestedAmount
        - parties
    PolicyCoverageChangesIllustration:
      type: object
      properties:
        source:
          type: string
          enum:
            - ZINNIA
            - EXTERNAL
          description: System that generated the illustration supporting the requested
            change
          example: ZINNIA
        illustrationId:
          type: string
          description: Unique identifier of the illustration
          example: Q12345
    PolicyCoverageChangesParty:
      type: object
      properties:
        partyId:
          type: string
          description: Unique identifier assigned to a party under this transaction;
            cross-referenced from policyUpdateRequest[].party and payment.party
          example: 2ad51ecf-9923-437f-a6f0-70968e464cdb
        partyRole:
          $ref: "#/components/schemas/PolicyCoverageChangesPartyRole"
        partyType:
          type: string
          enum:
            - INDIVIDUAL
            - ENTITY
          description: Indicates whether the party is a natural person or a non-person
            entity
          example: INDIVIDUAL
        personalInformation:
          $ref: "#/components/schemas/PolicyCoverageChangesPersonalInformation"
        partyCommunication:
          type: string
          description: Preferred communication method for this party
          example: REGULARMAIL
        identifiers:
          type: array
          items:
            $ref: "#/components/schemas/PolicyCoverageChangesPartyIdentifier"
        address:
          type: object
          properties:
            preferredAddressId:
              type: string
              description: Pointer to the party's primary address within addresses
              example: 2ad51ecf-9923-437f-a6f0-70968e464cdb
            addresses:
              type: array
              items:
                allOf:
                  - $ref: "#/components/schemas/PolicyCoverageChangesAddress"
                  - type: object
                    properties:
                      id:
                        type: string
                        description: Unique identifier of this address record
                        example: 2ad51ecf-9923-437f-a6f0-70968e464cdb
        phoneNumber:
          type: object
          properties:
            preferredPhoneId:
              type: string
              description: Pointer to the party's primary phone within phoneNumbers
              example: 2ad51ecf-9923-437f-a6f0-70968e464cdb
            phoneNumbers:
              type: array
              items:
                $ref: "#/components/schemas/PolicyCoverageChangesPhoneNumber"
        email:
          type: object
          properties:
            preferredEmailId:
              type: string
              description: Pointer to the party's primary email within emails
              example: 2ad51ecf-9923-437f-a6f0-70968e464cdb
            emails:
              type: array
              items:
                $ref: "#/components/schemas/PolicyCoverageChangesEmail"
        signatures:
          type: array
          items:
            $ref: "#/components/schemas/PolicyCoverageChangesSignature"
      required:
        - partyId
        - partyRole
        - partyType
    PolicyCoverageChangesUnderwriting:
      type: object
      description: Underwriting decision evaluated for this policy update, present
        when an underwriting case was evaluated
      properties:
        underwritingCaseId:
          type: string
          description: Identifier of the underwriting case evaluated for this policy update
          example: CA1234567890
        decision:
          type: string
          enum:
            - APPROVED
            - DECLINED
            - POSTPONED
          description: Underwriting decision rendered for the requested change
          example: APPROVED
        status:
          type: string
          enum:
            - CLEAN_CASE
            - FLAGGED_CASE
          description: Case-level underwriting status classification
          example: CLEAN_CASE
        underwritingSourceName:
          type: string
          description: Name of the underwriting engine/source
          example: Source Details
        underwritingRiskClass:
          $ref: "#/components/schemas/PolicyCoverageChangesRiskClass"
        decisionRiskClass:
          $ref: "#/components/schemas/PolicyCoverageChangesRiskClass"
        underwritingMethod:
          type: string
          enum:
            - FULLUNDERWRITING
            - SIMPLIFIEDISSUE
            - GUARANTEEDISSUE
            - ACCELERATEDUNDERWRITING
          description: Underwriting method applied
          example: FULLUNDERWRITING
        tobaccoPremiumBasis:
          type: string
          enum:
            - SMOKER
            - NONSMOKER
          description: Tobacco/nicotine rating basis
          example: SMOKER
        approvedFaceAmount:
          type: number
          format: double
          description: Face amount approved by underwriting; required when a
            policyUpdateRequest item affects face amount (BASECOVERAGEUPDATE,
            RIDERADD)
          example: 250000
        approvedFaceAmountMaximum:
          type: number
          format: double
          description: Maximum face amount underwriting will allow; required when a
            policyUpdateRequest item affects face amount (BASECOVERAGEUPDATE,
            RIDERADD)
          example: 250000
        riders:
          type: array
          items:
            $ref: "#/components/schemas/PolicyCoverageChangesUnderwritingRider"
        exclusionReview:
          type: array
          items:
            $ref: "#/components/schemas/PolicyCoverageChangesExclusionReview"
      required:
        - underwritingCaseId
        - decision
        - status
    PolicyCoverageChangesIdentifierDocument:
      type: object
      description: Business identifier associated with the case, using Zinnia's
        existing {identifier, value} convention
      properties:
        identifier:
          type: string
          description: Type/name of the business identifier (e.g. zlCaseId, policyNumber;
            extensible)
          example: zlCaseId
        value:
          type: string
          description: Value of the identifier
          example: CA0001296422
      required:
        - identifier
        - value
    DeathBenefitOptionChange:
      type: object
      description: Death Benefit Option change request item
      properties:
        requestType:
          type: string
          enum:
            - DEATHBENEFITOPTIONCHANGE
          description: Discriminator identifying this item as a Death Benefit Option
            change request
          example: DEATHBENEFITOPTIONCHANGE
        coverageId:
          type: string
          description: Coverage ID received from the policy admin system
          example: Base_Coverage
        coverageType:
          $ref: "#/components/schemas/PolicyCoverageChangesCoverageType"
        deathBenefitOption:
          type: string
          enum:
            - LEVEL
            - INCREASING
          description: New death benefit option elected for the coverage
          example: LEVEL
        deathBenefitComplianceTest:
          type: string
          enum:
            - GPT
            - CVAT
          description: IRC compliance test the policy is administered under after the change
          example: GPT
      required:
        - requestType
        - deathBenefitOption
    BASECOVERAGEUPDATE:
      type: object
      description: Base coverage face-amount increase request item
      properties:
        requestType:
          type: string
          enum:
            - BASECOVERAGEUPDATE
          description: Discriminator identifying this item as a base coverage face-amount
            increase
          example: BASECOVERAGEUPDATE
        coverageId:
          type: string
          description: Identifier of the coverage whose face amount is being increased
          example: Base_Coverage
        coverageType:
          $ref: "#/components/schemas/PolicyCoverageChangesCoverageType"
        effectiveDate:
          type: string
          format: date
          description: Effective date of the face increase; defaults to the
            transaction-level effectiveDate when omitted
          example: 2026-07-15
        faceAmount:
          type: number
          format: double
          description: New total face amount for the coverage after the increase
          example: 250000
        tableRatings:
          $ref: "#/components/schemas/PolicyCoverageChangesTableRatings"
      required:
        - requestType
        - coverageId
        - coverageType
        - faceAmount
    Reclassification:
      type: object
      description: Risk-class reclassification request item
      properties:
        requestType:
          type: string
          enum:
            - RECLASSIFICATION
          description: Discriminator identifying this item as a risk-class reclassification
          example: RECLASSIFICATION
        coverageId:
          type: string
          description: Identifier of the coverage being reclassified
          example: Base_Coverage
        effectiveDate:
          type: string
          format: date
          description: Effective date of the reclassification; defaults to the
            transaction-level effectiveDate when omitted
          example: 2026-07-15
        coverageType:
          $ref: "#/components/schemas/PolicyCoverageChangesCoverageType"
        riskClass:
          $ref: "#/components/schemas/PolicyCoverageChangesRiskClass"
        tableRatings:
          $ref: "#/components/schemas/PolicyCoverageChangesTableRatings"
      required:
        - requestType
        - coverageId
        - coverageType
        - riskClass
    RiderAdd:
      type: object
      description: New rider addition request item
      properties:
        requestType:
          type: string
          enum:
            - RIDERADD
          description: Discriminator identifying this item as a new rider addition
          example: RIDERADD
        riderId:
          type: string
          description: Stable unique identifier assigned to this rider, used to target it
            in a later RIDERUPDATE
          example: Rider_ABRTRM_1
        type:
          $ref: "#/components/schemas/PolicyCoverageChangesRiderType"
        effectiveDate:
          type: string
          format: date
          description: Effective date of the rider addition; defaults to the
            transaction-level effectiveDate when omitted
          example: 2026-07-15
        faceAmount:
          type: number
          format: double
          description: Face amount of the rider being added; mandatory for face-amount
            based riders
          example: 25000
        premium:
          type: number
          format: double
          description: Premium associated with the new rider
          example: 15
        status:
          $ref: "#/components/schemas/PolicyCoverageChangesRiderAddStatus"
        optedForPolicy:
          type: string
          enum:
            - YES
            - NO
          description: Whether the rider election applies at the policy level
          example: YES
        tableRatings:
          $ref: "#/components/schemas/PolicyCoverageChangesTableRatings"
        party:
          type: array
          description: partyId reference(s) the rider applies to; must reference a party
            declared in the transaction's top-level parties array
          items:
            type: string
            example: 5f8f2f5c-6c3b-4e3b-8f2f-5c6c3b4e3b8f
      required:
        - requestType
        - type
        - status
        - optedForPolicy
        - party
    RiderUpdate:
      type: object
      description: >
        Update to an existing rider, including termination — submit
        status=TERMINATE rather than a separate request type to remove a rider.
      properties:
        requestType:
          type: string
          enum:
            - RIDERUPDATE
          description: Discriminator identifying this item as an update to an existing rider
          example: RIDERUPDATE
        riderId:
          type: string
          description: Identifier of the specific existing rider instance being updated,
            as returned/echoed on the originating RIDERADD
          example: Rider_ABRTRM_1
        type:
          $ref: "#/components/schemas/PolicyCoverageChangesRiderType"
        effectiveDate:
          type: string
          format: date
          description: Effective date of the rider update; defaults to the
            transaction-level effectiveDate when omitted
          example: 2026-07-15
        faceAmount:
          type: number
          format: double
          description: Updated face amount of the rider; mandatory for face-amount based
            riders, not applicable when status=TERMINATE
          example: 25000
        premium:
          type: number
          format: double
          description: Updated premium associated with the rider; not applicable when
            status=TERMINATE
          example: 15
        status:
          type: string
          enum:
            - ACTIVE
            - TERMINATE
          description: Status of the rider. TERMINATE is also the mechanism for removing a
            rider — submit this rather than a separate request type
          example: TERMINATE
        optedForPolicy:
          type: string
          enum:
            - YES
            - NO
          description: Whether the rider election applies at the policy level; mandatory
            unless status=TERMINATE
          example: YES
        tableRatings:
          $ref: "#/components/schemas/PolicyCoverageChangesTableRatings"
        party:
          type: array
          description: partyId reference(s) the rider applies to; must reference a party
            declared in the transaction's top-level parties array
          items:
            type: string
            example: 5f8f2f5c-6c3b-4e3b-8f2f-5c6c3b4e3b8f
        reasonCode:
          $ref: "#/components/schemas/PolicyCoverageChangesReasonCode"
      required:
        - requestType
        - type
        - status
        - party
    PaymentForm:
      type: string
      enum:
        - DTCC
        - CREDITCARD
        - ACH
        - CHECK
        - WIRE
        - EXCHANGE
        - EFT
      description: Mode of payment
    ArrangementType:
      type: string
      enum:
        - PAYMENT
        - WITHDRAWAL
        - LOANREPAYMENT
        - REQUIREDMINIMUMDISTRIBUTION
        - PAYOUT
      description: The type of payment such as fixed or flexible
    Frequency:
      type: string
      enum:
        - DAILY
        - EVERYTWOWEEKS
        - MONTHLY
        - SEMIANNUAL
        - BIANNUAL
        - QUARTERLY
        - ANNUAL
        - SINGLEPAYMENT
        - DEFAULT
      description: frequency
    PolicyCoverageChangesBankInformation:
      type: object
      description: Bank account details for the payment; mandatory when method=ACH
      properties:
        nameOnAccount:
          type: string
          description: Name of the account holder on the bank account
          example: abc
        accountStatus:
          type: string
          enum:
            - ACTIVE
            - INACTIVE
          description: Current status of the bank account
          example: ACTIVE
        accountNumber:
          type: string
          description: Bank account number
          example: "1234567890"
        routingNumber:
          type: string
          description: ABA routing number for domestic ACH; mandatory for domestic ACH
          example: "123456789"
        accountType:
          type: string
          enum:
            - CHECKING
            - SAVINGS
          description: Type of bank account
          example: CHECKING
        ibaNumber:
          type: string
          description: International Bank Account Number, for non-domestic accounts
          example: "123456789"
        branchName:
          type: string
          description: Name of the bank branch
          example: XYZ Branch
        address:
          $ref: "#/components/schemas/PolicyCoverageChangesAddress"
      required:
        - nameOnAccount
        - accountStatus
        - accountNumber
        - accountType
    PolicyCoverageChangesOneTimePaymentParty:
      type: object
      properties:
        partyId:
          type: string
          description: partyId reference identifying the source/payor of this one-time
            payment; must reference an entry in the transaction's top-level
            parties array
          example: Party_PI_1
        paymentForm:
          $ref: "#/components/schemas/PaymentForm"
        bankId:
          type: string
          description: Reference identifier of the bank account funding this payment
          example: bank_1
        partyRole:
          $ref: "#/components/schemas/PolicyCoverageChangesPartyRole"
      required:
        - partyId
        - paymentForm
        - partyRole
    PolicyCoverageChangesPartyRole:
      type: string
      enum:
        - INSURED
        - OWNER
        - BENEFICIARY
        - PAYOR
        - TRUSTEE
      description: Role the party plays on the policy for this transaction
      example: INSURED
    PolicyCoverageChangesPersonalInformation:
      type: object
      properties:
        firstName:
          type: string
          description: Legal first name of the individual party; mandatory if
            partyType=INDIVIDUAL
          example: John
        middleName:
          type: string
          description: Legal middle name
          example: M
        lastName:
          type: string
          description: Legal last name; mandatory if partyType=INDIVIDUAL
          example: Doe
        suffix:
          type: string
          description: Name suffix
          example: SR
        prefix:
          type: string
          description: Name prefix/title
          example: MR
        dateOfBirth:
          type: string
          format: date
          description: Date of birth; mandatory if partyType=INDIVIDUAL
          example: 1990-01-01
        gender:
          type: string
          enum:
            - MALE
            - FEMALE
            - UNKNOWN
          description: Gender of the individual party
          example: MALE
        birthSex:
          type: string
          enum:
            - MALE
            - FEMALE
            - UNKNOWN
          description: Birth sex, used for underwriting/rating
          example: MALE
        birthCountry:
          type: string
          description: Country of birth (ISO-3166 alpha-2)
          example: US
        citizenCountry:
          type: string
          description: Country of citizenship (ISO-3166 alpha-2)
          example: US
    PolicyCoverageChangesPartyIdentifier:
      type: object
      properties:
        type:
          type: string
          enum:
            - PASSPORT
            - SSN
            - DRIVERSLICENSE
            - NATIONALID
          description: Type of government or legal identification document
          example: PASSPORT
        value:
          type: string
          description: Value/number of the identifier
          example: "123456789"
        description:
          type: string
          description: Free-text description of the identifier
          example: Passport number
        source:
          type: string
          description: Issuing authority or source
          example: State of California
        issueDate:
          type: string
          format: date
          description: Date issued
          example: 2015-08-15
        expirationDate:
          type: string
          format: date
          description: Date of expiration
          example: 2025-08-15
        status:
          type: string
          enum:
            - ACTIVE
            - EXPIRED
            - INACTIVE
          description: Current status of the identifier
          example: ACTIVE
        countryOfIssue:
          type: string
          description: Country that issued the identifier (ISO-3166 alpha-2)
          example: US
    PolicyCoverageChangesAddress:
      type: object
      properties:
        addressType:
          type: string
          enum:
            - RESIDENCE
            - MAILING
            - BUSINESS
          description: Classification of the address
          example: RESIDENCE
        addressLine1:
          type: string
          description: Primary street address line
          example: 123 Main St
        addressLine2:
          type: string
          description: Secondary address line
          example: Apt 4B
        addressLine3:
          type: string
          description: Tertiary address line
          example: Apt 4B
        city:
          type: string
          description: City of the address
          example: San Francisco
        state:
          type: string
          description: State or province
          example: CA
        zipCode:
          type: string
          description: Postal/ZIP code
          example: "94105"
        zipCodeExt:
          type: string
          description: ZIP+4 extension
          example: "4465"
        country:
          type: string
          description: Country of the address (ISO-3166 alpha-2)
          example: US
      required:
        - addressLine1
        - city
        - state
        - country
    PolicyCoverageChangesPhoneNumber:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier of this phone record
          example: 2ad51ecf-9923-437f-a6f0-70968e464cdb
        type:
          type: string
          enum:
            - MOBILE
            - HOME
            - WORK
          description: Classification of the phone number
          example: MOBILE
        countryCode:
          type: string
          description: Country calling code
          example: "1"
        areaCode:
          type: string
          description: Area code
          example: "973"
        dialNumber:
          type: string
          description: Local dial number; mandatory if phone supplied
          example: "7657890"
        extension:
          type: string
          nullable: true
          description: Extension number, if applicable; send JSON null when not applicable
          example: null
        bestTime:
          type: string
          nullable: true
          description: Best time of day to reach the party
          example: null
        timezone:
          type: string
          nullable: true
          description: Timezone associated with the phone number
          example: null
      required:
        - dialNumber
    PolicyCoverageChangesEmail:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier of this email record
          example: 2ad51ecf-9923-437f-a6f0-70968e464cdb
        type:
          type: string
          enum:
            - PERSONAL
            - BUSINESS
          description: Classification of the email address
          example: PERSONAL
        address:
          type: string
          format: email
          description: The email address; mandatory if email supplied
          example: user@example.com
      required:
        - address
    PolicyCoverageChangesSignature:
      type: object
      properties:
        date:
          type: string
          format: date
          description: Date the signature was captured
          example: 2021-01-12
        city:
          type: string
          description: City where the signature was captured
          example: Quincy
        state:
          type: string
          description: State where the signature was captured
          example: CA
    PolicyCoverageChangesRiskClass:
      type: string
      enum:
        - ULTRANONTOBACCO
        - ELITENONTOBACCO
        - PREFERREDNONTOBACCO
        - STANDARDNONTOBACCO
        - STANDARDTOBACCO
        - STANDARDAGGREGATE
        - SUBSTANDARDNONTOBACCO
        - SUBSTANDARDTOBACCO
        - STANDARDPLUSNONTOBACCO
        - PREFERREDTOBACCO
        - STANDARDCONVERSIONNONTOBACCO
        - STANDARDCONVERSIONTOBACCO
      description: Risk classification assessed by underwriting
      example: ULTRANONTOBACCO
    PolicyCoverageChangesUnderwritingRider:
      type: object
      properties:
        type:
          $ref: "#/components/schemas/PolicyCoverageChangesRiderType"
        approvedRiderFaceAmountMaximum:
          type: number
          format: double
          description: Maximum face amount approved for the rider
          example: 100000
    PolicyCoverageChangesExclusionReview:
      type: object
      properties:
        description:
          type: string
          description: Description of the exclusion reviewed
          example: Aviation Activities
        reasonCode:
          type: string
          enum:
            - AVIATION
            - AVOCATION
            - MILITARY
            - OTHER
          description: Coded reason for the exclusion reviewed
          example: AVIATION
    PolicyCoverageChangesCoverageType:
      type: string
      enum:
        - BASE
        - TERM
        - SUPPLEMENTAL
      description: Type of the coverage
      example: BASE
    PolicyCoverageChangesTableRatings:
      type: object
      description: Substandard rating applied as a result of the change, if any
      properties:
        tableRating:
          $ref: "#/components/schemas/PolicyCoverageChangesTableRating"
        flatExtras:
          type: array
          items:
            anyOf:
              - $ref: "#/components/schemas/PolicyCoverageChangesFlatExtraPermanent"
              - $ref: "#/components/schemas/PolicyCoverageChangesFlatExtraTemporary"
    PolicyCoverageChangesRiderType:
      type: string
      enum:
        - Rider_OWP
        - Rider_ABRTRM
        - Rider_CTR
        - Rider_ABRCHR
        - Rider_ADR
        - Rider_WPR
        - Rider_CGR
        - Rider_GIBR
        - Rider_OPR
        - Rider_OWDR
        - Rider_WDR
        - Rider_NHR
        - Rider_ABRCRI
      description: Rider product/plan code
      example: Rider_ABRTRM
    PolicyCoverageChangesRiderAddStatus:
      type: string
      enum:
        - ACTIVE
        - PENDING
        - INACTIVE
        - TERMINATE
      description: Status of the rider being added
      example: ACTIVE
    PolicyCoverageChangesReasonCode:
      type: string
      enum:
        - INSUREDREQUEST
        - REPLACED
        - NONPAYMENT
        - OTHER
      description: Reason for the rider update, particularly when status=TERMINATE
      example: INSUREDREQUEST
    PolicyCoverageChangesTableRating:
      type: string
      enum:
        - TABLEA
        - TABLEB
        - TABLEC
        - TABLED
        - TABLEE
        - TABLEF
        - TABLEG
        - TABLEH
        - TABLEI
        - TABLEJ
        - TABLEK
        - TABLEL
        - TABLEM
        - TABLEN
        - TABLEO
        - TABLEP
        - NONE
        - NONETABLE
      description: Substandard rating table applied, if any. Accepts both NONE (per
        the policy-update data mapping) and NONETABLE (the platform's
        established new-business convention) pending confirmation of a single
        canonical value.
      example: TABLEA
    PolicyCoverageChangesFlatExtraPermanent:
      type: object
      description: Permanent flat extra premium
      properties:
        type:
          type: string
          enum:
            - PERMANENT
          description: Whether the flat extra premium is permanent or temporary
          example: PERMANENT
        amount:
          type: number
          format: double
          description: Flat extra premium amount
          example: 250000
        duration:
          type: integer
          description: Duration the flat extra applies for; not applicable for a permanent
            flat extra
          example: 5
        durationType:
          type: string
          enum:
            - YEARS
            - MONTHS
          description: Unit of measure for the duration
          example: YEARS
      required:
        - type
        - amount
    PolicyCoverageChangesFlatExtraTemporary:
      type: object
      description: Temporary flat extra premium
      properties:
        type:
          type: string
          enum:
            - TEMPORARY
          description: Whether the flat extra premium is permanent or temporary
          example: TEMPORARY
        amount:
          type: number
          format: double
          description: Flat extra premium amount
          example: 250000
        duration:
          type: integer
          description: Duration the flat extra applies for
          example: 5
        durationType:
          type: string
          enum:
            - YEARS
            - MONTHS
          description: Unit of measure for the duration
          example: YEARS
      required:
        - type
        - amount
        - duration
        - durationType
  securitySchemes:
    Auth0:
      type: openIdConnect
      openIdConnectUrl: https://login.dev.zinnia.com/.well-known/openid-configuration
      x-kong-security-openid-connect:
        config:
          run_on_preflight: true
          scopes_claim:
            - https://dev.api.zinnia.io/permissions
          audience_claim:
            - aud
          audience_required:
            - https://dev.api.zinnia.io
          client_id:
            - client_id
          auth_methods:
            - bearer
        enabled: true
        protocols:
          - grpc
          - grpcs
          - http
          - https
```
