@model-match/api 3.63.0 → 3.65.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/RELEASE_NOTES.md +8 -0
- package/dist/{index-DH3pKwhI.d.mts → index-B0udOJC6.d.mts} +204 -1
- package/dist/index.d.mts +2 -2
- package/dist/index.mjs +1 -1
- package/dist/slim/index.d.mts +12 -2
- package/dist/slim/index.mjs +36 -2
- package/dist/{src-CCQcx7Ow.mjs → src-DXHsejhh.mjs} +38 -0
- package/openapi.json +497 -1
- package/package.json +1 -1
package/dist/slim/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { S as client, n as createClient } from "../src-
|
|
1
|
+
import { S as client, n as createClient } from "../src-DXHsejhh.mjs";
|
|
2
2
|
//#region src/slim/sdk.gen.ts
|
|
3
3
|
/**
|
|
4
4
|
* Search agents with filters
|
|
@@ -2399,6 +2399,20 @@ const removeCrmContactMethod = (options) => (options?.client ?? client).delete({
|
|
|
2399
2399
|
}
|
|
2400
2400
|
});
|
|
2401
2401
|
/**
|
|
2402
|
+
* Get contact methods for many records
|
|
2403
|
+
*/
|
|
2404
|
+
const listCrmContactMethods = (options) => (options.client ?? client).get({
|
|
2405
|
+
security: [{
|
|
2406
|
+
name: "x-api-key",
|
|
2407
|
+
type: "apiKey"
|
|
2408
|
+
}, {
|
|
2409
|
+
scheme: "bearer",
|
|
2410
|
+
type: "http"
|
|
2411
|
+
}],
|
|
2412
|
+
url: "/v1/crm/contacts",
|
|
2413
|
+
...options
|
|
2414
|
+
});
|
|
2415
|
+
/**
|
|
2402
2416
|
* Update or suppress a contact method
|
|
2403
2417
|
*/
|
|
2404
2418
|
const updateCrmContactMethod = (options) => (options?.client ?? client).patch({
|
|
@@ -5583,6 +5597,26 @@ const originatorRetention = (options) => (options.client ?? client).post({
|
|
|
5583
5597
|
}
|
|
5584
5598
|
});
|
|
5585
5599
|
/**
|
|
5600
|
+
* Loans one capturer took from this LO
|
|
5601
|
+
*
|
|
5602
|
+
* The loss rows (`churnedLoans` shape) one capturing loan officer — or company — took from this LO's borrowers in `start`–`end`, newest first, paged. Same classification as `originatorRetention`, so `total` matches that capturer's `count` there; unlike the report, it is not limited to the newest 500 rows overall.
|
|
5603
|
+
*/
|
|
5604
|
+
const originatorRetentionCaptured = (options) => (options.client ?? client).post({
|
|
5605
|
+
security: [{
|
|
5606
|
+
name: "x-api-key",
|
|
5607
|
+
type: "apiKey"
|
|
5608
|
+
}, {
|
|
5609
|
+
scheme: "bearer",
|
|
5610
|
+
type: "http"
|
|
5611
|
+
}],
|
|
5612
|
+
url: "/v1/originators/{nmlsId}/retention/captured",
|
|
5613
|
+
...options,
|
|
5614
|
+
headers: {
|
|
5615
|
+
"Content-Type": "application/json",
|
|
5616
|
+
...options.headers
|
|
5617
|
+
}
|
|
5618
|
+
});
|
|
5619
|
+
/**
|
|
5586
5620
|
* Search properties with filters
|
|
5587
5621
|
*
|
|
5588
5622
|
* Search and list individual properties/parcels with filters — one row per parcel. Filter by location (state, county, city, zip, address), owner name, property characteristics (beds, baths, square footage, year built, property type), value, ownership or transaction history, and occupancy (`ownerOccupancy: not_flagged` plus `absenteeOwner: true` targets likely investor / non-owner-occupied parcels — pair `absenteeOwner` with a geography filter), with sorting and cursor pagination. This is the discrete per-property record search: use it to find specific properties or build a filtered property list. (For a single property by its ID use the property detail endpoint.) If you only need how many properties match and not the records themselves, send the same request body to `countProperties`.
|
|
@@ -6209,4 +6243,4 @@ const getSearchToken = (options) => (options?.client ?? client).get({
|
|
|
6209
6243
|
...options
|
|
6210
6244
|
});
|
|
6211
6245
|
//#endregion
|
|
6212
|
-
export { client as _heyApiClient, actionCrmCallerId, addCrmContactMethod, addCrmListMember, addCrmListMembersBulk, addCrmNote, addCrmRecord, addCrmRecordsBulk, addWatchedAgent, addWatchedArea, addWatchedDocument, agentAnalyticsChart, agentAnalyticsSummary, agentAnalyticsTimeSeries, agentBuilders, agentCities, agentCompanies, agentCounties, agentLenders, agentLoanMix, agentMarkets, agentMortgagedTimeSeries, agentOffices, agentOriginators, agentProperties, agentRelated, agentSales, agentStates, agentTitleCompanies, agentTitleCompaniesTimeSeries, agentZipCodes, analyzeCrmCall, applyCrmEnrichment, applyCrmListMiUpdates, applyCrmListTemplate, applyCrmMiUpdates, branchAnalyticsChart, branchAnalyticsSummary, branchAnalyticsTimeSeries, branchCities, branchCommunityLendingMap, branchCounties, branchLenders, branchLoans, branchOriginators, branchRoster, branchStates, branchStats, branchTitleCompanies, cancelAgentsBulkDeliveryJob, cancelBranchesBulkDeliveryJob, cancelCompaniesBulkDeliveryJob, cancelEnrichBulkJob, cancelLoansBulkDeliveryJob, cancelOriginatorsBulkDeliveryJob, cancelPropertiesBulkDeliveryJob, checkCrmImport, companyAgents, companyAnalyticsChart, companyAnalyticsSummary, companyAnalyticsTimeSeries, companyBranches, companyBrokers, companyCities, companyCommunityLendingBenchmark, companyCommunityLendingMap, companyCounties, companyDepartureStatus, companyEarlyExits, companyEmployeeStats, companyEmployment, companyHeadcount, companyLenders, companyMarkets, companyMoverProduction, companyOffices, companyOriginators, companyRelated, companyRetention, companyRetentionActiveListings, companySponsoredIndividuals, companySponsorshipMovement, companyStates, companyTalentFlow, companyTitleCompanies, companyZipCodes, countAgents, countBranches, countCompanies, countLenders, countLoans, countOffices, countOriginators, countProperties, countSales, createAgentContactSubmission, createAlertSubscription, createClient, createCrmList, createCrmListField, createCrmManualRecord, createCrmMeeting, createCrmObjectField, createCrmRecord, createCrmTask, createCrmTemplate, createMyAlertRecipe, createOriginatorContactSubmission, createSavedFilter, crmLenderChannels, crmLoLoanMix, crmLoMomentum, crmLoSponsorLocation, crmSimilarOriginators, declineCrmMiUpdate, deleteAlertSubscription, deleteCrmCallerId, deleteCrmList, deleteCrmListField, deleteCrmMeeting, deleteCrmNote, deleteCrmObjectField, deleteCrmRecord, deleteCrmRecords, deleteCrmTask, deleteCrmTemplate, deleteMyAlertRecipe, deleteSavedFilter, describeCrmRecordsOnAdd, dismissCrmListMiUpdates, dismissCrmMiUpdates, editCrmLoggedActivity, editCrmNote, enrichPropertiesBatch, enrichPropertiesBulk, enrichProperty, filterCrmListMembers, findCrmRecordByNmls, generateCrmRecordDescription, getAgent, getAgentsBulkDeliveryJob, getAlertConditions, getAlertEmailTokens, getAlertUnreadCount, getBranch, getBranchesBulkDeliveryJob, getCompaniesBulkDeliveryJob, getCompany, getCrmActiveCall, getCrmActivityReport, getCrmCall, getCrmCallTranscript, getCrmCustomValues, getCrmImport, getCrmImportJob, getCrmList, getCrmListMemberIds, getCrmListMiUpdates, getCrmListShares, getCrmMiUpdates, getCrmOutcomesReport, getCrmOverrides, getCrmProductionEnrichJob, getCrmRecordAccess, getCrmRecordAccessRequest, getCrmRecordConnections, getCrmRecordMemberIds, getCrmRecordProfile, getCrmTemplate, getCrmTemplateShares, getEnrichBulkJob, getHubspotPushStatus, getLender, getLoan, getLoansBulkDeliveryJob, getMe, getMeCredits, getMePlan, getOffice, getOriginator, getOriginatorsBulkDeliveryJob, getPropertiesBulkDeliveryJob, getProperty, getRealtimeConfig, getSale, getSavedFilter, getSavedFilterShares, getSearchToken, grantCrmListAccess, grantCrmRecordAccess, grantCrmRecordAccessRequest, grantSavedFilterAccess, hangupCrmCall, importCrmRecords, instantSearch, lenderCities, lenderCompanies, lenderCounties, lenderOriginators, lenderStates, linkCrmRecord, listAgentOfficeGroups, listAgents, listAlertDigests, listAlertLog, listAlertRecipes, listAlertSubscriptions, listBranches, listCompanies, listCrmActivity, listCrmCallerIds, listCrmCustomFields, listCrmImportRows, listCrmImports, listCrmListAssignees, listCrmListFields, listCrmListMemberships, listCrmListShareableMembers, listCrmLists, listCrmMeetings, listCrmMembers, listCrmOrgMembers, listCrmRecordShareableMembers, listCrmRecordShares, listCrmReferencedActivity, listCrmTasks, listCrmTemplates, listCrmWorkspaceMeetings, listCrmWorkspaceTasks, listEnrichments, listLenders, listLoans, listMyAlertRecipes, listOffices, listOriginators, listProperties, listSales, listSavedFilterShareableMembers, listSavedFilters, listWatchedAgents, listWatchedAreas, listWatchedDocuments, loanRelated, loansAnalyticsChart, loansAnalyticsSummary, loansAnalyticsTimeSeries, logCrmActivity, lookupCompanies, markAlertDigestRead, markAlertRead, markAllAlertsRead, marketAnalyticsChart, marketAnalyticsSummary, marketAnalyticsTimeSeries, marketCommunityLending, marketMovementActivity, marketMovementByState, marketMovementCohortPayoff, marketMovementMostGained, marketMovementMostLost, marketMovementMovers, marketMovementRankings, marketMovementStats, marketMovementTransitions, marketSignals, officeAgents, officeBuilders, officeLenders, officeLoanTypes, officeOriginators, originatorAgents, originatorAnalyticsChart, originatorAnalyticsSummary, originatorAnalyticsTimeSeries, originatorBranches, originatorBrokers, originatorBuilders, originatorCitiesBreakdown, originatorCommunityLendingBenchmark, originatorCommunityLendingMap, originatorCompanies, originatorCountiesBreakdown, originatorLenders, originatorLoans, originatorMarkets, originatorOffices, originatorProperties, originatorRelated, originatorRetention, originatorStatesBreakdown, originatorTitleCompanies, originatorZipCodes, placeCrmCall, previewAlertEmailTemplate, previewAlertRecipe, previewAlerts, previewMyAlertRecipe, propertiesAnalyticsChart, propertiesAnalyticsSummary, propertyRelated, pushToHubspot, reconcileCrmMeetings, refreshCrmRecordMirror, removeCrmContactMethod, removeCrmListMember, removeWatchedAgent, removeWatchedArea, removeWatchedDocument, requestCrmAccess, requestCrmRecordAccess, resolveProperties, retrieveLocation, revokeCrmListAccess, revokeCrmRecordAccess, revokeSavedFilterAccess, saleRelated, salesAnalyticsChart, salesAnalyticsSummary, salesAnalyticsTimeSeries, searchCrmEmailRecipients, searchCrmMatchCandidates, searchCrmMentionRecords, searchCrmRecords, searchProperties, sendCrmEmail, setCrmCallAnalysis, setCrmCustomValue, setCrmOverride, setCrmRecordOwner, setDefaultCrmCallerId, shareCrmTemplate, submitAgentsBulkDelivery, submitBranchesBulkDelivery, submitCompaniesBulkDelivery, submitLoansBulkDelivery, submitOriginatorsBulkDelivery, submitPropertiesBulkDelivery, subscribeAlertRecipe, suggestLocations, suggestOfficeNames, transcribeCrmCall, transferCrmListOwnership, undoCrmImport, unshareCrmTemplate, unsubscribeAlertRecipe, updateAlertConditions, updateCrmContactMethod, updateCrmList, updateCrmListField, updateCrmMeeting, updateCrmObjectField, updateCrmTask, updateCrmTemplate, updateMe, updateMyAlertRecipe, updateSavedFilter };
|
|
6246
|
+
export { client as _heyApiClient, actionCrmCallerId, addCrmContactMethod, addCrmListMember, addCrmListMembersBulk, addCrmNote, addCrmRecord, addCrmRecordsBulk, addWatchedAgent, addWatchedArea, addWatchedDocument, agentAnalyticsChart, agentAnalyticsSummary, agentAnalyticsTimeSeries, agentBuilders, agentCities, agentCompanies, agentCounties, agentLenders, agentLoanMix, agentMarkets, agentMortgagedTimeSeries, agentOffices, agentOriginators, agentProperties, agentRelated, agentSales, agentStates, agentTitleCompanies, agentTitleCompaniesTimeSeries, agentZipCodes, analyzeCrmCall, applyCrmEnrichment, applyCrmListMiUpdates, applyCrmListTemplate, applyCrmMiUpdates, branchAnalyticsChart, branchAnalyticsSummary, branchAnalyticsTimeSeries, branchCities, branchCommunityLendingMap, branchCounties, branchLenders, branchLoans, branchOriginators, branchRoster, branchStates, branchStats, branchTitleCompanies, cancelAgentsBulkDeliveryJob, cancelBranchesBulkDeliveryJob, cancelCompaniesBulkDeliveryJob, cancelEnrichBulkJob, cancelLoansBulkDeliveryJob, cancelOriginatorsBulkDeliveryJob, cancelPropertiesBulkDeliveryJob, checkCrmImport, companyAgents, companyAnalyticsChart, companyAnalyticsSummary, companyAnalyticsTimeSeries, companyBranches, companyBrokers, companyCities, companyCommunityLendingBenchmark, companyCommunityLendingMap, companyCounties, companyDepartureStatus, companyEarlyExits, companyEmployeeStats, companyEmployment, companyHeadcount, companyLenders, companyMarkets, companyMoverProduction, companyOffices, companyOriginators, companyRelated, companyRetention, companyRetentionActiveListings, companySponsoredIndividuals, companySponsorshipMovement, companyStates, companyTalentFlow, companyTitleCompanies, companyZipCodes, countAgents, countBranches, countCompanies, countLenders, countLoans, countOffices, countOriginators, countProperties, countSales, createAgentContactSubmission, createAlertSubscription, createClient, createCrmList, createCrmListField, createCrmManualRecord, createCrmMeeting, createCrmObjectField, createCrmRecord, createCrmTask, createCrmTemplate, createMyAlertRecipe, createOriginatorContactSubmission, createSavedFilter, crmLenderChannels, crmLoLoanMix, crmLoMomentum, crmLoSponsorLocation, crmSimilarOriginators, declineCrmMiUpdate, deleteAlertSubscription, deleteCrmCallerId, deleteCrmList, deleteCrmListField, deleteCrmMeeting, deleteCrmNote, deleteCrmObjectField, deleteCrmRecord, deleteCrmRecords, deleteCrmTask, deleteCrmTemplate, deleteMyAlertRecipe, deleteSavedFilter, describeCrmRecordsOnAdd, dismissCrmListMiUpdates, dismissCrmMiUpdates, editCrmLoggedActivity, editCrmNote, enrichPropertiesBatch, enrichPropertiesBulk, enrichProperty, filterCrmListMembers, findCrmRecordByNmls, generateCrmRecordDescription, getAgent, getAgentsBulkDeliveryJob, getAlertConditions, getAlertEmailTokens, getAlertUnreadCount, getBranch, getBranchesBulkDeliveryJob, getCompaniesBulkDeliveryJob, getCompany, getCrmActiveCall, getCrmActivityReport, getCrmCall, getCrmCallTranscript, getCrmCustomValues, getCrmImport, getCrmImportJob, getCrmList, getCrmListMemberIds, getCrmListMiUpdates, getCrmListShares, getCrmMiUpdates, getCrmOutcomesReport, getCrmOverrides, getCrmProductionEnrichJob, getCrmRecordAccess, getCrmRecordAccessRequest, getCrmRecordConnections, getCrmRecordMemberIds, getCrmRecordProfile, getCrmTemplate, getCrmTemplateShares, getEnrichBulkJob, getHubspotPushStatus, getLender, getLoan, getLoansBulkDeliveryJob, getMe, getMeCredits, getMePlan, getOffice, getOriginator, getOriginatorsBulkDeliveryJob, getPropertiesBulkDeliveryJob, getProperty, getRealtimeConfig, getSale, getSavedFilter, getSavedFilterShares, getSearchToken, grantCrmListAccess, grantCrmRecordAccess, grantCrmRecordAccessRequest, grantSavedFilterAccess, hangupCrmCall, importCrmRecords, instantSearch, lenderCities, lenderCompanies, lenderCounties, lenderOriginators, lenderStates, linkCrmRecord, listAgentOfficeGroups, listAgents, listAlertDigests, listAlertLog, listAlertRecipes, listAlertSubscriptions, listBranches, listCompanies, listCrmActivity, listCrmCallerIds, listCrmContactMethods, listCrmCustomFields, listCrmImportRows, listCrmImports, listCrmListAssignees, listCrmListFields, listCrmListMemberships, listCrmListShareableMembers, listCrmLists, listCrmMeetings, listCrmMembers, listCrmOrgMembers, listCrmRecordShareableMembers, listCrmRecordShares, listCrmReferencedActivity, listCrmTasks, listCrmTemplates, listCrmWorkspaceMeetings, listCrmWorkspaceTasks, listEnrichments, listLenders, listLoans, listMyAlertRecipes, listOffices, listOriginators, listProperties, listSales, listSavedFilterShareableMembers, listSavedFilters, listWatchedAgents, listWatchedAreas, listWatchedDocuments, loanRelated, loansAnalyticsChart, loansAnalyticsSummary, loansAnalyticsTimeSeries, logCrmActivity, lookupCompanies, markAlertDigestRead, markAlertRead, markAllAlertsRead, marketAnalyticsChart, marketAnalyticsSummary, marketAnalyticsTimeSeries, marketCommunityLending, marketMovementActivity, marketMovementByState, marketMovementCohortPayoff, marketMovementMostGained, marketMovementMostLost, marketMovementMovers, marketMovementRankings, marketMovementStats, marketMovementTransitions, marketSignals, officeAgents, officeBuilders, officeLenders, officeLoanTypes, officeOriginators, originatorAgents, originatorAnalyticsChart, originatorAnalyticsSummary, originatorAnalyticsTimeSeries, originatorBranches, originatorBrokers, originatorBuilders, originatorCitiesBreakdown, originatorCommunityLendingBenchmark, originatorCommunityLendingMap, originatorCompanies, originatorCountiesBreakdown, originatorLenders, originatorLoans, originatorMarkets, originatorOffices, originatorProperties, originatorRelated, originatorRetention, originatorRetentionCaptured, originatorStatesBreakdown, originatorTitleCompanies, originatorZipCodes, placeCrmCall, previewAlertEmailTemplate, previewAlertRecipe, previewAlerts, previewMyAlertRecipe, propertiesAnalyticsChart, propertiesAnalyticsSummary, propertyRelated, pushToHubspot, reconcileCrmMeetings, refreshCrmRecordMirror, removeCrmContactMethod, removeCrmListMember, removeWatchedAgent, removeWatchedArea, removeWatchedDocument, requestCrmAccess, requestCrmRecordAccess, resolveProperties, retrieveLocation, revokeCrmListAccess, revokeCrmRecordAccess, revokeSavedFilterAccess, saleRelated, salesAnalyticsChart, salesAnalyticsSummary, salesAnalyticsTimeSeries, searchCrmEmailRecipients, searchCrmMatchCandidates, searchCrmMentionRecords, searchCrmRecords, searchProperties, sendCrmEmail, setCrmCallAnalysis, setCrmCustomValue, setCrmOverride, setCrmRecordOwner, setDefaultCrmCallerId, shareCrmTemplate, submitAgentsBulkDelivery, submitBranchesBulkDelivery, submitCompaniesBulkDelivery, submitLoansBulkDelivery, submitOriginatorsBulkDelivery, submitPropertiesBulkDelivery, subscribeAlertRecipe, suggestLocations, suggestOfficeNames, transcribeCrmCall, transferCrmListOwnership, undoCrmImport, unshareCrmTemplate, unsubscribeAlertRecipe, updateAlertConditions, updateCrmContactMethod, updateCrmList, updateCrmListField, updateCrmMeeting, updateCrmObjectField, updateCrmTask, updateCrmTemplate, updateMe, updateMyAlertRecipe, updateSavedFilter };
|
|
@@ -3370,6 +3370,22 @@ var Crm = class {
|
|
|
3370
3370
|
});
|
|
3371
3371
|
}
|
|
3372
3372
|
/**
|
|
3373
|
+
* Get contact methods for many records
|
|
3374
|
+
*/
|
|
3375
|
+
static listCrmContactMethods(options) {
|
|
3376
|
+
return (options.client ?? client).get({
|
|
3377
|
+
security: [{
|
|
3378
|
+
name: "x-api-key",
|
|
3379
|
+
type: "apiKey"
|
|
3380
|
+
}, {
|
|
3381
|
+
scheme: "bearer",
|
|
3382
|
+
type: "http"
|
|
3383
|
+
}],
|
|
3384
|
+
url: "/v1/crm/contacts",
|
|
3385
|
+
...options
|
|
3386
|
+
});
|
|
3387
|
+
}
|
|
3388
|
+
/**
|
|
3373
3389
|
* Update or suppress a contact method
|
|
3374
3390
|
*/
|
|
3375
3391
|
static updateCrmContactMethod(options) {
|
|
@@ -6921,6 +6937,28 @@ var Originators = class {
|
|
|
6921
6937
|
}
|
|
6922
6938
|
});
|
|
6923
6939
|
}
|
|
6940
|
+
/**
|
|
6941
|
+
* Loans one capturer took from this LO
|
|
6942
|
+
*
|
|
6943
|
+
* The loss rows (`churnedLoans` shape) one capturing loan officer — or company — took from this LO's borrowers in `start`–`end`, newest first, paged. Same classification as `originatorRetention`, so `total` matches that capturer's `count` there; unlike the report, it is not limited to the newest 500 rows overall.
|
|
6944
|
+
*/
|
|
6945
|
+
static retentionCaptured(options) {
|
|
6946
|
+
return (options.client ?? client).post({
|
|
6947
|
+
security: [{
|
|
6948
|
+
name: "x-api-key",
|
|
6949
|
+
type: "apiKey"
|
|
6950
|
+
}, {
|
|
6951
|
+
scheme: "bearer",
|
|
6952
|
+
type: "http"
|
|
6953
|
+
}],
|
|
6954
|
+
url: "/v1/originators/{nmlsId}/retention/captured",
|
|
6955
|
+
...options,
|
|
6956
|
+
headers: {
|
|
6957
|
+
"Content-Type": "application/json",
|
|
6958
|
+
...options.headers
|
|
6959
|
+
}
|
|
6960
|
+
});
|
|
6961
|
+
}
|
|
6924
6962
|
};
|
|
6925
6963
|
var Properties = class {
|
|
6926
6964
|
/**
|
package/openapi.json
CHANGED
|
@@ -19400,6 +19400,23 @@
|
|
|
19400
19400
|
],
|
|
19401
19401
|
"type": "string"
|
|
19402
19402
|
},
|
|
19403
|
+
"CrmContactMethodsByRecord": {
|
|
19404
|
+
"properties": {
|
|
19405
|
+
"data": {
|
|
19406
|
+
"additionalProperties": {
|
|
19407
|
+
"items": {
|
|
19408
|
+
"$ref": "#/components/schemas/CrmProfileContact"
|
|
19409
|
+
},
|
|
19410
|
+
"type": "array"
|
|
19411
|
+
},
|
|
19412
|
+
"type": "object"
|
|
19413
|
+
}
|
|
19414
|
+
},
|
|
19415
|
+
"required": [
|
|
19416
|
+
"data"
|
|
19417
|
+
],
|
|
19418
|
+
"type": "object"
|
|
19419
|
+
},
|
|
19403
19420
|
"CrmContactSeed": {
|
|
19404
19421
|
"properties": {
|
|
19405
19422
|
"isPrimary": {
|
|
@@ -23051,6 +23068,42 @@
|
|
|
23051
23068
|
},
|
|
23052
23069
|
"type": "object"
|
|
23053
23070
|
},
|
|
23071
|
+
"CrmProfileContact": {
|
|
23072
|
+
"properties": {
|
|
23073
|
+
"id": {
|
|
23074
|
+
"type": "string"
|
|
23075
|
+
},
|
|
23076
|
+
"isPrimary": {
|
|
23077
|
+
"type": "boolean"
|
|
23078
|
+
},
|
|
23079
|
+
"kind": {
|
|
23080
|
+
"type": "string"
|
|
23081
|
+
},
|
|
23082
|
+
"label": {
|
|
23083
|
+
"nullable": true,
|
|
23084
|
+
"type": "string"
|
|
23085
|
+
},
|
|
23086
|
+
"source": {
|
|
23087
|
+
"description": "`mm-edited` = a user edit of a Market Insights value; `user` = added by the workspace (by hand, import or enrichment).",
|
|
23088
|
+
"enum": [
|
|
23089
|
+
"user",
|
|
23090
|
+
"mm-edited"
|
|
23091
|
+
],
|
|
23092
|
+
"type": "string"
|
|
23093
|
+
},
|
|
23094
|
+
"value": {
|
|
23095
|
+
"nullable": true
|
|
23096
|
+
}
|
|
23097
|
+
},
|
|
23098
|
+
"required": [
|
|
23099
|
+
"id",
|
|
23100
|
+
"kind",
|
|
23101
|
+
"label",
|
|
23102
|
+
"isPrimary",
|
|
23103
|
+
"source"
|
|
23104
|
+
],
|
|
23105
|
+
"type": "object"
|
|
23106
|
+
},
|
|
23054
23107
|
"CrmRecordAccessFacts": {
|
|
23055
23108
|
"properties": {
|
|
23056
23109
|
"data": {
|
|
@@ -38356,6 +38409,254 @@
|
|
|
38356
38409
|
],
|
|
38357
38410
|
"type": "object"
|
|
38358
38411
|
},
|
|
38412
|
+
"OriginatorRetentionCaptured": {
|
|
38413
|
+
"properties": {
|
|
38414
|
+
"counts": {
|
|
38415
|
+
"description": "The capturer's rows by kind, ignoring `kind`.",
|
|
38416
|
+
"properties": {
|
|
38417
|
+
"refi": {
|
|
38418
|
+
"type": "number"
|
|
38419
|
+
},
|
|
38420
|
+
"second": {
|
|
38421
|
+
"type": "number"
|
|
38422
|
+
}
|
|
38423
|
+
},
|
|
38424
|
+
"required": [
|
|
38425
|
+
"refi",
|
|
38426
|
+
"second"
|
|
38427
|
+
],
|
|
38428
|
+
"type": "object"
|
|
38429
|
+
},
|
|
38430
|
+
"rows": {
|
|
38431
|
+
"items": {
|
|
38432
|
+
"properties": {
|
|
38433
|
+
"address": {
|
|
38434
|
+
"type": "string"
|
|
38435
|
+
},
|
|
38436
|
+
"borrower": {
|
|
38437
|
+
"type": "string"
|
|
38438
|
+
},
|
|
38439
|
+
"capturingAmount": {
|
|
38440
|
+
"type": "number"
|
|
38441
|
+
},
|
|
38442
|
+
"capturingCompany": {
|
|
38443
|
+
"type": "string"
|
|
38444
|
+
},
|
|
38445
|
+
"capturingCompanyNmlsId": {
|
|
38446
|
+
"type": "string"
|
|
38447
|
+
},
|
|
38448
|
+
"capturingLender": {
|
|
38449
|
+
"type": "string"
|
|
38450
|
+
},
|
|
38451
|
+
"capturingLoName": {
|
|
38452
|
+
"type": "string"
|
|
38453
|
+
},
|
|
38454
|
+
"capturingLoNmlsId": {
|
|
38455
|
+
"type": "string"
|
|
38456
|
+
},
|
|
38457
|
+
"capturingLoanType": {
|
|
38458
|
+
"type": "string"
|
|
38459
|
+
},
|
|
38460
|
+
"capturingRate": {
|
|
38461
|
+
"nullable": true,
|
|
38462
|
+
"type": "number"
|
|
38463
|
+
},
|
|
38464
|
+
"cashOut": {
|
|
38465
|
+
"type": "boolean"
|
|
38466
|
+
},
|
|
38467
|
+
"current": {
|
|
38468
|
+
"description": "What the parcel looks like today, when a scored snapshot newer than the event joined; null otherwise (unknown, never 'retained').",
|
|
38469
|
+
"nullable": true,
|
|
38470
|
+
"properties": {
|
|
38471
|
+
"currentBalance": {
|
|
38472
|
+
"nullable": true,
|
|
38473
|
+
"type": "number"
|
|
38474
|
+
},
|
|
38475
|
+
"currentLender": {
|
|
38476
|
+
"nullable": true,
|
|
38477
|
+
"type": "string"
|
|
38478
|
+
},
|
|
38479
|
+
"currentRate": {
|
|
38480
|
+
"nullable": true,
|
|
38481
|
+
"type": "number"
|
|
38482
|
+
},
|
|
38483
|
+
"lastSaleDate": {
|
|
38484
|
+
"nullable": true,
|
|
38485
|
+
"type": "number"
|
|
38486
|
+
},
|
|
38487
|
+
"loStillActive": {
|
|
38488
|
+
"type": "boolean"
|
|
38489
|
+
},
|
|
38490
|
+
"ownerChanged": {
|
|
38491
|
+
"nullable": true,
|
|
38492
|
+
"type": "boolean"
|
|
38493
|
+
}
|
|
38494
|
+
},
|
|
38495
|
+
"required": [
|
|
38496
|
+
"loStillActive",
|
|
38497
|
+
"ownerChanged",
|
|
38498
|
+
"lastSaleDate",
|
|
38499
|
+
"currentLender",
|
|
38500
|
+
"currentBalance",
|
|
38501
|
+
"currentRate"
|
|
38502
|
+
],
|
|
38503
|
+
"type": "object"
|
|
38504
|
+
},
|
|
38505
|
+
"daysToEvent": {
|
|
38506
|
+
"type": "number"
|
|
38507
|
+
},
|
|
38508
|
+
"eventDate": {
|
|
38509
|
+
"type": "number"
|
|
38510
|
+
},
|
|
38511
|
+
"kind": {
|
|
38512
|
+
"enum": [
|
|
38513
|
+
"refi",
|
|
38514
|
+
"second"
|
|
38515
|
+
],
|
|
38516
|
+
"type": "string"
|
|
38517
|
+
},
|
|
38518
|
+
"lane": {
|
|
38519
|
+
"enum": [
|
|
38520
|
+
"own_company",
|
|
38521
|
+
"servicer",
|
|
38522
|
+
"competitor"
|
|
38523
|
+
],
|
|
38524
|
+
"type": "string"
|
|
38525
|
+
},
|
|
38526
|
+
"originalAmount": {
|
|
38527
|
+
"type": "number"
|
|
38528
|
+
},
|
|
38529
|
+
"originalLender": {
|
|
38530
|
+
"type": "string"
|
|
38531
|
+
},
|
|
38532
|
+
"originalLoanDate": {
|
|
38533
|
+
"type": "number"
|
|
38534
|
+
},
|
|
38535
|
+
"originalLoanType": {
|
|
38536
|
+
"type": "string"
|
|
38537
|
+
},
|
|
38538
|
+
"originalRate": {
|
|
38539
|
+
"nullable": true,
|
|
38540
|
+
"type": "number"
|
|
38541
|
+
},
|
|
38542
|
+
"originalTransactionType": {
|
|
38543
|
+
"type": "string"
|
|
38544
|
+
},
|
|
38545
|
+
"propertyId": {
|
|
38546
|
+
"type": "string"
|
|
38547
|
+
},
|
|
38548
|
+
"sameBorrower": {
|
|
38549
|
+
"nullable": true,
|
|
38550
|
+
"type": "boolean"
|
|
38551
|
+
}
|
|
38552
|
+
},
|
|
38553
|
+
"required": [
|
|
38554
|
+
"kind",
|
|
38555
|
+
"lane",
|
|
38556
|
+
"propertyId",
|
|
38557
|
+
"address",
|
|
38558
|
+
"borrower",
|
|
38559
|
+
"originalLoanDate",
|
|
38560
|
+
"originalAmount",
|
|
38561
|
+
"originalLoanType",
|
|
38562
|
+
"originalTransactionType",
|
|
38563
|
+
"originalRate",
|
|
38564
|
+
"originalLender",
|
|
38565
|
+
"eventDate",
|
|
38566
|
+
"daysToEvent",
|
|
38567
|
+
"capturingAmount",
|
|
38568
|
+
"capturingLoanType",
|
|
38569
|
+
"capturingRate",
|
|
38570
|
+
"capturingLoNmlsId",
|
|
38571
|
+
"capturingLoName",
|
|
38572
|
+
"capturingCompanyNmlsId",
|
|
38573
|
+
"capturingCompany",
|
|
38574
|
+
"capturingLender",
|
|
38575
|
+
"cashOut",
|
|
38576
|
+
"sameBorrower",
|
|
38577
|
+
"current"
|
|
38578
|
+
],
|
|
38579
|
+
"type": "object"
|
|
38580
|
+
},
|
|
38581
|
+
"type": "array"
|
|
38582
|
+
},
|
|
38583
|
+
"status": {
|
|
38584
|
+
"description": "`timeout`: the book could not be read in time; `rows` is empty and the counts are zero.",
|
|
38585
|
+
"enum": [
|
|
38586
|
+
"ok",
|
|
38587
|
+
"timeout"
|
|
38588
|
+
],
|
|
38589
|
+
"type": "string"
|
|
38590
|
+
},
|
|
38591
|
+
"total": {
|
|
38592
|
+
"description": "Rows matching the capturer (and `kind`), all pages.",
|
|
38593
|
+
"type": "number"
|
|
38594
|
+
},
|
|
38595
|
+
"truncated": {
|
|
38596
|
+
"description": "A scan hit its row cap; counts cover the rows read.",
|
|
38597
|
+
"type": "boolean"
|
|
38598
|
+
}
|
|
38599
|
+
},
|
|
38600
|
+
"required": [
|
|
38601
|
+
"status",
|
|
38602
|
+
"truncated",
|
|
38603
|
+
"total",
|
|
38604
|
+
"counts",
|
|
38605
|
+
"rows"
|
|
38606
|
+
],
|
|
38607
|
+
"type": "object"
|
|
38608
|
+
},
|
|
38609
|
+
"OriginatorRetentionCapturedRequest": {
|
|
38610
|
+
"additionalProperties": false,
|
|
38611
|
+
"properties": {
|
|
38612
|
+
"capturingCompanyNmlsId": {
|
|
38613
|
+
"description": "The capturing company (a `capturingCompanies[].nmlsId`). Exactly one of the two capturer ids is required.",
|
|
38614
|
+
"pattern": "^\\d+$",
|
|
38615
|
+
"type": "string"
|
|
38616
|
+
},
|
|
38617
|
+
"capturingLoNmlsId": {
|
|
38618
|
+
"description": "The capturing loan officer (a `capturingOriginators[].nmlsId`).",
|
|
38619
|
+
"pattern": "^\\d+$",
|
|
38620
|
+
"type": "string"
|
|
38621
|
+
},
|
|
38622
|
+
"end": {
|
|
38623
|
+
"description": "Last day of the period (UTC, inclusive).",
|
|
38624
|
+
"example": "2025-08-15",
|
|
38625
|
+
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
|
|
38626
|
+
"type": "string"
|
|
38627
|
+
},
|
|
38628
|
+
"kind": {
|
|
38629
|
+
"description": "Only refinances or only second liens. Default both.",
|
|
38630
|
+
"enum": [
|
|
38631
|
+
"refi",
|
|
38632
|
+
"second"
|
|
38633
|
+
],
|
|
38634
|
+
"type": "string"
|
|
38635
|
+
},
|
|
38636
|
+
"limit": {
|
|
38637
|
+
"description": "Rows per page (default 100, at most 500).",
|
|
38638
|
+
"maximum": 500,
|
|
38639
|
+
"minimum": 1,
|
|
38640
|
+
"type": "integer"
|
|
38641
|
+
},
|
|
38642
|
+
"offset": {
|
|
38643
|
+
"description": "Rows to skip (newest first).",
|
|
38644
|
+
"minimum": 0,
|
|
38645
|
+
"type": "integer"
|
|
38646
|
+
},
|
|
38647
|
+
"start": {
|
|
38648
|
+
"description": "First day of the period (UTC).",
|
|
38649
|
+
"example": "2025-08-15",
|
|
38650
|
+
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
|
|
38651
|
+
"type": "string"
|
|
38652
|
+
}
|
|
38653
|
+
},
|
|
38654
|
+
"required": [
|
|
38655
|
+
"start",
|
|
38656
|
+
"end"
|
|
38657
|
+
],
|
|
38658
|
+
"type": "object"
|
|
38659
|
+
},
|
|
38359
38660
|
"OriginatorRetentionRequest": {
|
|
38360
38661
|
"additionalProperties": false,
|
|
38361
38662
|
"properties": {
|
|
@@ -45543,7 +45844,7 @@
|
|
|
45543
45844
|
"info": {
|
|
45544
45845
|
"description": "ModelMatch API — mortgage and real-estate market data.\n\n## Bulk delivery limits\n\nThe `POST /{entity}/bulk-delivery` endpoints export a full result set to\nS3 as NDJSON, JSON, CSV, or Parquet.\n\n- **Up to 5,000 rows per delivery: no entitlement required.** Available to\n every authenticated caller.\n- **Above 5,000 rows: requires the entity's `bulk-delivery.{entity}`\n entitlement** (e.g. `bulk-delivery.loans`). The grant's scope sets your\n row ceiling and may also restrict which rows and fields you receive.\n\nA delivery that would exceed the limit available to you is rejected with\n`403 entitlement_missing`, reporting the matched row count and the ceiling\nthat applied. To stay under the limit, pass `limit` — the job then delivers\n(and bills for) only the first `limit` rows of a broader query.\n\n**Need a higher limit?** Email support@modelmatch.com to request the\nentitlement. Limits are raised per organization and per entity.\n\nBulk delivery is billed at 1 credit per delivered row whether or not\nan entitlement is held.\n\nInstead of a download, a delivery can be sent to a push target configured\non your workspace: pass `destination: { type: \"push-target\", targetId }`.\nThe same limits and billing apply.",
|
|
45545
45846
|
"title": "ModelMatch API",
|
|
45546
|
-
"version": "3.
|
|
45847
|
+
"version": "3.131.0"
|
|
45547
45848
|
},
|
|
45548
45849
|
"openapi": "3.1.0",
|
|
45549
45850
|
"paths": {
|
|
@@ -59477,6 +59778,98 @@
|
|
|
59477
59778
|
"CRM"
|
|
59478
59779
|
]
|
|
59479
59780
|
},
|
|
59781
|
+
"get": {
|
|
59782
|
+
"operationId": "listCrmContactMethods",
|
|
59783
|
+
"parameters": [
|
|
59784
|
+
{
|
|
59785
|
+
"description": "Comma-separated CRM record ids (`lo:123456`), at most 200.",
|
|
59786
|
+
"in": "query",
|
|
59787
|
+
"name": "entityIds",
|
|
59788
|
+
"required": true,
|
|
59789
|
+
"schema": {
|
|
59790
|
+
"description": "Comma-separated CRM record ids (`lo:123456`), at most 200.",
|
|
59791
|
+
"minLength": 1,
|
|
59792
|
+
"type": "string"
|
|
59793
|
+
}
|
|
59794
|
+
}
|
|
59795
|
+
],
|
|
59796
|
+
"responses": {
|
|
59797
|
+
"200": {
|
|
59798
|
+
"content": {
|
|
59799
|
+
"application/json": {
|
|
59800
|
+
"schema": {
|
|
59801
|
+
"$ref": "#/components/schemas/CrmContactMethodsByRecord"
|
|
59802
|
+
}
|
|
59803
|
+
}
|
|
59804
|
+
},
|
|
59805
|
+
"description": "Contacts keyed by entity id, oldest first (the profile's order; `isPrimary` marks the primary per kind). Records with no contacts, or that the caller can't see, are absent."
|
|
59806
|
+
},
|
|
59807
|
+
"400": {
|
|
59808
|
+
"content": {
|
|
59809
|
+
"application/json": {
|
|
59810
|
+
"schema": {
|
|
59811
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
59812
|
+
}
|
|
59813
|
+
}
|
|
59814
|
+
},
|
|
59815
|
+
"description": "Validation error"
|
|
59816
|
+
},
|
|
59817
|
+
"401": {
|
|
59818
|
+
"content": {
|
|
59819
|
+
"application/json": {
|
|
59820
|
+
"schema": {
|
|
59821
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
59822
|
+
}
|
|
59823
|
+
}
|
|
59824
|
+
},
|
|
59825
|
+
"description": "Unauthorized"
|
|
59826
|
+
},
|
|
59827
|
+
"403": {
|
|
59828
|
+
"content": {
|
|
59829
|
+
"application/json": {
|
|
59830
|
+
"schema": {
|
|
59831
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
59832
|
+
}
|
|
59833
|
+
}
|
|
59834
|
+
},
|
|
59835
|
+
"description": "Forbidden (authenticated, but missing required context — e.g. no active organization)"
|
|
59836
|
+
},
|
|
59837
|
+
"404": {
|
|
59838
|
+
"content": {
|
|
59839
|
+
"application/json": {
|
|
59840
|
+
"schema": {
|
|
59841
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
59842
|
+
}
|
|
59843
|
+
}
|
|
59844
|
+
},
|
|
59845
|
+
"description": "Not found"
|
|
59846
|
+
},
|
|
59847
|
+
"413": {
|
|
59848
|
+
"content": {
|
|
59849
|
+
"application/json": {
|
|
59850
|
+
"schema": {
|
|
59851
|
+
"$ref": "#/components/schemas/PayloadTooLarge"
|
|
59852
|
+
}
|
|
59853
|
+
}
|
|
59854
|
+
},
|
|
59855
|
+
"description": "Response payload too large — detail endpoint capped to fit Lambda response limits"
|
|
59856
|
+
},
|
|
59857
|
+
"503": {
|
|
59858
|
+
"content": {
|
|
59859
|
+
"application/json": {
|
|
59860
|
+
"schema": {
|
|
59861
|
+
"$ref": "#/components/schemas/SearchUnavailable"
|
|
59862
|
+
}
|
|
59863
|
+
}
|
|
59864
|
+
},
|
|
59865
|
+
"description": "Search timed out or the cluster is overloaded — retry after `Retry-After` seconds."
|
|
59866
|
+
}
|
|
59867
|
+
},
|
|
59868
|
+
"summary": "Get contact methods for many records",
|
|
59869
|
+
"tags": [
|
|
59870
|
+
"CRM"
|
|
59871
|
+
]
|
|
59872
|
+
},
|
|
59480
59873
|
"patch": {
|
|
59481
59874
|
"operationId": "updateCrmContactMethod",
|
|
59482
59875
|
"requestBody": {
|
|
@@ -79807,6 +80200,109 @@
|
|
|
79807
80200
|
]
|
|
79808
80201
|
}
|
|
79809
80202
|
},
|
|
80203
|
+
"/v1/originators/{nmlsId}/retention/captured": {
|
|
80204
|
+
"post": {
|
|
80205
|
+
"description": "The loss rows (`churnedLoans` shape) one capturing loan officer — or company — took from this LO's borrowers in `start`–`end`, newest first, paged. Same classification as `originatorRetention`, so `total` matches that capturer's `count` there; unlike the report, it is not limited to the newest 500 rows overall.",
|
|
80206
|
+
"operationId": "originatorRetentionCaptured",
|
|
80207
|
+
"parameters": [
|
|
80208
|
+
{
|
|
80209
|
+
"description": "Originator NMLS ID",
|
|
80210
|
+
"in": "path",
|
|
80211
|
+
"name": "nmlsId",
|
|
80212
|
+
"required": true,
|
|
80213
|
+
"schema": {
|
|
80214
|
+
"description": "Originator NMLS ID",
|
|
80215
|
+
"type": "string"
|
|
80216
|
+
}
|
|
80217
|
+
}
|
|
80218
|
+
],
|
|
80219
|
+
"requestBody": {
|
|
80220
|
+
"content": {
|
|
80221
|
+
"application/json": {
|
|
80222
|
+
"schema": {
|
|
80223
|
+
"$ref": "#/components/schemas/OriginatorRetentionCapturedRequest"
|
|
80224
|
+
}
|
|
80225
|
+
}
|
|
80226
|
+
}
|
|
80227
|
+
},
|
|
80228
|
+
"responses": {
|
|
80229
|
+
"200": {
|
|
80230
|
+
"content": {
|
|
80231
|
+
"application/json": {
|
|
80232
|
+
"schema": {
|
|
80233
|
+
"$ref": "#/components/schemas/OriginatorRetentionCaptured"
|
|
80234
|
+
}
|
|
80235
|
+
}
|
|
80236
|
+
},
|
|
80237
|
+
"description": "The capturer's loss rows"
|
|
80238
|
+
},
|
|
80239
|
+
"400": {
|
|
80240
|
+
"content": {
|
|
80241
|
+
"application/json": {
|
|
80242
|
+
"schema": {
|
|
80243
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
80244
|
+
}
|
|
80245
|
+
}
|
|
80246
|
+
},
|
|
80247
|
+
"description": "Validation error"
|
|
80248
|
+
},
|
|
80249
|
+
"401": {
|
|
80250
|
+
"content": {
|
|
80251
|
+
"application/json": {
|
|
80252
|
+
"schema": {
|
|
80253
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
80254
|
+
}
|
|
80255
|
+
}
|
|
80256
|
+
},
|
|
80257
|
+
"description": "Unauthorized"
|
|
80258
|
+
},
|
|
80259
|
+
"403": {
|
|
80260
|
+
"content": {
|
|
80261
|
+
"application/json": {
|
|
80262
|
+
"schema": {
|
|
80263
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
80264
|
+
}
|
|
80265
|
+
}
|
|
80266
|
+
},
|
|
80267
|
+
"description": "Forbidden (authenticated, but missing required context — e.g. no active organization)"
|
|
80268
|
+
},
|
|
80269
|
+
"404": {
|
|
80270
|
+
"content": {
|
|
80271
|
+
"application/json": {
|
|
80272
|
+
"schema": {
|
|
80273
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
80274
|
+
}
|
|
80275
|
+
}
|
|
80276
|
+
},
|
|
80277
|
+
"description": "Not found"
|
|
80278
|
+
},
|
|
80279
|
+
"413": {
|
|
80280
|
+
"content": {
|
|
80281
|
+
"application/json": {
|
|
80282
|
+
"schema": {
|
|
80283
|
+
"$ref": "#/components/schemas/PayloadTooLarge"
|
|
80284
|
+
}
|
|
80285
|
+
}
|
|
80286
|
+
},
|
|
80287
|
+
"description": "Response payload too large — detail endpoint capped to fit Lambda response limits"
|
|
80288
|
+
},
|
|
80289
|
+
"503": {
|
|
80290
|
+
"content": {
|
|
80291
|
+
"application/json": {
|
|
80292
|
+
"schema": {
|
|
80293
|
+
"$ref": "#/components/schemas/SearchUnavailable"
|
|
80294
|
+
}
|
|
80295
|
+
}
|
|
80296
|
+
},
|
|
80297
|
+
"description": "Search timed out or the cluster is overloaded — retry after `Retry-After` seconds."
|
|
80298
|
+
}
|
|
80299
|
+
},
|
|
80300
|
+
"summary": "Loans one capturer took from this LO",
|
|
80301
|
+
"tags": [
|
|
80302
|
+
"Originators"
|
|
80303
|
+
]
|
|
80304
|
+
}
|
|
80305
|
+
},
|
|
79810
80306
|
"/v1/properties": {
|
|
79811
80307
|
"post": {
|
|
79812
80308
|
"description": "Search and list individual properties/parcels with filters — one row per parcel. Filter by location (state, county, city, zip, address), owner name, property characteristics (beds, baths, square footage, year built, property type), value, ownership or transaction history, and occupancy (`ownerOccupancy: not_flagged` plus `absenteeOwner: true` targets likely investor / non-owner-occupied parcels — pair `absenteeOwner` with a geography filter), with sorting and cursor pagination. This is the discrete per-property record search: use it to find specific properties or build a filtered property list. (For a single property by its ID use the property detail endpoint.) If you only need how many properties match and not the records themselves, send the same request body to `countProperties`.",
|