{
  "openapi": "3.1.0",
  "info": {
    "title": "CalcBright Calculator API",
    "version": "1.0.0",
    "description": "Free, keyless JSON API for 100 calculators and converters. Every response includes a human-readable summary and a link to the full calculation on calcbright.com. MCP endpoint: https://calcbright.com/mcp",
    "contact": {
      "email": "contact@calcbright.com",
      "url": "https://calcbright.com/developers"
    }
  },
  "servers": [
    {
      "url": "https://calcbright.com"
    }
  ],
  "paths": {
    "/api/calc/mortgage-calculator": {
      "get": {
        "operationId": "mortgageCalculator",
        "summary": "Mortgage Calculator",
        "description": "Free mortgage calculator: estimate your monthly house payment with property tax, insurance, PMI and HOA, plus a full amortization schedule and extra-payment savings.",
        "tags": [
          "Finance"
        ],
        "parameters": [
          {
            "name": "price",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Home price",
              "minimum": 1000,
              "maximum": 100000000,
              "default": 400000
            }
          },
          {
            "name": "down",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Down payment (%)",
              "minimum": 0,
              "maximum": 99.99,
              "default": 20
            }
          },
          {
            "name": "rate",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Interest rate (%)",
              "minimum": 0,
              "maximum": 30,
              "default": 6.5
            }
          },
          {
            "name": "years",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Loan term (years)",
              "minimum": 1,
              "maximum": 50,
              "default": 30
            }
          },
          {
            "name": "currency",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Currency",
              "enum": [
                "USD",
                "EUR",
                "GBP",
                "JPY",
                "CAD",
                "AUD",
                "CHF",
                "CNY",
                "INR",
                "PKR",
                "AED",
                "SAR",
                "NZD",
                "SGD",
                "HKD",
                "SEK",
                "NOK",
                "DKK",
                "PLN",
                "TRY",
                "ZAR",
                "BRL",
                "MXN",
                "KRW",
                "THB",
                "MYR",
                "IDR",
                "PHP",
                "BDT",
                "EGP",
                "NGN",
                "KWD",
                "QAR",
                "RUB"
              ],
              "default": "USD"
            }
          },
          {
            "name": "tax",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Property tax / year",
              "minimum": 0,
              "maximum": 10000000,
              "default": 4800
            }
          },
          {
            "name": "insurance",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Home insurance / year",
              "minimum": 0,
              "maximum": 10000000,
              "default": 1500
            }
          },
          {
            "name": "hoa",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "HOA fees / month",
              "minimum": 0,
              "maximum": 1000000,
              "default": 0
            }
          },
          {
            "name": "pmi",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "PMI rate (if down < 20%) (%)",
              "minimum": 0,
              "maximum": 5,
              "default": 0.5
            }
          },
          {
            "name": "extra",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Extra payment / month Extra principal paid every month.",
              "minimum": 0,
              "maximum": 10000000,
              "default": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/loan-calculator": {
      "get": {
        "operationId": "loanCalculator",
        "summary": "Loan & EMI Calculator",
        "description": "Free loan and EMI calculator for personal, car, home and student loans. Get your monthly installment, total interest and a month-by-month repayment schedule.",
        "tags": [
          "Finance"
        ],
        "parameters": [
          {
            "name": "amount",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Loan amount",
              "minimum": 1,
              "maximum": 100000000,
              "default": 25000
            }
          },
          {
            "name": "currency",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Currency",
              "enum": [
                "USD",
                "EUR",
                "GBP",
                "JPY",
                "CAD",
                "AUD",
                "CHF",
                "CNY",
                "INR",
                "PKR",
                "AED",
                "SAR",
                "NZD",
                "SGD",
                "HKD",
                "SEK",
                "NOK",
                "DKK",
                "PLN",
                "TRY",
                "ZAR",
                "BRL",
                "MXN",
                "KRW",
                "THB",
                "MYR",
                "IDR",
                "PHP",
                "BDT",
                "EGP",
                "NGN",
                "KWD",
                "QAR",
                "RUB"
              ],
              "default": "USD"
            }
          },
          {
            "name": "rate",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Interest rate (% per year)",
              "minimum": 0,
              "maximum": 100,
              "default": 7.5
            }
          },
          {
            "name": "years",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Term (years)",
              "minimum": 0,
              "maximum": 50,
              "default": 5
            }
          },
          {
            "name": "months",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "+ months",
              "minimum": 0,
              "maximum": 11,
              "default": 0
            }
          },
          {
            "name": "extra",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Extra payment / month Optional prepayment added to every installment.",
              "minimum": 0,
              "maximum": 10000000,
              "default": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/compound-interest-calculator": {
      "get": {
        "operationId": "compoundInterestCalculator",
        "summary": "Compound Interest Calculator",
        "description": "Free compound interest calculator with monthly contributions. See how savings and investments grow year by year with daily, monthly or annual compounding.",
        "tags": [
          "Finance"
        ],
        "parameters": [
          {
            "name": "initial",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Initial deposit",
              "minimum": 0,
              "maximum": 1000000000,
              "default": 10000
            }
          },
          {
            "name": "currency",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Currency",
              "enum": [
                "USD",
                "EUR",
                "GBP",
                "JPY",
                "CAD",
                "AUD",
                "CHF",
                "CNY",
                "INR",
                "PKR",
                "AED",
                "SAR",
                "NZD",
                "SGD",
                "HKD",
                "SEK",
                "NOK",
                "DKK",
                "PLN",
                "TRY",
                "ZAR",
                "BRL",
                "MXN",
                "KRW",
                "THB",
                "MYR",
                "IDR",
                "PHP",
                "BDT",
                "EGP",
                "NGN",
                "KWD",
                "QAR",
                "RUB"
              ],
              "default": "USD"
            }
          },
          {
            "name": "monthly",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Monthly contribution",
              "minimum": 0,
              "maximum": 10000000,
              "default": 200
            }
          },
          {
            "name": "rate",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Annual interest rate (%)",
              "minimum": 0,
              "maximum": 100,
              "default": 7
            }
          },
          {
            "name": "years",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Years (years)",
              "minimum": 1,
              "maximum": 100,
              "default": 20
            }
          },
          {
            "name": "compounding",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Compounding",
              "enum": [
                "1",
                "2",
                "4",
                "12",
                "365"
              ],
              "default": "12"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/salary-calculator": {
      "get": {
        "operationId": "salaryCalculator",
        "summary": "Salary Converter",
        "description": "Convert hourly wage to annual salary and back. Free salary calculator for daily, weekly, bi-weekly, monthly and yearly pay, with optional take-home pay after tax.",
        "tags": [
          "Finance"
        ],
        "parameters": [
          {
            "name": "amount",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Pay amount",
              "minimum": 0.01,
              "maximum": 1000000000,
              "default": 25
            }
          },
          {
            "name": "period",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Per",
              "enum": [
                "hourly",
                "daily",
                "weekly",
                "biweekly",
                "semimonthly",
                "monthly",
                "quarterly",
                "annual"
              ],
              "default": "hourly"
            }
          },
          {
            "name": "hours",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Hours per week",
              "minimum": 1,
              "maximum": 168,
              "default": 40
            }
          },
          {
            "name": "days",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Days per week",
              "minimum": 1,
              "maximum": 7,
              "default": 5
            }
          },
          {
            "name": "weeks",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Paid weeks per year",
              "minimum": 1,
              "maximum": 52,
              "default": 52
            }
          },
          {
            "name": "currency",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Currency",
              "enum": [
                "USD",
                "EUR",
                "GBP",
                "JPY",
                "CAD",
                "AUD",
                "CHF",
                "CNY",
                "INR",
                "PKR",
                "AED",
                "SAR",
                "NZD",
                "SGD",
                "HKD",
                "SEK",
                "NOK",
                "DKK",
                "PLN",
                "TRY",
                "ZAR",
                "BRL",
                "MXN",
                "KRW",
                "THB",
                "MYR",
                "IDR",
                "PHP",
                "BDT",
                "EGP",
                "NGN",
                "KWD",
                "QAR",
                "RUB"
              ],
              "default": "USD"
            }
          },
          {
            "name": "tax",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Estimated tax rate (%) Optional: your approximate total tax & deduction rate.",
              "minimum": 0,
              "maximum": 99,
              "default": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/percentage-calculator": {
      "get": {
        "operationId": "percentageCalculator",
        "summary": "Percentage Calculator",
        "description": "Free percentage calculator: find X% of a number, what percent one number is of another, percentage change, increase and decrease – with step-by-step working.",
        "tags": [
          "Math"
        ],
        "parameters": [
          {
            "name": "mode",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Calculation",
              "enum": [
                "of",
                "what",
                "change",
                "increase",
                "decrease"
              ],
              "default": "of"
            }
          },
          {
            "name": "a",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Percent (X)",
              "minimum": -1000000000000000,
              "maximum": 1000000000000000,
              "default": 15
            }
          },
          {
            "name": "b",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Of number (Y)",
              "minimum": -1000000000000000,
              "maximum": 1000000000000000,
              "default": 200
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/age-calculator": {
      "get": {
        "operationId": "ageCalculator",
        "summary": "Age Calculator",
        "description": "Free age calculator: find your exact age in years, months, weeks and days from your date of birth, the day you were born and the countdown to your next birthday.",
        "tags": [
          "DateTime"
        ],
        "parameters": [
          {
            "name": "birth",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date",
              "description": "Date of birth (YYYY-MM-DD)",
              "default": "1990-01-01"
            }
          },
          {
            "name": "asOf",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date",
              "description": "Age on date Leave empty to use today's date. (YYYY-MM-DD)"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/bmi-calculator": {
      "get": {
        "operationId": "bmiCalculator",
        "summary": "BMI & Calorie Calculator",
        "description": "Free BMI calculator for adults in kg/cm or lb/ft. Get your Body Mass Index, healthy weight range, BMR and daily calories (TDEE) to lose, maintain or gain weight.",
        "tags": [
          "Health"
        ],
        "parameters": [
          {
            "name": "units",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Units",
              "enum": [
                "metric",
                "imperial"
              ],
              "default": "metric"
            }
          },
          {
            "name": "sex",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Sex",
              "enum": [
                "male",
                "female"
              ],
              "default": "male"
            }
          },
          {
            "name": "age",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Age (years)",
              "minimum": 15,
              "maximum": 100,
              "default": 30
            }
          },
          {
            "name": "cm",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Height (cm)",
              "minimum": 50,
              "maximum": 280,
              "default": 175
            }
          },
          {
            "name": "ft",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Height (ft)",
              "minimum": 1,
              "maximum": 9,
              "default": 5
            }
          },
          {
            "name": "inch",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "(in)",
              "minimum": 0,
              "maximum": 11.99,
              "default": 9
            }
          },
          {
            "name": "kg",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Weight (kg)",
              "minimum": 10,
              "maximum": 650,
              "default": 70
            }
          },
          {
            "name": "lb",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Weight (lb)",
              "minimum": 22,
              "maximum": 1430,
              "default": 155
            }
          },
          {
            "name": "activity",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Activity level",
              "enum": [
                "sedentary",
                "light",
                "moderate",
                "active",
                "very"
              ],
              "default": "light"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/unit-converter": {
      "get": {
        "operationId": "unitConverter",
        "summary": "Unit Converter",
        "description": "Free unit converter for length, weight, temperature, volume, area, speed, time, data, energy and pressure. Metric ↔ imperial with exact formulas and tables.",
        "tags": [
          "Conversion"
        ],
        "parameters": [
          {
            "name": "value",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Value",
              "minimum": -1000000000000000,
              "maximum": 1000000000000000,
              "default": 1
            }
          },
          {
            "name": "from",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "From",
              "enum": [
                "mm",
                "cm",
                "meters",
                "km",
                "inches",
                "feet",
                "yards",
                "miles",
                "nautical-miles",
                "mg",
                "grams",
                "kg",
                "tonnes",
                "ounces",
                "pounds",
                "stone",
                "celsius",
                "fahrenheit",
                "kelvin",
                "ml",
                "liters",
                "cubic-meters",
                "teaspoons",
                "tablespoons",
                "fluid-ounces",
                "cups",
                "pints",
                "quarts",
                "gallons",
                "imperial-gallons",
                "square-feet",
                "square-meters",
                "square-yards",
                "acres",
                "hectares",
                "square-km",
                "square-miles",
                "mps",
                "kmh",
                "mph",
                "knots",
                "seconds",
                "minutes",
                "hours",
                "days",
                "weeks",
                "years",
                "bits",
                "bytes",
                "kb",
                "mb",
                "gb",
                "tb",
                "mib",
                "gib",
                "joules",
                "kilojoules",
                "calories",
                "kwh",
                "btu",
                "pascals",
                "kpa",
                "bar",
                "psi",
                "atm",
                "mmhg"
              ],
              "default": "cm"
            }
          },
          {
            "name": "to",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "To",
              "enum": [
                "mm",
                "cm",
                "meters",
                "km",
                "inches",
                "feet",
                "yards",
                "miles",
                "nautical-miles",
                "mg",
                "grams",
                "kg",
                "tonnes",
                "ounces",
                "pounds",
                "stone",
                "celsius",
                "fahrenheit",
                "kelvin",
                "ml",
                "liters",
                "cubic-meters",
                "teaspoons",
                "tablespoons",
                "fluid-ounces",
                "cups",
                "pints",
                "quarts",
                "gallons",
                "imperial-gallons",
                "square-feet",
                "square-meters",
                "square-yards",
                "acres",
                "hectares",
                "square-km",
                "square-miles",
                "mps",
                "kmh",
                "mph",
                "knots",
                "seconds",
                "minutes",
                "hours",
                "days",
                "weeks",
                "years",
                "bits",
                "bytes",
                "kb",
                "mb",
                "gb",
                "tb",
                "mib",
                "gib",
                "joules",
                "kilojoules",
                "calories",
                "kwh",
                "btu",
                "pascals",
                "kpa",
                "bar",
                "psi",
                "atm",
                "mmhg"
              ],
              "default": "inches"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/currency-converter": {
      "get": {
        "operationId": "currencyConverter",
        "summary": "Currency Converter",
        "description": "Free currency converter with exchange rates updated every few hours. Convert USD, EUR, GBP, INR, PKR, AED and 30+ currencies with quick conversion tables.",
        "tags": [
          "Conversion"
        ],
        "parameters": [
          {
            "name": "amount",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Amount",
              "minimum": 0,
              "maximum": 1000000000000000,
              "default": 100
            }
          },
          {
            "name": "from",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "From",
              "enum": [
                "USD",
                "EUR",
                "GBP",
                "JPY",
                "CAD",
                "AUD",
                "CHF",
                "CNY",
                "INR",
                "PKR",
                "AED",
                "SAR",
                "NZD",
                "SGD",
                "HKD",
                "SEK",
                "NOK",
                "DKK",
                "PLN",
                "TRY",
                "ZAR",
                "BRL",
                "MXN",
                "KRW",
                "THB",
                "MYR",
                "IDR",
                "PHP",
                "BDT",
                "EGP",
                "NGN",
                "KWD",
                "QAR",
                "RUB"
              ],
              "default": "USD"
            }
          },
          {
            "name": "to",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "To",
              "enum": [
                "USD",
                "EUR",
                "GBP",
                "JPY",
                "CAD",
                "AUD",
                "CHF",
                "CNY",
                "INR",
                "PKR",
                "AED",
                "SAR",
                "NZD",
                "SGD",
                "HKD",
                "SEK",
                "NOK",
                "DKK",
                "PLN",
                "TRY",
                "ZAR",
                "BRL",
                "MXN",
                "KRW",
                "THB",
                "MYR",
                "IDR",
                "PHP",
                "BDT",
                "EGP",
                "NGN",
                "KWD",
                "QAR",
                "RUB"
              ],
              "default": "EUR"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/time-zone-converter": {
      "get": {
        "operationId": "timeZoneConverter",
        "summary": "Time Zone Converter",
        "description": "Free time zone converter: convert a date and time between any two cities, with daylight saving time handled automatically, plus a live world clock.",
        "tags": [
          "DateTime"
        ],
        "parameters": [
          {
            "name": "when",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Date & time Leave empty to use the current time. (YYYY-MM-DDTHH:MM)"
            }
          },
          {
            "name": "from",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "From",
              "enum": [
                "Pacific/Honolulu",
                "America/Anchorage",
                "America/Los_Angeles",
                "America/Denver",
                "America/Phoenix",
                "America/Chicago",
                "America/New_York",
                "America/Toronto",
                "America/Mexico_City",
                "America/Bogota",
                "America/Sao_Paulo",
                "America/Argentina/Buenos_Aires",
                "UTC",
                "Europe/London",
                "Europe/Dublin",
                "Europe/Lisbon",
                "Europe/Paris",
                "Europe/Berlin",
                "Europe/Madrid",
                "Europe/Rome",
                "Europe/Amsterdam",
                "Europe/Stockholm",
                "Europe/Athens",
                "Europe/Istanbul",
                "Europe/Moscow",
                "Africa/Cairo",
                "Africa/Lagos",
                "Africa/Johannesburg",
                "Africa/Nairobi",
                "Asia/Riyadh",
                "Asia/Dubai",
                "Asia/Tehran",
                "Asia/Karachi",
                "Asia/Kolkata",
                "Asia/Kathmandu",
                "Asia/Dhaka",
                "Asia/Bangkok",
                "Asia/Jakarta",
                "Asia/Singapore",
                "Asia/Hong_Kong",
                "Asia/Shanghai",
                "Asia/Manila",
                "Asia/Seoul",
                "Asia/Tokyo",
                "Australia/Perth",
                "Australia/Adelaide",
                "Australia/Sydney",
                "Pacific/Auckland"
              ],
              "default": "America/New_York"
            }
          },
          {
            "name": "to",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "To",
              "enum": [
                "Pacific/Honolulu",
                "America/Anchorage",
                "America/Los_Angeles",
                "America/Denver",
                "America/Phoenix",
                "America/Chicago",
                "America/New_York",
                "America/Toronto",
                "America/Mexico_City",
                "America/Bogota",
                "America/Sao_Paulo",
                "America/Argentina/Buenos_Aires",
                "UTC",
                "Europe/London",
                "Europe/Dublin",
                "Europe/Lisbon",
                "Europe/Paris",
                "Europe/Berlin",
                "Europe/Madrid",
                "Europe/Rome",
                "Europe/Amsterdam",
                "Europe/Stockholm",
                "Europe/Athens",
                "Europe/Istanbul",
                "Europe/Moscow",
                "Africa/Cairo",
                "Africa/Lagos",
                "Africa/Johannesburg",
                "Africa/Nairobi",
                "Asia/Riyadh",
                "Asia/Dubai",
                "Asia/Tehran",
                "Asia/Karachi",
                "Asia/Kolkata",
                "Asia/Kathmandu",
                "Asia/Dhaka",
                "Asia/Bangkok",
                "Asia/Jakarta",
                "Asia/Singapore",
                "Asia/Hong_Kong",
                "Asia/Shanghai",
                "Asia/Manila",
                "Asia/Seoul",
                "Asia/Tokyo",
                "Australia/Perth",
                "Australia/Adelaide",
                "Australia/Sydney",
                "Pacific/Auckland"
              ],
              "default": "Europe/London"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/401k-calculator": {
      "get": {
        "operationId": "401kCalculator",
        "summary": "401(k) Calculator",
        "description": "Free 401k calculator: project your balance at retirement from salary, contribution rate, employer match, raises and returns, with a year-by-year growth table.",
        "tags": [
          "Finance"
        ],
        "parameters": [
          {
            "name": "salary",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Annual salary",
              "minimum": 1000,
              "maximum": 100000000,
              "default": 75000
            }
          },
          {
            "name": "currency",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Currency",
              "enum": [
                "USD",
                "EUR",
                "GBP",
                "JPY",
                "CAD",
                "AUD",
                "CHF",
                "CNY",
                "INR",
                "PKR",
                "AED",
                "SAR",
                "NZD",
                "SGD",
                "HKD",
                "SEK",
                "NOK",
                "DKK",
                "PLN",
                "TRY",
                "ZAR",
                "BRL",
                "MXN",
                "KRW",
                "THB",
                "MYR",
                "IDR",
                "PHP",
                "BDT",
                "EGP",
                "NGN",
                "KWD",
                "QAR",
                "RUB"
              ],
              "default": "USD"
            }
          },
          {
            "name": "contribution",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Your contribution (% of pay)",
              "minimum": 0,
              "maximum": 100,
              "default": 10
            }
          },
          {
            "name": "balance",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Current 401(k) balance",
              "minimum": 0,
              "maximum": 10000000000,
              "default": 20000
            }
          },
          {
            "name": "match",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Employer match (%) e.g. 50% of what you contribute…",
              "minimum": 0,
              "maximum": 200,
              "default": 50
            }
          },
          {
            "name": "matchLimit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "…up to (% of pay)",
              "minimum": 0,
              "maximum": 100,
              "default": 6
            }
          },
          {
            "name": "age",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Current age (years)",
              "minimum": 15,
              "maximum": 90,
              "default": 30
            }
          },
          {
            "name": "retireAge",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Retirement age (years)",
              "minimum": 20,
              "maximum": 100,
              "default": 65
            }
          },
          {
            "name": "rate",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Expected annual return (%)",
              "minimum": 0,
              "maximum": 30,
              "default": 7
            }
          },
          {
            "name": "raise",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Annual salary increase (%)",
              "minimum": 0,
              "maximum": 30,
              "default": 3
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/apr-calculator": {
      "get": {
        "operationId": "aprCalculator",
        "summary": "APR Calculator",
        "description": "Free APR calculator: find the true annual percentage rate of a loan once origination and upfront fees are included, plus the monthly payment and total cost.",
        "tags": [
          "Finance"
        ],
        "parameters": [
          {
            "name": "amount",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Loan amount",
              "minimum": 100,
              "maximum": 10000000000,
              "default": 20000
            }
          },
          {
            "name": "currency",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Currency",
              "enum": [
                "USD",
                "EUR",
                "GBP",
                "JPY",
                "CAD",
                "AUD",
                "CHF",
                "CNY",
                "INR",
                "PKR",
                "AED",
                "SAR",
                "NZD",
                "SGD",
                "HKD",
                "SEK",
                "NOK",
                "DKK",
                "PLN",
                "TRY",
                "ZAR",
                "BRL",
                "MXN",
                "KRW",
                "THB",
                "MYR",
                "IDR",
                "PHP",
                "BDT",
                "EGP",
                "NGN",
                "KWD",
                "QAR",
                "RUB"
              ],
              "default": "USD"
            }
          },
          {
            "name": "rate",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Interest rate (%)",
              "minimum": 0,
              "maximum": 100,
              "default": 7
            }
          },
          {
            "name": "term",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Loan term (months)",
              "minimum": 1,
              "maximum": 600,
              "default": 60
            }
          },
          {
            "name": "fees",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Upfront fees Origination, processing, points and other finance charges.",
              "minimum": 0,
              "maximum": 1000000000,
              "default": 1000
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/area-calculator": {
      "get": {
        "operationId": "areaCalculator",
        "summary": "Area Calculator",
        "description": "Free area calculator for rectangles, squares, triangles, circles, trapezoids, parallelograms and ellipses. Enter sizes to get the area and formula.",
        "tags": [
          "Math"
        ],
        "parameters": [
          {
            "name": "shape",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Shape",
              "enum": [
                "rectangle",
                "square",
                "triangle",
                "circle",
                "trapezoid",
                "parallelogram",
                "ellipse"
              ],
              "default": "rectangle"
            }
          },
          {
            "name": "unit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Unit",
              "enum": [
                "none",
                "mm",
                "cm",
                "m",
                "km",
                "in",
                "ft",
                "yd",
                "mi"
              ],
              "default": "m"
            }
          },
          {
            "name": "x",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Length",
              "minimum": 0,
              "maximum": 1000000000,
              "default": 12
            }
          },
          {
            "name": "y",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Width",
              "minimum": 0,
              "maximum": 1000000000,
              "default": 8
            }
          },
          {
            "name": "z",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "",
              "minimum": 0,
              "maximum": 1000000000,
              "default": 5
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/auto-loan-calculator": {
      "get": {
        "operationId": "autoLoanCalculator",
        "summary": "Auto Loan Calculator",
        "description": "Free auto loan calculator: find your monthly car payment with sales tax, down payment and trade-in, plus total interest and a full amortization schedule.",
        "tags": [
          "Finance"
        ],
        "parameters": [
          {
            "name": "price",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Vehicle price",
              "minimum": 100,
              "maximum": 100000000,
              "default": 35000
            }
          },
          {
            "name": "currency",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Currency",
              "enum": [
                "USD",
                "EUR",
                "GBP",
                "JPY",
                "CAD",
                "AUD",
                "CHF",
                "CNY",
                "INR",
                "PKR",
                "AED",
                "SAR",
                "NZD",
                "SGD",
                "HKD",
                "SEK",
                "NOK",
                "DKK",
                "PLN",
                "TRY",
                "ZAR",
                "BRL",
                "MXN",
                "KRW",
                "THB",
                "MYR",
                "IDR",
                "PHP",
                "BDT",
                "EGP",
                "NGN",
                "KWD",
                "QAR",
                "RUB"
              ],
              "default": "USD"
            }
          },
          {
            "name": "down",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Down payment",
              "minimum": 0,
              "maximum": 100000000,
              "default": 5000
            }
          },
          {
            "name": "tradeIn",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Trade-in value",
              "minimum": 0,
              "maximum": 100000000,
              "default": 3000
            }
          },
          {
            "name": "tax",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Sales tax (%) Charged on the price minus the trade-in.",
              "minimum": 0,
              "maximum": 30,
              "default": 7
            }
          },
          {
            "name": "rate",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Interest rate (APR) (%)",
              "minimum": 0,
              "maximum": 40,
              "default": 6.5
            }
          },
          {
            "name": "term",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Loan term (months)",
              "minimum": 6,
              "maximum": 120,
              "default": 60
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/average-calculator": {
      "get": {
        "operationId": "averageCalculator",
        "summary": "Average Calculator",
        "description": "Free average calculator: paste a list of numbers to get the mean, median, mode, range, count and sum instantly, with step-by-step working for each result.",
        "tags": [
          "Math"
        ],
        "parameters": [
          {
            "name": "numbers",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Numbers Separate values with commas, spaces or new lines.",
              "maxLength": 100000,
              "default": "4, 8, 15, 16, 23, 42"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/bmr-calculator": {
      "get": {
        "operationId": "bmrCalculator",
        "summary": "BMR Calculator",
        "description": "Free BMR calculator: find your basal metabolic rate with the Mifflin–St Jeor, revised Harris–Benedict and Katch–McArdle equations, plus calories by activity.",
        "tags": [
          "Health"
        ],
        "parameters": [
          {
            "name": "units",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Units",
              "enum": [
                "metric",
                "imperial"
              ],
              "default": "metric"
            }
          },
          {
            "name": "sex",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Sex",
              "enum": [
                "male",
                "female"
              ],
              "default": "male"
            }
          },
          {
            "name": "age",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Age (years)",
              "minimum": 15,
              "maximum": 100,
              "default": 30
            }
          },
          {
            "name": "cm",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Height (cm)",
              "minimum": 100,
              "maximum": 250,
              "default": 175
            }
          },
          {
            "name": "ft",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Height (ft)",
              "minimum": 3,
              "maximum": 8,
              "default": 5
            }
          },
          {
            "name": "inch",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "(in)",
              "minimum": 0,
              "maximum": 11.99,
              "default": 9
            }
          },
          {
            "name": "kg",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Weight (kg)",
              "minimum": 25,
              "maximum": 350,
              "default": 70
            }
          },
          {
            "name": "lb",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Weight (lb)",
              "minimum": 55,
              "maximum": 770,
              "default": 155
            }
          },
          {
            "name": "bodyFat",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Body fat (optional, for Katch–McArdle) (%)",
              "minimum": 3,
              "maximum": 60
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/body-fat-calculator": {
      "get": {
        "operationId": "bodyFatCalculator",
        "summary": "Body Fat Calculator",
        "description": "Free body fat calculator using the US Navy method: enter height, neck, waist and hip measurements to get your body fat %, ACE category, fat mass and lean mass.",
        "tags": [
          "Health"
        ],
        "parameters": [
          {
            "name": "units",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Units",
              "enum": [
                "metric",
                "imperial"
              ],
              "default": "metric"
            }
          },
          {
            "name": "sex",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Sex",
              "enum": [
                "male",
                "female"
              ],
              "default": "male"
            }
          },
          {
            "name": "cm",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Height (cm)",
              "minimum": 100,
              "maximum": 250,
              "default": 178
            }
          },
          {
            "name": "ft",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Height (ft)",
              "minimum": 3,
              "maximum": 8,
              "default": 5
            }
          },
          {
            "name": "inch",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "(in)",
              "minimum": 0,
              "maximum": 11.99,
              "default": 10
            }
          },
          {
            "name": "kg",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Weight (kg)",
              "minimum": 25,
              "maximum": 350,
              "default": 80
            }
          },
          {
            "name": "lb",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Weight (lb)",
              "minimum": 55,
              "maximum": 770,
              "default": 176
            }
          },
          {
            "name": "neckCm",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Neck (below the larynx) (cm)",
              "minimum": 20,
              "maximum": 70,
              "default": 38
            }
          },
          {
            "name": "neckIn",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Neck (below the larynx) (in)",
              "minimum": 7,
              "maximum": 28,
              "default": 15
            }
          },
          {
            "name": "waistCm",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Waist (men: at navel · women: narrowest) (cm)",
              "minimum": 40,
              "maximum": 200,
              "default": 86
            }
          },
          {
            "name": "waistIn",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Waist (men: at navel · women: narrowest) (in)",
              "minimum": 15,
              "maximum": 79,
              "default": 34
            }
          },
          {
            "name": "hipCm",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Hips (widest point) (cm)",
              "minimum": 50,
              "maximum": 200,
              "default": 100
            }
          },
          {
            "name": "hipIn",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Hips (widest point) (in)",
              "minimum": 19,
              "maximum": 79,
              "default": 39.5
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/break-even-calculator": {
      "get": {
        "operationId": "breakEvenCalculator",
        "summary": "Break-Even Calculator",
        "description": "Free break-even calculator: enter fixed costs, price and variable cost per unit to find the break-even point in units and sales, plus the contribution margin.",
        "tags": [
          "Finance"
        ],
        "parameters": [
          {
            "name": "fixed",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Fixed costs (per period) Rent, salaries, insurance…",
              "minimum": 0,
              "maximum": 1000000000000,
              "default": 12000
            }
          },
          {
            "name": "currency",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Currency",
              "enum": [
                "USD",
                "EUR",
                "GBP",
                "JPY",
                "CAD",
                "AUD",
                "CHF",
                "CNY",
                "INR",
                "PKR",
                "AED",
                "SAR",
                "NZD",
                "SGD",
                "HKD",
                "SEK",
                "NOK",
                "DKK",
                "PLN",
                "TRY",
                "ZAR",
                "BRL",
                "MXN",
                "KRW",
                "THB",
                "MYR",
                "IDR",
                "PHP",
                "BDT",
                "EGP",
                "NGN",
                "KWD",
                "QAR",
                "RUB"
              ],
              "default": "USD"
            }
          },
          {
            "name": "price",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Price per unit",
              "minimum": 0,
              "maximum": 1000000000,
              "default": 50
            }
          },
          {
            "name": "variable",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Variable cost per unit Materials, packaging, commission…",
              "minimum": 0,
              "maximum": 1000000000,
              "default": 30
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/budget-calculator": {
      "get": {
        "operationId": "budgetCalculator",
        "summary": "Budget Calculator",
        "description": "Free budget calculator using the 50/30/20 rule: split your monthly take-home pay into needs, wants and savings, or set your own percentages for a custom plan.",
        "tags": [
          "Finance"
        ],
        "parameters": [
          {
            "name": "income",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Monthly take-home income After tax and deductions",
              "minimum": 0,
              "maximum": 10000000000,
              "default": 5000
            }
          },
          {
            "name": "currency",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Currency",
              "enum": [
                "USD",
                "EUR",
                "GBP",
                "JPY",
                "CAD",
                "AUD",
                "CHF",
                "CNY",
                "INR",
                "PKR",
                "AED",
                "SAR",
                "NZD",
                "SGD",
                "HKD",
                "SEK",
                "NOK",
                "DKK",
                "PLN",
                "TRY",
                "ZAR",
                "BRL",
                "MXN",
                "KRW",
                "THB",
                "MYR",
                "IDR",
                "PHP",
                "BDT",
                "EGP",
                "NGN",
                "KWD",
                "QAR",
                "RUB"
              ],
              "default": "USD"
            }
          },
          {
            "name": "needsPct",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Needs (%)",
              "minimum": 0,
              "maximum": 100,
              "default": 50
            }
          },
          {
            "name": "wantsPct",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Wants (%) Savings get whatever is left",
              "minimum": 0,
              "maximum": 100,
              "default": 30
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/business-days-calculator": {
      "get": {
        "operationId": "businessDaysCalculator",
        "summary": "Business Days Calculator",
        "description": "Free business days calculator: count working days (Monday–Friday) and weekend days between two dates, or add business days to a date to find a deadline.",
        "tags": [
          "DateTime"
        ],
        "parameters": [
          {
            "name": "mode",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "What do you want to do?",
              "enum": [
                "count",
                "add"
              ],
              "default": "count"
            }
          },
          {
            "name": "start",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date",
              "description": "Start date (YYYY-MM-DD)",
              "default": "2026-01-01"
            }
          },
          {
            "name": "end",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date",
              "description": "End date (YYYY-MM-DD)",
              "default": "2026-01-31"
            }
          },
          {
            "name": "days",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Business days to add Use a negative number to go back in time.",
              "minimum": -10000,
              "maximum": 10000,
              "default": 10
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/cagr-calculator": {
      "get": {
        "operationId": "cagrCalculator",
        "summary": "CAGR Calculator",
        "description": "Free CAGR calculator: find the compound annual growth rate between a beginning and ending value over any number of years, with total growth and a yearly path.",
        "tags": [
          "Finance"
        ],
        "parameters": [
          {
            "name": "begin",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Beginning value",
              "minimum": 0.01,
              "maximum": 10000000000000,
              "default": 10000
            }
          },
          {
            "name": "currency",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Currency",
              "enum": [
                "USD",
                "EUR",
                "GBP",
                "JPY",
                "CAD",
                "AUD",
                "CHF",
                "CNY",
                "INR",
                "PKR",
                "AED",
                "SAR",
                "NZD",
                "SGD",
                "HKD",
                "SEK",
                "NOK",
                "DKK",
                "PLN",
                "TRY",
                "ZAR",
                "BRL",
                "MXN",
                "KRW",
                "THB",
                "MYR",
                "IDR",
                "PHP",
                "BDT",
                "EGP",
                "NGN",
                "KWD",
                "QAR",
                "RUB"
              ],
              "default": "USD"
            }
          },
          {
            "name": "end",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Ending value",
              "minimum": 0,
              "maximum": 10000000000000,
              "default": 20000
            }
          },
          {
            "name": "years",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Number of years (years)",
              "minimum": 0.1,
              "maximum": 200,
              "default": 5
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/calorie-deficit-calculator": {
      "get": {
        "operationId": "calorieDeficitCalculator",
        "summary": "Calorie Deficit Calculator",
        "description": "Free calorie deficit calculator: get your maintenance calories, a safe daily calorie target for your weekly weight-loss goal and the weeks to your goal weight.",
        "tags": [
          "Health"
        ],
        "parameters": [
          {
            "name": "units",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Units",
              "enum": [
                "metric",
                "imperial"
              ],
              "default": "metric"
            }
          },
          {
            "name": "sex",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Sex",
              "enum": [
                "male",
                "female"
              ],
              "default": "male"
            }
          },
          {
            "name": "age",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Age (years)",
              "minimum": 15,
              "maximum": 100,
              "default": 30
            }
          },
          {
            "name": "cm",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Height (cm)",
              "minimum": 100,
              "maximum": 250,
              "default": 175
            }
          },
          {
            "name": "ft",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Height (ft)",
              "minimum": 3,
              "maximum": 8,
              "default": 5
            }
          },
          {
            "name": "inch",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "(in)",
              "minimum": 0,
              "maximum": 11.99,
              "default": 9
            }
          },
          {
            "name": "kg",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Weight (kg)",
              "minimum": 25,
              "maximum": 350,
              "default": 85
            }
          },
          {
            "name": "lb",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Weight (lb)",
              "minimum": 55,
              "maximum": 770,
              "default": 187
            }
          },
          {
            "name": "activity",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Activity level",
              "enum": [
                "sedentary",
                "light",
                "moderate",
                "active",
                "very"
              ],
              "default": "moderate"
            }
          },
          {
            "name": "goalKg",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Goal weight (kg)",
              "minimum": 25,
              "maximum": 350,
              "default": 75
            }
          },
          {
            "name": "goalLb",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Goal weight (lb)",
              "minimum": 55,
              "maximum": 770,
              "default": 165
            }
          },
          {
            "name": "rate",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Weight loss per week (kg)",
              "enum": [
                "0.25",
                "0.5",
                "0.75",
                "1"
              ],
              "default": "0.5"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/calories-burned-calculator": {
      "get": {
        "operationId": "caloriesBurnedCalculator",
        "summary": "Calories Burned Calculator",
        "description": "Free calories burned calculator: estimate calories burned walking, running, cycling, swimming, lifting and 20+ other activities from MET values and your weight.",
        "tags": [
          "Health"
        ],
        "parameters": [
          {
            "name": "activity",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Activity",
              "enum": [
                "walk-slow",
                "walk",
                "walk-fast",
                "hike",
                "run-5",
                "run-6",
                "run-7.5",
                "run-10",
                "cycle-leisure",
                "cycle-mod",
                "cycle-stationary",
                "swim-leisure",
                "swim-laps",
                "yoga",
                "weights",
                "weights-vig",
                "elliptical",
                "rowing",
                "aerobics",
                "jump-rope",
                "tennis",
                "basketball",
                "cleaning"
              ],
              "default": "run-6"
            }
          },
          {
            "name": "units",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Units",
              "enum": [
                "metric",
                "imperial"
              ],
              "default": "metric"
            }
          },
          {
            "name": "kg",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Weight (kg)",
              "minimum": 25,
              "maximum": 350,
              "default": 70
            }
          },
          {
            "name": "lb",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Weight (lb)",
              "minimum": 55,
              "maximum": 770,
              "default": 155
            }
          },
          {
            "name": "minutes",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Duration (min)",
              "minimum": 1,
              "maximum": 1440,
              "default": 30
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/car-lease-calculator": {
      "get": {
        "operationId": "carLeaseCalculator",
        "summary": "Car Lease Calculator",
        "description": "Free car lease calculator: estimate your monthly lease payment from price, down payment, residual, money factor or APR, term and sales tax, fully itemised.",
        "tags": [
          "Finance"
        ],
        "parameters": [
          {
            "name": "msrp",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "MSRP (sticker price)",
              "minimum": 1,
              "maximum": 100000000,
              "default": 38000
            }
          },
          {
            "name": "price",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Negotiated price Gross capitalised cost",
              "minimum": 1,
              "maximum": 100000000,
              "default": 35000
            }
          },
          {
            "name": "down",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Down payment & trade-in Capitalised cost reduction",
              "minimum": 0,
              "maximum": 100000000,
              "default": 3000
            }
          },
          {
            "name": "currency",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Currency",
              "enum": [
                "USD",
                "EUR",
                "GBP",
                "JPY",
                "CAD",
                "AUD",
                "CHF",
                "CNY",
                "INR",
                "PKR",
                "AED",
                "SAR",
                "NZD",
                "SGD",
                "HKD",
                "SEK",
                "NOK",
                "DKK",
                "PLN",
                "TRY",
                "ZAR",
                "BRL",
                "MXN",
                "KRW",
                "THB",
                "MYR",
                "IDR",
                "PHP",
                "BDT",
                "EGP",
                "NGN",
                "KWD",
                "QAR",
                "RUB"
              ],
              "default": "USD"
            }
          },
          {
            "name": "residualPct",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Residual value (% of MSRP)",
              "minimum": 1,
              "maximum": 100,
              "default": 58
            }
          },
          {
            "name": "term",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Lease term (months)",
              "minimum": 6,
              "maximum": 96,
              "default": 36
            }
          },
          {
            "name": "rateType",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Interest given as",
              "enum": [
                "apr",
                "mf"
              ],
              "default": "apr"
            }
          },
          {
            "name": "apr",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "APR (%)",
              "minimum": 0,
              "maximum": 40,
              "default": 6
            }
          },
          {
            "name": "mf",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Money factor APR ≈ money factor × 2,400",
              "minimum": 0,
              "maximum": 0.02,
              "default": 0.0025
            }
          },
          {
            "name": "tax",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Sales tax (%) Applied to the monthly payment, as in most US states",
              "minimum": 0,
              "maximum": 25,
              "default": 7
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/case-converter": {
      "get": {
        "operationId": "caseConverter",
        "summary": "Case Converter",
        "description": "Free case converter: change text to UPPER CASE, lower case, Title Case, Sentence case, camelCase, snake_case or kebab-case instantly. Nothing is uploaded.",
        "tags": [
          "Conversion"
        ],
        "parameters": [
          {
            "name": "text",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Your text",
              "maxLength": 100000,
              "default": "the quick brown fox jumps over the lazy dog"
            }
          },
          {
            "name": "mode",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Convert to",
              "enum": [
                "upper",
                "lower",
                "title",
                "sentence",
                "camel",
                "pascal",
                "snake",
                "kebab",
                "constant",
                "alternating"
              ],
              "default": "title"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/circle-calculator": {
      "get": {
        "operationId": "circleCalculator",
        "summary": "Circle Calculator",
        "description": "Free circle calculator: enter the radius, diameter, circumference or area of a circle and instantly get the other three values, with formulas and working shown.",
        "tags": [
          "Math"
        ],
        "parameters": [
          {
            "name": "known",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "I know the",
              "enum": [
                "radius",
                "diameter",
                "circumference",
                "area"
              ],
              "default": "radius"
            }
          },
          {
            "name": "unit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Unit",
              "enum": [
                "none",
                "mm",
                "cm",
                "m",
                "km",
                "in",
                "ft",
                "yd",
                "mi"
              ],
              "default": "none"
            }
          },
          {
            "name": "value",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Radius (r)",
              "minimum": 0,
              "maximum": 1000000000000,
              "default": 5
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/commission-calculator": {
      "get": {
        "operationId": "commissionCalculator",
        "summary": "Commission Calculator",
        "description": "Free commission calculator: work out sales commission from the sale amount and rate, add an optional base salary and compare total earnings at other rates.",
        "tags": [
          "Finance"
        ],
        "parameters": [
          {
            "name": "sales",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Sale amount",
              "minimum": 0,
              "maximum": 1000000000000,
              "default": 25000
            }
          },
          {
            "name": "currency",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Currency",
              "enum": [
                "USD",
                "EUR",
                "GBP",
                "JPY",
                "CAD",
                "AUD",
                "CHF",
                "CNY",
                "INR",
                "PKR",
                "AED",
                "SAR",
                "NZD",
                "SGD",
                "HKD",
                "SEK",
                "NOK",
                "DKK",
                "PLN",
                "TRY",
                "ZAR",
                "BRL",
                "MXN",
                "KRW",
                "THB",
                "MYR",
                "IDR",
                "PHP",
                "BDT",
                "EGP",
                "NGN",
                "KWD",
                "QAR",
                "RUB"
              ],
              "default": "USD"
            }
          },
          {
            "name": "rate",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Commission rate (%)",
              "minimum": 0,
              "maximum": 100,
              "default": 5
            }
          },
          {
            "name": "base",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Base salary (optional) For the same period as the sales",
              "minimum": 0,
              "maximum": 1000000000,
              "default": 2000
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/concrete-calculator": {
      "get": {
        "operationId": "concreteCalculator",
        "summary": "Concrete Calculator",
        "description": "Free concrete calculator for slabs, footings and round columns: get the volume in cubic yards and cubic meters plus how many 40, 60, 80 lb or 25 kg bags to buy.",
        "tags": [
          "Everyday"
        ],
        "parameters": [
          {
            "name": "shape",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Shape",
              "enum": [
                "slab",
                "footing",
                "column"
              ],
              "default": "slab"
            }
          },
          {
            "name": "unit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Units",
              "enum": [
                "imperial",
                "metric"
              ],
              "default": "imperial"
            }
          },
          {
            "name": "length",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Length (ft)",
              "minimum": 0.01,
              "maximum": 10000,
              "default": 10
            }
          },
          {
            "name": "width",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Width (ft)",
              "minimum": 0.01,
              "maximum": 10000,
              "default": 10
            }
          },
          {
            "name": "depth",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Thickness (in)",
              "minimum": 0.1,
              "maximum": 1000,
              "default": 4
            }
          },
          {
            "name": "diameter",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Diameter (in)",
              "minimum": 0.1,
              "maximum": 10000,
              "default": 12
            }
          },
          {
            "name": "height",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Height / depth (ft)",
              "minimum": 0.01,
              "maximum": 1000,
              "default": 4
            }
          },
          {
            "name": "qty",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Quantity",
              "minimum": 1,
              "maximum": 10000,
              "default": 1
            }
          },
          {
            "name": "waste",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Extra for waste / spillage (%) Many contractors add 5–10%.",
              "minimum": 0,
              "maximum": 50,
              "default": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/cooking-converter": {
      "get": {
        "operationId": "cookingConverter",
        "summary": "Cooking Converter",
        "description": "Free cooking converter: turn cups, tablespoons and teaspoons into grams or ounces for flour, sugar, butter, milk, oats, honey and more, with ingredient charts.",
        "tags": [
          "Conversion"
        ],
        "parameters": [
          {
            "name": "ingredient",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Ingredient",
              "enum": [
                "water",
                "milk",
                "flour",
                "sugar",
                "brown-sugar",
                "butter",
                "rice",
                "oats",
                "honey",
                "salt",
                "cocoa"
              ],
              "default": "flour"
            }
          },
          {
            "name": "amount",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Amount",
              "minimum": 0.0001,
              "maximum": 1000000,
              "default": 1
            }
          },
          {
            "name": "from",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "From",
              "enum": [
                "cups",
                "tbsp",
                "tsp",
                "floz",
                "ml",
                "l",
                "g",
                "kg",
                "oz",
                "lb"
              ],
              "default": "cups"
            }
          },
          {
            "name": "to",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "To",
              "enum": [
                "cups",
                "tbsp",
                "tsp",
                "floz",
                "ml",
                "l",
                "g",
                "kg",
                "oz",
                "lb"
              ],
              "default": "g"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/countdown-calculator": {
      "get": {
        "operationId": "countdownCalculator",
        "summary": "Countdown Calculator",
        "description": "Free countdown calculator: see how many days, weeks and months are left until Christmas, New Year or any date you choose – or how many days have passed since.",
        "tags": [
          "DateTime"
        ],
        "parameters": [
          {
            "name": "preset",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Count down to",
              "enum": [
                "christmas",
                "newyear",
                "valentines",
                "july4",
                "halloween",
                "newyearseve",
                "custom"
              ],
              "default": "christmas"
            }
          },
          {
            "name": "target",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date",
              "description": "Target date (YYYY-MM-DD)",
              "default": "2027-01-01"
            }
          },
          {
            "name": "label",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Event name (optional)",
              "maxLength": 40
            }
          },
          {
            "name": "from",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date",
              "description": "Count from Leave empty to count from today. (YYYY-MM-DD)"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/credit-card-payoff-calculator": {
      "get": {
        "operationId": "creditCardPayoffCalculator",
        "summary": "Credit Card Payoff",
        "description": "Free credit card payoff calculator: see how many months it takes to clear your balance and the interest paid, or the payment needed to be debt-free by a date.",
        "tags": [
          "Finance"
        ],
        "parameters": [
          {
            "name": "balance",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Card balance",
              "minimum": 1,
              "maximum": 100000000,
              "default": 5000
            }
          },
          {
            "name": "currency",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Currency",
              "enum": [
                "USD",
                "EUR",
                "GBP",
                "JPY",
                "CAD",
                "AUD",
                "CHF",
                "CNY",
                "INR",
                "PKR",
                "AED",
                "SAR",
                "NZD",
                "SGD",
                "HKD",
                "SEK",
                "NOK",
                "DKK",
                "PLN",
                "TRY",
                "ZAR",
                "BRL",
                "MXN",
                "KRW",
                "THB",
                "MYR",
                "IDR",
                "PHP",
                "BDT",
                "EGP",
                "NGN",
                "KWD",
                "QAR",
                "RUB"
              ],
              "default": "USD"
            }
          },
          {
            "name": "apr",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Interest rate (APR) (%)",
              "minimum": 0,
              "maximum": 100,
              "default": 22
            }
          },
          {
            "name": "mode",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "I want to",
              "enum": [
                "payment",
                "months"
              ],
              "default": "payment"
            }
          },
          {
            "name": "payment",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Monthly payment",
              "minimum": 1,
              "maximum": 100000000,
              "default": 200
            }
          },
          {
            "name": "months",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Pay off in (months)",
              "minimum": 1,
              "maximum": 600,
              "default": 24
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/date-calculator": {
      "get": {
        "operationId": "dateCalculator",
        "summary": "Date Calculator",
        "description": "Free date calculator: add or subtract days, weeks, months and years from any date to find the resulting date and weekday, with leap years handled.",
        "tags": [
          "DateTime"
        ],
        "parameters": [
          {
            "name": "start",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date",
              "description": "Start date Leave empty to start from today. (YYYY-MM-DD)"
            }
          },
          {
            "name": "op",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Operation",
              "enum": [
                "add",
                "subtract"
              ],
              "default": "add"
            }
          },
          {
            "name": "years",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Years",
              "minimum": 0,
              "maximum": 100000,
              "default": 0
            }
          },
          {
            "name": "months",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Months",
              "minimum": 0,
              "maximum": 100000,
              "default": 0
            }
          },
          {
            "name": "weeks",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Weeks",
              "minimum": 0,
              "maximum": 100000,
              "default": 0
            }
          },
          {
            "name": "days",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Days",
              "minimum": 0,
              "maximum": 100000,
              "default": 90
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/date-difference-calculator": {
      "get": {
        "operationId": "dateDifferenceCalculator",
        "summary": "Date Difference Calculator",
        "description": "Free date difference calculator: count the days between two dates, plus weeks, months and years, business days and weekends, optionally including the end date.",
        "tags": [
          "DateTime"
        ],
        "parameters": [
          {
            "name": "start",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date",
              "description": "Start date (YYYY-MM-DD)",
              "default": "2026-01-01"
            }
          },
          {
            "name": "end",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date",
              "description": "End date Leave empty to use today's date. (YYYY-MM-DD)"
            }
          },
          {
            "name": "includeEnd",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Include the end date?",
              "enum": [
                "no",
                "yes"
              ],
              "default": "no"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/day-of-week-calculator": {
      "get": {
        "operationId": "dayOfWeekCalculator",
        "summary": "Day of the Week Calculator",
        "description": "Free day of the week calculator: find the weekday any date falls on, past or future, with step-by-step Zeller’s congruence working and the Doomsday rule.",
        "tags": [
          "DateTime"
        ],
        "parameters": [
          {
            "name": "date",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date",
              "description": "Date Leave empty to use today's date. (YYYY-MM-DD)",
              "default": "1969-07-20"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/debt-to-income-calculator": {
      "get": {
        "operationId": "debtToIncomeCalculator",
        "summary": "Debt-to-Income Calculator",
        "description": "Free debt to income ratio calculator: add up your monthly debt payments, get your DTI percentage and compare it with the 36% and 43% limits lenders use.",
        "tags": [
          "Finance"
        ],
        "parameters": [
          {
            "name": "income",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Gross monthly income Before tax and deductions.",
              "minimum": 1,
              "maximum": 1000000000,
              "default": 6000
            }
          },
          {
            "name": "currency",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Currency",
              "enum": [
                "USD",
                "EUR",
                "GBP",
                "JPY",
                "CAD",
                "AUD",
                "CHF",
                "CNY",
                "INR",
                "PKR",
                "AED",
                "SAR",
                "NZD",
                "SGD",
                "HKD",
                "SEK",
                "NOK",
                "DKK",
                "PLN",
                "TRY",
                "ZAR",
                "BRL",
                "MXN",
                "KRW",
                "THB",
                "MYR",
                "IDR",
                "PHP",
                "BDT",
                "EGP",
                "NGN",
                "KWD",
                "QAR",
                "RUB"
              ],
              "default": "USD"
            }
          },
          {
            "name": "housing",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Rent or mortgage payment",
              "minimum": 0,
              "maximum": 100000000,
              "default": 1400
            }
          },
          {
            "name": "auto",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Car loan payments",
              "minimum": 0,
              "maximum": 100000000,
              "default": 350
            }
          },
          {
            "name": "student",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Student loan payments",
              "minimum": 0,
              "maximum": 100000000,
              "default": 200
            }
          },
          {
            "name": "cards",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Credit card minimums",
              "minimum": 0,
              "maximum": 100000000,
              "default": 150
            }
          },
          {
            "name": "other",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Other debt payments Personal loans, child support, alimony, etc.",
              "minimum": 0,
              "maximum": 100000000,
              "default": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/discount-calculator": {
      "get": {
        "operationId": "discountCalculator",
        "summary": "Discount Calculator",
        "description": "Free discount calculator: find the sale price and how much you save for any percent off, including stacked discounts like an extra 10% off a sale price.",
        "tags": [
          "Finance"
        ],
        "parameters": [
          {
            "name": "price",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Original price",
              "minimum": 0,
              "maximum": 10000000000,
              "default": 80
            }
          },
          {
            "name": "currency",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Currency",
              "enum": [
                "USD",
                "EUR",
                "GBP",
                "JPY",
                "CAD",
                "AUD",
                "CHF",
                "CNY",
                "INR",
                "PKR",
                "AED",
                "SAR",
                "NZD",
                "SGD",
                "HKD",
                "SEK",
                "NOK",
                "DKK",
                "PLN",
                "TRY",
                "ZAR",
                "BRL",
                "MXN",
                "KRW",
                "THB",
                "MYR",
                "IDR",
                "PHP",
                "BDT",
                "EGP",
                "NGN",
                "KWD",
                "QAR",
                "RUB"
              ],
              "default": "USD"
            }
          },
          {
            "name": "discount",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Discount (% off)",
              "minimum": 0,
              "maximum": 100,
              "default": 25
            }
          },
          {
            "name": "extra",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Extra discount (optional) (% off) Applied to the already-reduced price",
              "minimum": 0,
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/dividend-yield-calculator": {
      "get": {
        "operationId": "dividendYieldCalculator",
        "summary": "Dividend Yield Calculator",
        "description": "Free dividend yield calculator: enter share price and dividend per share, paid yearly, quarterly or monthly, to get the yield and your annual income.",
        "tags": [
          "Finance"
        ],
        "parameters": [
          {
            "name": "price",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Share price",
              "minimum": 0.0001,
              "maximum": 10000000,
              "default": 50
            }
          },
          {
            "name": "currency",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Currency",
              "enum": [
                "USD",
                "EUR",
                "GBP",
                "JPY",
                "CAD",
                "AUD",
                "CHF",
                "CNY",
                "INR",
                "PKR",
                "AED",
                "SAR",
                "NZD",
                "SGD",
                "HKD",
                "SEK",
                "NOK",
                "DKK",
                "PLN",
                "TRY",
                "ZAR",
                "BRL",
                "MXN",
                "KRW",
                "THB",
                "MYR",
                "IDR",
                "PHP",
                "BDT",
                "EGP",
                "NGN",
                "KWD",
                "QAR",
                "RUB"
              ],
              "default": "USD"
            }
          },
          {
            "name": "dividend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Dividend per share, per payment",
              "minimum": 0,
              "maximum": 1000000,
              "default": 0.5
            }
          },
          {
            "name": "frequency",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Paid",
              "enum": [
                "1",
                "2",
                "4",
                "12"
              ],
              "default": "4"
            }
          },
          {
            "name": "shares",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Number of shares (optional) (shares)",
              "minimum": 0,
              "maximum": 10000000000,
              "default": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/down-payment-calculator": {
      "get": {
        "operationId": "downPaymentCalculator",
        "summary": "Down Payment Calculator",
        "description": "Free down payment calculator: see the down payment and loan amount for any home price, whether you will pay PMI, and compare 3%, 5%, 10% and 20% down.",
        "tags": [
          "Finance"
        ],
        "parameters": [
          {
            "name": "price",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Home price",
              "minimum": 1000,
              "maximum": 10000000000,
              "default": 400000
            }
          },
          {
            "name": "currency",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Currency",
              "enum": [
                "USD",
                "EUR",
                "GBP",
                "JPY",
                "CAD",
                "AUD",
                "CHF",
                "CNY",
                "INR",
                "PKR",
                "AED",
                "SAR",
                "NZD",
                "SGD",
                "HKD",
                "SEK",
                "NOK",
                "DKK",
                "PLN",
                "TRY",
                "ZAR",
                "BRL",
                "MXN",
                "KRW",
                "THB",
                "MYR",
                "IDR",
                "PHP",
                "BDT",
                "EGP",
                "NGN",
                "KWD",
                "QAR",
                "RUB"
              ],
              "default": "USD"
            }
          },
          {
            "name": "downPct",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Down payment (%)",
              "minimum": 0,
              "maximum": 100,
              "default": 10
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/electricity-cost-calculator": {
      "get": {
        "operationId": "electricityCostCalculator",
        "summary": "Electricity Cost Calculator",
        "description": "Free electricity cost calculator: find how many kWh an appliance uses and what it costs to run per day, month and year from its wattage, hours and your rate.",
        "tags": [
          "Everyday"
        ],
        "parameters": [
          {
            "name": "preset",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Appliance",
              "enum": [
                "led",
                "laptop",
                "tv",
                "fridge",
                "ac",
                "heater",
                "custom"
              ],
              "default": "tv"
            }
          },
          {
            "name": "watts",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Power rating (W) Check the label on the appliance or its charger.",
              "minimum": 0.1,
              "maximum": 100000,
              "default": 100
            }
          },
          {
            "name": "hours",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Hours used per day (h)",
              "minimum": 0,
              "maximum": 24,
              "default": 5
            }
          },
          {
            "name": "days",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Days used per month (days)",
              "minimum": 1,
              "maximum": 31,
              "default": 30
            }
          },
          {
            "name": "price",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Electricity price (per kWh)",
              "minimum": 0,
              "maximum": 100,
              "default": 0.17
            }
          },
          {
            "name": "currency",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Currency",
              "enum": [
                "USD",
                "EUR",
                "GBP",
                "JPY",
                "CAD",
                "AUD",
                "CHF",
                "CNY",
                "INR",
                "PKR",
                "AED",
                "SAR",
                "NZD",
                "SGD",
                "HKD",
                "SEK",
                "NOK",
                "DKK",
                "PLN",
                "TRY",
                "ZAR",
                "BRL",
                "MXN",
                "KRW",
                "THB",
                "MYR",
                "IDR",
                "PHP",
                "BDT",
                "EGP",
                "NGN",
                "KWD",
                "QAR",
                "RUB"
              ],
              "default": "USD"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/fd-calculator": {
      "get": {
        "operationId": "fdCalculator",
        "summary": "FD Calculator",
        "description": "Free FD calculator: work out the maturity amount and interest on a bank fixed deposit with quarterly, monthly, half-yearly or yearly compounding.",
        "tags": [
          "Finance"
        ],
        "parameters": [
          {
            "name": "principal",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Deposit amount",
              "minimum": 100,
              "maximum": 100000000000,
              "default": 100000
            }
          },
          {
            "name": "currency",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Currency",
              "enum": [
                "USD",
                "EUR",
                "GBP",
                "JPY",
                "CAD",
                "AUD",
                "CHF",
                "CNY",
                "INR",
                "PKR",
                "AED",
                "SAR",
                "NZD",
                "SGD",
                "HKD",
                "SEK",
                "NOK",
                "DKK",
                "PLN",
                "TRY",
                "ZAR",
                "BRL",
                "MXN",
                "KRW",
                "THB",
                "MYR",
                "IDR",
                "PHP",
                "BDT",
                "EGP",
                "NGN",
                "KWD",
                "QAR",
                "RUB"
              ],
              "default": "INR"
            }
          },
          {
            "name": "rate",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Interest rate (% p.a.)",
              "minimum": 0,
              "maximum": 30,
              "default": 7
            }
          },
          {
            "name": "years",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Tenure (years)",
              "minimum": 0.25,
              "maximum": 30,
              "default": 5
            }
          },
          {
            "name": "compounding",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Interest compounded",
              "enum": [
                "4",
                "12",
                "2",
                "1"
              ],
              "default": "4"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/flooring-calculator": {
      "get": {
        "operationId": "flooringCalculator",
        "summary": "Flooring Calculator",
        "description": "Free flooring calculator: work out room area, add a waste allowance, and find how many boxes of laminate, vinyl, tile or hardwood to buy and what it will cost.",
        "tags": [
          "Everyday"
        ],
        "parameters": [
          {
            "name": "unit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Units",
              "enum": [
                "ft",
                "m"
              ],
              "default": "ft"
            }
          },
          {
            "name": "length",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Room length (ft)",
              "minimum": 0.1,
              "maximum": 10000,
              "default": 12
            }
          },
          {
            "name": "width",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Room width (ft)",
              "minimum": 0.1,
              "maximum": 10000,
              "default": 12
            }
          },
          {
            "name": "waste",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Waste allowance (%) 10% for straight lay, 15% for diagonal or herringbone.",
              "minimum": 0,
              "maximum": 50,
              "default": 10
            }
          },
          {
            "name": "box",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Coverage per box (sq ft)",
              "minimum": 0.1,
              "maximum": 10000,
              "default": 20
            }
          },
          {
            "name": "price",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Price per sq ft (optional)",
              "minimum": 0,
              "maximum": 100000,
              "default": 3.5
            }
          },
          {
            "name": "currency",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Currency",
              "enum": [
                "USD",
                "EUR",
                "GBP",
                "JPY",
                "CAD",
                "AUD",
                "CHF",
                "CNY",
                "INR",
                "PKR",
                "AED",
                "SAR",
                "NZD",
                "SGD",
                "HKD",
                "SEK",
                "NOK",
                "DKK",
                "PLN",
                "TRY",
                "ZAR",
                "BRL",
                "MXN",
                "KRW",
                "THB",
                "MYR",
                "IDR",
                "PHP",
                "BDT",
                "EGP",
                "NGN",
                "KWD",
                "QAR",
                "RUB"
              ],
              "default": "USD"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/fraction-calculator": {
      "get": {
        "operationId": "fractionCalculator",
        "summary": "Fraction Calculator",
        "description": "Free fraction calculator: add, subtract, multiply and divide fractions and mixed numbers. Get the simplified answer, mixed number, decimal and every step.",
        "tags": [
          "Math"
        ],
        "parameters": [
          {
            "name": "a",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "First fraction",
              "maxLength": 30,
              "default": "1/2"
            }
          },
          {
            "name": "op",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Operation",
              "enum": [
                "add",
                "sub",
                "mul",
                "div"
              ],
              "default": "add"
            }
          },
          {
            "name": "b",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Second fraction",
              "maxLength": 30,
              "default": "3/4"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/fuel-cost-calculator": {
      "get": {
        "operationId": "fuelCostCalculator",
        "summary": "Fuel Cost Calculator",
        "description": "Free fuel cost calculator: estimate the gas cost of any one-way or round trip from distance, mpg or L/100 km and fuel price, and split it between passengers.",
        "tags": [
          "Everyday"
        ],
        "parameters": [
          {
            "name": "distance",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Trip distance (one way)",
              "minimum": 0.1,
              "maximum": 1000000,
              "default": 250
            }
          },
          {
            "name": "distUnit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Distance unit",
              "enum": [
                "miles",
                "km"
              ],
              "default": "miles"
            }
          },
          {
            "name": "economy",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Fuel economy",
              "minimum": 0.1,
              "maximum": 1000,
              "default": 30
            }
          },
          {
            "name": "econUnit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Economy unit",
              "enum": [
                "l100",
                "mpg",
                "mpgimp",
                "kml"
              ],
              "default": "mpg"
            }
          },
          {
            "name": "price",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Fuel price",
              "minimum": 0.01,
              "maximum": 100000,
              "default": 3.5
            }
          },
          {
            "name": "priceUnit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Price per",
              "enum": [
                "gallons",
                "liters",
                "imperial-gallons"
              ],
              "default": "gallons"
            }
          },
          {
            "name": "currency",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Currency",
              "enum": [
                "USD",
                "EUR",
                "GBP",
                "JPY",
                "CAD",
                "AUD",
                "CHF",
                "CNY",
                "INR",
                "PKR",
                "AED",
                "SAR",
                "NZD",
                "SGD",
                "HKD",
                "SEK",
                "NOK",
                "DKK",
                "PLN",
                "TRY",
                "ZAR",
                "BRL",
                "MXN",
                "KRW",
                "THB",
                "MYR",
                "IDR",
                "PHP",
                "BDT",
                "EGP",
                "NGN",
                "KWD",
                "QAR",
                "RUB"
              ],
              "default": "USD"
            }
          },
          {
            "name": "roundTrip",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Round trip?",
              "enum": [
                "yes",
                "no"
              ],
              "default": "no"
            }
          },
          {
            "name": "people",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Split cost between (people)",
              "minimum": 1,
              "maximum": 100,
              "default": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/fuel-economy-converter": {
      "get": {
        "operationId": "fuelEconomyConverter",
        "summary": "Fuel Economy Converter",
        "description": "Free fuel economy converter: convert between US mpg, UK mpg, liters per 100 km and km per liter in one step, with a handy mpg to L/100 km comparison chart.",
        "tags": [
          "Conversion"
        ],
        "parameters": [
          {
            "name": "value",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Fuel economy",
              "minimum": 0.01,
              "maximum": 10000,
              "default": 30
            }
          },
          {
            "name": "from",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Unit",
              "enum": [
                "mpg-us",
                "mpg-uk",
                "l100",
                "kml"
              ],
              "default": "mpg-us"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/gpa-calculator": {
      "get": {
        "operationId": "gpaCalculator",
        "summary": "GPA Calculator",
        "description": "Free GPA calculator: enter letter grades and credit hours for up to 8 courses to get your semester GPA on a 4.0 scale, plus your new cumulative GPA in seconds.",
        "tags": [
          "Math"
        ],
        "parameters": [
          {
            "name": "g1",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Course 1 grade",
              "enum": [
                "",
                "A+",
                "A",
                "A-",
                "B+",
                "B",
                "B-",
                "C+",
                "C",
                "C-",
                "D+",
                "D",
                "D-",
                "F"
              ],
              "default": "A"
            }
          },
          {
            "name": "c1",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Credits",
              "minimum": 0,
              "maximum": 30,
              "default": 3
            }
          },
          {
            "name": "g2",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Course 2 grade",
              "enum": [
                "",
                "A+",
                "A",
                "A-",
                "B+",
                "B",
                "B-",
                "C+",
                "C",
                "C-",
                "D+",
                "D",
                "D-",
                "F"
              ],
              "default": "B+"
            }
          },
          {
            "name": "c2",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Credits",
              "minimum": 0,
              "maximum": 30,
              "default": 3
            }
          },
          {
            "name": "g3",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Course 3 grade",
              "enum": [
                "",
                "A+",
                "A",
                "A-",
                "B+",
                "B",
                "B-",
                "C+",
                "C",
                "C-",
                "D+",
                "D",
                "D-",
                "F"
              ],
              "default": "A-"
            }
          },
          {
            "name": "c3",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Credits",
              "minimum": 0,
              "maximum": 30,
              "default": 4
            }
          },
          {
            "name": "g4",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Course 4 grade",
              "enum": [
                "",
                "A+",
                "A",
                "A-",
                "B+",
                "B",
                "B-",
                "C+",
                "C",
                "C-",
                "D+",
                "D",
                "D-",
                "F"
              ],
              "default": "B"
            }
          },
          {
            "name": "c4",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Credits",
              "minimum": 0,
              "maximum": 30,
              "default": 3
            }
          },
          {
            "name": "g5",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Course 5 grade",
              "enum": [
                "",
                "A+",
                "A",
                "A-",
                "B+",
                "B",
                "B-",
                "C+",
                "C",
                "C-",
                "D+",
                "D",
                "D-",
                "F"
              ],
              "default": ""
            }
          },
          {
            "name": "c5",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Credits",
              "minimum": 0,
              "maximum": 30
            }
          },
          {
            "name": "g6",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Course 6 grade",
              "enum": [
                "",
                "A+",
                "A",
                "A-",
                "B+",
                "B",
                "B-",
                "C+",
                "C",
                "C-",
                "D+",
                "D",
                "D-",
                "F"
              ],
              "default": ""
            }
          },
          {
            "name": "c6",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Credits",
              "minimum": 0,
              "maximum": 30
            }
          },
          {
            "name": "g7",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Course 7 grade",
              "enum": [
                "",
                "A+",
                "A",
                "A-",
                "B+",
                "B",
                "B-",
                "C+",
                "C",
                "C-",
                "D+",
                "D",
                "D-",
                "F"
              ],
              "default": ""
            }
          },
          {
            "name": "c7",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Credits",
              "minimum": 0,
              "maximum": 30
            }
          },
          {
            "name": "g8",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Course 8 grade",
              "enum": [
                "",
                "A+",
                "A",
                "A-",
                "B+",
                "B",
                "B-",
                "C+",
                "C",
                "C-",
                "D+",
                "D",
                "D-",
                "F"
              ],
              "default": ""
            }
          },
          {
            "name": "c8",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Credits",
              "minimum": 0,
              "maximum": 30
            }
          },
          {
            "name": "gpa0",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Current GPA",
              "minimum": 0,
              "maximum": 4
            }
          },
          {
            "name": "credits0",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Credits completed",
              "minimum": 0,
              "maximum": 1000
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/grade-calculator": {
      "get": {
        "operationId": "gradeCalculator",
        "summary": "Final Grade Calculator",
        "description": "Free final grade calculator: enter your current grade, the final exam weight and the grade you want to see exactly what score you need on the final exam.",
        "tags": [
          "Math"
        ],
        "parameters": [
          {
            "name": "current",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Current grade (%)",
              "minimum": 0,
              "maximum": 200,
              "default": 88
            }
          },
          {
            "name": "target",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Grade you want (%)",
              "minimum": 0,
              "maximum": 200,
              "default": 90
            }
          },
          {
            "name": "weight",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Final exam weight (%) Share of the overall grade the final is worth.",
              "minimum": 0,
              "maximum": 100,
              "default": 25
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/gst-calculator": {
      "get": {
        "operationId": "gstCalculator",
        "summary": "GST Calculator",
        "description": "Free GST calculator for India: add or remove GST at 5%, 12%, 18%, 28% or 40% and see the CGST, SGST or IGST split and invoice total in rupees instantly.",
        "tags": [
          "Finance"
        ],
        "parameters": [
          {
            "name": "mode",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Calculation",
              "enum": [
                "add",
                "remove"
              ],
              "default": "add"
            }
          },
          {
            "name": "amount",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Amount excluding GST",
              "minimum": 0,
              "maximum": 100000000000,
              "default": 10000
            }
          },
          {
            "name": "currency",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Currency",
              "enum": [
                "USD",
                "EUR",
                "GBP",
                "JPY",
                "CAD",
                "AUD",
                "CHF",
                "CNY",
                "INR",
                "PKR",
                "AED",
                "SAR",
                "NZD",
                "SGD",
                "HKD",
                "SEK",
                "NOK",
                "DKK",
                "PLN",
                "TRY",
                "ZAR",
                "BRL",
                "MXN",
                "KRW",
                "THB",
                "MYR",
                "IDR",
                "PHP",
                "BDT",
                "EGP",
                "NGN",
                "KWD",
                "QAR",
                "RUB"
              ],
              "default": "INR"
            }
          },
          {
            "name": "rate",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "GST rate",
              "enum": [
                "3",
                "5",
                "12",
                "18",
                "28",
                "40"
              ],
              "default": "18"
            }
          },
          {
            "name": "supply",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Type of supply",
              "enum": [
                "intra",
                "inter"
              ],
              "default": "intra"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/heart-rate-zone-calculator": {
      "get": {
        "operationId": "heartRateZoneCalculator",
        "summary": "Heart Rate Zone Calculator",
        "description": "Free heart rate zone calculator: find your max heart rate and 5 training zones by age with 220 − age or Tanaka, plus the Karvonen method using resting HR.",
        "tags": [
          "Health"
        ],
        "parameters": [
          {
            "name": "age",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Age (years)",
              "minimum": 10,
              "maximum": 100,
              "default": 30
            }
          },
          {
            "name": "resting",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Resting heart rate (optional) (bpm) Add it to use the Karvonen (heart-rate reserve) method.",
              "minimum": 30,
              "maximum": 120
            }
          },
          {
            "name": "formula",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Max heart rate formula",
              "enum": [
                "fox",
                "tanaka"
              ],
              "default": "fox"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/height-converter": {
      "get": {
        "operationId": "heightConverter",
        "summary": "Height Converter",
        "description": "Free height converter: change centimeters to feet and inches or feet and inches to cm instantly, with a handy height chart from 150 cm to 200 cm.",
        "tags": [
          "Conversion"
        ],
        "parameters": [
          {
            "name": "mode",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Convert",
              "enum": [
                "cm2ft",
                "ft2cm"
              ],
              "default": "cm2ft"
            }
          },
          {
            "name": "cm",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Height (cm)",
              "minimum": 1,
              "maximum": 300,
              "default": 175
            }
          },
          {
            "name": "feet",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Feet (ft)",
              "minimum": 0,
              "maximum": 9,
              "default": 5
            }
          },
          {
            "name": "inches",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Inches (in)",
              "minimum": 0,
              "maximum": 11.99,
              "default": 9
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/home-affordability-calculator": {
      "get": {
        "operationId": "homeAffordabilityCalculator",
        "summary": "Home Affordability",
        "description": "Free home affordability calculator: see how much house you can afford from your income, debts and down payment using the 28/36 rule, with taxes and insurance.",
        "tags": [
          "Finance"
        ],
        "parameters": [
          {
            "name": "income",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Gross annual income",
              "minimum": 1000,
              "maximum": 1000000000,
              "default": 100000
            }
          },
          {
            "name": "currency",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Currency",
              "enum": [
                "USD",
                "EUR",
                "GBP",
                "JPY",
                "CAD",
                "AUD",
                "CHF",
                "CNY",
                "INR",
                "PKR",
                "AED",
                "SAR",
                "NZD",
                "SGD",
                "HKD",
                "SEK",
                "NOK",
                "DKK",
                "PLN",
                "TRY",
                "ZAR",
                "BRL",
                "MXN",
                "KRW",
                "THB",
                "MYR",
                "IDR",
                "PHP",
                "BDT",
                "EGP",
                "NGN",
                "KWD",
                "QAR",
                "RUB"
              ],
              "default": "USD"
            }
          },
          {
            "name": "debts",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Monthly debt payments Car, student, card minimums, etc.",
              "minimum": 0,
              "maximum": 10000000,
              "default": 500
            }
          },
          {
            "name": "down",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Down payment",
              "minimum": 0,
              "maximum": 1000000000,
              "default": 60000
            }
          },
          {
            "name": "rate",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Mortgage rate (%)",
              "minimum": 0,
              "maximum": 30,
              "default": 6.5
            }
          },
          {
            "name": "years",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Loan term (years)",
              "minimum": 1,
              "maximum": 50,
              "default": 30
            }
          },
          {
            "name": "propertyTax",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Property tax (% / yr)",
              "minimum": 0,
              "maximum": 10,
              "default": 1.2
            }
          },
          {
            "name": "insurance",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Home insurance / year",
              "minimum": 0,
              "maximum": 10000000,
              "default": 1500
            }
          },
          {
            "name": "front",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Housing ratio (front-end) (%)",
              "minimum": 1,
              "maximum": 60,
              "default": 28
            }
          },
          {
            "name": "dti",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Total DTI limit (back-end) (%)",
              "minimum": 1,
              "maximum": 70,
              "default": 36
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/hours-calculator": {
      "get": {
        "operationId": "hoursCalculator",
        "summary": "Hours Calculator",
        "description": "Free hours calculator and time card: enter start, end and break times for each day of the week to total work hours, decimal hours and pay at your hourly rate.",
        "tags": [
          "DateTime"
        ],
        "parameters": [
          {
            "name": "monStart",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Monday start (HH:MM, 24-hour)",
              "default": "09:00"
            }
          },
          {
            "name": "monEnd",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "End (HH:MM, 24-hour)",
              "default": "17:30"
            }
          },
          {
            "name": "monBreak",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Break (min)",
              "minimum": 0,
              "maximum": 1440,
              "default": 30
            }
          },
          {
            "name": "tueStart",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Tuesday start (HH:MM, 24-hour)",
              "default": "09:00"
            }
          },
          {
            "name": "tueEnd",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "End (HH:MM, 24-hour)",
              "default": "17:30"
            }
          },
          {
            "name": "tueBreak",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Break (min)",
              "minimum": 0,
              "maximum": 1440,
              "default": 30
            }
          },
          {
            "name": "wedStart",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Wednesday start (HH:MM, 24-hour)",
              "default": "09:00"
            }
          },
          {
            "name": "wedEnd",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "End (HH:MM, 24-hour)",
              "default": "17:30"
            }
          },
          {
            "name": "wedBreak",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Break (min)",
              "minimum": 0,
              "maximum": 1440,
              "default": 30
            }
          },
          {
            "name": "thuStart",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Thursday start (HH:MM, 24-hour)",
              "default": "09:00"
            }
          },
          {
            "name": "thuEnd",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "End (HH:MM, 24-hour)",
              "default": "17:30"
            }
          },
          {
            "name": "thuBreak",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Break (min)",
              "minimum": 0,
              "maximum": 1440,
              "default": 30
            }
          },
          {
            "name": "friStart",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Friday start (HH:MM, 24-hour)",
              "default": "09:00"
            }
          },
          {
            "name": "friEnd",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "End (HH:MM, 24-hour)",
              "default": "17:30"
            }
          },
          {
            "name": "friBreak",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Break (min)",
              "minimum": 0,
              "maximum": 1440,
              "default": 30
            }
          },
          {
            "name": "satStart",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Saturday start (HH:MM, 24-hour)"
            }
          },
          {
            "name": "satEnd",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "End (HH:MM, 24-hour)"
            }
          },
          {
            "name": "satBreak",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Break (min)",
              "minimum": 0,
              "maximum": 1440
            }
          },
          {
            "name": "sunStart",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Sunday start (HH:MM, 24-hour)"
            }
          },
          {
            "name": "sunEnd",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "End (HH:MM, 24-hour)"
            }
          },
          {
            "name": "sunBreak",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Break (min)",
              "minimum": 0,
              "maximum": 1440
            }
          },
          {
            "name": "rate",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Hourly rate (optional)",
              "minimum": 0,
              "maximum": 100000,
              "default": 20
            }
          },
          {
            "name": "currency",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Currency",
              "enum": [
                "USD",
                "EUR",
                "GBP",
                "JPY",
                "CAD",
                "AUD",
                "CHF",
                "CNY",
                "INR",
                "PKR",
                "AED",
                "SAR",
                "NZD",
                "SGD",
                "HKD",
                "SEK",
                "NOK",
                "DKK",
                "PLN",
                "TRY",
                "ZAR",
                "BRL",
                "MXN",
                "KRW",
                "THB",
                "MYR",
                "IDR",
                "PHP",
                "BDT",
                "EGP",
                "NGN",
                "KWD",
                "QAR",
                "RUB"
              ],
              "default": "USD"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/ideal-weight-calculator": {
      "get": {
        "operationId": "idealWeightCalculator",
        "summary": "Ideal Weight Calculator",
        "description": "Free ideal weight calculator: find your ideal body weight for your height and sex using Robinson, Miller, Devine and Hamwi formulas plus a healthy BMI range.",
        "tags": [
          "Health"
        ],
        "parameters": [
          {
            "name": "units",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Units",
              "enum": [
                "metric",
                "imperial"
              ],
              "default": "metric"
            }
          },
          {
            "name": "sex",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Sex",
              "enum": [
                "male",
                "female"
              ],
              "default": "male"
            }
          },
          {
            "name": "cm",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Height (cm)",
              "minimum": 100,
              "maximum": 250,
              "default": 175
            }
          },
          {
            "name": "ft",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Height (ft)",
              "minimum": 3,
              "maximum": 8,
              "default": 5
            }
          },
          {
            "name": "inch",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "(in)",
              "minimum": 0,
              "maximum": 11.99,
              "default": 9
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/inflation-calculator": {
      "get": {
        "operationId": "inflationCalculator",
        "summary": "Inflation Calculator",
        "description": "Free inflation calculator: see what an amount will cost in the future, what past money is worth today, and how much purchasing power inflation erodes each year.",
        "tags": [
          "Finance"
        ],
        "parameters": [
          {
            "name": "amount",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Amount",
              "minimum": 0.01,
              "maximum": 1000000000000,
              "default": 100
            }
          },
          {
            "name": "currency",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Currency",
              "enum": [
                "USD",
                "EUR",
                "GBP",
                "JPY",
                "CAD",
                "AUD",
                "CHF",
                "CNY",
                "INR",
                "PKR",
                "AED",
                "SAR",
                "NZD",
                "SGD",
                "HKD",
                "SEK",
                "NOK",
                "DKK",
                "PLN",
                "TRY",
                "ZAR",
                "BRL",
                "MXN",
                "KRW",
                "THB",
                "MYR",
                "IDR",
                "PHP",
                "BDT",
                "EGP",
                "NGN",
                "KWD",
                "QAR",
                "RUB"
              ],
              "default": "USD"
            }
          },
          {
            "name": "direction",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Calculate",
              "enum": [
                "future",
                "past"
              ],
              "default": "future"
            }
          },
          {
            "name": "rate",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Average inflation rate (% / yr)",
              "minimum": -20,
              "maximum": 100,
              "default": 3
            }
          },
          {
            "name": "years",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Years ahead (years)",
              "minimum": 1,
              "maximum": 100,
              "default": 10
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/lcm-gcd-calculator": {
      "get": {
        "operationId": "lcmGcdCalculator",
        "summary": "LCM & GCD Calculator",
        "description": "Free LCM and GCD calculator: find the least common multiple and greatest common divisor (GCF or HCF) of up to 20 numbers, with prime factorizations and steps.",
        "tags": [
          "Math"
        ],
        "parameters": [
          {
            "name": "numbers",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Whole numbers 2 to 20 positive whole numbers, separated by commas or spaces.",
              "maxLength": 500,
              "default": "12, 18, 30"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/logarithm-calculator": {
      "get": {
        "operationId": "logarithmCalculator",
        "summary": "Logarithm Calculator",
        "description": "Free logarithm calculator: find log base 10, natural log (ln), log base 2 or a log with any custom base, with the change-of-base formula worked step by step.",
        "tags": [
          "Math"
        ],
        "parameters": [
          {
            "name": "x",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Number (x)",
              "minimum": -1e+300,
              "maximum": 1e+300,
              "default": 1000
            }
          },
          {
            "name": "base",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Base",
              "enum": [
                "10",
                "e",
                "2",
                "custom"
              ],
              "default": "10"
            }
          },
          {
            "name": "custom",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Custom base (b)",
              "minimum": 0,
              "maximum": 1e+300,
              "default": 3
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/macro-calculator": {
      "get": {
        "operationId": "macroCalculator",
        "summary": "Macro Calculator",
        "description": "Free macro calculator: get your daily calories and grams of protein, carbs and fat for weight loss, maintenance or muscle gain, with three diet-style splits.",
        "tags": [
          "Health"
        ],
        "parameters": [
          {
            "name": "units",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Units",
              "enum": [
                "metric",
                "imperial"
              ],
              "default": "metric"
            }
          },
          {
            "name": "sex",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Sex",
              "enum": [
                "male",
                "female"
              ],
              "default": "male"
            }
          },
          {
            "name": "age",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Age (years)",
              "minimum": 15,
              "maximum": 100,
              "default": 30
            }
          },
          {
            "name": "cm",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Height (cm)",
              "minimum": 100,
              "maximum": 250,
              "default": 175
            }
          },
          {
            "name": "ft",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Height (ft)",
              "minimum": 3,
              "maximum": 8,
              "default": 5
            }
          },
          {
            "name": "inch",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "(in)",
              "minimum": 0,
              "maximum": 11.99,
              "default": 9
            }
          },
          {
            "name": "kg",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Weight (kg)",
              "minimum": 25,
              "maximum": 350,
              "default": 70
            }
          },
          {
            "name": "lb",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Weight (lb)",
              "minimum": 55,
              "maximum": 770,
              "default": 155
            }
          },
          {
            "name": "activity",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Activity level",
              "enum": [
                "sedentary",
                "light",
                "moderate",
                "active",
                "very"
              ],
              "default": "moderate"
            }
          },
          {
            "name": "goal",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Goal",
              "enum": [
                "lose",
                "maintain",
                "gain"
              ],
              "default": "maintain"
            }
          },
          {
            "name": "diet",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Diet style",
              "enum": [
                "balanced",
                "lowcarb",
                "highprotein"
              ],
              "default": "balanced"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/markup-calculator": {
      "get": {
        "operationId": "markupCalculator",
        "summary": "Markup Calculator",
        "description": "Free markup calculator: add a percentage markup to your cost to get the selling price, profit per unit and the gross margin it really gives you, at a glance.",
        "tags": [
          "Finance"
        ],
        "parameters": [
          {
            "name": "cost",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Cost",
              "minimum": 0,
              "maximum": 1000000000000,
              "default": 40
            }
          },
          {
            "name": "currency",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Currency",
              "enum": [
                "USD",
                "EUR",
                "GBP",
                "JPY",
                "CAD",
                "AUD",
                "CHF",
                "CNY",
                "INR",
                "PKR",
                "AED",
                "SAR",
                "NZD",
                "SGD",
                "HKD",
                "SEK",
                "NOK",
                "DKK",
                "PLN",
                "TRY",
                "ZAR",
                "BRL",
                "MXN",
                "KRW",
                "THB",
                "MYR",
                "IDR",
                "PHP",
                "BDT",
                "EGP",
                "NGN",
                "KWD",
                "QAR",
                "RUB"
              ],
              "default": "USD"
            }
          },
          {
            "name": "markup",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Markup (%)",
              "minimum": 0,
              "maximum": 10000,
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/number-base-converter": {
      "get": {
        "operationId": "numberBaseConverter",
        "summary": "Number Base Converter",
        "description": "Free number base converter: convert between binary, octal, decimal, hexadecimal and any base from 2 to 36, with very large numbers and step-by-step working.",
        "tags": [
          "Conversion"
        ],
        "parameters": [
          {
            "name": "value",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Number to convert",
              "maxLength": 200,
              "default": "255"
            }
          },
          {
            "name": "from",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Input base",
              "enum": [
                "2",
                "8",
                "10",
                "16",
                "custom"
              ],
              "default": "10"
            }
          },
          {
            "name": "custom",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Custom base Used for custom input and shown as an extra result.",
              "minimum": 2,
              "maximum": 36,
              "default": 36
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/number-to-words-converter": {
      "get": {
        "operationId": "numberToWordsConverter",
        "summary": "Number to Words Converter",
        "description": "Free number to words converter: spell out any number up to 999 trillion in English, in check-writing format, or in the Indian lakh and crore system instantly.",
        "tags": [
          "Conversion"
        ],
        "parameters": [
          {
            "name": "value",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Number",
              "maxLength": 30,
              "default": "1234.45"
            }
          },
          {
            "name": "system",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Numbering system",
              "enum": [
                "international",
                "indian"
              ],
              "default": "international"
            }
          },
          {
            "name": "unit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Currency for cheques",
              "enum": [
                "dollars",
                "euros",
                "pounds",
                "rupees"
              ],
              "default": "dollars"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/one-rep-max-calculator": {
      "get": {
        "operationId": "oneRepMaxCalculator",
        "summary": "One Rep Max Calculator",
        "description": "Free one rep max calculator: estimate your 1RM for bench press, squat or deadlift from any weight and reps using the Epley, Brzycki and Lombardi formulas.",
        "tags": [
          "Health"
        ],
        "parameters": [
          {
            "name": "weight",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Weight lifted",
              "minimum": 1,
              "maximum": 1000,
              "default": 100
            }
          },
          {
            "name": "unit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Unit",
              "enum": [
                "kg",
                "lb"
              ],
              "default": "kg"
            }
          },
          {
            "name": "reps",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Reps completed (reps) Most accurate with 2–10 reps taken close to failure.",
              "minimum": 1,
              "maximum": 15,
              "default": 5
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/overtime-calculator": {
      "get": {
        "operationId": "overtimeCalculator",
        "summary": "Overtime Calculator",
        "description": "Free overtime calculator: enter your hourly rate, regular and overtime hours to see regular pay, time-and-a-half or double-time pay and total gross pay.",
        "tags": [
          "Finance"
        ],
        "parameters": [
          {
            "name": "rate",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Hourly rate",
              "minimum": 0,
              "maximum": 100000,
              "default": 20
            }
          },
          {
            "name": "currency",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Currency",
              "enum": [
                "USD",
                "EUR",
                "GBP",
                "JPY",
                "CAD",
                "AUD",
                "CHF",
                "CNY",
                "INR",
                "PKR",
                "AED",
                "SAR",
                "NZD",
                "SGD",
                "HKD",
                "SEK",
                "NOK",
                "DKK",
                "PLN",
                "TRY",
                "ZAR",
                "BRL",
                "MXN",
                "KRW",
                "THB",
                "MYR",
                "IDR",
                "PHP",
                "BDT",
                "EGP",
                "NGN",
                "KWD",
                "QAR",
                "RUB"
              ],
              "default": "USD"
            }
          },
          {
            "name": "regular",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Regular hours (hrs)",
              "minimum": 0,
              "maximum": 168,
              "default": 40
            }
          },
          {
            "name": "overtime",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Overtime hours (hrs)",
              "minimum": 0,
              "maximum": 168,
              "default": 10
            }
          },
          {
            "name": "multiplier",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Overtime rate",
              "enum": [
                "1.5",
                "2",
                "1.25",
                "1.75",
                "2.5"
              ],
              "default": "1.5"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/ovulation-calculator": {
      "get": {
        "operationId": "ovulationCalculator",
        "summary": "Ovulation Calculator",
        "description": "Free ovulation calculator: estimate your ovulation day, fertile window and next period from your last period and cycle length, with dates for the next 4 cycles.",
        "tags": [
          "Health"
        ],
        "parameters": [
          {
            "name": "date",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date",
              "description": "First day of your last period (YYYY-MM-DD)",
              "default": "2026-10-01"
            }
          },
          {
            "name": "cycle",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Average cycle length (days)",
              "minimum": 21,
              "maximum": 45,
              "default": 28
            }
          },
          {
            "name": "luteal",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Luteal phase length (days) Days from ovulation to your next period – 14 for most people.",
              "minimum": 9,
              "maximum": 17,
              "default": 14
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/pace-calculator": {
      "get": {
        "operationId": "paceCalculator",
        "summary": "Pace Calculator",
        "description": "Free running pace calculator: get pace per km and per mile and speed from distance and time, or predict 5K, 10K, half marathon and marathon finish times.",
        "tags": [
          "Health"
        ],
        "parameters": [
          {
            "name": "mode",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Calculate",
              "enum": [
                "pace",
                "time"
              ],
              "default": "pace"
            }
          },
          {
            "name": "preset",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Distance",
              "enum": [
                "5k",
                "10k",
                "half",
                "marathon",
                "custom"
              ],
              "default": "10k"
            }
          },
          {
            "name": "distance",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Custom distance",
              "minimum": 0.01,
              "maximum": 1000,
              "default": 8
            }
          },
          {
            "name": "distUnit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Unit",
              "enum": [
                "km",
                "mi"
              ],
              "default": "km"
            }
          },
          {
            "name": "h",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Time (h)",
              "minimum": 0,
              "maximum": 99,
              "default": 0
            }
          },
          {
            "name": "m",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "(min)",
              "minimum": 0,
              "maximum": 59,
              "default": 50
            }
          },
          {
            "name": "s",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "(s)",
              "minimum": 0,
              "maximum": 59.99,
              "default": 0
            }
          },
          {
            "name": "pm",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Pace (min)",
              "minimum": 0,
              "maximum": 99,
              "default": 5
            }
          },
          {
            "name": "ps",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "(s)",
              "minimum": 0,
              "maximum": 59.99,
              "default": 0
            }
          },
          {
            "name": "paceUnit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Per",
              "enum": [
                "km",
                "mi"
              ],
              "default": "km"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/paint-calculator": {
      "get": {
        "operationId": "paintCalculator",
        "summary": "Paint Calculator",
        "description": "Free paint calculator: enter your room size, doors, windows and coats to find the paintable wall area and how many gallons or liters to buy, rounded up.",
        "tags": [
          "Everyday"
        ],
        "parameters": [
          {
            "name": "unit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Units",
              "enum": [
                "ft",
                "m"
              ],
              "default": "ft"
            }
          },
          {
            "name": "length",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Room length (ft)",
              "minimum": 0.1,
              "maximum": 1000,
              "default": 12
            }
          },
          {
            "name": "width",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Room width (ft)",
              "minimum": 0.1,
              "maximum": 1000,
              "default": 12
            }
          },
          {
            "name": "height",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Wall height (ft)",
              "minimum": 0.1,
              "maximum": 100,
              "default": 8
            }
          },
          {
            "name": "coats",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Coats",
              "minimum": 1,
              "maximum": 5,
              "default": 2
            }
          },
          {
            "name": "doors",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Doors",
              "minimum": 0,
              "maximum": 50,
              "default": 1
            }
          },
          {
            "name": "windows",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Windows",
              "minimum": 0,
              "maximum": 100,
              "default": 2
            }
          },
          {
            "name": "ceiling",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Paint the ceiling too?",
              "enum": [
                "yes",
                "no"
              ],
              "default": "no"
            }
          },
          {
            "name": "coverage",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Coverage (sq ft per gallon) Leave blank for a typical 350 sq ft per gallon (10 m² per liter). Check the paint can.",
              "minimum": 1,
              "maximum": 1000
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/password-generator": {
      "get": {
        "operationId": "passwordGenerator",
        "summary": "Password Generator",
        "description": "Free strong password generator: create secure passwords of 8–64 characters with letters, numbers and symbols, plus entropy and strength. Made in your browser.",
        "tags": [
          "Everyday"
        ],
        "parameters": [
          {
            "name": "length",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Password length (characters)",
              "minimum": 8,
              "maximum": 64,
              "default": 16
            }
          },
          {
            "name": "upper",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Uppercase (A–Z)",
              "enum": [
                "yes",
                "no"
              ],
              "default": "yes"
            }
          },
          {
            "name": "lower",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Lowercase (a–z)",
              "enum": [
                "yes",
                "no"
              ],
              "default": "yes"
            }
          },
          {
            "name": "digits",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Numbers (0–9)",
              "enum": [
                "yes",
                "no"
              ],
              "default": "yes"
            }
          },
          {
            "name": "symbols",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Symbols (!@#…)",
              "enum": [
                "yes",
                "no"
              ],
              "default": "yes"
            }
          },
          {
            "name": "similar",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Exclude look-alike characters (I l 1 | O 0 o)",
              "enum": [
                "yes",
                "no"
              ],
              "default": "no"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/pay-raise-calculator": {
      "get": {
        "operationId": "payRaiseCalculator",
        "summary": "Pay Raise Calculator",
        "description": "Free pay raise calculator: enter your salary or hourly wage and a raise % or new pay to see the increase, % change and pay per month, week and hour.",
        "tags": [
          "Finance"
        ],
        "parameters": [
          {
            "name": "payType",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Pay is",
              "enum": [
                "annual",
                "hourly"
              ],
              "default": "annual"
            }
          },
          {
            "name": "currency",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Currency",
              "enum": [
                "USD",
                "EUR",
                "GBP",
                "JPY",
                "CAD",
                "AUD",
                "CHF",
                "CNY",
                "INR",
                "PKR",
                "AED",
                "SAR",
                "NZD",
                "SGD",
                "HKD",
                "SEK",
                "NOK",
                "DKK",
                "PLN",
                "TRY",
                "ZAR",
                "BRL",
                "MXN",
                "KRW",
                "THB",
                "MYR",
                "IDR",
                "PHP",
                "BDT",
                "EGP",
                "NGN",
                "KWD",
                "QAR",
                "RUB"
              ],
              "default": "USD"
            }
          },
          {
            "name": "current",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Current annual salary",
              "minimum": 0.01,
              "maximum": 10000000000,
              "default": 60000
            }
          },
          {
            "name": "method",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Raise given as",
              "enum": [
                "percent",
                "new"
              ],
              "default": "percent"
            }
          },
          {
            "name": "raise",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Raise (%)",
              "minimum": -100,
              "maximum": 1000,
              "default": 5
            }
          },
          {
            "name": "newPay",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "New annual salary",
              "minimum": 0,
              "maximum": 10000000000
            }
          },
          {
            "name": "hours",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Hours per week (hrs) Used to convert between hourly and annual pay (52 weeks)",
              "minimum": 1,
              "maximum": 100,
              "default": 40
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/percent-error-calculator": {
      "get": {
        "operationId": "percentErrorCalculator",
        "summary": "Percent Error Calculator",
        "description": "Free percent error calculator: compare an experimental (measured) value with the theoretical (true) value to get percent, absolute and relative error.",
        "tags": [
          "Math"
        ],
        "parameters": [
          {
            "name": "measured",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Experimental (measured) value",
              "minimum": -1000000000000000,
              "maximum": 1000000000000000,
              "default": 9.6
            }
          },
          {
            "name": "actual",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Theoretical (true) value",
              "minimum": -1000000000000000,
              "maximum": 1000000000000000,
              "default": 9.81
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/pregnancy-due-date-calculator": {
      "get": {
        "operationId": "pregnancyDueDateCalculator",
        "summary": "Pregnancy Due Date Calculator",
        "description": "Free pregnancy due date calculator: estimate your due date from your last period, conception or IVF transfer date and see how many weeks pregnant you are today.",
        "tags": [
          "Health"
        ],
        "parameters": [
          {
            "name": "method",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Calculate from",
              "enum": [
                "lmp",
                "conception",
                "ivf3",
                "ivf5"
              ],
              "default": "lmp"
            }
          },
          {
            "name": "date",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date",
              "description": "First day of last period (YYYY-MM-DD)",
              "default": "2026-06-01"
            }
          },
          {
            "name": "cycle",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Average cycle length (days)",
              "minimum": 20,
              "maximum": 45,
              "default": 28
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/prime-number-checker": {
      "get": {
        "operationId": "primeNumberChecker",
        "summary": "Prime Number Checker",
        "description": "Free prime number checker: test if any number up to one trillion is prime, see its smallest factor and prime factorization, and get the next and previous prime.",
        "tags": [
          "Math"
        ],
        "parameters": [
          {
            "name": "n",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Whole number Any whole number from 0 to 1,000,000,000,000.",
              "minimum": 0,
              "maximum": 1000000000000,
              "default": 97
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/profit-margin-calculator": {
      "get": {
        "operationId": "profitMarginCalculator",
        "summary": "Profit Margin Calculator",
        "description": "Free profit margin calculator: enter cost and revenue to get gross profit, margin percentage and markup, plus the selling price needed for any target margin.",
        "tags": [
          "Finance"
        ],
        "parameters": [
          {
            "name": "cost",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Cost What the item or sale cost you",
              "minimum": 0,
              "maximum": 1000000000000,
              "default": 60
            }
          },
          {
            "name": "revenue",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Revenue (selling price)",
              "minimum": 0,
              "maximum": 1000000000000,
              "default": 100
            }
          },
          {
            "name": "currency",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Currency",
              "enum": [
                "USD",
                "EUR",
                "GBP",
                "JPY",
                "CAD",
                "AUD",
                "CHF",
                "CNY",
                "INR",
                "PKR",
                "AED",
                "SAR",
                "NZD",
                "SGD",
                "HKD",
                "SEK",
                "NOK",
                "DKK",
                "PLN",
                "TRY",
                "ZAR",
                "BRL",
                "MXN",
                "KRW",
                "THB",
                "MYR",
                "IDR",
                "PHP",
                "BDT",
                "EGP",
                "NGN",
                "KWD",
                "QAR",
                "RUB"
              ],
              "default": "USD"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/protein-calculator": {
      "get": {
        "operationId": "proteinCalculator",
        "summary": "Protein Calculator",
        "description": "Free protein calculator: find how many grams of protein you need a day for your weight and activity level, from the 0.8 g/kg RDA to 2.2 g/kg for muscle gain.",
        "tags": [
          "Health"
        ],
        "parameters": [
          {
            "name": "units",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Units",
              "enum": [
                "metric",
                "imperial"
              ],
              "default": "metric"
            }
          },
          {
            "name": "kg",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Weight (kg)",
              "minimum": 25,
              "maximum": 350,
              "default": 70
            }
          },
          {
            "name": "lb",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Weight (lb)",
              "minimum": 55,
              "maximum": 770,
              "default": 155
            }
          },
          {
            "name": "level",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Activity / goal",
              "enum": [
                "sedentary",
                "older",
                "active",
                "endurance",
                "strength",
                "cut"
              ],
              "default": "sedentary"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/pythagorean-theorem-calculator": {
      "get": {
        "operationId": "pythagoreanTheoremCalculator",
        "summary": "Pythagorean Theorem Calc",
        "description": "Free Pythagorean theorem calculator: find the hypotenuse or a missing leg of a right triangle from a² + b² = c², plus area, perimeter, angles and every step.",
        "tags": [
          "Math"
        ],
        "parameters": [
          {
            "name": "solve",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Solve for",
              "enum": [
                "c",
                "leg"
              ],
              "default": "c"
            }
          },
          {
            "name": "a",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Leg a",
              "minimum": 0,
              "maximum": 1000000000,
              "default": 3
            }
          },
          {
            "name": "b",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Leg b",
              "minimum": 0,
              "maximum": 1000000000,
              "default": 4
            }
          },
          {
            "name": "c",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Hypotenuse c",
              "minimum": 0,
              "maximum": 1000000000,
              "default": 5
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/quadratic-equation-solver": {
      "get": {
        "operationId": "quadraticEquationSolver",
        "summary": "Quadratic Equation Solver",
        "description": "Free quadratic equation solver: enter a, b and c to find the discriminant, real or complex roots and the vertex of ax² + bx + c = 0, with step-by-step working.",
        "tags": [
          "Math"
        ],
        "parameters": [
          {
            "name": "a",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "a (x² coefficient)",
              "minimum": -1000000000,
              "maximum": 1000000000,
              "default": 1
            }
          },
          {
            "name": "b",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "b (x coefficient)",
              "minimum": -1000000000,
              "maximum": 1000000000,
              "default": -3
            }
          },
          {
            "name": "c",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "c (constant)",
              "minimum": -1000000000,
              "maximum": 1000000000,
              "default": 2
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/random-number-generator": {
      "get": {
        "operationId": "randomNumberGenerator",
        "summary": "Random Number Generator",
        "description": "Free random number generator: pick one or many random numbers in any range, whole or decimal, with or without duplicates. Numbers are generated in your browser.",
        "tags": [
          "Math"
        ],
        "parameters": [
          {
            "name": "min",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Minimum",
              "minimum": -1000000000000,
              "maximum": 1000000000000,
              "default": 1
            }
          },
          {
            "name": "max",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Maximum",
              "minimum": -1000000000000,
              "maximum": 1000000000000,
              "default": 100
            }
          },
          {
            "name": "count",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "How many numbers",
              "minimum": 1,
              "maximum": 1000,
              "default": 1
            }
          },
          {
            "name": "kind",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Type",
              "enum": [
                "integer",
                "decimal"
              ],
              "default": "integer"
            }
          },
          {
            "name": "decimals",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Decimal places",
              "minimum": 1,
              "maximum": 10,
              "default": 2
            }
          },
          {
            "name": "unique",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Allow duplicates?",
              "enum": [
                "no",
                "yes"
              ],
              "default": "no"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Order",
              "enum": [
                "none",
                "asc",
                "desc"
              ],
              "default": "none"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/ratio-calculator": {
      "get": {
        "operationId": "ratioCalculator",
        "summary": "Ratio Calculator",
        "description": "Free ratio calculator: solve A:B = C:D for any missing value, simplify ratios to lowest terms, and see the cross-multiplication steps. Ideal for recipes.",
        "tags": [
          "Math"
        ],
        "parameters": [
          {
            "name": "mode",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Calculation",
              "enum": [
                "solve",
                "simplify"
              ],
              "default": "solve"
            }
          },
          {
            "name": "a",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "A",
              "minimum": 0,
              "maximum": 1000000000000,
              "default": 3
            }
          },
          {
            "name": "b",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "B",
              "minimum": 0,
              "maximum": 1000000000000,
              "default": 4
            }
          },
          {
            "name": "c",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "C",
              "minimum": 0,
              "maximum": 1000000000000,
              "default": 12
            }
          },
          {
            "name": "d",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "D",
              "minimum": 0,
              "maximum": 1000000000000
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/refinance-calculator": {
      "get": {
        "operationId": "refinanceCalculator",
        "summary": "Refinance Calculator",
        "description": "Free refinance calculator: compare your mortgage with a new rate and term to see the new payment, monthly savings, break-even month and lifetime interest.",
        "tags": [
          "Finance"
        ],
        "parameters": [
          {
            "name": "balance",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Current loan balance",
              "minimum": 1000,
              "maximum": 1000000000,
              "default": 250000
            }
          },
          {
            "name": "currency",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Currency",
              "enum": [
                "USD",
                "EUR",
                "GBP",
                "JPY",
                "CAD",
                "AUD",
                "CHF",
                "CNY",
                "INR",
                "PKR",
                "AED",
                "SAR",
                "NZD",
                "SGD",
                "HKD",
                "SEK",
                "NOK",
                "DKK",
                "PLN",
                "TRY",
                "ZAR",
                "BRL",
                "MXN",
                "KRW",
                "THB",
                "MYR",
                "IDR",
                "PHP",
                "BDT",
                "EGP",
                "NGN",
                "KWD",
                "QAR",
                "RUB"
              ],
              "default": "USD"
            }
          },
          {
            "name": "rate",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Current interest rate (%)",
              "minimum": 0,
              "maximum": 30,
              "default": 7
            }
          },
          {
            "name": "remaining",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Years remaining (years)",
              "minimum": 1,
              "maximum": 50,
              "default": 27
            }
          },
          {
            "name": "newRate",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "New interest rate (%)",
              "minimum": 0,
              "maximum": 30,
              "default": 6
            }
          },
          {
            "name": "newTerm",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "New loan term (years)",
              "minimum": 1,
              "maximum": 50,
              "default": 30
            }
          },
          {
            "name": "closing",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Closing costs Paid upfront (not rolled into the loan).",
              "minimum": 0,
              "maximum": 100000000,
              "default": 5000
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/rent-affordability-calculator": {
      "get": {
        "operationId": "rentAffordabilityCalculator",
        "summary": "Rent Affordability",
        "description": "Free rent affordability calculator: see how much rent you can afford from your salary using the 30% rule and the landlord 40x rule, adjusted for your debts.",
        "tags": [
          "Finance"
        ],
        "parameters": [
          {
            "name": "income",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Gross income (before tax)",
              "minimum": 1,
              "maximum": 1000000000,
              "default": 60000
            }
          },
          {
            "name": "period",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Income is",
              "enum": [
                "year",
                "month"
              ],
              "default": "year"
            }
          },
          {
            "name": "debts",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Monthly debt payments Car, student loan, card minimums.",
              "minimum": 0,
              "maximum": 10000000,
              "default": 400
            }
          },
          {
            "name": "currency",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Currency",
              "enum": [
                "USD",
                "EUR",
                "GBP",
                "JPY",
                "CAD",
                "AUD",
                "CHF",
                "CNY",
                "INR",
                "PKR",
                "AED",
                "SAR",
                "NZD",
                "SGD",
                "HKD",
                "SEK",
                "NOK",
                "DKK",
                "PLN",
                "TRY",
                "ZAR",
                "BRL",
                "MXN",
                "KRW",
                "THB",
                "MYR",
                "IDR",
                "PHP",
                "BDT",
                "EGP",
                "NGN",
                "KWD",
                "QAR",
                "RUB"
              ],
              "default": "USD"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/retirement-calculator": {
      "get": {
        "operationId": "retirementCalculator",
        "summary": "Retirement Calculator",
        "description": "Free retirement calculator: project your nest egg at retirement from savings and monthly contributions, then see how long withdrawals will last, year by year.",
        "tags": [
          "Finance"
        ],
        "parameters": [
          {
            "name": "age",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Current age (years)",
              "minimum": 15,
              "maximum": 90,
              "default": 35
            }
          },
          {
            "name": "retireAge",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Retirement age (years)",
              "minimum": 20,
              "maximum": 100,
              "default": 65
            }
          },
          {
            "name": "savings",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Current retirement savings",
              "minimum": 0,
              "maximum": 10000000000,
              "default": 50000
            }
          },
          {
            "name": "currency",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Currency",
              "enum": [
                "USD",
                "EUR",
                "GBP",
                "JPY",
                "CAD",
                "AUD",
                "CHF",
                "CNY",
                "INR",
                "PKR",
                "AED",
                "SAR",
                "NZD",
                "SGD",
                "HKD",
                "SEK",
                "NOK",
                "DKK",
                "PLN",
                "TRY",
                "ZAR",
                "BRL",
                "MXN",
                "KRW",
                "THB",
                "MYR",
                "IDR",
                "PHP",
                "BDT",
                "EGP",
                "NGN",
                "KWD",
                "QAR",
                "RUB"
              ],
              "default": "USD"
            }
          },
          {
            "name": "monthly",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Monthly contribution",
              "minimum": 0,
              "maximum": 100000000,
              "default": 800
            }
          },
          {
            "name": "rate",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Expected return (before retiring) (%)",
              "minimum": 0,
              "maximum": 30,
              "default": 7
            }
          },
          {
            "name": "years",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Years in retirement (years)",
              "minimum": 1,
              "maximum": 60,
              "default": 25
            }
          },
          {
            "name": "withdrawal",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Monthly withdrawal in retirement",
              "minimum": 0,
              "maximum": 100000000,
              "default": 6000
            }
          },
          {
            "name": "retireRate",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Return during retirement (%)",
              "minimum": 0,
              "maximum": 30,
              "default": 5
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/roi-calculator": {
      "get": {
        "operationId": "roiCalculator",
        "summary": "ROI Calculator",
        "description": "Free ROI calculator: work out your return on investment as a percentage, net profit or loss, and annualized ROI based on how long the money was invested.",
        "tags": [
          "Finance"
        ],
        "parameters": [
          {
            "name": "invested",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Amount invested",
              "minimum": 0.01,
              "maximum": 1000000000000,
              "default": 10000
            }
          },
          {
            "name": "currency",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Currency",
              "enum": [
                "USD",
                "EUR",
                "GBP",
                "JPY",
                "CAD",
                "AUD",
                "CHF",
                "CNY",
                "INR",
                "PKR",
                "AED",
                "SAR",
                "NZD",
                "SGD",
                "HKD",
                "SEK",
                "NOK",
                "DKK",
                "PLN",
                "TRY",
                "ZAR",
                "BRL",
                "MXN",
                "KRW",
                "THB",
                "MYR",
                "IDR",
                "PHP",
                "BDT",
                "EGP",
                "NGN",
                "KWD",
                "QAR",
                "RUB"
              ],
              "default": "USD"
            }
          },
          {
            "name": "returned",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Amount returned (final value)",
              "minimum": 0,
              "maximum": 10000000000000,
              "default": 15000
            }
          },
          {
            "name": "years",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Investment length (optional) (years) Needed for annualized ROI.",
              "minimum": 0.01,
              "maximum": 100,
              "default": 3
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/roman-numeral-converter": {
      "get": {
        "operationId": "romanNumeralConverter",
        "summary": "Roman Numeral Converter",
        "description": "Free Roman numeral converter: change any number from 1 to 3999 into Roman numerals or read a numeral back as a number, with a step-by-step breakdown.",
        "tags": [
          "Conversion"
        ],
        "parameters": [
          {
            "name": "mode",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Convert",
              "enum": [
                "toRoman",
                "toNumber"
              ],
              "default": "toRoman"
            }
          },
          {
            "name": "number",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Number",
              "minimum": 1,
              "maximum": 3999,
              "default": 1999
            }
          },
          {
            "name": "roman",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Roman numeral",
              "maxLength": 20,
              "default": "MMXXVI"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/sales-tax-calculator": {
      "get": {
        "operationId": "salesTaxCalculator",
        "summary": "Sales Tax Calculator",
        "description": "Free sales tax calculator: add sales tax to any price or work backwards from a tax-inclusive total to the pre-tax price, using any state or local rate.",
        "tags": [
          "Finance"
        ],
        "parameters": [
          {
            "name": "mode",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Calculation",
              "enum": [
                "add",
                "remove"
              ],
              "default": "add"
            }
          },
          {
            "name": "amount",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Price before tax",
              "minimum": 0,
              "maximum": 1000000000,
              "default": 120
            }
          },
          {
            "name": "currency",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Currency",
              "enum": [
                "USD",
                "EUR",
                "GBP",
                "JPY",
                "CAD",
                "AUD",
                "CHF",
                "CNY",
                "INR",
                "PKR",
                "AED",
                "SAR",
                "NZD",
                "SGD",
                "HKD",
                "SEK",
                "NOK",
                "DKK",
                "PLN",
                "TRY",
                "ZAR",
                "BRL",
                "MXN",
                "KRW",
                "THB",
                "MYR",
                "IDR",
                "PHP",
                "BDT",
                "EGP",
                "NGN",
                "KWD",
                "QAR",
                "RUB"
              ],
              "default": "USD"
            }
          },
          {
            "name": "rate",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Sales tax rate (%) Combined state + local rate",
              "minimum": 0,
              "maximum": 50,
              "default": 8.25
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/savings-goal-calculator": {
      "get": {
        "operationId": "savingsGoalCalculator",
        "summary": "Savings Goal Calculator",
        "description": "Free savings goal calculator: find out how much to save each month to reach a target amount by a deadline, counting current savings and interest earned.",
        "tags": [
          "Finance"
        ],
        "parameters": [
          {
            "name": "goal",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Savings goal",
              "minimum": 1,
              "maximum": 10000000000,
              "default": 50000
            }
          },
          {
            "name": "currency",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Currency",
              "enum": [
                "USD",
                "EUR",
                "GBP",
                "JPY",
                "CAD",
                "AUD",
                "CHF",
                "CNY",
                "INR",
                "PKR",
                "AED",
                "SAR",
                "NZD",
                "SGD",
                "HKD",
                "SEK",
                "NOK",
                "DKK",
                "PLN",
                "TRY",
                "ZAR",
                "BRL",
                "MXN",
                "KRW",
                "THB",
                "MYR",
                "IDR",
                "PHP",
                "BDT",
                "EGP",
                "NGN",
                "KWD",
                "QAR",
                "RUB"
              ],
              "default": "USD"
            }
          },
          {
            "name": "current",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Already saved",
              "minimum": 0,
              "maximum": 10000000000,
              "default": 5000
            }
          },
          {
            "name": "years",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Time to reach goal (years)",
              "minimum": 0.25,
              "maximum": 60,
              "default": 5
            }
          },
          {
            "name": "rate",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Annual interest / return (%)",
              "minimum": 0,
              "maximum": 30,
              "default": 4
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/shoe-size-converter": {
      "get": {
        "operationId": "shoeSizeConverter",
        "summary": "Shoe Size Converter",
        "description": "Free shoe size converter: convert between US men's, US women's, UK, EU and Japanese cm sizes with a clear adult size chart, so online shoes fit the first time.",
        "tags": [
          "Conversion"
        ],
        "parameters": [
          {
            "name": "system",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Size system",
              "enum": [
                "usM",
                "usW",
                "uk",
                "eu",
                "cm"
              ],
              "default": "usM"
            }
          },
          {
            "name": "size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Size",
              "minimum": 1,
              "maximum": 60,
              "default": 9
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/simple-interest-calculator": {
      "get": {
        "operationId": "simpleInterestCalculator",
        "summary": "Simple Interest Calculator",
        "description": "Free simple interest calculator: work out the interest and total amount on any principal using I = P × r × t, with time entered in years, months or days.",
        "tags": [
          "Finance"
        ],
        "parameters": [
          {
            "name": "principal",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Principal",
              "minimum": 0.01,
              "maximum": 1000000000000,
              "default": 10000
            }
          },
          {
            "name": "currency",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Currency",
              "enum": [
                "USD",
                "EUR",
                "GBP",
                "JPY",
                "CAD",
                "AUD",
                "CHF",
                "CNY",
                "INR",
                "PKR",
                "AED",
                "SAR",
                "NZD",
                "SGD",
                "HKD",
                "SEK",
                "NOK",
                "DKK",
                "PLN",
                "TRY",
                "ZAR",
                "BRL",
                "MXN",
                "KRW",
                "THB",
                "MYR",
                "IDR",
                "PHP",
                "BDT",
                "EGP",
                "NGN",
                "KWD",
                "QAR",
                "RUB"
              ],
              "default": "USD"
            }
          },
          {
            "name": "rate",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Annual interest rate (% / yr)",
              "minimum": 0,
              "maximum": 1000,
              "default": 5
            }
          },
          {
            "name": "time",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Time",
              "minimum": 0.01,
              "maximum": 36500,
              "default": 3
            }
          },
          {
            "name": "unit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Unit",
              "enum": [
                "years",
                "months",
                "days"
              ],
              "default": "years"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/sip-calculator": {
      "get": {
        "operationId": "sipCalculator",
        "summary": "SIP Calculator",
        "description": "Free SIP calculator: estimate the maturity value of a monthly mutual fund SIP, the amount invested and returns earned, with a year-by-year growth chart.",
        "tags": [
          "Finance"
        ],
        "parameters": [
          {
            "name": "amount",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Monthly SIP amount",
              "minimum": 100,
              "maximum": 100000000,
              "default": 10000
            }
          },
          {
            "name": "currency",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Currency",
              "enum": [
                "USD",
                "EUR",
                "GBP",
                "JPY",
                "CAD",
                "AUD",
                "CHF",
                "CNY",
                "INR",
                "PKR",
                "AED",
                "SAR",
                "NZD",
                "SGD",
                "HKD",
                "SEK",
                "NOK",
                "DKK",
                "PLN",
                "TRY",
                "ZAR",
                "BRL",
                "MXN",
                "KRW",
                "THB",
                "MYR",
                "IDR",
                "PHP",
                "BDT",
                "EGP",
                "NGN",
                "KWD",
                "QAR",
                "RUB"
              ],
              "default": "INR"
            }
          },
          {
            "name": "rate",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Expected annual return (%)",
              "minimum": 0,
              "maximum": 50,
              "default": 12
            }
          },
          {
            "name": "years",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Investment period (years)",
              "minimum": 1,
              "maximum": 50,
              "default": 10
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/sleep-calculator": {
      "get": {
        "operationId": "sleepCalculator",
        "summary": "Sleep Calculator",
        "description": "Free sleep calculator: find the best time to go to bed or wake up using 90-minute sleep cycles, so you wake between cycles feeling refreshed, not groggy.",
        "tags": [
          "Health"
        ],
        "parameters": [
          {
            "name": "mode",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "I want to…",
              "enum": [
                "wake",
                "bed"
              ],
              "default": "wake"
            }
          },
          {
            "name": "time",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Wake-up time (HH:MM, 24-hour)",
              "default": "07:00"
            }
          },
          {
            "name": "latency",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Time to fall asleep (min)",
              "minimum": 0,
              "maximum": 90,
              "default": 15
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/speed-distance-time-calculator": {
      "get": {
        "operationId": "speedDistanceTimeCalculator",
        "summary": "Speed Distance Time",
        "description": "Free speed, distance and time calculator: solve for any one from the other two in km, miles, km/h or mph, with the formula and step-by-step working shown.",
        "tags": [
          "Everyday"
        ],
        "parameters": [
          {
            "name": "mode",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Solve for",
              "enum": [
                "speed",
                "distance",
                "time"
              ],
              "default": "speed"
            }
          },
          {
            "name": "distance",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Distance",
              "minimum": 0,
              "maximum": 1000000000,
              "default": 150
            }
          },
          {
            "name": "distUnit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Distance unit",
              "enum": [
                "km",
                "miles"
              ],
              "default": "km"
            }
          },
          {
            "name": "speed",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Speed",
              "minimum": 0,
              "maximum": 10000000,
              "default": 60
            }
          },
          {
            "name": "speedUnit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Speed unit",
              "enum": [
                "kmh",
                "mph"
              ],
              "default": "kmh"
            }
          },
          {
            "name": "hours",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Time – hours",
              "minimum": 0,
              "maximum": 1000000,
              "default": 2
            }
          },
          {
            "name": "minutes",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Time – minutes",
              "minimum": 0,
              "maximum": 59.999,
              "default": 30
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/square-footage-calculator": {
      "get": {
        "operationId": "squareFootageCalculator",
        "summary": "Square Footage Calculator",
        "description": "Free square footage calculator for rectangles, L-shaped rooms, circles and triangles. Get the area in sq ft, m², square yards and acres, plus the total cost.",
        "tags": [
          "Everyday"
        ],
        "parameters": [
          {
            "name": "shape",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Shape",
              "enum": [
                "rectangle",
                "lshape",
                "circle",
                "triangle"
              ],
              "default": "rectangle"
            }
          },
          {
            "name": "unit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Units",
              "enum": [
                "ft",
                "m"
              ],
              "default": "ft"
            }
          },
          {
            "name": "a",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Length (ft)",
              "minimum": 0.01,
              "maximum": 1000000,
              "default": 12
            }
          },
          {
            "name": "b",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Width (ft)",
              "minimum": 0.01,
              "maximum": 1000000,
              "default": 15
            }
          },
          {
            "name": "c",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Part 2 length (ft)",
              "minimum": 0.01,
              "maximum": 1000000,
              "default": 6
            }
          },
          {
            "name": "d",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Part 2 width (ft)",
              "minimum": 0.01,
              "maximum": 1000000,
              "default": 8
            }
          },
          {
            "name": "price",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Price per sq ft (optional)",
              "minimum": 0,
              "maximum": 1000000
            }
          },
          {
            "name": "currency",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Currency",
              "enum": [
                "USD",
                "EUR",
                "GBP",
                "JPY",
                "CAD",
                "AUD",
                "CHF",
                "CNY",
                "INR",
                "PKR",
                "AED",
                "SAR",
                "NZD",
                "SGD",
                "HKD",
                "SEK",
                "NOK",
                "DKK",
                "PLN",
                "TRY",
                "ZAR",
                "BRL",
                "MXN",
                "KRW",
                "THB",
                "MYR",
                "IDR",
                "PHP",
                "BDT",
                "EGP",
                "NGN",
                "KWD",
                "QAR",
                "RUB"
              ],
              "default": "USD"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/square-root-calculator": {
      "get": {
        "operationId": "squareRootCalculator",
        "summary": "Square Root Calculator",
        "description": "Free square root calculator: find the square root, cube root or any nth root of a number, simplify radicals like √72 = 6√2, and check the answer step by step.",
        "tags": [
          "Math"
        ],
        "parameters": [
          {
            "name": "x",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Number",
              "minimum": -1000000000000000,
              "maximum": 1000000000000000,
              "default": 72
            }
          },
          {
            "name": "n",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Root (index) 2 = square root, 3 = cube root…",
              "minimum": 2,
              "maximum": 100,
              "default": 2
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/standard-deviation-calculator": {
      "get": {
        "operationId": "standardDeviationCalculator",
        "summary": "Standard Deviation Calculator",
        "description": "Free standard deviation calculator: enter a data set to get the sample or population standard deviation, variance and mean, with a full step-by-step table.",
        "tags": [
          "Math"
        ],
        "parameters": [
          {
            "name": "numbers",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Data set Separate values with commas, spaces or new lines.",
              "maxLength": 100000,
              "default": "2, 4, 4, 4, 5, 5, 7, 9"
            }
          },
          {
            "name": "type",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Data is a…",
              "enum": [
                "sample",
                "population"
              ],
              "default": "population"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/time-duration-calculator": {
      "get": {
        "operationId": "timeDurationCalculator",
        "summary": "Time Duration Calculator",
        "description": "Free time duration calculator: find the hours and minutes between two clock times, even across midnight, with the result in decimal hours and total minutes.",
        "tags": [
          "DateTime"
        ],
        "parameters": [
          {
            "name": "start",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Start time (HH:MM, 24-hour)",
              "default": "09:15"
            }
          },
          {
            "name": "end",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "End time An end time earlier than the start is treated as the next day. (HH:MM, 24-hour)",
              "default": "17:45"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/time-to-decimal-converter": {
      "get": {
        "operationId": "timeToDecimalConverter",
        "summary": "Time to Decimal Converter",
        "description": "Free time to decimal converter: change hours, minutes and seconds into decimal hours for timesheets and payroll, or turn decimal hours back into h:mm:ss format.",
        "tags": [
          "DateTime"
        ],
        "parameters": [
          {
            "name": "mode",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Convert",
              "enum": [
                "toDecimal",
                "toHms"
              ],
              "default": "toDecimal"
            }
          },
          {
            "name": "hours",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Hours",
              "minimum": 0,
              "maximum": 1000000,
              "default": 2
            }
          },
          {
            "name": "minutes",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Minutes",
              "minimum": 0,
              "maximum": 59,
              "default": 45
            }
          },
          {
            "name": "seconds",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Seconds",
              "minimum": 0,
              "maximum": 59.999,
              "default": 0
            }
          },
          {
            "name": "decimal",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Decimal hours (h)",
              "minimum": 0,
              "maximum": 1000000,
              "default": 7.8
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/tip-calculator": {
      "get": {
        "operationId": "tipCalculator",
        "summary": "Tip Calculator",
        "description": "Free tip calculator: work out the tip and total for any bill, split it between friends, and compare 10%, 15%, 18%, 20% and 25% tips instantly.",
        "tags": [
          "Everyday"
        ],
        "parameters": [
          {
            "name": "bill",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Bill amount",
              "minimum": 0,
              "maximum": 10000000,
              "default": 84
            }
          },
          {
            "name": "currency",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Currency",
              "enum": [
                "USD",
                "EUR",
                "GBP",
                "JPY",
                "CAD",
                "AUD",
                "CHF",
                "CNY",
                "INR",
                "PKR",
                "AED",
                "SAR",
                "NZD",
                "SGD",
                "HKD",
                "SEK",
                "NOK",
                "DKK",
                "PLN",
                "TRY",
                "ZAR",
                "BRL",
                "MXN",
                "KRW",
                "THB",
                "MYR",
                "IDR",
                "PHP",
                "BDT",
                "EGP",
                "NGN",
                "KWD",
                "QAR",
                "RUB"
              ],
              "default": "USD"
            }
          },
          {
            "name": "tip",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Tip percentage (%)",
              "minimum": 0,
              "maximum": 100,
              "default": 18
            }
          },
          {
            "name": "people",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Split between (people)",
              "minimum": 1,
              "maximum": 100,
              "default": 2
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/unix-timestamp-converter": {
      "get": {
        "operationId": "unixTimestampConverter",
        "summary": "Unix Timestamp Converter",
        "description": "Free Unix timestamp converter: turn epoch seconds or milliseconds into a readable UTC date and ISO 8601 time, or convert any date and time to a Unix timestamp.",
        "tags": [
          "DateTime"
        ],
        "parameters": [
          {
            "name": "mode",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Convert",
              "enum": [
                "toDate",
                "toTs"
              ],
              "default": "toDate"
            }
          },
          {
            "name": "ts",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Unix timestamp Seconds or milliseconds – detected automatically. Empty = now.",
              "minimum": -8640000000000000,
              "maximum": 8640000000000000
            }
          },
          {
            "name": "dt",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Date and time (UTC) Empty = now. (YYYY-MM-DDTHH:MM)"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/vat-calculator": {
      "get": {
        "operationId": "vatCalculator",
        "summary": "VAT Calculator",
        "description": "Free VAT calculator: add VAT to a net price or remove VAT from a gross amount at 20% or any rate, with UK, EU, UAE and Saudi standard rates compared.",
        "tags": [
          "Finance"
        ],
        "parameters": [
          {
            "name": "mode",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Calculation",
              "enum": [
                "add",
                "remove"
              ],
              "default": "add"
            }
          },
          {
            "name": "amount",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Net amount (excl. VAT)",
              "minimum": 0,
              "maximum": 10000000000,
              "default": 500
            }
          },
          {
            "name": "currency",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Currency",
              "enum": [
                "USD",
                "EUR",
                "GBP",
                "JPY",
                "CAD",
                "AUD",
                "CHF",
                "CNY",
                "INR",
                "PKR",
                "AED",
                "SAR",
                "NZD",
                "SGD",
                "HKD",
                "SEK",
                "NOK",
                "DKK",
                "PLN",
                "TRY",
                "ZAR",
                "BRL",
                "MXN",
                "KRW",
                "THB",
                "MYR",
                "IDR",
                "PHP",
                "BDT",
                "EGP",
                "NGN",
                "KWD",
                "QAR",
                "RUB"
              ],
              "default": "GBP"
            }
          },
          {
            "name": "rate",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "VAT rate (%)",
              "minimum": 0,
              "maximum": 50,
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/volume-calculator": {
      "get": {
        "operationId": "volumeCalculator",
        "summary": "Volume Calculator",
        "description": "Free volume calculator for cubes, boxes, cylinders, spheres, cones and pyramids. Enter dimensions to get the volume with its formula, plus litres and gallons.",
        "tags": [
          "Math"
        ],
        "parameters": [
          {
            "name": "shape",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Shape",
              "enum": [
                "cube",
                "box",
                "cylinder",
                "sphere",
                "cone",
                "pyramid"
              ],
              "default": "box"
            }
          },
          {
            "name": "unit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Unit",
              "enum": [
                "none",
                "mm",
                "cm",
                "m",
                "km",
                "in",
                "ft",
                "yd",
                "mi"
              ],
              "default": "cm"
            }
          },
          {
            "name": "x",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Length",
              "minimum": 0,
              "maximum": 1000000000,
              "default": 30
            }
          },
          {
            "name": "y",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Width",
              "minimum": 0,
              "maximum": 1000000000,
              "default": 20
            }
          },
          {
            "name": "z",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Height",
              "minimum": 0,
              "maximum": 1000000000,
              "default": 10
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/water-intake-calculator": {
      "get": {
        "operationId": "waterIntakeCalculator",
        "summary": "Water Intake Calculator",
        "description": "Free water intake calculator: find how much water you should drink each day in litres, cups and ounces based on your body weight, daily exercise and climate.",
        "tags": [
          "Health"
        ],
        "parameters": [
          {
            "name": "units",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Units",
              "enum": [
                "metric",
                "imperial"
              ],
              "default": "metric"
            }
          },
          {
            "name": "kg",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Weight (kg)",
              "minimum": 25,
              "maximum": 350,
              "default": 70
            }
          },
          {
            "name": "lb",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Weight (lb)",
              "minimum": 55,
              "maximum": 770,
              "default": 155
            }
          },
          {
            "name": "minutes",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Exercise per day (min)",
              "minimum": 0,
              "maximum": 600,
              "default": 30
            }
          },
          {
            "name": "climate",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Climate",
              "enum": [
                "temperate",
                "hot"
              ],
              "default": "temperate"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/week-number-calculator": {
      "get": {
        "operationId": "weekNumberCalculator",
        "summary": "Week Number Calculator",
        "description": "Free week number calculator: find the ISO 8601 week number of any date, the Monday and Sunday of that week, the day of the year and the days left in the year.",
        "tags": [
          "DateTime"
        ],
        "parameters": [
          {
            "name": "date",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date",
              "description": "Date Leave empty to use today's date. (YYYY-MM-DD)"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/word-counter": {
      "get": {
        "operationId": "wordCounter",
        "summary": "Word Counter",
        "description": "Free word counter: count words, characters with and without spaces, sentences and paragraphs, plus reading time, speaking time and your top keywords.",
        "tags": [
          "Everyday"
        ],
        "parameters": [
          {
            "name": "text",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Your text",
              "maxLength": 100000,
              "default": "Paste or type your text here. The counter updates words, characters, sentences and paragraphs.\n\nIt also estimates reading time and speaking time, and lists the keywords you use most often."
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    },
    "/api/calc/zakat-calculator": {
      "get": {
        "operationId": "zakatCalculator",
        "summary": "Zakat Calculator",
        "description": "Free zakat calculator: add up cash, gold, silver, investments and business assets, deduct debts due and check the gold or silver nisab for the 2.5% zakat due.",
        "tags": [
          "Finance"
        ],
        "parameters": [
          {
            "name": "currency",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Currency",
              "enum": [
                "USD",
                "EUR",
                "GBP",
                "JPY",
                "CAD",
                "AUD",
                "CHF",
                "CNY",
                "INR",
                "PKR",
                "AED",
                "SAR",
                "NZD",
                "SGD",
                "HKD",
                "SEK",
                "NOK",
                "DKK",
                "PLN",
                "TRY",
                "ZAR",
                "BRL",
                "MXN",
                "KRW",
                "THB",
                "MYR",
                "IDR",
                "PHP",
                "BDT",
                "EGP",
                "NGN",
                "KWD",
                "QAR",
                "RUB"
              ],
              "default": "PKR"
            }
          },
          {
            "name": "basis",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Nisab basis",
              "enum": [
                "silver",
                "gold"
              ],
              "default": "silver"
            }
          },
          {
            "name": "goldPrice",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Gold price per gram (24k) Leave empty to use today’s live market price, or type your local price.",
              "minimum": 0.01,
              "maximum": 100000000
            }
          },
          {
            "name": "silverPrice",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Silver price per gram Leave empty to use today’s live market price, or type your local price.",
              "minimum": 0.01,
              "maximum": 10000000
            }
          },
          {
            "name": "cash",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Cash & bank balances At home, in accounts and wallets",
              "minimum": 0,
              "maximum": 10000000000000,
              "default": 500000
            }
          },
          {
            "name": "gold",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Value of gold Market value of gold you own",
              "minimum": 0,
              "maximum": 10000000000000,
              "default": 300000
            }
          },
          {
            "name": "silver",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Value of silver",
              "minimum": 0,
              "maximum": 10000000000000,
              "default": 0
            }
          },
          {
            "name": "investments",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Investments & shares Market value of shares, funds, crypto",
              "minimum": 0,
              "maximum": 10000000000000,
              "default": 200000
            }
          },
          {
            "name": "business",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Business assets Stock for sale and business cash",
              "minimum": 0,
              "maximum": 10000000000000,
              "default": 0
            }
          },
          {
            "name": "receivables",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Money owed to you Loans you expect to be repaid",
              "minimum": 0,
              "maximum": 10000000000000,
              "default": 50000
            }
          },
          {
            "name": "debts",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "description": "Debts & bills due now Immediate liabilities only – not the full balance of long-term loans",
              "minimum": 0,
              "maximum": 10000000000000,
              "default": 100000
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Calculation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalcOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (see errors)"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "CalcOutput": {
        "type": "object",
        "properties": {
          "ok": {
            "type": "boolean"
          },
          "tool": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "url": {
            "type": "string",
            "description": "Open this link to see the full calculation"
          },
          "inputs": {
            "type": "object"
          },
          "summary": {
            "type": "string",
            "description": "Plain-text answer"
          },
          "details": {
            "type": "string"
          },
          "result": {
            "type": "object"
          },
          "errors": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          }
        }
      }
    }
  }
}