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

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

# EligibilitySubjectResult

Composed eligibility result for a single evaluated subject. Null fields are omitted from the JSON response (@JsonInclude NON_NULL). Three shapes exist: evaluated (sections present), notAvailable (subject absent from product-transactions), or notConfigured (subject absent from transactions-params).

## OpenAPI definition

```yaml
openapi: 3.1.0
info:
  title: Zinnia Policy Transactions API.
  version: 1.0.8
servers:
  - url: https://dev.api.zinnia.io
    description: DEV Environment
  - url: https://qa.api.zinnia.io
    description: QA Environment
components:
  schemas:
    RestrictedTransactionResult:
      type: object
      description: A transaction affected by a restriction type, with its blocking status.
      properties:
        type:
          type: string
          description: Transaction type code.
          example: FullSurrender
        status:
          type: string
          description: How the transaction is blocked (e.g. Unavailable,
            CarrierApprovalNeeded).
          example: Unavailable
    EligibilitySectionResult:
      type: object
      description: >
        One evaluation section of a per-subject result (policyEligibility,
        userEligibility, or restriction).

        policyEligibility status: ELIGIBLE | NOT_ELIGIBLE | COULD_NOT_DETERMINE

        userEligibility status: ELIGIBLE | NOT_ELIGIBLE | COULD_NOT_DETERMINE

        restriction status: NOT_RESTRICTED | RESTRICTED | SOFT_RESTRICTED |
        HARD_RESTRICTED | COULD_NOT_DETERMINE
      properties:
        status:
          type: string
          enum:
            - ELIGIBLE
            - NOT_ELIGIBLE
            - NOT_RESTRICTED
            - RESTRICTED
            - SOFT_RESTRICTED
            - HARD_RESTRICTED
            - COULD_NOT_DETERMINE
          example: ELIGIBLE
        blockType:
          type: string
          description: Blocking type from the restriction. Present on restriction section
            only.
          example: Unavailable
        restrictionStatus:
          type: array
          description: >
            Distinct blocking status values across all active restrictions for
            this subject. Present on the restriction section only when
            status=RESTRICTED.
          items:
            type: string
          example:
            - Unavailable
            - CarrierApprovalNeeded
        access:
          type: array
          description: >
            Distinct access levels granted to the caller for this subject,
            derived from the permissions the caller actually holds. Present on
            userEligibility only when status=ELIGIBLE. The calling system
            decides how to act on this list.
          items:
            type: string
            enum:
              - VIEW
              - WRITE
              - DELETE
          example:
            - VIEW
            - WRITE
        reason:
          $ref: "#/components/schemas/EligibilityReason"
    EligibilityReason:
      type: object
      description: Structured reason for a non-passing or indeterminate section.
      properties:
        code:
          type: string
          description: Machine-readable reason code.
          example: INSUFFICIENT_PERMISSIONS
        message:
          type: string
          description: Human-readable explanation.
          example: Caller does not hold the required permissions for this transaction
    EligibilitySubjectResult:
      type: object
      description: >
        Composed eligibility result for a single evaluated subject. Null fields
        are omitted from the JSON response (@JsonInclude NON_NULL). Three shapes
        exist: evaluated (sections present), notAvailable (subject absent from
        product-transactions), or notConfigured (subject absent from
        transactions-params).
      required:
        - eligibilityItem
        - eligible
      properties:
        eligibilityItem:
          type: string
          description: Subject identifier evaluated (transaction type, capability code, or
            restriction type code).
          example: FullSurrender
        eligible:
          type: boolean
          description: >
            true only when policyEligibility=ELIGIBLE AND
            userEligibility=ELIGIBLE AND restriction is not
            RESTRICTED/HARD_RESTRICTED. SOFT_RESTRICTED does not fail
            eligibility. Any COULD_NOT_DETERMINE section forces eligible=false.
        restrictedTransactions:
          type: array
          description: >
            Populated only for eligibilityType=restrictions and only when
            eligible=true. Lists the transactions affected by this restriction
            type and their blocking status. Absent for all other eligibility
            types.
          items:
            $ref: "#/components/schemas/RestrictedTransactionResult"
        policyEligibility:
          $ref: "#/components/schemas/EligibilitySectionResult"
        userEligibility:
          $ref: "#/components/schemas/EligibilitySectionResult"
        restriction:
          $ref: "#/components/schemas/EligibilitySectionResult"
        notAvailable:
          type: boolean
          description: True when the subject is absent from product-transactions for this
            plan.
        notConfigured:
          type: boolean
          description: True when the subject has no entry in transactions-params.
        message:
          type: string
          description: Human-readable explanation accompanying notAvailable or
            notConfigured.
          example: Transaction Not Configured
```
