Skip to main content

httpsEngineCreateSession

Creates a new session from provided data and assigns it to a MyCRM user ID.

When successful, returns a SessionID which can be used to load that session in the MRE UI.

Function performs basic validation on the structure of the request payload but does not impose strict rules based on what is required for generating a report. This means, that a successfully created session does not guarantee the data is complete for actual calculation in the UI. Data is loaded on a best-effort basis in the UI and then user is required to fill in the missing bits if needed.

Request


Type: POST
Path: /httpsEngineCreateSession

URL (development): https://us-central1-mortgage-rec-engine-dev-msec.cloudfunctions.net/httpsEngineCreateSession

Request payload is sent as HTTP JSON body.

Authentication

API Key required. HTTP Bearer Token authentication is used.

JSON Payload

{
  "$schema": "http://json-schema.org/draft-04/07/schema#",
  "$defs": {
    "Lender": {
      "type": ["string","null"],
      "description": "The [lender (bank)](https://docs.blackfin.tools/books/mortgagerecenginemycrm/page/lenders) which the existing loan is with/from - eg. 'Westpac' this field is only present if LoanType=Existing",
      "enum": [null,"AbodeMortgagesLimited","AccessHomeLoansLimited","Accuro","AIA","AlliedDunbar","AMBL","AMPLifetrack","AMPRPP","ANZ","Argosy","ASAPFinanceLimited","ASB","AscendFinance","AssetFinanceSelect","AsteronLife","AvantiFinance","BankofChinaNewZealandLimited","BasecorpFinance","BasecorpFinance","Bluestone","BNZ","CBS","CFML","ChinaConstructionBankNewZealandLimited","Cigna","CommixGroupLimited","CressidaCapital","DBR","DBRLimited","EconomyHomeLoans","FamilyFinance","FidelityLife","FirstMortgageTrust","FreedomMortgages","FreedomMortgagesLtd","GEMoney","GemHomeLoans","GeneralFinance","GoldBandFinance","Greenwich","HeartlandBank","HeartlandBankONHOLD","HomeTrustMortgagesCentralWestLtd","HSBC","IndustrialandCommercialBankofChinaNewZealandLimited","Kiwibank","KMMHO","LibertyFinancial","LibertyFinancialLimited","MARAC","MetroMoneyLtd","MortgageNorth","MTF","MutualFinanceLimited","NationalBank","NBS","Neo","NIB","NZFinance","NZGuardianTrust","NZCUSouth","NZF","OriginANZ","Other","OtherLenders","OtherNonBankLenders","Oxford","PacificHomeLoans","PacificRetailFinance","PartnersLife","Pepper","PFS","PinnacleLife","Pioneer","Presto","PropertyEquityFinance","PropertyFinanceSecuritiesLimited","PROSPA","Provident","PublicTrust","RESIMAC","SBSBank","SCF","SelectHomeLoan","Simplify","SouthernCross","SouthernCross","SouthernCrossBuildingSociety","SouthernCrossFinanceLtd","Sovereign","SuperBank","TasmanMortgages","TheCooperativeBank","Tower","TrustUs","TSB","UDCFinance","UnitedHomeLoans","Unity","Westpac","WizardHomeloans","XEMoneyTransfer","ZipBusiness"],
      "default": null
    },
    "Frequency": {
      "type": "string",
      "enum": ["Yearly", "HalfYearly", "Quarterly", "Monthly", "Fortnightly", "Weekly"]
    },
    "FrequencyOrNull": {
      "type": ["string","null"],
      "enum": [null, "Yearly", "HalfYearly", "Quarterly", "Monthly", "Fortnightly", "Weekly"]
    },
    "loanTypeIsNew": {
      "anyOf": [{
        "not": {
          "properties": {
            "LoanType": { "const": "Existing" }
          }
        }
      }, {
        "required": ["LoanAmount", "TotalTermMonths"]
      }]
    }
  },
  "title": "Request JSON Payload",
  "type": "object",
  "properties": {
    "Session": {
      "type": "object",
      "properties": {
        "ExternalID": "string",
        "description": "External ID, for example a user ID to link the session to"
      },
      "required": [
        "ExternalID"
      ]
    },
    "Details": {
      "type": "object",
      "description": "Contains details for mortgage calculation",
      "properties": {
        "Loan": {
          "description": "Array of Loan objects",
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "LoanId": {
                "type": "integer",
                "description": "Numerical identifier for the Loan, typically an incremental ID starting with 1",
                "minimum": 1
              },
              "LoanType": {
                "type": "string",
                "description": "Defines whether the applicant already has this loan or if it's a new loan",
                "enum": [
                  "Existing",
                  "New"
                ]
              },
              "Lender": {
                "$ref": "#/$defs/Lender"
              },
              "LendingAction": {
                "type": ["string","null"],
                "description": "Defines what action the applicant wants to take on an existing loan, only set if LoanType=Existing",
                "enum": [
                  null,
                  "New",
                  "Refinance",
                  "TopUp"
                ],
                "default": null
              },
              "LiabilityType": {
                "type": "string",
                "description": "The type of loan being applied for",
                "enum": [
                  "HomeLoan"
                ],
                "default": "HomeLoan"
              },
              "LoanAmount": {
                "type": ["number","null"],
                "description": "The amount of the loan (in $) being requested",
                "default": null
              },
              "TopUpAmount": {
                "type": ["number","null"],
                "description": "The amount of the 'proposed increase' to the lown (in $) being requested",
                "default": null
              },
              "TotalTermMonths": {
                "type": "integer",
                "description": "The new loan's overall total term (expressed in months)",
                "minimum": 1
              },
              "InterestOnlyTermMonths": {
                "type": "integer",
                "description": "The new loan's optional 'Interest-Only' term (expressed in months)",
                "minimum": 10,
                "default": 0
              },
              "Security": {
                "type": "object",
                "description": "Security for the Loan",
                "properties": {
                  "Value": {
                    "type": "number",
                    "description": "The value of the property (in $)"
                  },
                  "IsRBNZExempt": {
                    "type": "boolean",
                    "description": "Inidicates someone who is eligible for 90% lending. Default = false.  [See also](https://www.rbnz.govt.nz/regulation-and-supervision/banks/macro-prudential-policy/loan-to-valuation-ratio-restrictions#:~:text=Loans%20to%20people%20building%20a,occupiers%20and%20residential%20property%20investors.)",
                    "default": false
                  },
                  "Location": {
                    "type": ["string","null"],
                    "description": "Address of the property",
                    "default": null
                  },
                  "PropertyType": {
                    "type": "array",
                    "description": "Up to three levels of property categorisation. [0] array item is level 1, [1] is level 2, [2] is level 3. See property type table",
                    "items": {
                      "type": ["string","null"],
                      "enum": [
                        null,
                        "ResidentialProperty",
                        "FreeHoldResidential",
                        "TerracedHousing",
                        "FeeSimpleCrossLease",
                        "UnitTitle",
                        "Townhouse",
                        "LifestyleBlock",
                        "0to10ha",
                        "over10ha",
                        "LeaseholdResidential",
                        "Apartments",
                        "FreeholdApartment",
                        "over50sqm",
                        "40to50sqm",
                        "38to40sqm",
                        "under38sqm",
                        "LeaseholdApartment",
                        "ServicedApartment",
                        "StudentAccommodation",
                        "BedsitterStudioWarehouseApartments",
                        "NewBuildConstruction",
                        "FixedPriceContracts",
                        "LabourOnlySelfOwnerBuild",
                        "Relocations",
                        "VacantLand",
                        "ServicedVacantLand",
                        "UnservicedVacantLand",
                        "LifestyleWithoutDwelling",
                        "Other",
                        "MultipleDwellingsOnOneTitle",
                        "3Dwellings",
                        "4Dwellings",
                        "5Dwellings",
                        "6Dwellings",
                        "7OrMoreDwellings"
                      ]
                    },
                    "default": []
                  },
                  "SecurityType": {
                    "type": "string",
                    "description": "Defines whether the Security is already owned by the Applicant or not",
                    "enum": ["Existing","Proposed"]
                  },
                  "UsageType": {
                    "type": ["string","null"],
                    "description": "How the property will be used - eg. 'Owner Occupied'",
                    "enum": [null,"OwnerOccupied", "InvestmentProperty", "OwnerOccupiedNewToBank"],
                    }"default": }null
                  }
                },
                "allOf"required": [{"Value","SecurityType"]
              }
            },
            "$ref"required": ["#/$defs/loanTypeIsNew"
            }LoanId","LoanType","TotalTermMonths"]
          }
        },
        "ApplicantParty": {
          "type": "array",
          "description": "One or more parties (eg. married couple) who are applying for the home loan",
          "items": {
            "type": "object",
            "properties": {
              "Applicant": {
                "type": "array",
                "description": "One or more individuals belonging to the Applicant Party",
                "items": {
                  "type": "object",
                  "properties": {
                    "ApplicantId": {
                      "type": "integer",
                      "description": "Numerical identifier for the individual Applicant, typically an incremental ID starting with 1",
                      "minimum": 1
                    },
                    "Name": {
                      "type": "string",
                      "description": "Full name of the individual Applicant"
                    }
                  },
                  "required": ["ApplicantId"]
                }
              },
              "NumberOfDependents": {
                "type": "integer",
                "description": "Number of dependents of this applicant party",
                "minimum": 0,
                "default": 0
              },
              "NumberOfVehicles": {
                "type": "integer",
                "description": "Number of owned vehicles by this applicant party",
                "minimum": 0,
                "default": 0
              },
              "Expense": {
                "type": "array",
                "description": "One or more regular expenses being declared by the applicant party",
                "items": {
                  "type": "object",
                  "properties": {
                    "ApplicantId": {
                      "type": "integer",
                      "description": "The ID of the individual applicant who the expense belongs to",
                      "minimum": 1
                    },
                    "ExpenseType": {
                      "type": "string",
                      "description": "The type of expense being declared - eg. 'Rental Income'",
                      "enum": ["ChildCare","ChildMaintenance","HigherEducationAndVocationalTraining","OtherEducation","PrivateSchoolCosts","PublicSchoolCosts","Groceries","OtherGroceries","BuildingInsurance","ContentsInsurance","HealthInsurance","IncomeProtection","LifeInsurance","OtherInsurance","VehicleInsurance","BodyCorporateInvestmentProperty","BuildingInsuranceInvestmentProperty","CouncilRatesInvestmentProperty","ElectricityAndGasInvestmentProperty","OtherInvestmentPropertyExpense","RepairsAndMaintenanceInvestmentProperty","RunningCostsInvestmentProperty","WaterAndSewerInvestmentProperty","MedicalAndHealth","NaturalTherapies","OtherMedical","Board","OtherOngoingRent","Rent","Kiwisaver","Other","RegularDonations","VoluntarySaving","VoluntarySuper","ClothingAndFootwear","Cosmetics","DryCleaning","OtherPersonalCare","PersonalCare","BodyCorporatePrimaryResidence","CouncilRatesPrimaryResidence","ElectricityAndGasPrimaryResidence","FurnishingsAndElectrical","HomeOperation","HomeRepairs","OtherPrimaryResidenceExpense","WaterAndSewerPrimaryResidence","AlcoholTobacco","CinemaConcertsMemberships","DiningOut","Gambling","Gambling2","GiftsAndMiscellaneous","GymSports","OtherRecreationalAndEntertainment","Pets","TravelAndHolidays","ContentsInsuranceSecondaryResidence","BodyCorporateSecondaryResidence","BuildingInsuranceSecondaryResidence","CouncilRatesSecondaryResidence","ElectricityAndGasSecondaryResidence","OtherSecondaryResidenceExpense","RepairsAndMaintenanceSecondaryResidence","RunningCostsSecondaryResidence","WaterAndSewerSecondaryResidence","HomeMobilePhone","InternetPayTVAndMediaStreamingSubscriptions","OtherTelephoneAndInternet","Petrol","PublicTransport","Registration","TaxiRideSharing","TollsParking","VehicleMaintenance"]
                    },
                    "Frequency": {
                      "$ref": "#/$defs/Frequency",
                      "description": "The frequency with which the applicant pays the expense - eg. 'Weekly'"
                    },
                    "Amount": {
                      "type": "number",
                      "description": "The amount of the expense (in $)"
                    }
                  },
                  "required": ["ApplicantId","ExpenseType","Amount","Frequency"]
                },
                "default": []
              },
              "Income": {
                "type": "array",
                "description": "One or more incomes being declared by the Applicant Party",
                "items": {
                  "type": "object",
                  "properties": {
                    "ApplicantId": {
                      "type": "integer",
                      "description": "The ID of the individual applicant who the income belongs to",
                      "minimum": 0
                    },
                    "IncomeType": {
                      "type": "string",
                      "description": "The type of income being declared - eg. 'Salary'",
                      "enum": ["CarAllowance","Companycar","DisabilityAllowance","WorkAllowance","Bonus","Commission","CompanyProfitBeforeTax","ChildSupport","FamilyAllowance","Other","UnemployedAllowance","WidowAllowance","Annuities","Dividends","Interest","OtherIncome","OtherNetIncome","WorkersCompensation","RegularOvertime","BoarderIncome","RentalIncome","ForeignIncome","SalaryWages","PrivatePension","Superannuation"]
                    },
                    "Frequency": {
                      "$ref": "#/$defs/Frequency",
                      "description": "The frequency with which the applicant receives the income - eg. 'Monthly'"
                    },
                    "Amount": {
                      "type": "number",
                      "description": "The amount of the income (in $)"
                    }
                  },
                  "required":["ApplicantId","IncomeType","Frequency","Amount"]
                },
                "default": []
              },
              "Liability": {
                "type": "array",
                "description": "One or more existing liabilities (debts) being declared by the applicant party",
                "items": {
                  "type": "object",
                  "properties": {
                    "ApplicantId": {
                      "type": ["integer","null"],
                      "description": "The ID of the individual applicant who the liability belongs to"
                    },
                    "LiabilityType": {
                      "type": "string",
                      "description": "The type of liability being declaired - eg. 'Mortgage' or 'CreditCard'",
                      "enum": ["ATOCentrelinkDebt","ChargeCard","CommercialBill","ContingentLiability","CourtRuledChildMaintenance","CourtRuledOtherDebt","CreditCard","StudentLoan","HirePurchase","Lease","LineOfCredit","LoanAsGuarantor","Maintenance","Other","Loan","OutstandingTaxAU","Overdraft","PersonalLoan","CarLoan","StoreCard","Mortgage","HomeLoan","BusinessLoan","OutstandingTaxNZ","BuyNowPayLater"]
                    },
                    "RepaymentAmount": {
                      "type": ["number","null"],
                      "description": "The amount (in $) which is being regularly repaid",
                      "default": null
                    },
                    "RepaymentFrequency": {
                      "$ref": "#/$defs/FrequencyOrNull",
                      "description": "The frequency with which the applicant pays the liability - eg. 'Weekly'"
                    },
                    "Limit": {
                      "type": ["number","null"],
                      "description": "The amount of the liability's limi (in $) - eg. the credit card limit",
                      "default": null
                    },
                    "Balance": {
                      "type": ["number","null"],
                      "description": "The amount of the liability's balance (in $) - ie. the remaining amount owed",
                      "default": null
                    },
                    "InterestRate": {
                      "type": ["number","null"],
                      "description": "The rate of interest being charged (in %) on the liability - eg. 0.05 (=5%)",
                      "default": null
                    },
                    "RepaymentType": {
                      "type": ["string","null"],
                      "description": "The repayment structure - either 'Principal & Interest' (default) or 'Interest Only'",
                      "default": null
                    },
                    "StartDate": {
                      "type": ["string","null"],
                      "format": "YYYY-MM-DD",
                      "description": "Start date of the loan",
                      "default": null
                    },
                    "TotalTermMonths": {
                      "type": ["integer","null"],
                      "description": "The loan's total term in months",
                      "default": null
                    },
                    "InterestOnlyTermMonths": {
                      "type": ["integer","null"],
                      "description": "The loan's interest only total term in months",
                      "default": null
                    },
                    "Lender": {
                      "$ref": "#/$defs/Lender"
                    },
                    "IsRevolvingCredit": {
                      "type": ["boolean","null"],
                      "description": "Indicates whether the liability is a revolving credit",
                      "default": false
                    }
                  },
                  "required":["ApplicantId","LiabilityType"],
                  "allOf": [
                    {
                      "if": {
                        "properties": {
                          "LiabilityType": {
                            "const": "BuyNowPayLater"
                          }
                        }
                      },
                      "then": {
                        "required":["ApplicantId","LiabilityType","RepaymentAmount","RepaymentFrequency","Balance","Limit"],
                        "properties": {
                          "RepaymentAmount": { "type": "number" },
                          "RepaymentFrequency": { "type": "string" },
                          "Balance": { "type": "number" },
                          "Limit": { "type": "number" }
                        }
                      }
                    },
                    {
                      "if": {
                        "properties": {
                          "LiabilityType": {
                            "const": "StudentLoan"
                          }
                        }
                      },
                      "then": {
                        "required":["ApplicantId","LiabilityType","RepaymentAmount","RepaymentFrequency","Balance"],
                        "properties": {
                          "RepaymentAmount": { "type": "number" },
                          "RepaymentFrequency": { "type": "string" },
                          "Balance": { "type": "number" }
                        }
                      }
                    },
                    {
                      "if": {
                        "properties": {
                          "LiabilityType": {
                            "const": "Overdraft"
                          }
                        }
                      },
                      "then": {
                        "required":["ApplicantId","LiabilityType","RepaymentAmount","RepaymentFrequency","Limit"],
                        "properties": {
                          "RepaymentAmount": { "type": "number" },
                          "RepaymentFrequency": { "type": "string" },
                          "Limit": { "type": "number" }
                        }
                      }
                    },
                    {
                      "if": {
                        "properties": {
                          "LiabilityType": {
                            "enum": ["BusinessLoan", "CarLoan", "PersonalLoan", "Other"]
                          }
                        }
                      },
                      "then": {
                        "required":["ApplicantId","LiabilityType","RepaymentAmount","RepaymentFrequency","Balance"],
                        "properties": {
                          "RepaymentAmount": { "type": "number" },
                          "RepaymentFrequency": { "type": "string" },
                          "Balance": { "type": "number" }
                        }
                      }
                    },
                    {
                      "if": {
                        "properties": {
                          "LiabilityType": {
                            "enum": ["HomeLoan", "LineOfCredit", "LoanAsGuarantor", "Mortgage"]
                          }
                        }
                      },
                      "then": {
                        "required":["ApplicantId","LiabilityType","RepaymentAmount","RepaymentFrequency","Balance","InterestRate","TotalTermMonths"],
                        "properties": {
                          "RepaymentAmount": { "type": "number" },
                          "RepaymentFrequency": { "type": "string" },
                          "Balance": { "type": "number" },
                          "InterestRate": { "type": "number" },
                          "TotalTermMonths": { "type": "integer" }
                        }
                      }
                    }
                  ]
                },
                "default": []
              }
            }
          }
        }
      },
      "required": [
        "Loan",
        "ApplicantParty"
      ]
    },
    "Lenders": {
      "type": "array",
      "description": "[Lender codes](https://docs.blackfin.tools/books/mortgagerecenginemycrm/page/lenders) to include in calculation. If no Lenders are passed (empty array), the calc will return ASB, ANZ, BNZ, AIA and Westpac by default",
      "items": {
        "type": "string",
        "description": "",
        "enum": [
          "aia",
          "anz",
          "asb",
          "bnz",
          "co-op",
          "kiwibank",
          "resimac",
          "sbs",
          "select",
          "tsb",
          "westpac"
        ]
      }
    }
  },
  "required": [
    "Details",
    "MyCRM",
    "Lenders"
  ]
}
Examples
JSON Request Body
{
  "MyCRM": {
    "UserID": ""
  },
  "Details": {
    "Loan": [
      {
        "LoanType": "New",
        "Lender": null,
        "LendingAction": null,
        "LiabilityType": "HomeLoan",
        "LoanAmount": 250000,
        "TopUpAmount": null,
        "TotalTermMonths": 180,
        "InterestOnlyTermMonths": 180,
        "Security": {
          "Value": 300000,
          "IsRBNZExempt": true,
          "Location": null,
          "PropertyType": [
            "ResidentialProperty",
            "FreeHoldResidential",
            null
          ],
          "SecurityType": "Proposed",
          "UsageType": "OwnerOccupied"
        },
        "LoanId": 1
      },
      {
        "LoanType": "Existing",
        "Lender": null,
        "LendingAction": "TopUp",
        "LiabilityType": "HomeLoan",
        "LoanAmount": 250000,
        "TopUpAmount": 50000,
        "TotalTermMonths": 183,
        "InterestOnlyTermMonths": 219,
        "Security": {
          "Value": 300000,
          "isRBNZExempt": false,
          "Location": null,
          "PropertyType": [
            "ResidentialProperty",
            "FreeHoldResidential",
            null
          ],
          "SecurityType": "Existing",
          "UsageType": "OwnerOccupied"
        },
        "LoanId": 2
      },
      {
        "LoanType": "Existing",
        "Lender": null,
        "LendingAction": "Refinance",
        "LiabilityType": "HomeLoan",
        "LoanAmount": 260000,
        "TopUpAmount": null,
        "TotalTermMonths": 180,
        "InterestOnlyTermMonths": 216,
        "Security": {
          "Value": 300000,
          "isRBNZExempt": false,
          "Location": null,
          "PropertyType": [
            "ResidentialProperty",
            "FreeHoldResidential",
            null
          ],
          "SecurityType": "Proposed",
          "UsageType": "OwnerOccupied"
        },
        "LoanId": 3
      },
      {
        "LoanType": "Existing",
        "Lender": null,
        "LendingAction": "Refinance",
        "LiabilityType": "HomeLoan",
        "LoanAmount": 370000,
        "TopUpAmount": null,
        "TotalTermMonths": 144,
        "InterestOnlyTermMonths": 0,
        "Security": {
          "Value": 410000,
          "isRBNZExempt": false,
          "Location": null,
          "PropertyType": [
            null,
            null,
            null
          ],
          "SecurityType": "Proposed",
          "UsageType": null
        },
        "LoanId": 4
      },
      {
        "LoanType": "Existing",
        "Lender": null,
        "LendingAction": "TopUp",
        "LiabilityType": "HomeLoan",
        "LoanAmount": 200000,
        "TopUpAmount": 50000,
        "TotalTermMonths": 180,
        "InterestOnlyTermMonths": 0,
        "Security": {
          "Value": 210000,
          "isRBNZExempt": false,
          "Location": null,
          "PropertyType": [
            null,
            null,
            null
          ],
          "SecurityType": "Proposed",
          "UsageType": null
        },
        "LoanId": 5
      }
    ],
    "ApplicantParty": [
      {
        "Applicant": [
          {
            "ApplicantId": 1,
            "Name": "Terence"
          },
          {
            "ApplicantId": 2,
            "Name": "Eve"
          }
        ],
        "Expense": [
          {
            "ApplicantId": 1,
            "ExpenseType": "ChildCare",
            "Frequency": "Monthly",
            "Amount": 300
          },
          {
            "ApplicantId": 1,
            "ExpenseType": "ChildMaintenance",
            "Frequency": "Monthly",
            "Amount": 10
          },
          {
            "ApplicantId": 1,
            "ExpenseType": "HigherEducationAndVocationalTraining",
            "Frequency": "Monthly",
            "Amount": 200
          },
          {
            "ApplicantId": 1,
            "ExpenseType": "OtherEducation",
            "Frequency": "Monthly",
            "Amount": 100
          },
          {
            "ApplicantId": 1,
            "ExpenseType": "PrivateSchoolCosts",
            "Frequency": "Monthly",
            "Amount": 300
          },
          {
            "ApplicantId": 1,
            "ExpenseType": "PublicSchoolCosts",
            "Frequency": "Monthly",
            "Amount": 150
          },
          {
            "ApplicantId": 1,
            "ExpenseType": "Groceries",
            "Frequency": "Monthly",
            "Amount": 200
          },
          {
            "ApplicantId": 1,
            "ExpenseType": "OtherGroceries",
            "Frequency": "Monthly",
            "Amount": 150
          },
          {
            "ApplicantId": 1,
            "ExpenseType": "BodyCorporatePrimaryResidence",
            "Frequency": "Monthly",
            "Amount": 10
          },
          {
            "ApplicantId": 1,
            "ExpenseType": "CouncilRatesPrimaryResidence",
            "Frequency": "Monthly",
            "Amount": 10
          },
          {
            "ApplicantId": 1,
            "ExpenseType": "ElectricityAndGasPrimaryResidence",
            "Frequency": "Monthly",
            "Amount": 100
          },
          {
            "ApplicantId": 1,
            "ExpenseType": "FurnishingsAndElectrical",
            "Frequency": "Monthly",
            "Amount": 10
          },
          {
            "ApplicantId": 1,
            "ExpenseType": "HomeOperation",
            "Frequency": "Monthly",
            "Amount": 10
          },
          {
            "ApplicantId": 1,
            "ExpenseType": "HomeRepairs",
            "Frequency": "Monthly",
            "Amount": 10
          },
          {
            "ApplicantId": 1,
            "ExpenseType": "OtherPrimaryResidenceExpense",
            "Frequency": "Monthly",
            "Amount": 10
          },
          {
            "ApplicantId": 1,
            "ExpenseType": "WaterAndSewerPrimaryResidence",
            "Frequency": "Monthly",
            "Amount": 10
          },
          {
            "ApplicantId": 1,
            "ExpenseType": "BuildingInsurance",
            "Frequency": "Monthly",
            "Amount": 10
          },
          {
            "ApplicantId": 1,
            "ExpenseType": "ContentsInsurance",
            "Frequency": "Monthly",
            "Amount": 10
          },
          {
            "ApplicantId": 1,
            "ExpenseType": "HealthInsurance",
            "Frequency": "Monthly",
            "Amount": 10
          },
          {
            "ApplicantId": 1,
            "ExpenseType": "IncomeProtection",
            "Frequency": "Monthly",
            "Amount": 10
          },
          {
            "ApplicantId": 1,
            "ExpenseType": "LifeInsurance",
            "Frequency": "Monthly",
            "Amount": 10
          },
          {
            "ApplicantId": 1,
            "ExpenseType": "OtherInsurance",
            "Frequency": "Monthly",
            "Amount": 10
          },
          {
            "ApplicantId": 1,
            "ExpenseType": "VehicleInsurance",
            "Frequency": "Monthly",
            "Amount": 10
          },
          {
            "ApplicantId": 1,
            "ExpenseType": "BodyCorporateInvestmentProperty",
            "Frequency": "Monthly",
            "Amount": 10
          },
          {
            "ApplicantId": 1,
            "ExpenseType": "BuildingInsuranceInvestmentProperty",
            "Frequency": "Monthly",
            "Amount": 10
          },
          {
            "ApplicantId": 1,
            "ExpenseType": "CouncilRatesInvestmentProperty",
            "Frequency": "Monthly",
            "Amount": 10
          },
          {
            "ApplicantId": 1,
            "ExpenseType": "ElectricityAndGasInvestmentProperty",
            "Frequency": "Monthly",
            "Amount": 10
          },
          {
            "ApplicantId": 1,
            "ExpenseType": "OtherInvestmentPropertyExpense",
            "Frequency": "Monthly",
            "Amount": 10
          },
          {
            "ApplicantId": 1,
            "ExpenseType": "RepairsAndMaintenanceInvestmentProperty",
            "Frequency": "Monthly",
            "Amount": 10
          },
          {
            "ApplicantId": 1,
            "ExpenseType": "RunningCostsInvestmentProperty",
            "Frequency": "Monthly",
            "Amount": 10
          },
          {
            "ApplicantId": 1,
            "ExpenseType": "WaterAndSewerInvestmentProperty",
            "Frequency": "Monthly",
            "Amount": 200
          },
          {
            "ApplicantId": 1,
            "ExpenseType": "ContentsInsuranceSecondaryResidence",
            "Frequency": "Monthly",
            "Amount": 10
          },
          {
            "ApplicantId": 1,
            "ExpenseType": "BodyCorporateSecondaryResidence",
            "Frequency": "Monthly",
            "Amount": 10
          },
          {
            "ApplicantId": 1,
            "ExpenseType": "BuildingInsuranceSecondaryResidence",
            "Frequency": "Monthly",
            "Amount": 10
          },
          {
            "ApplicantId": 1,
            "ExpenseType": "CouncilRatesSecondaryResidence",
            "Frequency": "Monthly",
            "Amount": 10
          },
          {
            "ApplicantId": 1,
            "ExpenseType": "ElectricityAndGasSecondaryResidence",
            "Frequency": "Monthly",
            "Amount": 10
          },
          {
            "ApplicantId": 1,
            "ExpenseType": "OtherSecondaryResidenceExpense",
            "Frequency": "Monthly",
            "Amount": 10
          },
          {
            "ApplicantId": 1,
            "ExpenseType": "RepairsAndMaintenanceSecondaryResidence",
            "Frequency": "Monthly",
            "Amount": 10
          },
          {
            "ApplicantId": 1,
            "ExpenseType": "RunningCostsSecondaryResidence",
            "Frequency": "Monthly",
            "Amount": 10
          },
          {
            "ApplicantId": 1,
            "ExpenseType": "WaterAndSewerSecondaryResidence",
            "Frequency": "Monthly",
            "Amount": 10
          },
          {
            "ApplicantId": 1,
            "ExpenseType": "MedicalAndHealth",
            "Frequency": "Monthly",
            "Amount": 10
          },
          {
            "ApplicantId": 1,
            "ExpenseType": "NaturalTherapies",
            "Frequency": "Monthly",
            "Amount": 10
          },
          {
            "ApplicantId": 1,
            "ExpenseType": "Board",
            "Frequency": "Monthly",
            "Amount": 10
          },
          {
            "ApplicantId": 1,
            "ExpenseType": "DryCleaning",
            "Frequency": "Monthly",
            "Amount": 10
          },
          {
            "ApplicantId": 1,
            "ExpenseType": "AlcoholTobacco",
            "Frequency": "Monthly",
            "Amount": 10
          },
          {
            "ApplicantId": 1,
            "ExpenseType": "CinemaConcertsMemberships",
            "Frequency": "Monthly",
            "Amount": 10
          },
          {
            "ApplicantId": 1,
            "ExpenseType": "GymSports",
            "Frequency": "Monthly",
            "Amount": 10
          },
          {
            "ApplicantId": 1,
            "ExpenseType": "OtherRecreationalAndEntertainment",
            "Frequency": "Monthly",
            "Amount": 10
          },
          {
            "ApplicantId": 1,
            "ExpenseType": "Pets",
            "Frequency": "Monthly",
            "Amount": 10
          },
          {
            "ApplicantId": 1,
            "ExpenseType": "HomeMobilePhone",
            "Frequency": "Monthly",
            "Amount": 10
          },
          {
            "ApplicantId": 1,
            "ExpenseType": "InternetPayTVAndMediaStreamingSubscriptions",
            "Frequency": "Monthly",
            "Amount": 10
          },
          {
            "ApplicantId": 1,
            "ExpenseType": "PublicTransport",
            "Frequency": "Monthly",
            "Amount": 10
          },
          {
            "ApplicantId": 1,
            "ExpenseType": "Registration",
            "Frequency": "Monthly",
            "Amount": 10
          },
          {
            "ApplicantId": 1,
            "ExpenseType": "TaxiRideSharing",
            "Frequency": "Monthly",
            "Amount": 10
          },
          {
            "ApplicantId": 1,
            "ExpenseType": "TollsParking",
            "Frequency": "Monthly",
            "Amount": 10
          },
          {
            "ApplicantId": 1,
            "ExpenseType": "Kiwisaver",
            "Frequency": "Monthly",
            "Amount": 10
          },
          {
            "ApplicantId": 1,
            "ExpenseType": "RegularDonations",
            "Frequency": "Monthly",
            "Amount": 10
          },
          {
            "ApplicantId": 1,
            "ExpenseType": "VoluntarySaving",
            "Frequency": "Monthly",
            "Amount": 10
          },
          {
            "ApplicantId": 1,
            "ExpenseType": "VoluntarySuper",
            "Frequency": "Monthly",
            "Amount": 10
          }
        ],
        "Income": [
          {
            "ApplicantId": 1,
            "Frequency": "Yearly",
            "Amount": 50000,
            "AmountType": "Gross",
            "IncomeType": "SalaryWages",
            "Attributes": []
          },
          {
            "ApplicantId": 1,
            "Frequency": "Yearly",
            "Amount": 5000,
            "AmountType": null,
            "IncomeType": "RentalIncome",
            "Attributes": [
              {
                "name": "PropertyBuildDate",
                "value": "2018-11-06"
              },
              {
                "name": "PropertyCountry",
                "value": "NZ"
              },
              {
                "name": "IsTaxExempt",
                "value": true
              },
              {
                "name": "SalePurchaseDate",
                "value": "2019-11-11"
              }
            ]
          },
          {
            "ApplicantId": 2,
            "Frequency": "Yearly",
            "Amount": 40000,
            "AmountType": "Gross",
            "IncomeType": "SalaryWages",
            "Attributes": []
          },
          {
            "ApplicantId": 2,
            "Frequency": "Yearly",
            "Amount": 5000,
            "AmountType": null,
            "IncomeType": "WorkAllowance",
            "Attributes": []
          },
          {
            "ApplicantId": 1,
            "Frequency": "Yearly",
            "Amount": 10000,
            "AmountType": null,
            "IncomeType": "Bonus",
            "Attributes": []
          },
          {
            "ApplicantId": 1,
            "Frequency": "Yearly",
            "Amount": 4000,
            "AmountType": null,
            "IncomeType": "BoarderIncome",
            "Attributes": [
              {
                "name": "BoarderIncomeType",
                "value": "All Inclusive"
              }
            ]
          },
          {
            "ApplicantId": 1,
            "Frequency": "Yearly",
            "Amount": 3000,
            "AmountType": null,
            "IncomeType": "CarAllowance",
            "Attributes": []
          },
          {
            "ApplicantId": 1,
            "Frequency": "Yearly",
            "Amount": 5000,
            "AmountType": null,
            "IncomeType": "FamilyAllowance",
            "Attributes": []
          }
        ],
        "Liability": [
          {
            "ApplicantId": 1,
            "LiabilityType": "HomeLoan",
            "RepaymentAmount": 2000,
            "RepaymentFrequency": "Monthly",
            "Limit": 4000,
            "Balance": 10000,
            "InterestRate": 0.02,
            "RepaymentType": "PrincipalInterest",
            "StartDate": "2017-11-15",
            "TotalTermMonths": 228,
            "InterestOnlyTermMonths": 228,
            "Lender": "Kiwibank",
            "IsRevolvingCredit": true
          },
          {
            "ApplicantId": 1,
            "LiabilityType": "CreditCard",
            "RepaymentAmount": null,
            "RepaymentFrequency": null,
            "Limit": 30000,
            "Balance": null,
            "InterestRate": null,
            "RepaymentType": null,
            "StartDate": null,
            "TotalTermMonths": null,
            "InterestOnlyTermMonths": null,
            "Lender": null,
            "IsRevolvingCredit": null
          },
          {
            "ApplicantId": 1,
            "LiabilityType": "PersonalLoan",
            "RepaymentAmount": 2000,
            "RepaymentFrequency": "Monthly",
            "Limit": 4000,
            "Balance": 30000,
            "InterestRate": 0.02,
            "RepaymentType": null,
            "StartDate": "2019-11-07",
            "TotalTermMonths": 220,
            "InterestOnlyTermMonths": null,
            "Lender": null,
            "IsRevolvingCredit": true
          },
          {
            "ApplicantId": 1,
            "LiabilityType": "Other",
            "RepaymentAmount": 200,
            "RepaymentFrequency": "Monthly",
            "Limit": 4000,
            "Balance": 10000,
            "InterestRate": 0.01,
            "RepaymentType": null,
            "StartDate": "2018-11-07",
            "TotalTermMonths": 183,
            "InterestOnlyTermMonths": null,
            "Lender": "Kiwibank",
            "IsRevolvingCredit": true
          },
          {
            "ApplicantId": 1,
            "LiabilityType": "HirePurchase",
            "RepaymentAmount": 2000,
            "RepaymentFrequency": "Monthly",
            "Limit": null,
            "Balance": 20000,
            "InterestRate": null,
            "RepaymentType": null,
            "StartDate": null,
            "TotalTermMonths": null,
            "InterestOnlyTermMonths": null,
            "Lender": null,
            "IsRevolvingCredit": null
          },
          {
            "ApplicantId": 1,
            "LiabilityType": "Overdraft",
            "RepaymentAmount": 2000,
            "RepaymentFrequency": "Monthly",
            "Limit": 4000,
            "Balance": 20000,
            "InterestRate": 0.02,
            "RepaymentType": null,
            "StartDate": null,
            "TotalTermMonths": null,
            "InterestOnlyTermMonths": null,
            "Lender": null,
            "IsRevolvingCredit": null
          },
          {
            "LoanId": 2,
            "Lender": null,
            "Balance": 195000,
            "Limit": 250000,
            "InterestRate": 1,
            "RepaymentAmount": 15000,
            "RepaymentFrequency": "Monthly",
            "RepaymentType": null,
            "TotalTermMonths": 183,
            "StartDate": null,
            "IsRevolvingCredit": null,
            "InterestOnlyTermMonths": 216,
            "ApplicantId": 1,
            "LiabilityType": "HomeLoan"
          },
          {
            "Lender": null,
            "Balance": 200000,
            "Limit": 260000,
            "InterestRate": 2,
            "RepaymentAmount": 10000,
            "RepaymentFrequency": "Monthly",
            "RepaymentType": "PrincipalInterest",
            "TotalTermMonths": 180,
            "StartDate": null,
            "IsRevolvingCredit": null,
            "InterestOnlyTermMonths": 216,
            "ApplicantId": 1,
            "LiabilityType": "HomeLoan",
            "LoanId": 3
          },
          {
            "Lender": null,
            "Balance": null,
            "Limit": null,
            "InterestRate": null,
            "RepaymentAmount": null,
            "RepaymentFrequency": "Monthly",
            "RepaymentType": null,
            "TotalTermMonths": 0,
            "StartDate": null,
            "IsRevolvingCredit": null,
            "InterestOnlyTermMonths": 0,
            "ApplicantId": 1,
            "LiabilityType": "HomeLoan",
            "LoanId": 4
          },
          {
            "Lender": null,
            "Balance": null,
            "Limit": 200000,
            "InterestRate": null,
            "RepaymentAmount": null,
            "RepaymentFrequency": "Monthly",
            "RepaymentType": null,
            "TotalTermMonths": 180,
            "StartDate": null,
            "IsRevolvingCredit": null,
            "InterestOnlyTermMonths": 0,
            "ApplicantId": 1,
            "LiabilityType": "HomeLoan",
            "LoanId": 5
          }
        ],
        "NumberOfDependents": 1,
        "NumberOfVehicles": 1
      }
    ]
  },
  "Lenders": []
}

 

