Skip to main content

Create Session

The Create Session endpoint accepts data about a customer's finances and lending scenario, which it stores in the database as a "session" and returns a SessionID parameter that can be used to load the data from that session in the Mortgage Recommendation Engine's UI.

Request


  • Type: POST
  • Path: /sessions/create

Endpoint

The Create Session endpoint can be accessed from the following URLs:

Environment Endpoint URL
Test https://api.mre.test.blackfin.tools/sessions/create
Production https://api.mre.blackfin.tools/sessions/create


Authentication

An API_Key is required to call this endpoint. HTTP Bearer Token authentication is used.


JSON Schema

The request payload is sent as HTTP JSON body using the following schema:

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "title": "Request JSON Payload",
  "type": "object",
  "properties": {
    "Session": {
      "type": "object",
      "properties": {
        "ExternalID": {
          "type": "string",
          "description": "External ID, for example a user ID to link the session to"
        }
      },
      "required": [
        "ExternalID"
      ]
    },
    "Details": {
      "type": "object",
      "description": "Main calculation details for mortgage calculation, see [CalculationDetails](https://docs.blackfin.tools/books/mortgagerecenginebackend/page/calculationdetails) schema"
    },
    "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",
          "liberty",
          "sbs",
          "tsb",
          "westpac"
        ]
      }
    }
  },
  "required": [
    "Details",
    "Lenders"
  ]
}


Examples

Example request payload:

JSON Request Body
{
  "Session": {
    "ExternalID": ""
  },
  "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": "Gross",
            "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": "Gross",
            "IncomeType": "WorkAllowance",
            "Attributes": []
          },
          {
            "ApplicantId": 1,
            "Frequency": "Yearly",
            "Amount": 10000,
            "AmountType": "Gross",
            "IncomeType": "Bonus",
            "Attributes": []
          },
          {
            "ApplicantId": 1,
            "Frequency": "Yearly",
            "Amount": 4000,
            "AmountType": "Gross",
            "IncomeType": "BoarderIncome",
            "Attributes": [
              {
                "name": "BoarderIncomeType",
                "value": "AllInclusive"
              }
            ]
          },
          {
            "ApplicantId": 1,
            "Frequency": "Yearly",
            "Amount": 3000,
            "AmountType": "Gross",
            "IncomeType": "CarAllowance",
            "Attributes": []
          },
          {
            "ApplicantId": 1,
            "Frequency": "Yearly",
            "Amount": 5000,
            "AmountType": "Gross",
            "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
          }
        ],
        "NumberOfDependents": 1,
        "NumberOfVehicles": 1
      }
    ]
  },
  "Lenders": []
}

 


Validation

The API performs basic validation on the structure of the request payload but does not impose strict rules based on what is required for generating a calculation. 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 the user is required to address any missing items, as needed.


Response


Success

If the Create Session completes successfully:

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",
      "example": "BYWSw2DTUBuHVMW4ZdhK"
    },
    "SessionURL": {
      "type": "string",
      "description": "Fully constructed URL to load up the session in the matching environment MRE UI.",
      "example": "https://mre.test.blackfin.tools/?session_id=BYWSw2DTUBuHVMW4ZdhK"
    }
  }
}

Examples

200: Success

Success Response
{
  "SessionID": "BYWSw2DTUBuHVMW4ZdhK",
  "SessionURL": "https://mre.test.blackfin.tools/?session_id=BYWSw2DTUBuHVMW4ZdhK"
}


Error

If errors are encountered during the Create Session operation:

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

401: Missing API Key

Missing API Key
{
    "error": {
        "message": "Missing API Key",
        "status": "UNAUTHENTICATED"
    }
}

 

401: Invalid API Key

Invalid API Key
{
    "error": {
        "message": "Invalid API Key",
        "status": "UNAUTHENTICATED"
    }
}

 

400: Invalid data

Invalid data
{
    "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"
                }
            ]
        }
    }
}

 

Invalid data: Invalid LoanId on Liability

Thrown when loan id specified on liability does not match a loan.

{
    "error": {
        "message": "Invalid data: Invalid LoanId specified on Liability",
        "status": "INVALID_ARGUMENT",
        "details": {
        }
    }
}