<iframe>
API messages
All messages sent to and from the LoanPASS app are plain JavaScript objects, with a message
field indicating the type of message. Note that we may add more messages in the future, so to future-proof your integration, ensure unknown message types are ignored!
Sendable messages
These are messages that can be sent to loanpass from the host application.
connect
Connect to the LoanPASS <iframe>
API. This message must be sent to the LoanPASS app before any other messages, and this message must be sent before any messages will be sent from LoanPASS back to your app.
After sending connect
, the <iframe>
will respond with the listening
message once it's ready to receive more messages.
It's recommended that this message is sent in an event listener that listens for the <iframe>
's load
event.
Fields
None
Example
iframe.addEventListener("load", function () {
iframe.contentWindow.postMessage(
{
message: "connect",
},
loanpassOrigin
);
});
create-pipeline-record
Creates a new pipeline record using the current state on the "Price a Loan" page including field values, selected product, and selected rate/lock period.
Fields
pipelineFieldValues
: An array of pipeline-only fields to set and their values. The format matches the.creditApplicationFields[]
schema from the/execute-product
and/execute-summary
Public API endpoints, and the fields are defined in the "Pipeline Settings" tab of the "Fields" page.
Example
iframe.contentWindow.postMessage(
{
message: "create-pipeline-record",
pipelineFieldValues: [
{
fieldId: "field@borrower-last-name",
value: {
type: "string",
value: "Smith",
},
},
{
fieldId: "field@loan-number",
value: {
type: "string",
value: "12345",
},
},
],
},
loanpassOrigin
);
enable-float-requests
Set a flag to allow the "Float Request" button to send float requests back to the parent application.
When viewing a pipeline record on the "Price a Loan" page, the user is presented with a "Submit Float" button. Before sending the enable-float-requests
message, the "Submit Float" button will only create a new pipeline scenario for the selected pipeline record. After sending the enable-float-requests
message, the "Submit Float" button will both create a new pipeline scenario as well as post a float-request
message back to the parent application.
Example
iframe.contentWindow.postMessage(
{
message: "enable-float-requests",
},
loanpassOrigin
);
enable-price-locking
A legacy message used to set a flag that shows a "Lock Request" button in the UI. When clicked, the LoanPASS app will send a price-lock
message containing loan information back to your app. This button does not record a lock in the ledger in the way that the normal lock request buttons will. Sending enable-price-lock
doesn't itself handle price locking, it just enables integrators to grab the pricing data to handle price locking through another system.
The label of the button can be changed by setting the lockRequestLabel
field on the message.
After this message is sent and after filling out the fields on the "Price a Loan" page, clicking into a product, then clicking one of the prices in the table, the 3 dot menu will display a button with the chosen label that when clicked will send a price-lock
message back to the host application.
Fields
lockRequestLabel
(optional): A string indicating what label to use for the price locking button. Defaults to "Lock Request". The same label will also be used after clicking the button, where the label will change to say "${lockRequestLabel} Sent
".
Example
iframe.contentWindow.postMessage(
{
message: "enable-price-locking",
lockRequestLabel: "Lock Request", // optional
},
loanpassOrigin
);
log-in
Automatically log the user in to LoanPASS with the given credentials.
NOTE: If the user is already signed in to the LoanPASS UI, then this message may cause them to log out and be logged in with the specified credentials. When this happens, the <iframe>
may be reloaded. To account for this properly, you should wait for the listening
message again before sending any more messages.
SECURITY NOTE: Like all messages, the log-in
message is handled entirely client-side, so the given email and password will be sent to the server in exactly the same way as if the user had entered the email and password themselves. However, for security purposes, that leads to 2 details to consider:
- The end user can get the credentials. A tech-savvy user could trivially use the Web Inspector in their browser to find the email and password that were sent to the
<iframe>
(say, by viewing the "Network" tab and looking for the "log in" API call). - The credentials should be stored and sent securely. The password for the user should be considered a secret, so it should be treated as such and standard best practices should be used.
Fields
clientAccessId
: The client access ID to log in as. This should be the same as the client access ID used to embed the<iframe>
.emailAddress
: The email address of the account to sign in as.password
: The password of the account to sign in as.
Example
Signing in a user
iframe.contentWindow.postMessage(
{
message: "log-in",
clientAccessId: "example-client",
emailAddress: "user@example.com",
password: "password1234",
},
loanpassOrigin
);
Signing in a user on page load
// Track the current state of the user:
// 1. "pending": iframe just added to page, user may be logged out or logged in
// 2. "logged-in": `log-in` message sent, user is now logged in
let userState = "pending"; // "pending" | "logged-in"
const loanpassOrigin = "https://app.loanpass.io";
const clientAccessId = "example-client";
const emailAddress = "user@example.com";
const password = "password1234";
window.addEventListener("load", function () {
console.log("page loaded");
const iframe = document.createElement("iframe");
const handleListening = () => {
switch (userState) {
case "pending":
console.log("sending log in message...");
iframe.contentWindow.postMessage(
{
message: "log-in",
clientAccessId,
emailAddress,
password,
},
loanpassOrigin
);
userState = "logged-in";
break;
case "logged-in":
console.log("log in completed");
break;
}
};
window.addEventListener("message", function (event) {
if (event.origin !== loanpassOrigin) {
console.warn("received message from unexpected origin", event);
return;
}
console.log("received message", event.data);
switch (event.data.message) {
case "listening":
handleListening();
break;
}
});
iframe.src = `${loanpassOrigin}/frame-redirect/${clientAccessId}`;
iframe.addEventListener("load", function () {
console.log("iframe load event fired");
if (iframe.contentWindow == null) {
return;
}
console.log("connecting...");
iframe.contentWindow.postMessage(
{
message: "connect",
},
loanpassOrigin
);
});
document.getElementById("iframe-container").appendChild(iframe);
});
log-out
Log out the current user if they are logged in.
NOTE: Sending this message may trigger the <iframe>
to reload! To continue receiving messages after sending the log-out
message, make sure the connect
message is sent after the load
event triggers on the <iframe>
. See the connect
message for more details.
Fields
clientAccessId
: The client access ID of the login page to show.
Example
iframe.contentWindow.postMessage(
{
message: "log-out",
clientAccessId: "example-client",
},
loanpassOrigin
);
See log-in
for more details about logging the user back in after logging out.
set-fields
Fill in fields on the "Price a Loan" page with preset values.
Fields
Fill in fields on the "Price a Loan" page with preset values. Calling set-fields
is very similar to loading an existing scenario, except the data is controlled by the integration rather than the LoanPASS backend.
Fields
fields
: An array of specifying fields to set and their values. The format matches the.creditApplicationFields[]
schema from the/execute-product
and/execute-summary
Public API endpoints.fieldId
: The field ID.value
: An object describing the value of the field, with atype
field indicating the type of value.
Example
iframe.contentWindow.postMessage(
{
message: "set-fields",
fields: [
{
fieldId: "field@occupancy-type",
value: {
type: "enum",
enumTypeId: "occupancy-type",
variantId: "primary-residence",
},
},
{
fieldId: "field@desired-loan-term",
value: {
type: "duration",
unit: "months",
count: "6",
},
},
{
fieldId: "field@number-of-units",
value: {
type: "number",
value: "1",
},
},
],
},
loanpassOrigin
);
set-pipeline-record-id
Loads an existing pipeline record on the "Price a Loan" page. You may choose to pass an optional list of field values to overwrite the values loaded by the pipeline record.
Fields
pipelineRecordId
: The ID of the pipeline record you want to load.overrideCreditApplicationFields
: An optional array of fields to set and their values. The format matches the.creditApplicationFields[]
schema from the/execute-product
and/execute-summary
Public API endpoints. If left empty the pipeline record will use the values stored within itself. If desired, passing a null value with afieldId
will clear out that input from the loaded field values.
Examples
- Loading a Record
iframe.contentWindow.postMessage(
{
message: "set-pipeline-record-id",
pipelineRecordId: "51",
// This will retain the field values saved in the pipeline record
overrideCreditApplicationFields: [],
},
loanpassOrigin
);
- Overriding Fields
iframe.contentWindow.postMessage(
{
message: "set-pipeline-record-id",
pipelineRecordId: "51",
// This will override fields stored in the pipeline record
overrideCreditApplicationFields: [
{
fieldId: "field@occupancy-type",
value: {
type: "enum",
enumTypeId: "occupancy-type",
variantId: "primary-residence",
},
},
{
fieldId: "field@desired-loan-term",
value: {
type: "duration",
unit: "months",
count: "6",
},
},
{
fieldId: "field@number-of-units",
value: {
type: "number",
value: "1",
},
},
],
},
loanpassOrigin
);
- Clearing out fields using a
null
value
iframe.contentWindow.postMessage(
{
message: "set-pipeline-record-id",
pipelineRecordId: "51",
// This will override fields stored in the pipeline record by clearing the
// value if it exists. Note that the entire outer `value` property is where
// null should be passed
overrideCreditApplicationFields: [
{
fieldId: "field@occupancy-type",
value: null,
},
{
fieldId: "field@desired-loan-term",
value: null,
},
{
fieldId: "field@number-of-units",
value: null,
},
],
},
loanpassOrigin
);
set-version
Tell the <iframe>
which version the host integration is using.
Fields
version
: A version string.
Example
iframe.contentWindow.postMessage(
{
message: "set-version",
version: "1",
},
loanpassOrigin
);
Loading the most current version
iframe.contentWindow.postMessage(
{
message: "set-version",
version: "current",
},
loanpassOrigin
);
Receivable messages
These are messages that LoanPASS can send back to the host application.
enable-float-requests-error
Sent if enable-float-requests
could not be applied.
Fields
error
: An error message.
Example
{
"message": "enable-float-requests-error",
"error": "Failed to float requests. Please contact your system administrator for assistance."
}
enable-price-locking-error
Sent if enable-price-locking
could not be applied.
Fields
error
: An error message.
Example
{
"message": "enable-price-locking-error",
"error": "Failed to enable price locking. Please contact your system administrator for assistance."
}
float-request
Sent when a user clicks the "Submit Float" button in the UI after the enable-float-requests
message is sent. The shape of this message is the same as the price-lock
message.
Fields
role
: Contains details about the user's active role.id
: The role ID.name
The display name of the role.
pricingProfile
: Contains details about the user's active pricing profile.id
: The pricing profile ID.name
The display name of the pricing profile.
product
: Contains details about the product that was price locked.id
: The product ID.name
The display name of the product.
investor
: Contains details about the investor of the product that was price locked.id
: The investor's ID.name
: The display name of the investor.
scenario
: The details about the price scenario that was locked. The schema matches the.priceScenarios[]
schema returned from the/execute-product
Public API endpoint.status
: The status of the price scenario, such asapproved
,rejected
, etc.adjustedRate
: The rate with rate adjustments applied.adjustedPrice
The price with price adjustments applied.priceScenarioFields
: An array of price scenario fields and values.fieldId
: The field ID.value
: An object describing the value of the field, ornull
if the field has no value.
calculatedFields
: An array of calculated fields and their values for this price scenario.fieldId
: The calculated field ID.value
: An object describing the value of the field, ornull
if the field has no value.
creditApplicationFields
: An array of fields and their values that were filled in by the user for the price scenario. This corresponds to thecreditApplicationFields
field for the/execute-product
Public API endpoint.fieldId
: The input's field ID.value
: An object describing the value of the field.
Example
{
"message": "float-request",
"role": {
"id": "11",
"name": "Loan Officer"
},
"pricingProfile": {
"id": "22",
"name": "Standard"
},
"investor": {
"id": "123",
"name": "Test Investor",
"code": "TI",
"isPricingEnabled": true
},
"product": {
"id": "1234",
"code": "EXAMPLE",
"name": "Example Product",
"description": "Example product",
"activationTimestamp": "2021-01-01T00:00:00Z",
"deactivationTimestamp": null,
"investorId": "123"
},
"scenario": {
"id": "00000000-0000-0000-0000-000000000000",
"priceScenarioFields": [
{
"fieldId": "base-interest-rate",
"value": {
"type": "number",
"value": "1.0"
}
},
{
"fieldId": "rate-lock-period",
"value": {
"type": "duration",
"count": "15",
"unit": "days"
}
},
{
"fieldId": "base-price",
"value": {
"type": "number",
"value": "101.000"
}
}
],
"calculatedFields": [
{
"fieldId": "calc@fsb-lpmi-refinance",
"value": {
"type": "number",
"value": "0.000"
}
},
{
"fieldId": "calc@fsb-jumbo-max-price",
"value": null
},
{
"fieldId": "calc-field@ah-va-purch-tier",
"value": {
"type": "number",
"value": "4"
}
}
],
"adjustedRate": "1.75",
"adjustedRateLockPeriod": {
"count": "15",
"unit": "days"
},
"adjustedPrice": "101.000",
"status": "approved",
"priceAdjustments": [
{
"ruleId": "1234",
"amount": "0.25",
"description": "Price adjustment 1"
},
{
"ruleId": "5678",
"amount": "0.25",
"description": "Price adjustment 2"
}
],
"marginAdjustments": [
{
"ruleId": "12345",
"amount": "-0.300",
"description": "Margin adjustment"
}
],
"rateAdjustments": [],
"stipulations": []
},
"creditApplicationFields": [
{
"fieldId": "field@occupancy-type",
"value": {
"type": "enum",
"enumTypeId": "occupancy-type",
"variantId": "primary-residence"
}
},
{
"fieldId": "field@loan-purpose",
"value": {
"type": "enum",
"enumTypeId": "loan-purpose",
"variantId": "purchase"
}
},
{
"fieldId": "field@decision-credit-score",
"value": {
"type": "number",
"value": "750"
}
},
{
"fieldId": "field@state",
"value": {
"type": "string",
"format": "us-state-code",
"value": "TX"
}
},
{
"fieldId": "field@property-type",
"value": {
"type": "enum",
"enumTypeId": "property-type",
"variantId": "single-family"
}
},
{
"fieldId": "field@base-loan-amount",
"value": {
"type": "number",
"value": "400000.00"
}
}
]
}
float-request-error
Sent if a float-request
could not be fulfilled.
Fields
error
: An error message.
Example
{
"message": "float-request-error",
"error": "Failed to submit float request from iframe message. Please contact your system administrator for assistance."
}
float-requests-enabled
Confirmation that float requests have been enabled after sending enable-float-requests
.
Fields
None
Example
{ "message": "float-requests-enabled" }
listening
Sent after the <iframe>
receives the connect
message and is ready to receive more messages.
Fields
None
Example
{ "message": "listening" }
lock-ledger-update-error
Sent if LoanPASS failed to update the lock ledger.
Fields
error
: An error message.
Example
{
"message": "lock-ledger-update-error",
"error": "Can't submit lock request when pricing is disabled."
}
lock-ledger-updated
Sent when a lock ledger update occurs for the active pipeline record.
Fields
pipelineRecord
: The current pipeline record object.lockLedgerEntries
: An array of lock ledger entry objects for this record.
Example
{
"message": "lock-ledger-updated",
"pipelineRecord": {
"id": "1",
"ownerId": "5",
"createdAt": "2023-10-12T18:23:06.843820Z",
"updatedAt": "2024-08-22T15:59:42.929269Z",
"status": "open",
"lockState": {
"lockStatus": {
"kind": "unlocked"
},
"lastActionTaken": null,
"lastLockDeniedDate": null,
"lastExpirationDate": null,
"actionHistory": []
},
"pricingProfileId": "2",
"pipelineOnlyFieldValues": [
{
"fieldId": "field@borrower-last-name",
"value": {
"type": "string",
"value": "Jones"
}
}
],
"pricingNotificationFieldValues": [],
"preferredScenario": {
"pipelineRecordId": "1",
"id": "1",
"pricingProfileId": null,
"name": "Initial Inputs",
"createdAt": "2023-10-12T18:23:06.843820Z",
"preferred": true,
"creditApplicationFieldValues": [
{
"fieldId": "field@occupancy-type",
"value": {
"type": "enum",
"enumTypeId": "occupancy-type",
"variantId": "primary-residence"
}
},
{
"fieldId": "field@purchase-price",
"value": {
"type": "number",
"value": "800000.00"
}
},
{
"fieldId": "field@loan-purpose",
"value": {
"type": "enum",
"enumTypeId": "loan-purpose",
"variantId": "purchase"
}
}
],
"selectedProductId": "2120",
"selectedPriceScenarioInfo": {
"type": "rate-with-lock-period",
"selectedInterestRate": "2.5",
"selectedLockPeriod": {
"count": "30",
"unit": "days"
}
},
"isFloat": false
},
"outputFieldValues": [
{
"fieldId": "calc@adjusted-price",
"value": {
"type": "number",
"value": "100.965"
}
}
],
"scenarios": [
{
"pipelineRecordId": "1",
"id": "1",
"pricingProfileId": null,
"name": "Initial Inputs",
"createdAt": "2023-10-12T18:23:06.843820Z",
"preferred": true,
"creditApplicationFieldValues": [
{
"fieldId": "field@occupancy-type",
"value": {
"type": "enum",
"enumTypeId": "occupancy-type",
"variantId": "primary-residence"
}
},
{
"fieldId": "field@purchase-price",
"value": {
"type": "number",
"value": "800000.00"
}
}
],
"selectedProductId": "2120",
"selectedPriceScenarioInfo": {
"type": "rate-with-lock-period",
"selectedInterestRate": "2.5",
"selectedLockPeriod": {
"count": "30",
"unit": "days"
}
},
"isFloat": false
}
],
"encompassOverrides": []
},
"lockLedgerEntries": [
{
"pipelineRecordId": "1",
"id": "1",
"createdAt": "2025-08-29T18:35:23.107931Z",
"createdBy": "1",
"autoConfirmed": false,
"state": {
"lockStatus": {
"kind": "requested",
"lockedFields": {
"product_code": "ARCWCONFF30FNM",
"request_date": "2025-08-29",
"expiration_date": "2025-09-28",
"lock_period": {
"count": "30",
"unit": "days"
},
"effective_lock_ledger_entry_id": "1"
},
"statusIfDenied": {
"kind": "unlocked"
}
},
"lastActionTaken": "submit-lock-request",
"lastLockDeniedDate": null,
"lastExpirationDate": null,
"actionHistory": [
{
"createdAt": "2025-08-29T18:35:22.467601407Z",
"action": "submit-lock-request"
}
]
},
"kind": "submit-lock-request",
"inputs": {
"publishedVersionNumber": "1",
"pricingProfileId": "2",
"selectedProductId": "2120",
"selectedPriceScenarioInfo": {
"type": "rate-with-lock-period",
"selectedInterestRate": "2.5",
"selectedLockPeriod": {
"count": "30",
"unit": "days"
}
},
"selectedPriceScenarioId": "746b3ffe3c9eeeb699caa62c7f1d6fd2",
"requestDate": "2025-08-29",
"defaultFieldValues": [],
"creditApplicationFieldValues": [
{
"fieldId": "field@occupancy-type",
"value": {
"type": "enum",
"enumTypeId": "occupancy-type",
"variantId": "primary-residence"
}
},
{
"fieldId": "field@purchase-price",
"value": {
"type": "number",
"value": "800000.00"
}
}
],
"bypassWorstCase": false
},
"outputs": {
"productId": "2120",
"productName": "30 Year Fixed Rate FNMA Conventional",
"productCode": "ARCWCONFF30FNM",
"investorName": "ARC Home - Wholesale",
"investorCode": "ARCW",
"isPricingEnabled": true,
"productFields": [
{
"fieldId": "field@product-channel",
"value": {
"type": "enum",
"enumTypeId": "channel",
"variantId": "wholesale"
}
},
{
"fieldId": "field@mortgage-type",
"value": {
"type": "enum",
"enumTypeId": "mortgage-type",
"variantId": "conventional"
}
}
],
"productCalculatedFields": [
{
"fieldId": "calc@loan-term-allowed",
"value": {
"type": "enum",
"enumTypeId": "yes-no",
"variantId": "yes"
}
},
{
"fieldId": "calc@amortization-type-allowed",
"value": {
"type": "enum",
"enumTypeId": "yes-no",
"variantId": "yes"
}
}
],
"rateSheetEffectiveTimestamp": "2020-10-19T15:38:00Z",
"priceScenarioFields": [
{
"fieldId": "base-interest-rate",
"value": {
"type": "number",
"value": "2.5"
}
},
{
"fieldId": "rate-lock-period",
"value": {
"type": "duration",
"count": "30",
"unit": "days"
}
},
{
"fieldId": "base-price",
"value": {
"type": "number",
"value": "100.935"
}
}
],
"priceScenarioCalculatedFields": [
{
"fieldId": "calc@ah-va-purch-state-tier",
"value": {
"type": "number",
"value": "0"
}
},
{
"fieldId": "calc@fnma-high-ltv-cap",
"value": {
"type": "number",
"value": "-10.000"
}
}
],
"adjustedRate": "2.5",
"adjustedPrice": "100.965",
"adjustedRateLockPeriod": {
"count": "30",
"unit": "days"
},
"status": "approved",
"reviewRequirements": [],
"priceAdjustments": [
{
"ruleId": "1750",
"amount": "0.03",
"description": "LLPA - ARC Wholesale FNMA/FHLMC Conventional & HomeReady/Home Possible Adjustment"
}
],
"marginAdjustments": [],
"rateAdjustments": [],
"finalPriceAdjustments": [],
"finalRateAdjustments": [],
"finalMarginAdjustments": [],
"stipulations": [
{
"ruleId": "2063",
"text": "..."
}
],
"publishedVersionNumber": "1",
"startingAdjustedRate": null,
"startingAdjustedPrice": null,
"undiscountedRate": "2.5"
}
}
]
}
log-in-error
Sent after a failed log in attempt using the log-in
message.
Fields
error
: An error message.
Example
{
"message": "log-in-error",
"error": "Invalid credentials"
}
logged-in
Sent after succesfully logging in with a log-in
message.
Fields
None
Example
{ "message": "logged-in" }
pipeline-record-created
Sent after succesfully creating a pipeline record using the create-pipeline-record
message. Returns the ID of the newly created record.
Fields
pipelineRecordId
: The ID of the created pipeline record.
Example
iframe.contentWindow.postMessage(
{
message: "pipeilne-record-created",
pipelineRecordId: "51",
},
loanpassOrigin
);
pipeline-record-creation-error
Sent after a failed attempt to create a pipeline record.
Fields
error
: An error message.
Example
{
"message": "pipeline-record-creation-error",
"error": "Failed to create pipeline. Please contact your system administrator for assistance."
}
price-lock
Sent when a user clicks the "Lock Request" button in the UI after the enable-price-locking
message is sent.
Fields
role
: Contains details about the user's active role.id
: The role ID.name
The display name of the role.
pricingProfile
: Contains details about the user's active pricing profile.id
: The pricing profile ID.name
The display name of the pricing profile.
product
: Contains details about the product that was price locked.id
: The product ID.name
The display name of the product.
investor
: Contains details about the investor of the product that was price locked.id
: The investor's ID.name
: The display name of the investor.
scenario
: The details about the price scenario that was locked. The schema matches the.priceScenarios[]
schema returned from the/execute-product
Public API endpoint.status
: The status of the price scenario, such asapproved
,rejected
, etc.adjustedRate
: The rate with rate adjustments applied.adjustedPrice
The price with price adjustments applied.priceScenarioFields
: An array of price scenario fields and values.fieldId
: The field ID.value
: An object describing the value of the field, ornull
if the field has no value.
calculatedFields
: An array of calculated fields and their values for this price scenario.fieldId
: The calculated field ID.value
: An object describing the value of the field, ornull
if the field has no value.
creditApplicationFields
: An array of fields and their values that were filled in by the user for the price scenario. This corresponds to thecreditApplicationFields
field for the/execute-product
Public API endpoint.fieldId
: The input's field ID.value
: An object describing the value of the field.
Example
{
"message": "price-lock",
"role": {
"id": "11",
"name": "Loan Officer"
},
"pricingProfile": {
"id": "22",
"name": "Standard"
},
"investor": {
"id": "123",
"name": "Test Investor",
"code": "TI",
"isPricingEnabled": true
},
"product": {
"id": "1234",
"code": "EXAMPLE",
"name": "Example Product",
"description": "Example product",
"activationTimestamp": "2021-01-01T00:00:00Z",
"deactivationTimestamp": null,
"investorId": "123"
},
"scenario": {
"id": "00000000-0000-0000-0000-000000000000",
"priceScenarioFields": [
{
"fieldId": "base-interest-rate",
"value": {
"type": "number",
"value": "1.0"
}
},
{
"fieldId": "rate-lock-period",
"value": {
"type": "duration",
"count": "15",
"unit": "days"
}
},
{
"fieldId": "base-price",
"value": {
"type": "number",
"value": "101.000"
}
}
],
"calculatedFields": [
{
"fieldId": "calc@fsb-lpmi-refinance",
"value": {
"type": "number",
"value": "0.000"
}
},
{
"fieldId": "calc@fsb-jumbo-max-price",
"value": null
},
{
"fieldId": "calc-field@ah-va-purch-tier",
"value": {
"type": "number",
"value": "4"
}
}
],
"adjustedRate": "1.75",
"adjustedRateLockPeriod": {
"count": "15",
"unit": "days"
},
"adjustedPrice": "101.000",
"status": "approved",
"priceAdjustments": [
{
"ruleId": "1234",
"amount": "0.25",
"description": "Price adjustment 1"
},
{
"ruleId": "5678",
"amount": "0.25",
"description": "Price adjustment 2"
}
],
"marginAdjustments": [
{
"ruleId": "12345",
"amount": "-0.300",
"description": "Margin adjustment"
}
],
"rateAdjustments": [],
"stipulations": []
},
"creditApplicationFields": [
{
"fieldId": "field@occupancy-type",
"value": {
"type": "enum",
"enumTypeId": "occupancy-type",
"variantId": "primary-residence"
}
},
{
"fieldId": "field@loan-purpose",
"value": {
"type": "enum",
"enumTypeId": "loan-purpose",
"variantId": "purchase"
}
},
{
"fieldId": "field@decision-credit-score",
"value": {
"type": "number",
"value": "750"
}
},
{
"fieldId": "field@state",
"value": {
"type": "string",
"format": "us-state-code",
"value": "TX"
}
},
{
"fieldId": "field@property-type",
"value": {
"type": "enum",
"enumTypeId": "property-type",
"variantId": "single-family"
}
},
{
"fieldId": "field@base-loan-amount",
"value": {
"type": "number",
"value": "400000.00"
}
}
]
}
price-locking-enabled
Confirmation that price locking has been enabled after sending enable-price-locking
.
Fields
None
Example
{ "message": "price-locking-enabled" }
set-fields-error
Sent if set-fields
contained invalid or unusable data.
Fields
error
: An error message.
Example
{
"message": "set-fields-error",
"error": "There was an error setting fields."
}
set-fields-success
Confirmation that the fields provided in set-fields
were applied.
Fields
None
Example
{ "message": "set-fields-success" }
set-pipeline-record-id-error
Sent if the requested pipeline record could not be loaded.
Fields
error
: An error message.
Example
{
"message": "set-pipeline-record-id-error",
"error": "Failed to set pipeline record."
}
set-pipeline-record-id-success
Confirmation that the record requested by set-pipeline-record-id
was loaded.
Fields
None
Example
{ "message": "set-pipeline-record-id-success" }
set-version-error
Sent if set-version
failed.
Fields
error
: An error message.
Example
{
"message": "set-version-error",
"error": "Failed to set version (invalid version). Please contact your system administrator for assistance."
}
set-version-success
Confirmation that the version provided in set-version
was recorded.
Fields
None
Example
{ "message": "set-version-success" }