{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/moneyhub/main/json-schema/moneyhub-affordability-income-schema.json",
  "title": "AffordabilityIncome",
  "x-generated": "2026-10-12",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/moneyhub-affordability-api-openapi.yml#/components/schemas/AffordabilityIncome",
  "additionalProperties": false,
  "type": "object",
  "properties": {
    "createdAt": {
      "description": "The timestamp at which the report was generated",
      "type": "string"
    },
    "id": {
      "description": "The report id",
      "type": "string"
    },
    "income": {
      "type": "object",
      "properties": {
        "amountConsistency": {
          "description": "Consistency of monthly income, as a number between 0 and 1",
          "type": "number"
        },
        "longevity": {
          "type": "object",
          "properties": {
            "consecutiveIncomeMonths": {
              "description": "Longevity of income detected in number of months",
              "type": "number"
            },
            "incomePeriodLengthMonths": {
              "description": "The number of months of transaction history available for the income detection process",
              "type": "number"
            }
          }
        },
        "predicted": {
          "description": "The predicted monthly income amount",
          "additionalProperties": false,
          "type": "object",
          "properties": {
            "value": {
              "description": "The amount in minor units of the currency, eg. pennies for GBP, negative means money going out of an account, positive means money coming into an account.",
              "type": "integer"
            },
            "majorUnits": {
              "description": "The positive major units of the value, based on the values currency, eg. pounds for GBP.",
              "type": "integer"
            },
            "minorUnits": {
              "description": "The positive minor units of the value, based on the values currency, eg. pennies for GBP.",
              "type": "integer"
            },
            "currency": {
              "description": "The currency of the amount",
              "type": "string"
            }
          },
          "required": [
            "value",
            "currency"
          ]
        },
        "regularIncomeDetected": {
          "description": "Whether or not regular income was detected",
          "type": "boolean"
        }
      },
      "required": [
        "amountConsistency",
        "longevity",
        "predicted",
        "regularIncomeDetected"
      ]
    },
    "overview": {
      "type": "object",
      "properties": {
        "income": {
          "description": "The median monthly income",
          "additionalProperties": false,
          "type": "object",
          "properties": {
            "value": {
              "description": "The amount in minor units of the currency, eg. pennies for GBP, negative means money going out of an account, positive means money coming into an account.",
              "type": "integer"
            },
            "majorUnits": {
              "description": "The positive major units of the value, based on the values currency, eg. pounds for GBP.",
              "type": "integer"
            },
            "minorUnits": {
              "description": "The positive minor units of the value, based on the values currency, eg. pennies for GBP.",
              "type": "integer"
            },
            "currency": {
              "description": "The currency of the amount",
              "type": "string"
            }
          },
          "required": [
            "value",
            "currency"
          ]
        },
        "incomeIncludingTransfers": {
          "description": "The median monthly income including incoming transfers when incoming transfers exceed outgoing transfers",
          "additionalProperties": false,
          "type": "object",
          "properties": {
            "value": {
              "description": "The amount in minor units of the currency, eg. pennies for GBP, negative means money going out of an account, positive means money coming into an account.",
              "type": "integer"
            },
            "majorUnits": {
              "description": "The positive major units of the value, based on the values currency, eg. pounds for GBP.",
              "type": "integer"
            },
            "minorUnits": {
              "description": "The positive minor units of the value, based on the values currency, eg. pennies for GBP.",
              "type": "integer"
            },
            "currency": {
              "description": "The currency of the amount",
              "type": "string"
            }
          },
          "required": [
            "value",
            "currency"
          ]
        }
      },
      "required": [
        "income"
      ]
    },
    "primaryIncomeAccountId": {
      "description": "The account id of the detected primary income account",
      "type": "string"
    }
  },
  "required": [
    "createdAt",
    "id"
  ]
}