---
title: "PolicyCoverageChangesRequest"
url: "https://developers.zinnia.com/apis/policy-transactions-1-0-2/versions/d0006570-ab9d-464e-814f-d120ba425e84/schemas/PolicyCoverageChangesRequest"
---

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

# PolicyCoverageChangesRequest

Request body for a bundle of in-force coverage/rider changes (POST `/bpm/v1/policies/{planCode}/{policyNumber}/policyCoverageChanges` and policy API alias).

## 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
components:
  schemas:
    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
    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
```
