{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/hint-health/main/json-schema/hint-health-quote-sanitizer-schema.json",
  "title": "QuoteSanitizer",
  "x-generated": "2026-10-12",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/hint-health-quote-api-openapi.yml#/components/schemas/QuoteSanitizer",
  "type": "object",
  "properties": {
    "plan": {
      "$ref": "#/$defs/Association"
    },
    "members": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/QuoteSanitizer.MemberSanitizer"
      }
    },
    "period_in_months": {
      "type": "integer",
      "format": "int32",
      "description": "Billing period in months. 1 = monthly, 3 = quarterly, 6 = semi-annually, 12 = annually",
      "enum": [
        "1",
        "3",
        "6",
        "12"
      ]
    },
    "coupon": {
      "$ref": "#/$defs/Association",
      "description": "The coupon to apply to the quote (optional)"
    },
    "coupon_code": {
      "type": "string",
      "description": "The coupon code to apply to the quote (alternative to coupon object)"
    }
  },
  "required": [
    "plan",
    "members"
  ],
  "$defs": {
    "Association": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        }
      },
      "required": [
        "id"
      ]
    },
    "QuoteSanitizer.MemberSanitizer": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "description": "Choose one below. You can think of \"spouse\" as \"adult\". This is a naming issue that will hopefully be addressed in the future",
          "enum": [
            "primary",
            "child",
            "spouse"
          ]
        },
        "age": {
          "type": "integer",
          "format": "int32"
        },
        "uses_tobacco": {
          "type": "boolean"
        },
        "dob": {
          "type": "string",
          "format": "date",
          "description": "Date must be formatted as YYYY-MM-DD."
        },
        "start_date": {
          "type": "string",
          "format": "date",
          "description": "Date must be formatted as YYYY-MM-DD."
        }
      },
      "required": [
        "type",
        "uses_tobacco"
      ]
    }
  }
}