{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://klarfort.com/tools/loan-calculator/schema.json",
  "title": "Loan and EMI calculator",
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "currency": {
      "type": "string",
      "title": "Currency",
      "description": "Currency",
      "enum": [
        "USD",
        "EUR",
        "GBP",
        "JPY",
        "CHF",
        "CAD",
        "AUD",
        "CNY",
        "INR",
        "MXN",
        "BRL",
        "SGD",
        "HKD",
        "SEK",
        "NOK",
        "DKK",
        "NZD",
        "ZAR",
        "KRW",
        "TRY",
        "PLN",
        "CZK",
        "HUF",
        "AED",
        "THB",
        "IDR",
        "MYR",
        "PHP"
      ],
      "default": "USD"
    },
    "principal": {
      "type": "number",
      "title": "Loan principal",
      "description": "Loan principal",
      "minimum": 0,
      "maximum": 1000000000,
      "default": 20000
    },
    "annualRate": {
      "type": "number",
      "title": "Annual interest rate (%)",
      "description": "Annual interest rate (%)",
      "minimum": 0,
      "maximum": 100,
      "default": 6
    },
    "months": {
      "type": "integer",
      "title": "Duration in months",
      "description": "Duration in months",
      "minimum": 1,
      "maximum": 600,
      "default": 60
    },
    "rateType": {
      "type": "string",
      "title": "Interest calculation",
      "description": "Interest calculation",
      "enum": [
        "reducing",
        "flat"
      ],
      "default": "reducing"
    },
    "extraMonthly": {
      "type": "number",
      "title": "Extra monthly payment",
      "description": "Extra monthly payment",
      "minimum": 0,
      "maximum": 1000000000,
      "default": 0
    },
    "lumpSum": {
      "type": "number",
      "title": "One-time extra payment",
      "description": "One-time extra payment",
      "minimum": 0,
      "maximum": 1000000000,
      "default": 0
    },
    "lumpSumMonth": {
      "type": "integer",
      "title": "Month of one-time payment",
      "description": "Month of one-time payment",
      "minimum": 1,
      "maximum": 600,
      "default": 1
    },
    "originationFee": {
      "type": "number",
      "title": "Upfront origination fee",
      "description": "Upfront origination fee",
      "minimum": 0,
      "maximum": 1000000000,
      "default": 0
    }
  },
  "required": [
    "currency",
    "principal",
    "annualRate",
    "months",
    "rateType",
    "extraMonthly",
    "lumpSum",
    "lumpSumMonth",
    "originationFee"
  ]
}