finology-tech · Schema

ProjectionResult

CompanyFinTechStudentLoansAIIntegrationFinancialAdvisors

Properties

Name Type Description
label stringnull
planType stringnull
year1MonthlyPayment number
payoffOrForgivenessDate stringnull
monthsToFinish integernull
totalOutOfPocket number
amountForgiven number
forgivenessTaxesOwed number
forgivenessType string Which forgiveness program the projection reaches: Pslf, TimeBased, Teacher or None. Keyed routes wrote the integer before 2026-10-14; that value is still sent as forgivenessTypeCode (0 Pslf, 1 TimeBas
forgivenessTypeCode integer
weightedAverageInterestRate number
yearly arraynull Present only when the request sent includeYearly: true. Send "includeYearly": true to add `yearly` to each projection: year 0 is the loan book as sent; year n covers repayment months 12(n-1) to 12n-1
provenance object
View JSON Schema on GitHub

JSON Schema

finology-tech-projection-result-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/finology-tech/json-schema/finology-tech-projection-result-schema.json",
  "title": "ProjectionResult",
  "x-generated": "2026-10-30",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/finology-tech-openapi.json#/components/schemas/ProjectionResult",
  "type": "object",
  "properties": {
    "label": {
      "type": [
        "string",
        "null"
      ]
    },
    "planType": {
      "type": [
        "string",
        "null"
      ]
    },
    "year1MonthlyPayment": {
      "type": "number",
      "format": "double"
    },
    "payoffOrForgivenessDate": {
      "type": [
        "string",
        "null"
      ],
      "format": "date-time"
    },
    "monthsToFinish": {
      "type": [
        "integer",
        "null"
      ],
      "format": "int32"
    },
    "totalOutOfPocket": {
      "type": "number",
      "format": "double"
    },
    "amountForgiven": {
      "type": "number",
      "format": "double"
    },
    "forgivenessTaxesOwed": {
      "type": "number",
      "format": "double"
    },
    "forgivenessType": {
      "enum": [
        "Pslf",
        "TimeBased",
        "Teacher",
        "None"
      ],
      "type": "string",
      "description": "Which forgiveness program the projection reaches: Pslf, TimeBased, Teacher or None. Keyed routes wrote the integer before 2026-10-14; that value is still sent as forgivenessTypeCode (0 Pslf, 1 TimeBased, 2 Teacher, 3 None), deprecated."
    },
    "forgivenessTypeCode": {
      "type": "integer",
      "format": "int32",
      "readOnly": true
    },
    "weightedAverageInterestRate": {
      "type": "number",
      "format": "double"
    },
    "yearly": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "$ref": "#/$defs/YearlyPoint"
      },
      "description": "Present only when the request sent includeYearly: true. Send \"includeYearly\": true to add `yearly` to each projection: year 0 is the loan book as sent; year n covers repayment months 12(n-1) to 12n-1 and gives the principal and interest balance after that year's last payment, the payments that year, the cumulative paid and any balance forgiven that year (date = that month). The series ends at the payoff or forgiveness month. Payments sum to totalOutOfPocket and forgiven amounts to amountForgiven. Money in cents. Default false: the field is then absent and the response is unchanged."
    },
    "provenance": {
      "$ref": "#/$defs/EngineProvenance"
    }
  },
  "additionalProperties": false,
  "$defs": {
    "EngineProvenance": {
      "type": "object",
      "properties": {
        "computedBy": {
          "type": [
            "string",
            "null"
          ]
        },
        "engine": {
          "type": [
            "string",
            "null"
          ]
        },
        "parityVerified": {
          "type": "boolean"
        },
        "computedAtUtc": {
          "type": "string",
          "format": "date-time"
        },
        "ruleVersion": {
          "type": [
            "string",
            "null"
          ]
        },
        "citations": {
          "type": [
            "array",
            "null"
          ],
          "items": {
            "$ref": "#/$defs/RuleCitation"
          }
        },
        "knownOmissions": {
          "type": [
            "array",
            "null"
          ],
          "items": {
            "$ref": "#/$defs/RuleOmissionNote"
          }
        },
        "answerId": {
          "type": [
            "string",
            "null"
          ],
          "format": "uuid"
        },
        "verifyUrl": {
          "type": [
            "string",
            "null"
          ]
        }
      },
      "additionalProperties": false
    },
    "RuleCitation": {
      "type": "object",
      "properties": {
        "id": {
          "type": [
            "string",
            "null"
          ]
        },
        "label": {
          "type": [
            "string",
            "null"
          ]
        },
        "authority": {
          "type": [
            "string",
            "null"
          ]
        },
        "url": {
          "type": [
            "string",
            "null"
          ]
        },
        "effectiveDate": {
          "type": [
            "string",
            "null"
          ]
        },
        "lastVerified": {
          "type": [
            "string",
            "null"
          ]
        }
      },
      "additionalProperties": false
    },
    "RuleOmissionNote": {
      "type": "object",
      "properties": {
        "id": {
          "type": [
            "string",
            "null"
          ]
        },
        "label": {
          "type": [
            "string",
            "null"
          ]
        },
        "detail": {
          "type": [
            "string",
            "null"
          ]
        },
        "authority": {
          "type": [
            "string",
            "null"
          ]
        },
        "url": {
          "type": [
            "string",
            "null"
          ]
        },
        "effectiveDate": {
          "type": [
            "string",
            "null"
          ]
        },
        "expiresDate": {
          "type": [
            "string",
            "null"
          ]
        },
        "lastVerified": {
          "type": [
            "string",
            "null"
          ]
        }
      },
      "additionalProperties": false
    },
    "YearlyPoint": {
      "type": "object",
      "properties": {
        "year": {
          "type": "integer",
          "description": "0 for the opening balance, then 1, 2, ... per year of repayment.",
          "format": "int32"
        },
        "date": {
          "type": "string",
          "description": "The month the balances are read.",
          "format": "date-time"
        },
        "principalBalance": {
          "type": "number",
          "description": "Outstanding principal across the loan book at date.",
          "format": "double"
        },
        "interestBalance": {
          "type": "number",
          "description": "Outstanding unpaid interest across the loan book at date.",
          "format": "double"
        },
        "paymentsThisYear": {
          "type": "number",
          "description": "What the borrower paid during this year (0 for year 0).",
          "format": "double"
        },
        "cumulativePaid": {
          "type": "number",
          "description": "Paid from the repayment start through this year. The last point equals totalOutOfPocket.",
          "format": "double"
        },
        "forgivenThisYear": {
          "type": "number",
          "description": "Balance forgiven during this year; sums to amountForgiven.",
          "format": "double"
        }
      },
      "additionalProperties": false,
      "description": "One year of a projection. Year 0 is the loan book as sent (date = repayment start). Year n covers repayment months 12(n-1) to 12n-1; balances are after that year's last payment and date is that month. Money in cents, half-up; each year's payment is rounded so the yearly payments add up to totalOutOfPocket exactly."
    }
  }
}

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/finology-tech-projection-result"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.