Response


✅ Success

JSON Body
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "title": "Response JSON Body",
  "type": "object",
  "properties": {
    "SessionID": {
      "type": "string",
      "description": "20 characters in length, random generated alphanumeric string, mixed case"
    }
  }
}
Examples
Success Response
{
  "SessionID": "BYWSw2DTUBuHVMW4ZdhK"
}

❌ Error

JSON Body
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "error": {
      "type": "object",
      "description": "Error information",
      "properties": {
        "message": {
          "type": "string",
          "description": "Human readable error message"
        },
        "status": {
          "type": "string",
          "description": "Error code in uppercase letters and _ as space",
          "enum": ["INVALID_ARGUMENT","DEADLINE_EXCEEDED","NOT_FOUND","ALREADY_EXISTS","PERMISSION_DENIED","RESOURCE_EXHAUSTED","FAILED_PRECONDITION","ABORTED","OUT_OF_RANGE","UNIMPLEMENTED","INTERNAL","UNAVAILABLE","DATA_LOSS","UNAUTHENTICATED"]
        },
        "details": {
          "type": "object",
          "description": "Additional error details",
          "properties": {
            "validation_errors": {
              "type": "array",
              "description": "Errors thrown when validating input data",
              "items": {
                "type": "object",
                "properties": {
                  "path": {
                    "type": "array",
                    "description": "An array of property keys or array offsets, indicating where inside objects or arrays the instance was found.",
                    "items": {
                      "type": "string"
                    }
                  },
                  "property": {
                    "type": "string",
                    "description": "Describes the property path. Starts with `instance`, and is delimited with a dot (.)."
                  },
                  "message": {
                    "type": "string",
                    "description": "A human-readable message for debugging use. Provided in English and subject to change."
                  },
                  "schema": {
                    "type": "object",
                    "description": "The schema containing the keyword that failed",
                    "properties": {
                      "type": {
                        "type": "string"
                      },
                      "description": {
                        "type": "string"
                      }
                    },
                    "required": ["type"]
                  },
                  "instance": {
                    "description": "The instance (value) that failed",
                    "type": ["null", "object"]
                  },
                  "name": {
                    "type": "string",
                    "description": "The keyword within the schema that failed."
                  },
                  "argument": {
                    "type": "array",
                    "description": "Provides information about the keyword that failed.",
                    "items": {
                      "type": "string"
                    }
                  },
                  "stack": {
                    "type": "string"
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "required": ["path", "property", "message", "schema", "instance", "name", "argument", "stack"]
}
Examples
Missing API Key (Status: 401)
{
    "error": {
        "message": "Missing API Key",
        "status": "UNAUTHENTICATED"
    }
}

 

Invalid API Key (Status: 401)
{
    "error": {
        "message": "Invalid API Key",
        "status": "UNAUTHENTICATED"
    }
}

 

Invalid data (Status: 400)
{
    "error": {
        "message": "Invalid data",
        "status": "INVALID_ARGUMENT",
        "details": {
            "validation_errors": [
                {
                    "path": [
                        "Details",
                        "Loan",
                        0,
                        "LoanType"
                    ],
                    "property": "instance.Details.Loan[0].LoanType",
                    "message": "is not one of enum values: Existing,Proposed",
                    "schema": {
                        "type": "string",
                        "description": "Defines whether the applicant already has this loan or if it's a new loan",
                        "enum": [
                            "Existing",
                            "New"
                        ]
                    },
                    "instance": "Proposed",
                    "name": "enum",
                    "argument": [
                        "Existing",
                        "Proposed"
                    ],
                    "stack": "instance.Details.Loan[0].LoanType is not one of enum values: Existing,Proposed"
                }
            ]
        }
    }
}