> ## Documentation Index
> Fetch the complete documentation index at: https://docs.yasmina.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Life S&P Products

> Generates Life S&P offers (premiums and benefits) from multiple insurers for a bank's customers.



## OpenAPI

````yaml /life-snp/openapi.json post /offers
openapi: 3.0.1
info:
  title: OpenAPI For Life Savings & Protection (Bank)
  description: >-
    APIs used by a bank channel to quote, issue, cancel, and claim on Life
    Savings & Protection policies.
  license:
    name: MIT
  version: 1.0.0
servers:
  - url: https://sandbox.yasmina.ai/api/v1/life-snp
  - url: https://production.yasmina.ai/api/v1/life-snp
security:
  - bearerAuth: []
paths:
  /offers:
    post:
      tags:
        - Offers
      summary: Life S&P Products
      description: >-
        Generates Life S&P offers (premiums and benefits) from multiple insurers
        for a bank's customers.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                applicant_id:
                  type: string
                  pattern: ^\d{10}$
                  description: Saudi National ID of the applicant (10 digits).
                date_of_birth:
                  type: string
                  format: date
                  description: YYYY-MM-DD
                gender:
                  type: string
                  enum:
                    - male
                    - female
                smoker:
                  type: boolean
                height_cm:
                  type: number
                  minimum: 100
                  maximum: 250
                weight_kg:
                  type: number
                  minimum: 30
                  maximum: 300
                occupation_class:
                  type: string
                  description: Insurer occupation class code or text.
                annual_income_sar:
                  type: number
                  minimum: 0
                policy_term_years:
                  type: integer
                  minimum: 5
                  maximum: 40
                premium_frequency:
                  type: string
                  enum:
                    - monthly
                    - quarterly
                    - semi_annual
                    - annual
                sum_assured:
                  type: number
                  minimum: 10000
                  description: SAR. Required if target_premium is not provided.
                target_premium:
                  type: number
                  minimum: 50
                  description: >-
                    SAR per chosen frequency. Required if sum_assured is not
                    provided.
                riders:
                  type: object
                  properties:
                    accidental_death:
                      type: boolean
                    critical_illness:
                      type: boolean
                    total_permanent_disability:
                      type: boolean
                    waiver_of_premium:
                      type: boolean
                distribution_channel:
                  type: string
                  enum:
                    - bank
                  default: bank
                extra_fields:
                  type: object
                  description: Optional key-value extras (max JSON-encoded size 255 chars).
                  additionalProperties: true
              required:
                - applicant_id
                - date_of_birth
                - gender
                - smoker
                - policy_term_years
                - premium_frequency
              oneOf:
                - required:
                    - sum_assured
                - required:
                    - target_premium
            example:
              applicant_id: '0123456789'
              date_of_birth: '1990-06-15'
              gender: male
              smoker: false
              height_cm: 178
              weight_kg: 80
              occupation_class: A
              annual_income_sar: 180000
              policy_term_years: 20
              premium_frequency: monthly
              target_premium: 250
              riders:
                critical_illness: true
                waiver_of_premium: true
              distribution_channel: bank
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Offer'
        '401':
          $ref: '#/components/responses/Unauthorized'
components:
  schemas:
    Offer:
      type: object
      properties:
        offer_id:
          type: string
        insurer:
          type: string
        sum_assured:
          type: number
        premium:
          type: number
        premium_frequency:
          type: string
        policy_term_years:
          type: integer
        riders_included:
          type: array
          items:
            type: string
        maturity_benefit:
          type: boolean
          description: Payout on maturity if applicable.
        notes:
          type: string
  responses:
    Unauthorized:
      description: Unauthorized
      content:
        application/json:
          schema:
            type: object
            properties:
              code:
                type: string
                example: '40101'
              message:
                type: string
                example: Unauthenticated
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer

````