---
title: "Illustration for new term life"
url: "https://developers.zinnia.com/apis/illustration-3-0-8/versions/b96a49c1-73c5-46d3-8968-fe603081d524/operations/illustration-for-new-term-life"
---

> Full API specification: https://developers.zinnia.com/apis/illustration-3-0-8/versions/b96a49c1-73c5-46d3-8968-fe603081d524.md

# Illustration for new term life

`POST` `/illustration/v3/term-life/new-business`

Operation ID: `illustration-for-new-term-life`

Triggers an immediate calculation and returns the calculated results.

## Request body (required)

Content types: `application/json`

## Responses

- `200` - the request was processed
- `400` - The posted request was invalid for any reason.
- `500` - An unexpected processing error occurred, OR the request was processed successfully but contains calculation error messages.

## OpenAPI definition

```yaml
openapi: 3.0.1
info:
  title: Illustration Generation
  version: 3.5.3
servers:
  - url: https://dev.api.zinnia.io
    description: Development
paths:
  /illustration/v3/term-life/new-business:
    post:
      operationId: illustration-for-new-term-life
      summary: Illustration for new term life
      description: Triggers an immediate calculation and returns the calculated results.
      requestBody:
        description: contains all the input data needed for processing the request
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Illustration-Inputs-TL"
      responses:
        "200":
          description: the request was processed
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Illustration-Response-TL"
        "400":
          description: The posted request was invalid for any reason.
        "500":
          description: An unexpected processing error occurred, OR the request was
            processed successfully but contains calculation error messages.
      security:
        - Auth0: []
      tags:
        - Term Life (TL) Illustrations
security:
  - Auth0: []
components:
  schemas:
    Illustration-Inputs-TL:
      title: Illustration Request for Term Life
      description: Illustration Request for Term Life product
      allOf:
        - $ref: "#/components/schemas/Illustration-Inputs-Projection-Base"
        - $ref: "#/components/schemas/Illustration-Inputs-New-Business-Base"
    Illustration-Response-TL:
      title: Illustration Response for Term Life
      description: Illustration Response for Term Life product
      allOf:
        - $ref: "#/components/schemas/Illustration-Response-Base"
      properties:
        assumed:
          $ref: "#/components/schemas/Scenario-Term"
        guaranteed:
          $ref: "#/components/schemas/Scenario-Term"
    Illustration-Inputs-Projection-Base:
      title: Projection Base
      description: Base for projection scenarios
      allOf:
        - $ref: "#/components/schemas/Illustration-Inputs-Base"
        - type: object
          properties:
            coverages:
              $ref: "#/components/schemas/Coverage-Collection-V4"
            parties:
              type: array
              description: Must have at least one party representing the Insured participant
              items:
                anyOf:
                  - $ref: "#/components/schemas/Non-Insured-Party"
                  - $ref: "#/components/schemas/Insured"
              minItems: 1
              uniqueItems: true
            options:
              $ref: "#/components/schemas/Options-Base"
          required:
            - coverages
            - parties
    Illustration-Inputs-New-Business-Base:
      title: New Business Base
      description: Properties for new business scenarios
      type: object
      properties:
        jurisdiction:
          type: string
          description: US state code.https://en.wikipedia.org/wiki/ISO_3166-2:US
          enum:
            - AK
            - AL
            - AR
            - AS
            - AZ
            - CA
            - CO
            - CT
            - DC
            - DE
            - FL
            - GA
            - GU
            - HI
            - IA
            - ID
            - IL
            - IN
            - KS
            - KY
            - LA
            - MA
            - MD
            - ME
            - MI
            - MN
            - MO
            - MP
            - MS
            - MT
            - NC
            - ND
            - NE
            - NH
            - NJ
            - NM
            - NV
            - NY
            - OH
            - OK
            - OR
            - PA
            - PR
            - RI
            - SC
            - SD
            - TN
            - TX
            - UM
            - UT
            - VA
            - VI
            - VT
            - WA
            - WI
            - WV
            - WY
        planCode:
          type: string
          description: Plan code
          example: EG123
      required:
        - jurisdiction
        - planCode
    Illustration-Response-Base:
      title: Illustration Response
      description: Fundamental Illustration response schema. See the schema for a
        specific product
      properties:
        id:
          type: string
          description: The unique identifier for the illustration request.
          example: ed13083d-d6b3-463d-a569-56b532d00fcd
        messages:
          type: array
          items:
            $ref: "#/components/schemas/Message"
    Scenario-Term:
      title: Scenario Results for Term Life
      description: Outputs for Term Life product across all scenarios. This object
        represents a single scenario (e.g. Assumed, Guaranteed, etc)
      type: object
      allOf:
        - $ref: "#/components/schemas/Scenario-Base"
      properties:
        annualTimeSeriesData:
          type: array
          items:
            $ref: "#/components/schemas/Single-Year-Values-Term"
        coverages:
          properties:
            acceleratedDeathBenefitForTerminalIllness:
              $ref: "#/components/schemas/Output-Coverage-Values"
            acceleratedDeathBenefitForChronicIllness:
              $ref: "#/components/schemas/Output-Coverage-Values"
            acceleratedDeathBenefitForCriticalIllness:
              $ref: "#/components/schemas/Output-Coverage-Values"
            accidentalDeathBenefit:
              $ref: "#/components/schemas/Output-Coverage-Values"
            charitableGiving:
              $ref: "#/components/schemas/Output-Coverage-Values"
            childrensTerm:
              $ref: "#/components/schemas/Output-Coverage-Values"
            waiverOfPremium:
              $ref: "#/components/schemas/Output-Coverage-Values"
    Illustration-Inputs-Base:
      title: Illustration Request
      description: Fundamental Illustration request schema. See the schema for a
        specific product
      properties:
        calculationType:
          type: string
          description: Type of calculation. Only SINGLE_ILLUSTRATION triggers a PDF to be
            generated.
          example: QUICK_QUOTE
          enum:
            - QUICK_QUOTE
            - SINGLE_ILLUSTRATION
            - AGGREGATE_ILLUSTRATION
            - COMPOSITE_ILLUSTRATION
            - POLICY_PAGE_PROJECTION
            - INITIAL_QUOTE
        source:
          type: string
          description: Source of the request
          example: ZINNIA
        illustrationRequestDate:
          $ref: "#/components/schemas/Date-Field"
        reports:
          type: object
          properties:
            internalRateOfReturnOn:
              type: boolean
              description: Internal rate of return
              example: true
            annualChargesOn:
              type: boolean
              description: Annual charges
              example: true
            annualChargesYears:
              type: number
              description: Annual charges years
              format: integer
              example: 10
            monthlyChargesOn:
              type: boolean
              description: Monthly charges
              example: true
            monthlyChargesYears:
              type: number
              format: integer
              description: Monthly charges years
              example: 10
            marketingPagesOn:
              type: boolean
              description: Whether to produce marketing pages
              example: true
            costDetailsReportOn:
              type: boolean
              description: Whether to produce the cost details report
              example: true
            inputSummaryOn:
              type: boolean
              description: Whether to produce the input summary
              example: true
      required:
        - calculationType
        - illustrationRequestDate
    Coverage-Collection-V4:
      title: Coverages
      description: A collection of benefits
      type: array
      items:
        title: Coverage
        description: A benefit conferred to a group of one or more participants
        type: object
        properties:
          coverageId:
            type: string
            description: Coverage id
            example: BASE_COVERAGE
            enum:
              - BASE_COVERAGE
              - Rider_ABRTRM
              - Rider_CTR
              - Rider_ABRCHR
              - Rider_ADR
              - Rider_WPR
              - Rider_CGR
              - Rider_GIBR
              - Rider_OPR
              - Rider_OWDR
              - Rider_WDR
              - Rider_NHR
              - Rider_ABRCRI
              - Rider_OWP
          riderYears:
            type: number
            format: integer
            example: 10
            description: Rider years
          currentAmount:
            type: number
            format: double
            example: 1000
            description: Current amount
          participants:
            $ref: "#/components/schemas/Participant-Collection-V4"
        required:
          - coverageId
    Non-Insured-Party:
      title: Non-Insured Party
      description: |
        Represents a party with a roleCode other than `INSURED`
      type: object
      allOf:
        - $ref: "#/components/schemas/Party-Base"
      properties:
        roleCode:
          $ref: "#/components/schemas/Party-Role"
      required:
        - roleCode
    Insured:
      title: Insured Party
      description: |
        Represents a party with roleCode: `Insured`
      type: object
      allOf:
        - $ref: "#/components/schemas/Party-Base"
      properties:
        roleCode:
          type: string
          enum:
            - INSURED
          example: INSURED
      required:
        - lastName
        - gender
        - roleCode
    Options-Base:
      title: Options
      description: Fundamental Options schema. Some products may have product-specific
        Options.
      type: object
      required:
        - revisedIllustration
        - solveFor
        - paymentMode
      properties:
        revisedIllustration:
          type: boolean
          description: Whether the illustration is revised
          example: true
        solveFor:
          type: string
          description: Solve for
          example: PREMIUM
          enum:
            - PREMIUM
            - FACE
            - NO_SOLVE
        fixedCostPeriod:
          type: number
          description: Fixed cost period
          example: 10
          deprecated: true
        fixedCostPeriodOption:
          type: number
          format: integer
          description: The fixed cost period in YEARS or at AGE depending on the value of
            fixedCostPeriodUnit
          example: 65
        fixedCostPeriodUnit:
          type: string
          description: The Unit that the number in fixedCostPeriodOption represents
          example: AGE
          enum:
            - AGE
            - YEARS
        paymentMode:
          $ref: "#/components/schemas/Frequency"
        discountIndicator:
          type: string
          description: Discount indicator
          example: MULTIPRODUCT
          enum:
            - MULTIPRODUCT
            - NON
        paymentMethod:
          type: string
          description: Payment method
          example: DTCC
          enum:
            - DTCC
            - CREDITCARD
            - ACH
            - CHECK
            - EXCHANGE
            - WIRE
        premiumDuration:
          type: number
          format: integer
          description: Premium duration
          example: 10
        premiumDurationOption:
          type: string
          description: Premium duration option
          example: YEARS
          enum:
            - AGE
            - YEARS
            - MATURITY
        faceAmount:
          $ref: "#/components/schemas/Schedule-FaceAmount"
        premium:
          $ref: "#/components/schemas/Schedule-Premium"
        targetCashValueOption:
          type: string
          description: Target cash value option
          example: SPECIFY_AMOUNT
          enum:
            - SPECIFY_AMOUNT
            - ENDOWMENT
        targetCashValueAtOption:
          type: string
          enum:
            - AGE
            - YEAR
          description: Whether to use targetCashValueAge or targetCashValueYear
          example: AGE
        targetCashValueAge:
          type: number
          format: integer
          description: If target cash value should be at an age, use this. If it should be
            at a year, use targetCashValueYear. targetCashValueAtOption
            determines which is used.
          example: 10
        targetCashValueYear:
          type: number
          format: integer
          description: If target cash value should be at a year, use this. If it should be
            at an age, use targetCashValueAge. targetCashValueAtOption
            determines which is used.
          example: 10
        targetCashValueAmount:
          type: number
          format: double
          description: Target cash value amount
          example: 10000
    Message:
      title: Message
      description: A structured signal
      type: object
      properties:
        code:
          type: integer
        severity:
          type: string
          enum:
            - INFO
            - WARNING
            - ERROR
        text:
          type: string
        returnTo:
          type: string
      required:
        - code
        - text
    Scenario-Base:
      title: Base Scenario Results
      description: Fundamental outputs that apply across all products. This object
        represents a single scenario (e.g. Assumed, Guaranteed, etc)
      type: object
      properties:
        annualTimeSeriesData:
          description: Collection of values that vary annually - each item represents all
            the values for a single year
          type: array
          items:
            $ref: "#/components/schemas/Single-Year-Values-Base"
        annualPolicyManagementFee:
          type: number
          format: double
          description: Annual policy management fee
          example: 60
        annualPremiumAmount:
          type: number
          format: double
          description: Annual premium amount
          example: 397.2
        baseCoverageEndYear:
          type: number
          format: integer
          description: Base coverage end year
          example: 86
        costIndex:
          type: object
          properties:
            netPaymentCostIndexYear10:
              type: number
              format: double
              description: Net payment cost index year 10
              example: 1.59
            netPaymentCostIndexYear20:
              type: number
              format: double
              description: Net payment cost index year 20
              example: 1.59
            surrenderCostIndexYear10:
              type: number
              format: double
              description: Surrender cost index year 20
              example: 1.59
            surrenderCostIndexYear20:
              type: number
              format: double
              description: Surrender cost index year 20
              example: 1.59
        coverages:
          type: object
          description: These values represent the initial or constant state of coverages
          properties:
            base:
              $ref: "#/components/schemas/Output-Coverage-Values"
        initial:
          type: object
          properties:
            totalFaceAmount:
              type: number
              format: double
              description: Total Face Amount
              example: 22500.05
            totalPremium:
              type: number
              format: double
              description: Premium
              example: 33.1
            accountValue:
              type: number
              format: double
              example: 0.104742
            totalModalPremium:
              type: number
              format: double
              example: 100.2
            totalPolicyFee:
              type: number
              format: double
              example: 600
            totalModalPolicyFee:
              type: number
              format: double
              example: 500
        interestRate:
          type: number
          format: double
          description: Interest rate
          example: 5.1
        issueAge:
          type: number
          format: integer
          description: Issue age
          example: 35
        lapse:
          type: object
          properties:
            age:
              type: number
              format: integer
              description: Lapse age
              example: 122
            year:
              type: number
              format: integer
              description: Lapse year
              example: 87
            month:
              type: number
              format: integer
              description: Lapse month
              example: 12
        loan:
          type: object
          properties:
            chargeRate:
              type: number
              format: double
              description: Charge rate
              example: 4.5
            chargeRateArrears:
              type: number
              format: double
              description: Charge rate arrears
              example: 4.5
            creditRate:
              type: number
              format: double
              description: Credit rate
              example: 4.3
            takenIndicator:
              type: number
              format: integer
              description: Taken indicator
              example: 0
        maturityYear:
          type: number
          format: integer
          description: Maturity year
          example: 86
        payToAge:
          type: number
          format: integer
          description: Pay to age
          example: 121
        payment:
          type: object
          properties:
            mode:
              type: number
              format: integer
              description: Payment mode
              example: 12
            term:
              type: number
              format: integer
              description: Payment term
              example: 86
        policyStartYear:
          type: number
          format: integer
          description: Policy start year
          example: 1
        premium:
          type: object
          properties:
            amount:
              type: number
              format: double
              description: Premium amount
              example: 33.1
            duration:
              type: number
              format: integer
              description: Premium duration
              example: 86
            durationAge:
              type: number
              format: integer
              description: Premium duration age
              example: 121
        scenarioEndAge:
          type: number
          format: integer
          description: Scenario end age
          example: 122
        totalFirstPaymentAmount:
          type: number
          format: double
          description: Total first payment amount
          example: 33.1
        netSurrenderValue:
          type: object
          properties:
            age65:
              type: number
              format: double
              example: 1.385921
            finalAge:
              type: number
              format: double
              example: 1.385921
        premiumFinalAge:
          type: number
          format: double
          example: 110.04
    Single-Year-Values-Term:
      title: Single-Year Values for Term Life
      description: A single-year slice of data that varies annually - these values are
        specific to IUL products
      allOf:
        - $ref: "#/components/schemas/Single-Year-Values-Base"
      properties:
        coverages:
          type: object
          properties:
            acceleratedDeathBenefitForTerminalIllness:
              $ref: "#/components/schemas/Output-Coverage-Values"
            acceleratedDeathBenefitForChronicIllness:
              $ref: "#/components/schemas/Output-Coverage-Values"
            acceleratedDeathBenefitForCriticalIllness:
              $ref: "#/components/schemas/Output-Coverage-Values"
            accidentalDeathBenefit:
              $ref: "#/components/schemas/Output-Coverage-Values"
            charitableGiving:
              $ref: "#/components/schemas/Output-Coverage-Values"
            childrensTerm:
              $ref: "#/components/schemas/Output-Coverage-Values"
            waiverOfPremium:
              $ref: "#/components/schemas/Output-Coverage-Values"
            netSurrenderValue:
              deprecated: true
              type: number
              format: double
              example: 0
            reducedPaidUp:
              deprecated: true
              type: number
              format: double
              example: 100
        totalSurplusDistributions:
          type: number
          format: double
          example: 1.23
        paidUpAdditionDeathBenefit:
          type: number
          format: double
          example: 1.23
        paidUpAdditionCashValue:
          type: number
          format: double
          example: 1.23
        reducedPaidUp:
          type: number
          format: double
          example: 1.23
        modifiedEndowmentContractIndicator:
          type: number
          format: double
          example: 0
    Output-Coverage-Values:
      title: Output Coverage Values
      description: Result values relevant to a specific coverage
      type: object
      properties:
        policyFee:
          type: number
          format: double
          description: Annual policy fee
          example: 150.2
        modalPolicyFee:
          type: number
          format: double
          description: Modal policy fee
          example: 0
        premium:
          type: number
          format: double
          description: Annual premium
          example: 0
        modalPremium:
          type: number
          format: double
          description: Modal premium
          example: 0
        tablePremium:
          type: number
          format: double
          description: Annual table premium
          example: 0
        modalTablePremium:
          type: number
          format: double
          description: Modal table premium
          example: 0
        flatExtraPremium:
          description: Flat Extra premium
          type: number
          format: double
          example: 5
        modalFlatExtraPremium:
          type: number
          format: double
          description: Modal flat extra premium
          example: 0
        faceAmount:
          type: number
          format: double
          description: Coverage face amount
          example: 2500
        isIncludedInQuote:
          type: boolean
          example: true
          description: indicates that this coverage was actually used in producing the quote
    Date-Field:
      type: string
      format: date
      pattern: ([0-9]{4})-([0-9]{2})-([0-9]{2})
      description: Date (with pattern "yyyy-mm-dd")
      example: 2025-05-13
    Participant-Collection-V4:
      title: Participants
      description: A collection of unique participants
      type: array
      items:
        title: Participant
        description: An entity with a stake in a policy
        type: object
        properties:
          issueAge:
            type: number
            format: integer
            description: Issue age
            example: 30
          participantId:
            type: string
            description: Participant id (UUID)
            example: 2ad51ecf-9923-437f-a6f0-70968e464cdb
          underwritingClass:
            type: string
            description: Underwriting class
            example: ULTRANONTOBACCO
            enum:
              - ULTRANONTOBACCO
              - ELITENONTOBACCO
              - PREFERREDNONTOBACCO
              - STANDARDNONTOBACCO
              - STANDARDTOBACCO
              - STANDARDAGGREGATE
              - SUBSTANDARDNONTOBACCO
              - SUBSTANDARDTOBACCO
              - STANDARDPLUSNONTOBACCO
              - PREFERREDTOBACCO
              - STANDARDCONVERSIONNONTOBACCO
              - STANDARDCONVERSIONTOBACCO
              - STANDARDPLUSBLEND
              - STANDARDPLUSTOBACCO
              - STANDARDBLEND
              - SUBSTANDARDBLEND
              - PREFERREDSELECTNONTOBACCO
              - PREFERREDSELECTBLEND
              - PREFERREDSELECTTOBACCO
              - PREFERREDBLEND
          subStandardRating:
            type: string
            description: Substandard rating
            example: TABLEA
            enum:
              - TABLEA
              - TABLEB
              - TABLEC
              - TABLED
              - TABLEE
              - TABLEF
              - TABLEG
              - TABLEH
              - TABLEI
              - TABLEJ
              - TABLEK
              - TABLEL
              - TABLEM
              - TABLEN
              - TABLEO
              - TABLEP
              - NONETABLE
          flatExtra:
            type: array
            description: Flat extra
            items:
              $ref: "#/components/schemas/Flat-Extra"
        required:
          - issueAge
          - participantId
      uniqueItems: true
    Party-Base:
      title: Party
      type: object
      description: Fundamental party object - see schema for specific role
      required:
        - partyId
        - partyTypeCode
      discriminator:
        propertyName: roleCode
      properties:
        partyId:
          type: string
          format: uuid
          description: Party id
          example: 95f5ece9-e40b-450b-ad39-daa217894e69
        partyTypeCode:
          example: INDIVIDUAL
          type: string
          description: Party type
          enum:
            - INDIVIDUAL
            - ORGANIZATION
            - TRUST
        gender:
          type: string
          description: Gender
          example: MALE
          enum:
            - MALE
            - FEMALE
            - UNISEX
            - OTHER
        dateOfBirth:
          type: string
          format: date
          pattern: ([0-9]{4})-([0-9]{2})-([0-9]{2})
          description: Date (with pattern "yyyy-mm-dd")
          example: 1990-05-13
        firstName:
          type: string
          description: First Name
          example: John
        middleName:
          type: string
          description: Middle Name or Initial
          example: Frederick
        lastName:
          type: string
          description: Last name
          example: Doe
        suffix:
          type: string
          description: Name Suffix
          example: Jr.
        address:
          type: object
          description: Address
          properties:
            addressLine1:
              type: string
              description: Address line 1
              example: 123 Charter Oak
            addressLine2:
              type: string
              description: Address line 2
              example: Suite 456
            city:
              type: string
              description: Address city
              example: Manchester
            state:
              type: string
              enum:
                - AL
                - AK
                - AZ
                - AR
                - CA
                - CO
                - CT
                - DC
                - DE
                - FL
                - GA
                - HI
                - ID
                - IL
                - IN
                - IA
                - KS
                - KY
                - LA
                - ME
                - MD
                - MA
                - MI
                - MN
                - MS
                - MO
                - MT
                - NE
                - NV
                - NH
                - NJ
                - NM
                - NY
                - NC
                - ND
                - OH
                - OK
                - OR
                - PA
                - RI
                - SC
                - SD
                - TN
                - TX
                - UT
                - VT
                - VA
                - WA
                - WV
                - WI
                - WY
              description: US state code.https://en.wikipedia.org/wiki/ISO_3166-2:US
              example: CT
            zipCode:
              type: string
              description: Zip Code. Max char allowed is 9.
              maxLength: 9
              example: "123456"
        email:
          type: string
          format: email
          description: Email
          example: person@example.com
        phoneType:
          type: string
          description: Phone type
          example: HOME
          enum:
            - MOBILE
            - HOME
            - BUSINESS
            - CLAIMCENTER
            - CUSTOMERSERVICE
            - CORPORATEOFFICE
            - FAX
            - UNKNOWN
            - OTHER
        phone:
          type: string
          description: Phone
          example: "1238675309"
        identification:
          type: object
          description: Identification
          properties:
            identificationType:
              type: string
              description: Identification type
              example: PASSPORT
              enum:
                - PASSPORT
                - STATEPHOTOID
                - DRIVERLICENSENUMBER
                - SSN
                - TIN
                - OTHER
                - EXTERNAL
            identificationKey:
              type: string
              description: Identification key
              example: ECN
            identificationDescription:
              type: string
              description: Identification description
              example: ECN
            identificationValue:
              type: string
              description: Identification value
              example: ECN
    Party-Role:
      title: Party Role
      example: OWNER
      type: string
      description: The role of a given party
      enum:
        - OWNER
        - PRIMARYBENEFICIARY
        - CONTINGENTBENEFICIARY
        - INSURED
        - PAYOR
        - PAYEE
        - AGENT
        - PRIMARYWRITINGAGENT
        - PRIMARYSERVICINGAGENT
        - ADDITIONALSERVICINGAGENT
        - ADDITIONALWRITINGAGENT
        - THIRDPARTYDESIGNEE
        - JOINTOWNER
        - COVERAGEINSURED
        - ASSIGNEE
        - ANNUITANT
        - EXCHANGECOMPANY
        - JOINTANNUITANT
        - GRANTOR
        - TRUSTEE
        - POWEROFATTORNEY
        - AUTHORIZEDSIGNATORY
        - OTHERINTERESTEDPARTY
        - CONTINGENTOWNER
    Frequency:
      type: string
      description: Frequency
      example: DAILY
      enum:
        - DAILY
        - EVERYTWOWEEKS
        - MONTHLY
        - SEMIANNUAL
        - QUARTERLY
        - ANNUAL
        - SINGLEPAYMENT
    Schedule-FaceAmount:
      title: Face Amount Schedule
      allOf:
        - $ref: "#/components/schemas/Schedule-Base"
      properties:
        sequence:
          items:
            title: Face Amount Schedule Entry
            properties:
              value:
                example: 250000
                oneOf:
                  - type: number
                    format: double
                  - title: Face Amount Option
                    type: string
                    enum:
                      - SOLVE_FOR_TARGET_CASH_VALUE
                      - MINIMUM_NON_MEC
            required:
              - value
    Schedule-Premium:
      title: Premium Schedule
      allOf:
        - $ref: "#/components/schemas/Schedule-Base"
      properties:
        sequence:
          items:
            title: Premium Schedule Entry
            properties:
              value:
                example: 25000
                oneOf:
                  - type: number
                    format: double
                  - title: Premium Option
                    type: string
                    enum:
                      - SOLVE_FOR_TARGET_CASH_VALUE
                      - MINIMUM_PREMIUM
                      - TARGET_PREMIUM
                      - GUIDELINE_MAXIMUM_PREMIUM
                      - GUIDELINE_LEVEL_PREMIUM
                      - LEVEL_NON_MEC
            required:
              - value
    Single-Year-Values-Base:
      title: Single-Year Values
      description: A single-year slice of data that varies annually - these values
        apply to any scenario and any product
      type: object
      allOf:
        - $ref: "#/components/schemas/PropertyCollection-Loan"
      properties:
        year:
          type: number
          format: integer
        accountValue:
          type: number
          format: double
          example: 0.104742
        coverages:
          type: object
          description: Coverage-specific values which are annually variable. See under
            "initial" for values that are constant year-to-year
          properties:
            base:
              $ref: "#/components/schemas/Output-Coverage-Values"
        cumulativePremiumAmount:
          type: number
          format: double
          example: 397.2
        deathBenefitAmount:
          type: number
          format: double
          example: 250000.104742
        faceAmount:
          type: number
          format: double
          example: 250000
        insuranceAgeAtBeginningOfYear:
          type: number
          format: integer
          example: 35
        insuranceAgeAtEndOfYear:
          type: number
          format: integer
          example: 36
        perUnitCharge:
          type: number
          format: double
          example: 201.21
        policyValue:
          type: number
          format: double
          example: 0.104742
        premiumAmount:
          type: number
          format: double
          example: 397.2
        policyBasis:
          type: number
          format: double
          example: 110.04
        policyGain:
          type: number
          format: double
          example: 0
        surrenderValue:
          type: number
          format: double
          example: 0.102552
    Flat-Extra:
      title: Flat Extra
      type: object
      properties:
        type:
          type: string
          description: Type of flat extra
          example: PERMANENT
          enum:
            - PERMANENT
            - TEMPORARY
        amount:
          type: number
          format: double
          description: Amount
          example: 1000
        duration:
          type: number
          format: integer
          description: Duration
          example: 12
        durationType:
          type: string
          description: Duration type
          example: YEARS
          enum:
            - YEARS
            - MONTHS
        startDate:
          type: string
          format: date
          pattern: ([0-9]{4})-([0-9]{2})-([0-9]{2})
          description: Date (with pattern "yyyy-mm-dd")
          example: 2025-05-13
    Schedule-Base:
      title: Generic Schedule
      description: Represents a value that changes with time. The value is assumed to
        change annually and be tied to a duration unless otherwise specified via
        the Frequency and Basis properties
      type: object
      properties:
        frequency:
          $ref: "#/components/schemas/Frequency"
        basis:
          description: Specifies how to interpret the from and through properties for each
            entry.
          type: string
          example: AGE
          enum:
            - AGE
            - DURATION
            - RETIREMENT
        sequence:
          description: Collection of entries describing the changes in value over time
          type: array
          items:
            title: Schedule Entry
            description: Represents a limited time period for which a value is constant.
            type: object
            properties:
              from:
                description: starting point for the value, inclusive
                type: integer
                minimum: 1
                example: 1
              through:
                description: ending point for the value, inclusive
                type: integer
                minimum: 1
                example: 10
            required:
              - from
              - through
          minItems: 1
      required:
        - sequence
    PropertyCollection-Loan:
      title: Loan Property Collection
      description: Reusable collection of loan-related properties
      type: object
      properties:
        loan:
          type: object
          properties:
            amount:
              type: number
              format: double
              description: Loan amount
              example: 0
            interestCreditedAmount:
              type: number
              format: double
              description: Loan interest credited amount
              example: 0
            interestDueAmount:
              type: number
              format: double
              description: Loan interest due amount
              example: 0
            payoffAmount:
              type: number
              format: double
              description: Loan payoff amount
              example: 0
            maximumLoanAmount:
              type: number
              format: double
              description: Maximum loan amount
              example: 0
        netAccountValue:
          type: number
          format: double
          example: 0.104742
        netDeathBenefitAmount:
          type: number
          format: double
          example: 250000.104742
        netSurrenderValue:
          type: number
          format: double
          example: 0.104742
        policyNetOutlayAmount:
          type: number
          format: double
          example: 397.2
        premiumOutlayAmount:
          type: number
          format: double
          example: 397.2
  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
          auth_methods:
            - bearer
          scopes: []
        enabled: true
        protocols:
          - grpc
          - grpcs
          - http
          - https
```
