@model-match/api 3.48.0 → 3.49.1
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-cCkX3-4W.d.mts → index-ChXwwj0c.d.mts} +280 -13
- package/dist/index.d.mts +2 -2
- package/dist/index.mjs +1 -1
- package/dist/slim/index.d.mts +8 -2
- package/dist/slim/index.mjs +18 -2
- package/dist/{src-CCp2TVpk.mjs → src-CvwNdqc1.mjs} +18 -0
- package/openapi.json +784 -13
- package/package.json +1 -1
package/openapi.json
CHANGED
|
@@ -15146,6 +15146,668 @@
|
|
|
15146
15146
|
},
|
|
15147
15147
|
"type": "object"
|
|
15148
15148
|
},
|
|
15149
|
+
"CompanyRetentionSnapshot": {
|
|
15150
|
+
"properties": {
|
|
15151
|
+
"book": {
|
|
15152
|
+
"description": "Rows the computation read (sizing / provenance).",
|
|
15153
|
+
"properties": {
|
|
15154
|
+
"laterLoans": {
|
|
15155
|
+
"type": "number"
|
|
15156
|
+
},
|
|
15157
|
+
"ownLoans": {
|
|
15158
|
+
"type": "number"
|
|
15159
|
+
},
|
|
15160
|
+
"parcels": {
|
|
15161
|
+
"type": "number"
|
|
15162
|
+
},
|
|
15163
|
+
"sales": {
|
|
15164
|
+
"type": "number"
|
|
15165
|
+
}
|
|
15166
|
+
},
|
|
15167
|
+
"required": [
|
|
15168
|
+
"ownLoans",
|
|
15169
|
+
"parcels",
|
|
15170
|
+
"laterLoans",
|
|
15171
|
+
"sales"
|
|
15172
|
+
],
|
|
15173
|
+
"type": "object"
|
|
15174
|
+
},
|
|
15175
|
+
"capturingCompanies": {
|
|
15176
|
+
"description": "Top 10 companies that captured lost borrowers, by volume.",
|
|
15177
|
+
"items": {
|
|
15178
|
+
"properties": {
|
|
15179
|
+
"count": {
|
|
15180
|
+
"type": "number"
|
|
15181
|
+
},
|
|
15182
|
+
"lane": {
|
|
15183
|
+
"enum": [
|
|
15184
|
+
"own_company",
|
|
15185
|
+
"servicer",
|
|
15186
|
+
"competitor"
|
|
15187
|
+
],
|
|
15188
|
+
"type": "string"
|
|
15189
|
+
},
|
|
15190
|
+
"name": {
|
|
15191
|
+
"type": "string"
|
|
15192
|
+
},
|
|
15193
|
+
"nmlsId": {
|
|
15194
|
+
"type": "string"
|
|
15195
|
+
},
|
|
15196
|
+
"volume": {
|
|
15197
|
+
"type": "number"
|
|
15198
|
+
}
|
|
15199
|
+
},
|
|
15200
|
+
"required": [
|
|
15201
|
+
"nmlsId",
|
|
15202
|
+
"name",
|
|
15203
|
+
"count",
|
|
15204
|
+
"volume",
|
|
15205
|
+
"lane"
|
|
15206
|
+
],
|
|
15207
|
+
"type": "object"
|
|
15208
|
+
},
|
|
15209
|
+
"type": "array"
|
|
15210
|
+
},
|
|
15211
|
+
"capturingOriginators": {
|
|
15212
|
+
"description": "Top 10 LOs that captured lost borrowers, by volume.",
|
|
15213
|
+
"items": {
|
|
15214
|
+
"properties": {
|
|
15215
|
+
"companyName": {
|
|
15216
|
+
"type": "string"
|
|
15217
|
+
},
|
|
15218
|
+
"count": {
|
|
15219
|
+
"type": "number"
|
|
15220
|
+
},
|
|
15221
|
+
"name": {
|
|
15222
|
+
"type": "string"
|
|
15223
|
+
},
|
|
15224
|
+
"nmlsId": {
|
|
15225
|
+
"type": "string"
|
|
15226
|
+
},
|
|
15227
|
+
"volume": {
|
|
15228
|
+
"type": "number"
|
|
15229
|
+
}
|
|
15230
|
+
},
|
|
15231
|
+
"required": [
|
|
15232
|
+
"nmlsId",
|
|
15233
|
+
"name",
|
|
15234
|
+
"companyName",
|
|
15235
|
+
"count",
|
|
15236
|
+
"volume"
|
|
15237
|
+
],
|
|
15238
|
+
"type": "object"
|
|
15239
|
+
},
|
|
15240
|
+
"type": "array"
|
|
15241
|
+
},
|
|
15242
|
+
"capturingTotals": {
|
|
15243
|
+
"properties": {
|
|
15244
|
+
"companies": {
|
|
15245
|
+
"properties": {
|
|
15246
|
+
"distinct": {
|
|
15247
|
+
"type": "number"
|
|
15248
|
+
},
|
|
15249
|
+
"loans": {
|
|
15250
|
+
"type": "number"
|
|
15251
|
+
},
|
|
15252
|
+
"volume": {
|
|
15253
|
+
"type": "number"
|
|
15254
|
+
}
|
|
15255
|
+
},
|
|
15256
|
+
"required": [
|
|
15257
|
+
"distinct",
|
|
15258
|
+
"loans",
|
|
15259
|
+
"volume"
|
|
15260
|
+
],
|
|
15261
|
+
"type": "object"
|
|
15262
|
+
},
|
|
15263
|
+
"originators": {
|
|
15264
|
+
"properties": {
|
|
15265
|
+
"distinct": {
|
|
15266
|
+
"type": "number"
|
|
15267
|
+
},
|
|
15268
|
+
"loans": {
|
|
15269
|
+
"type": "number"
|
|
15270
|
+
},
|
|
15271
|
+
"unattributedLoans": {
|
|
15272
|
+
"type": "number"
|
|
15273
|
+
},
|
|
15274
|
+
"volume": {
|
|
15275
|
+
"type": "number"
|
|
15276
|
+
}
|
|
15277
|
+
},
|
|
15278
|
+
"required": [
|
|
15279
|
+
"distinct",
|
|
15280
|
+
"loans",
|
|
15281
|
+
"volume",
|
|
15282
|
+
"unattributedLoans"
|
|
15283
|
+
],
|
|
15284
|
+
"type": "object"
|
|
15285
|
+
}
|
|
15286
|
+
},
|
|
15287
|
+
"required": [
|
|
15288
|
+
"companies",
|
|
15289
|
+
"originators"
|
|
15290
|
+
],
|
|
15291
|
+
"type": "object"
|
|
15292
|
+
},
|
|
15293
|
+
"churnTrend": {
|
|
15294
|
+
"items": {
|
|
15295
|
+
"properties": {
|
|
15296
|
+
"churned": {
|
|
15297
|
+
"type": "number"
|
|
15298
|
+
},
|
|
15299
|
+
"kept": {
|
|
15300
|
+
"type": "number"
|
|
15301
|
+
},
|
|
15302
|
+
"month": {
|
|
15303
|
+
"type": "string"
|
|
15304
|
+
},
|
|
15305
|
+
"retained": {
|
|
15306
|
+
"type": "number"
|
|
15307
|
+
},
|
|
15308
|
+
"secondPositions": {
|
|
15309
|
+
"type": "number"
|
|
15310
|
+
}
|
|
15311
|
+
},
|
|
15312
|
+
"required": [
|
|
15313
|
+
"month",
|
|
15314
|
+
"churned",
|
|
15315
|
+
"retained",
|
|
15316
|
+
"secondPositions",
|
|
15317
|
+
"kept"
|
|
15318
|
+
],
|
|
15319
|
+
"type": "object"
|
|
15320
|
+
},
|
|
15321
|
+
"type": "array"
|
|
15322
|
+
},
|
|
15323
|
+
"companyName": {
|
|
15324
|
+
"nullable": true,
|
|
15325
|
+
"type": "string"
|
|
15326
|
+
},
|
|
15327
|
+
"companyNmlsId": {
|
|
15328
|
+
"type": "string"
|
|
15329
|
+
},
|
|
15330
|
+
"computedAt": {
|
|
15331
|
+
"description": "When the weekly batch computed this snapshot (ISO-8601).",
|
|
15332
|
+
"type": "string"
|
|
15333
|
+
},
|
|
15334
|
+
"lanes": {
|
|
15335
|
+
"description": "Where lost refinances went: the borrower's funding lender (`servicer`) or another company (`competitor`). `own_company` is always 0 at company level (those are kept).",
|
|
15336
|
+
"properties": {
|
|
15337
|
+
"competitor": {
|
|
15338
|
+
"properties": {
|
|
15339
|
+
"count": {
|
|
15340
|
+
"type": "number"
|
|
15341
|
+
},
|
|
15342
|
+
"volume": {
|
|
15343
|
+
"type": "number"
|
|
15344
|
+
}
|
|
15345
|
+
},
|
|
15346
|
+
"required": [
|
|
15347
|
+
"count",
|
|
15348
|
+
"volume"
|
|
15349
|
+
],
|
|
15350
|
+
"type": "object"
|
|
15351
|
+
},
|
|
15352
|
+
"own_company": {
|
|
15353
|
+
"properties": {
|
|
15354
|
+
"count": {
|
|
15355
|
+
"type": "number"
|
|
15356
|
+
},
|
|
15357
|
+
"volume": {
|
|
15358
|
+
"type": "number"
|
|
15359
|
+
}
|
|
15360
|
+
},
|
|
15361
|
+
"required": [
|
|
15362
|
+
"count",
|
|
15363
|
+
"volume"
|
|
15364
|
+
],
|
|
15365
|
+
"type": "object"
|
|
15366
|
+
},
|
|
15367
|
+
"servicer": {
|
|
15368
|
+
"properties": {
|
|
15369
|
+
"count": {
|
|
15370
|
+
"type": "number"
|
|
15371
|
+
},
|
|
15372
|
+
"volume": {
|
|
15373
|
+
"type": "number"
|
|
15374
|
+
}
|
|
15375
|
+
},
|
|
15376
|
+
"required": [
|
|
15377
|
+
"count",
|
|
15378
|
+
"volume"
|
|
15379
|
+
],
|
|
15380
|
+
"type": "object"
|
|
15381
|
+
}
|
|
15382
|
+
},
|
|
15383
|
+
"required": [
|
|
15384
|
+
"own_company",
|
|
15385
|
+
"servicer",
|
|
15386
|
+
"competitor"
|
|
15387
|
+
],
|
|
15388
|
+
"type": "object"
|
|
15389
|
+
},
|
|
15390
|
+
"leakiestOriginators": {
|
|
15391
|
+
"description": "The company's own LOs ranked by borrowers lost to other companies (top 10; only LOs with at least 10 refi events in the window).",
|
|
15392
|
+
"items": {
|
|
15393
|
+
"properties": {
|
|
15394
|
+
"churnedCount": {
|
|
15395
|
+
"description": "Their borrowers who refinanced at another company.",
|
|
15396
|
+
"type": "number"
|
|
15397
|
+
},
|
|
15398
|
+
"churnedVolume": {
|
|
15399
|
+
"type": "number"
|
|
15400
|
+
},
|
|
15401
|
+
"keptCount": {
|
|
15402
|
+
"description": "Their borrowers the company refinanced again (any LO).",
|
|
15403
|
+
"type": "number"
|
|
15404
|
+
},
|
|
15405
|
+
"name": {
|
|
15406
|
+
"type": "string"
|
|
15407
|
+
},
|
|
15408
|
+
"nmlsId": {
|
|
15409
|
+
"type": "string"
|
|
15410
|
+
},
|
|
15411
|
+
"refiRetentionRate": {
|
|
15412
|
+
"nullable": true,
|
|
15413
|
+
"type": "number"
|
|
15414
|
+
},
|
|
15415
|
+
"verdict": {
|
|
15416
|
+
"description": "On `refiRetentionRate` (kept ÷ (kept + churned) refi events): `quiet` under 10 events, `holding` ≥ 60%, `leaking` 35–60%, `bleeding` < 35% — the LO tab's thresholds.",
|
|
15417
|
+
"enum": [
|
|
15418
|
+
"holding",
|
|
15419
|
+
"leaking",
|
|
15420
|
+
"bleeding",
|
|
15421
|
+
"quiet"
|
|
15422
|
+
],
|
|
15423
|
+
"type": "string"
|
|
15424
|
+
}
|
|
15425
|
+
},
|
|
15426
|
+
"required": [
|
|
15427
|
+
"nmlsId",
|
|
15428
|
+
"name",
|
|
15429
|
+
"churnedCount",
|
|
15430
|
+
"churnedVolume",
|
|
15431
|
+
"keptCount",
|
|
15432
|
+
"refiRetentionRate",
|
|
15433
|
+
"verdict"
|
|
15434
|
+
],
|
|
15435
|
+
"type": "object"
|
|
15436
|
+
},
|
|
15437
|
+
"type": "array"
|
|
15438
|
+
},
|
|
15439
|
+
"period": {
|
|
15440
|
+
"properties": {
|
|
15441
|
+
"end": {
|
|
15442
|
+
"description": "Last day (UTC, inclusive).",
|
|
15443
|
+
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
|
|
15444
|
+
"type": "string"
|
|
15445
|
+
},
|
|
15446
|
+
"start": {
|
|
15447
|
+
"description": "First day (UTC).",
|
|
15448
|
+
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
|
|
15449
|
+
"type": "string"
|
|
15450
|
+
}
|
|
15451
|
+
},
|
|
15452
|
+
"required": [
|
|
15453
|
+
"start",
|
|
15454
|
+
"end"
|
|
15455
|
+
],
|
|
15456
|
+
"type": "object"
|
|
15457
|
+
},
|
|
15458
|
+
"previous": {
|
|
15459
|
+
"description": "The preceding period of equal length (for deltas); null for `allTime`.",
|
|
15460
|
+
"nullable": true,
|
|
15461
|
+
"properties": {
|
|
15462
|
+
"period": {
|
|
15463
|
+
"properties": {
|
|
15464
|
+
"end": {
|
|
15465
|
+
"description": "Last day (UTC, inclusive).",
|
|
15466
|
+
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
|
|
15467
|
+
"type": "string"
|
|
15468
|
+
},
|
|
15469
|
+
"start": {
|
|
15470
|
+
"description": "First day (UTC).",
|
|
15471
|
+
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
|
|
15472
|
+
"type": "string"
|
|
15473
|
+
}
|
|
15474
|
+
},
|
|
15475
|
+
"required": [
|
|
15476
|
+
"start",
|
|
15477
|
+
"end"
|
|
15478
|
+
],
|
|
15479
|
+
"type": "object"
|
|
15480
|
+
},
|
|
15481
|
+
"summary": {
|
|
15482
|
+
"properties": {
|
|
15483
|
+
"churnRate": {
|
|
15484
|
+
"type": "number"
|
|
15485
|
+
},
|
|
15486
|
+
"churnedCount": {
|
|
15487
|
+
"type": "number"
|
|
15488
|
+
},
|
|
15489
|
+
"daysToRefiPairsUsed": {
|
|
15490
|
+
"type": "number"
|
|
15491
|
+
},
|
|
15492
|
+
"keptRefiCount": {
|
|
15493
|
+
"description": "Same-LO refinances of the LO's own borrowers in the period",
|
|
15494
|
+
"type": "number"
|
|
15495
|
+
},
|
|
15496
|
+
"keptRefiVolume": {
|
|
15497
|
+
"type": "number"
|
|
15498
|
+
},
|
|
15499
|
+
"keptSecondCount": {
|
|
15500
|
+
"type": "number"
|
|
15501
|
+
},
|
|
15502
|
+
"medianDaysToRefi": {
|
|
15503
|
+
"nullable": true,
|
|
15504
|
+
"type": "number"
|
|
15505
|
+
},
|
|
15506
|
+
"propertySoldCount": {
|
|
15507
|
+
"type": "number"
|
|
15508
|
+
},
|
|
15509
|
+
"refiRetentionRate": {
|
|
15510
|
+
"description": "kept ÷ (kept + churned) refi events; null with none",
|
|
15511
|
+
"nullable": true,
|
|
15512
|
+
"type": "number"
|
|
15513
|
+
},
|
|
15514
|
+
"retainedCount": {
|
|
15515
|
+
"type": "number"
|
|
15516
|
+
},
|
|
15517
|
+
"secondPositionCount": {
|
|
15518
|
+
"type": "number"
|
|
15519
|
+
},
|
|
15520
|
+
"secondPositionVolume": {
|
|
15521
|
+
"type": "number"
|
|
15522
|
+
},
|
|
15523
|
+
"totalBorrowers": {
|
|
15524
|
+
"type": "number"
|
|
15525
|
+
},
|
|
15526
|
+
"unattributedCount": {
|
|
15527
|
+
"type": "number"
|
|
15528
|
+
},
|
|
15529
|
+
"volumeLost": {
|
|
15530
|
+
"type": "number"
|
|
15531
|
+
},
|
|
15532
|
+
"volumeRetained": {
|
|
15533
|
+
"type": "number"
|
|
15534
|
+
}
|
|
15535
|
+
},
|
|
15536
|
+
"required": [
|
|
15537
|
+
"totalBorrowers",
|
|
15538
|
+
"churnedCount",
|
|
15539
|
+
"retainedCount",
|
|
15540
|
+
"propertySoldCount",
|
|
15541
|
+
"unattributedCount",
|
|
15542
|
+
"secondPositionCount",
|
|
15543
|
+
"secondPositionVolume",
|
|
15544
|
+
"keptRefiCount",
|
|
15545
|
+
"keptRefiVolume",
|
|
15546
|
+
"keptSecondCount",
|
|
15547
|
+
"refiRetentionRate",
|
|
15548
|
+
"churnRate",
|
|
15549
|
+
"volumeLost",
|
|
15550
|
+
"volumeRetained",
|
|
15551
|
+
"medianDaysToRefi",
|
|
15552
|
+
"daysToRefiPairsUsed"
|
|
15553
|
+
],
|
|
15554
|
+
"type": "object"
|
|
15555
|
+
},
|
|
15556
|
+
"verdict": {
|
|
15557
|
+
"description": "On `refiRetentionRate` (kept ÷ (kept + churned) refi events): `quiet` under 10 events, `holding` ≥ 60%, `leaking` 35–60%, `bleeding` < 35% — the LO tab's thresholds.",
|
|
15558
|
+
"enum": [
|
|
15559
|
+
"holding",
|
|
15560
|
+
"leaking",
|
|
15561
|
+
"bleeding",
|
|
15562
|
+
"quiet"
|
|
15563
|
+
],
|
|
15564
|
+
"type": "string"
|
|
15565
|
+
}
|
|
15566
|
+
},
|
|
15567
|
+
"required": [
|
|
15568
|
+
"period",
|
|
15569
|
+
"summary",
|
|
15570
|
+
"verdict"
|
|
15571
|
+
],
|
|
15572
|
+
"type": "object"
|
|
15573
|
+
},
|
|
15574
|
+
"schemaVersion": {
|
|
15575
|
+
"type": "integer"
|
|
15576
|
+
},
|
|
15577
|
+
"secondPositionLanes": {
|
|
15578
|
+
"properties": {
|
|
15579
|
+
"competitor": {
|
|
15580
|
+
"properties": {
|
|
15581
|
+
"count": {
|
|
15582
|
+
"type": "number"
|
|
15583
|
+
},
|
|
15584
|
+
"volume": {
|
|
15585
|
+
"type": "number"
|
|
15586
|
+
}
|
|
15587
|
+
},
|
|
15588
|
+
"required": [
|
|
15589
|
+
"count",
|
|
15590
|
+
"volume"
|
|
15591
|
+
],
|
|
15592
|
+
"type": "object"
|
|
15593
|
+
},
|
|
15594
|
+
"own_company": {
|
|
15595
|
+
"properties": {
|
|
15596
|
+
"count": {
|
|
15597
|
+
"type": "number"
|
|
15598
|
+
},
|
|
15599
|
+
"volume": {
|
|
15600
|
+
"type": "number"
|
|
15601
|
+
}
|
|
15602
|
+
},
|
|
15603
|
+
"required": [
|
|
15604
|
+
"count",
|
|
15605
|
+
"volume"
|
|
15606
|
+
],
|
|
15607
|
+
"type": "object"
|
|
15608
|
+
},
|
|
15609
|
+
"servicer": {
|
|
15610
|
+
"properties": {
|
|
15611
|
+
"count": {
|
|
15612
|
+
"type": "number"
|
|
15613
|
+
},
|
|
15614
|
+
"volume": {
|
|
15615
|
+
"type": "number"
|
|
15616
|
+
}
|
|
15617
|
+
},
|
|
15618
|
+
"required": [
|
|
15619
|
+
"count",
|
|
15620
|
+
"volume"
|
|
15621
|
+
],
|
|
15622
|
+
"type": "object"
|
|
15623
|
+
}
|
|
15624
|
+
},
|
|
15625
|
+
"required": [
|
|
15626
|
+
"own_company",
|
|
15627
|
+
"servicer",
|
|
15628
|
+
"competitor"
|
|
15629
|
+
],
|
|
15630
|
+
"type": "object"
|
|
15631
|
+
},
|
|
15632
|
+
"status": {
|
|
15633
|
+
"description": "`truncated`: a loan / sale scan hit its row cap, so counts cover the rows read. `timeout`: the book could not be read within the batch's per-company budget — every count is 0 and means 'not available', not 'none'.",
|
|
15634
|
+
"enum": [
|
|
15635
|
+
"ok",
|
|
15636
|
+
"timeout",
|
|
15637
|
+
"truncated"
|
|
15638
|
+
],
|
|
15639
|
+
"type": "string"
|
|
15640
|
+
},
|
|
15641
|
+
"summary": {
|
|
15642
|
+
"description": "Same fields as the LO report. At company level a refinance by ANY LO at the company is kept; only a refinance at another company is churned.",
|
|
15643
|
+
"properties": {
|
|
15644
|
+
"churnRate": {
|
|
15645
|
+
"type": "number"
|
|
15646
|
+
},
|
|
15647
|
+
"churnedCount": {
|
|
15648
|
+
"type": "number"
|
|
15649
|
+
},
|
|
15650
|
+
"daysToRefiPairsUsed": {
|
|
15651
|
+
"type": "number"
|
|
15652
|
+
},
|
|
15653
|
+
"keptRefiCount": {
|
|
15654
|
+
"description": "Same-LO refinances of the LO's own borrowers in the period",
|
|
15655
|
+
"type": "number"
|
|
15656
|
+
},
|
|
15657
|
+
"keptRefiVolume": {
|
|
15658
|
+
"type": "number"
|
|
15659
|
+
},
|
|
15660
|
+
"keptSecondCount": {
|
|
15661
|
+
"type": "number"
|
|
15662
|
+
},
|
|
15663
|
+
"medianDaysToRefi": {
|
|
15664
|
+
"nullable": true,
|
|
15665
|
+
"type": "number"
|
|
15666
|
+
},
|
|
15667
|
+
"propertySoldCount": {
|
|
15668
|
+
"type": "number"
|
|
15669
|
+
},
|
|
15670
|
+
"refiRetentionRate": {
|
|
15671
|
+
"description": "kept ÷ (kept + churned) refi events; null with none",
|
|
15672
|
+
"nullable": true,
|
|
15673
|
+
"type": "number"
|
|
15674
|
+
},
|
|
15675
|
+
"retainedCount": {
|
|
15676
|
+
"type": "number"
|
|
15677
|
+
},
|
|
15678
|
+
"secondPositionCount": {
|
|
15679
|
+
"type": "number"
|
|
15680
|
+
},
|
|
15681
|
+
"secondPositionVolume": {
|
|
15682
|
+
"type": "number"
|
|
15683
|
+
},
|
|
15684
|
+
"totalBorrowers": {
|
|
15685
|
+
"type": "number"
|
|
15686
|
+
},
|
|
15687
|
+
"unattributedCount": {
|
|
15688
|
+
"type": "number"
|
|
15689
|
+
},
|
|
15690
|
+
"volumeLost": {
|
|
15691
|
+
"type": "number"
|
|
15692
|
+
},
|
|
15693
|
+
"volumeRetained": {
|
|
15694
|
+
"type": "number"
|
|
15695
|
+
}
|
|
15696
|
+
},
|
|
15697
|
+
"required": [
|
|
15698
|
+
"totalBorrowers",
|
|
15699
|
+
"churnedCount",
|
|
15700
|
+
"retainedCount",
|
|
15701
|
+
"propertySoldCount",
|
|
15702
|
+
"unattributedCount",
|
|
15703
|
+
"secondPositionCount",
|
|
15704
|
+
"secondPositionVolume",
|
|
15705
|
+
"keptRefiCount",
|
|
15706
|
+
"keptRefiVolume",
|
|
15707
|
+
"keptSecondCount",
|
|
15708
|
+
"refiRetentionRate",
|
|
15709
|
+
"churnRate",
|
|
15710
|
+
"volumeLost",
|
|
15711
|
+
"volumeRetained",
|
|
15712
|
+
"medianDaysToRefi",
|
|
15713
|
+
"daysToRefiPairsUsed"
|
|
15714
|
+
],
|
|
15715
|
+
"type": "object"
|
|
15716
|
+
},
|
|
15717
|
+
"timing": {
|
|
15718
|
+
"properties": {
|
|
15719
|
+
"cashOutCount": {
|
|
15720
|
+
"type": "number"
|
|
15721
|
+
},
|
|
15722
|
+
"cashOutShare": {
|
|
15723
|
+
"nullable": true,
|
|
15724
|
+
"type": "number"
|
|
15725
|
+
},
|
|
15726
|
+
"loanTypeChangeCount": {
|
|
15727
|
+
"type": "number"
|
|
15728
|
+
},
|
|
15729
|
+
"medianMonths": {
|
|
15730
|
+
"nullable": true,
|
|
15731
|
+
"type": "number"
|
|
15732
|
+
},
|
|
15733
|
+
"monthsToExit": {
|
|
15734
|
+
"items": {
|
|
15735
|
+
"properties": {
|
|
15736
|
+
"bucket": {
|
|
15737
|
+
"type": "string"
|
|
15738
|
+
},
|
|
15739
|
+
"count": {
|
|
15740
|
+
"type": "number"
|
|
15741
|
+
}
|
|
15742
|
+
},
|
|
15743
|
+
"required": [
|
|
15744
|
+
"bucket",
|
|
15745
|
+
"count"
|
|
15746
|
+
],
|
|
15747
|
+
"type": "object"
|
|
15748
|
+
},
|
|
15749
|
+
"type": "array"
|
|
15750
|
+
},
|
|
15751
|
+
"rateDeltaMedian": {
|
|
15752
|
+
"nullable": true,
|
|
15753
|
+
"type": "number"
|
|
15754
|
+
},
|
|
15755
|
+
"rateDeltaPairs": {
|
|
15756
|
+
"type": "number"
|
|
15757
|
+
}
|
|
15758
|
+
},
|
|
15759
|
+
"required": [
|
|
15760
|
+
"monthsToExit",
|
|
15761
|
+
"medianMonths",
|
|
15762
|
+
"cashOutCount",
|
|
15763
|
+
"cashOutShare",
|
|
15764
|
+
"rateDeltaMedian",
|
|
15765
|
+
"rateDeltaPairs",
|
|
15766
|
+
"loanTypeChangeCount"
|
|
15767
|
+
],
|
|
15768
|
+
"type": "object"
|
|
15769
|
+
},
|
|
15770
|
+
"verdict": {
|
|
15771
|
+
"description": "On `refiRetentionRate` (kept ÷ (kept + churned) refi events): `quiet` under 10 events, `holding` ≥ 60%, `leaking` 35–60%, `bleeding` < 35% — the LO tab's thresholds.",
|
|
15772
|
+
"enum": [
|
|
15773
|
+
"holding",
|
|
15774
|
+
"leaking",
|
|
15775
|
+
"bleeding",
|
|
15776
|
+
"quiet"
|
|
15777
|
+
],
|
|
15778
|
+
"type": "string"
|
|
15779
|
+
},
|
|
15780
|
+
"window": {
|
|
15781
|
+
"enum": [
|
|
15782
|
+
"last12Months",
|
|
15783
|
+
"allTime"
|
|
15784
|
+
],
|
|
15785
|
+
"type": "string"
|
|
15786
|
+
}
|
|
15787
|
+
},
|
|
15788
|
+
"required": [
|
|
15789
|
+
"schemaVersion",
|
|
15790
|
+
"companyNmlsId",
|
|
15791
|
+
"companyName",
|
|
15792
|
+
"window",
|
|
15793
|
+
"period",
|
|
15794
|
+
"computedAt",
|
|
15795
|
+
"status",
|
|
15796
|
+
"summary",
|
|
15797
|
+
"verdict",
|
|
15798
|
+
"lanes",
|
|
15799
|
+
"secondPositionLanes",
|
|
15800
|
+
"timing",
|
|
15801
|
+
"churnTrend",
|
|
15802
|
+
"capturingCompanies",
|
|
15803
|
+
"capturingOriginators",
|
|
15804
|
+
"capturingTotals",
|
|
15805
|
+
"leakiestOriginators",
|
|
15806
|
+
"previous",
|
|
15807
|
+
"book"
|
|
15808
|
+
],
|
|
15809
|
+
"type": "object"
|
|
15810
|
+
},
|
|
15149
15811
|
"CompanyRoleScope": {
|
|
15150
15812
|
"description": "Which of a loan's party roles make it this company's loan. `loanCompany` (default): the company named on the loan document — one company per loan. `all`: the company appears in ANY role — loan-document company, the originating LO's employer at time of loan, the LO's organization, broker, or funding lender; a loan matching several roles counts once. `employer`: the company employed the originating LO when the loan closed. `broker`: the company brokered the loan. `lender`: the company funded the loan. `tpo`: third-party origination — the company is the loan company or lender but did NOT employ the originating LO (the `channel` dimension's `tpo` bucket as a population; `employer` is its `inHouse` counterpart). Use `all` for a broker shop's full production — its loans are often recorded under the funding lender's name, so `loanCompany` undercounts it.",
|
|
15151
15813
|
"enum": [
|
|
@@ -43265,7 +43927,7 @@
|
|
|
43265
43927
|
"info": {
|
|
43266
43928
|
"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.",
|
|
43267
43929
|
"title": "ModelMatch API",
|
|
43268
|
-
"version": "3.
|
|
43930
|
+
"version": "3.111.0"
|
|
43269
43931
|
},
|
|
43270
43932
|
"openapi": "3.1.0",
|
|
43271
43933
|
"paths": {
|
|
@@ -43646,7 +44308,7 @@
|
|
|
43646
44308
|
"additionalProperties": false,
|
|
43647
44309
|
"properties": {
|
|
43648
44310
|
"columns": {
|
|
43649
|
-
"description": "A FORMATTED file: its columns, in order, with header labels and number formats — for `format` `csv` or `xlsx` only, and not combined with `fields` or a push-target `destination` (400 `columns_format_unsupported` / `columns_with_fields` / `columns_with_destination`). Every field a column reads is gated by the entitlement exactly as if it were listed in `fields`: a withheld field drops out of a column's fallback list, and a column with nothing left is omitted. An unknown field is a 400 `unknown_column_field`. No `id` column is added. A formatted `csv` starts with a UTF-8 byte-order mark and uses CRLF line endings, so Excel opens it with accented names intact. Columns may read any DTO field and any opt-in column `fields` documents, including the computed `governmentPct`, `branchCount
|
|
44311
|
+
"description": "A FORMATTED file: its columns, in order, with header labels and number formats — for `format` `csv` or `xlsx` only, and not combined with `fields` or a push-target `destination` (400 `columns_format_unsupported` / `columns_with_fields` / `columns_with_destination`). Every field a column reads is gated by the entitlement exactly as if it were listed in `fields`: a withheld field drops out of a column's fallback list, and a column with nothing left is omitted. An unknown field is a 400 `unknown_column_field`. No `id` column is added. A formatted `csv` starts with a UTF-8 byte-order mark and uses CRLF line endings, so Excel opens it with accented names intact. Columns may read any DTO field and any opt-in column `fields` documents, including the computed `governmentPct`, `branchCount`, `managerName` / `managerNmlsId` and `licensedSince`.",
|
|
43650
44312
|
"items": {
|
|
43651
44313
|
"$ref": "#/components/schemas/BulkDeliveryColumn"
|
|
43652
44314
|
},
|
|
@@ -43658,7 +44320,7 @@
|
|
|
43658
44320
|
"$ref": "#/components/schemas/BulkDeliveryDestination"
|
|
43659
44321
|
},
|
|
43660
44322
|
"fields": {
|
|
43661
|
-
"description": "Optional output column projection, named by the response DTO fields (the same camelCase fields the list endpoint returns, e.g. `city`, `interestRate`). Intersected with the entitlement scope's allowedFields and the entity's full column set. If empty after intersection, falls back to all columns. It also SELECTS the opt-in columns, which are not part of the list DTO and are never delivered unless named here: `communityLending` (properties, originators, companies, branches) — the Community Lending neighborhood profile, identical to the block on the entity's detail endpoint; `parties` (properties) — the mortgage parties attributed to the parcel, by attribution scope; `marketCount` / `countyCount` / `stateCount` / `zipCount` / `lenderCount` (originators) — the market-breadth rollups you can already filter on; and the computed `governmentPct` (originators: FHA + VA percent of loans, 0–100), `branchCount` (companies: NMLS branch count) and `managerName` / `managerNmlsId` (branches: the first branch manager). Agents also offer `email2` / `phone2` (the best-ranked email / phone distinct from `email` / `phone`, admitted by the `email` / `phone` entitlement field), `bestEmail` / `bestEmail2` and `bestPhone` / `bestPhone2` (the best and runner-up contact over every email / phone on the record, `email` / `phone` included — the pair the ModelMatch web app's agent export shows; same entitlement fields), `officePhone` (admitted by `phone`), `activeListings` (current active listings; null when unknown), and the profile-link columns `facebook`, `instagram`, `linkedin`, `twitter`, `youtube`, `tiktok`, `zillow`, `otherLinks` (a `; `-joined list of profile URLs on no known platform) — all admitted by the `links` entitlement field. Loans offer the list row's transaction-export fields (`employerName`, `employerNmlsId`, `brokerName`, `titleCompanyName`, `soldAgentName`, `listAgentName`, `coListAgentName`, `buyer1FirstMiddle` … `seller2Last`). In `csv` and `parquet` the two block columns are JSON-encoded cells; in `json` and `ndjson` they are nested objects. Windowed production (originators, agents, companies, branches): name `<field>_<n>mo` for n in 3, 6, 12, 14, 18, 24 to get a production field for that trailing window regardless of `period` — e.g. `volume_3mo`, `units_6mo`, `purchaseVolume_24mo`. Available for originators `volume`, `units`, `avgLoanAmount`, `purchaseVolume`, `purchaseUnits`, `refinanceVolume`, `refinanceUnits`, `conventionalPct`, `fhaPct`, `vaPct`; agents `volume`, `units`, `avgSoldPrice`, `buyerVolume`, `buyerUnits`, `sellerVolume`, `sellerUnits`, `totalOriginatorsWorkedWith`, `totalCompaniesWorkedWith`, `totalLendersWorkedWith`; companies `volume`, `units`, `avgLoanAmount`, `loCount`; branches `volume`, `units`, `avgLoanAmount`, `purchasePct`, `refinancePct`, `loCount`. Numbers (null when the window has no data); an entitlement that allows a field allows every window of it.",
|
|
44323
|
+
"description": "Optional output column projection, named by the response DTO fields (the same camelCase fields the list endpoint returns, e.g. `city`, `interestRate`). Intersected with the entitlement scope's allowedFields and the entity's full column set. If empty after intersection, falls back to all columns. It also SELECTS the opt-in columns, which are not part of the list DTO and are never delivered unless named here: `communityLending` (properties, originators, companies, branches) — the Community Lending neighborhood profile, identical to the block on the entity's detail endpoint; `parties` (properties) — the mortgage parties attributed to the parcel, by attribution scope; `marketCount` / `countyCount` / `stateCount` / `zipCount` / `lenderCount` (originators) — the market-breadth rollups you can already filter on; and the computed `governmentPct` (originators: FHA + VA percent of loans, 0–100), `branchCount` (companies: NMLS branch count) and `managerName` / `managerNmlsId` (branches: the first branch manager) and `licensedSince` (branches: first-licensed date, the earliest license `issueDate`, YYYY-MM-DD). Agents also offer `email2` / `phone2` (the best-ranked email / phone distinct from `email` / `phone`, admitted by the `email` / `phone` entitlement field), `bestEmail` / `bestEmail2` and `bestPhone` / `bestPhone2` (the best and runner-up contact over every email / phone on the record, `email` / `phone` included — the pair the ModelMatch web app's agent export shows; same entitlement fields), `officePhone` (admitted by `phone`), `activeListings` (current active listings; null when unknown), and the profile-link columns `facebook`, `instagram`, `linkedin`, `twitter`, `youtube`, `tiktok`, `zillow`, `otherLinks` (a `; `-joined list of profile URLs on no known platform) — all admitted by the `links` entitlement field. Loans offer the list row's transaction-export fields (`employerName`, `employerNmlsId`, `brokerName`, `titleCompanyName`, `soldAgentName`, `listAgentName`, `coListAgentName`, `buyer1FirstMiddle` … `seller2Last`). In `csv` and `parquet` the two block columns are JSON-encoded cells; in `json` and `ndjson` they are nested objects. Windowed production (originators, agents, companies, branches): name `<field>_<n>mo` for n in 3, 6, 12, 14, 18, 24 to get a production field for that trailing window regardless of `period` — e.g. `volume_3mo`, `units_6mo`, `purchaseVolume_24mo`. Available for originators `volume`, `units`, `avgLoanAmount`, `purchaseVolume`, `purchaseUnits`, `refinanceVolume`, `refinanceUnits`, `conventionalPct`, `fhaPct`, `vaPct`; agents `volume`, `units`, `avgSoldPrice`, `buyerVolume`, `buyerUnits`, `sellerVolume`, `sellerUnits`, `totalOriginatorsWorkedWith`, `totalCompaniesWorkedWith`, `totalLendersWorkedWith`; companies `volume`, `units`, `avgLoanAmount`, `loCount`; branches `volume`, `units`, `avgLoanAmount`, `purchasePct`, `refinancePct`, `loCount`. Numbers (null when the window has no data); an entitlement that allows a field allows every window of it.",
|
|
43662
44324
|
"items": {
|
|
43663
44325
|
"minLength": 1,
|
|
43664
44326
|
"type": "string"
|
|
@@ -49446,7 +50108,7 @@
|
|
|
49446
50108
|
"additionalProperties": false,
|
|
49447
50109
|
"properties": {
|
|
49448
50110
|
"columns": {
|
|
49449
|
-
"description": "A FORMATTED file: its columns, in order, with header labels and number formats — for `format` `csv` or `xlsx` only, and not combined with `fields` or a push-target `destination` (400 `columns_format_unsupported` / `columns_with_fields` / `columns_with_destination`). Every field a column reads is gated by the entitlement exactly as if it were listed in `fields`: a withheld field drops out of a column's fallback list, and a column with nothing left is omitted. An unknown field is a 400 `unknown_column_field`. No `id` column is added. A formatted `csv` starts with a UTF-8 byte-order mark and uses CRLF line endings, so Excel opens it with accented names intact. Columns may read any DTO field and any opt-in column `fields` documents, including the computed `governmentPct`, `branchCount
|
|
50111
|
+
"description": "A FORMATTED file: its columns, in order, with header labels and number formats — for `format` `csv` or `xlsx` only, and not combined with `fields` or a push-target `destination` (400 `columns_format_unsupported` / `columns_with_fields` / `columns_with_destination`). Every field a column reads is gated by the entitlement exactly as if it were listed in `fields`: a withheld field drops out of a column's fallback list, and a column with nothing left is omitted. An unknown field is a 400 `unknown_column_field`. No `id` column is added. A formatted `csv` starts with a UTF-8 byte-order mark and uses CRLF line endings, so Excel opens it with accented names intact. Columns may read any DTO field and any opt-in column `fields` documents, including the computed `governmentPct`, `branchCount`, `managerName` / `managerNmlsId` and `licensedSince`.",
|
|
49450
50112
|
"items": {
|
|
49451
50113
|
"$ref": "#/components/schemas/BulkDeliveryColumn"
|
|
49452
50114
|
},
|
|
@@ -49458,7 +50120,7 @@
|
|
|
49458
50120
|
"$ref": "#/components/schemas/BulkDeliveryDestination"
|
|
49459
50121
|
},
|
|
49460
50122
|
"fields": {
|
|
49461
|
-
"description": "Optional output column projection, named by the response DTO fields (the same camelCase fields the list endpoint returns, e.g. `city`, `interestRate`). Intersected with the entitlement scope's allowedFields and the entity's full column set. If empty after intersection, falls back to all columns. It also SELECTS the opt-in columns, which are not part of the list DTO and are never delivered unless named here: `communityLending` (properties, originators, companies, branches) — the Community Lending neighborhood profile, identical to the block on the entity's detail endpoint; `parties` (properties) — the mortgage parties attributed to the parcel, by attribution scope; `marketCount` / `countyCount` / `stateCount` / `zipCount` / `lenderCount` (originators) — the market-breadth rollups you can already filter on; and the computed `governmentPct` (originators: FHA + VA percent of loans, 0–100), `branchCount` (companies: NMLS branch count) and `managerName` / `managerNmlsId` (branches: the first branch manager). Agents also offer `email2` / `phone2` (the best-ranked email / phone distinct from `email` / `phone`, admitted by the `email` / `phone` entitlement field), `bestEmail` / `bestEmail2` and `bestPhone` / `bestPhone2` (the best and runner-up contact over every email / phone on the record, `email` / `phone` included — the pair the ModelMatch web app's agent export shows; same entitlement fields), `officePhone` (admitted by `phone`), `activeListings` (current active listings; null when unknown), and the profile-link columns `facebook`, `instagram`, `linkedin`, `twitter`, `youtube`, `tiktok`, `zillow`, `otherLinks` (a `; `-joined list of profile URLs on no known platform) — all admitted by the `links` entitlement field. Loans offer the list row's transaction-export fields (`employerName`, `employerNmlsId`, `brokerName`, `titleCompanyName`, `soldAgentName`, `listAgentName`, `coListAgentName`, `buyer1FirstMiddle` … `seller2Last`). In `csv` and `parquet` the two block columns are JSON-encoded cells; in `json` and `ndjson` they are nested objects. Windowed production (originators, agents, companies, branches): name `<field>_<n>mo` for n in 3, 6, 12, 14, 18, 24 to get a production field for that trailing window regardless of `period` — e.g. `volume_3mo`, `units_6mo`, `purchaseVolume_24mo`. Available for originators `volume`, `units`, `avgLoanAmount`, `purchaseVolume`, `purchaseUnits`, `refinanceVolume`, `refinanceUnits`, `conventionalPct`, `fhaPct`, `vaPct`; agents `volume`, `units`, `avgSoldPrice`, `buyerVolume`, `buyerUnits`, `sellerVolume`, `sellerUnits`, `totalOriginatorsWorkedWith`, `totalCompaniesWorkedWith`, `totalLendersWorkedWith`; companies `volume`, `units`, `avgLoanAmount`, `loCount`; branches `volume`, `units`, `avgLoanAmount`, `purchasePct`, `refinancePct`, `loCount`. Numbers (null when the window has no data); an entitlement that allows a field allows every window of it.",
|
|
50123
|
+
"description": "Optional output column projection, named by the response DTO fields (the same camelCase fields the list endpoint returns, e.g. `city`, `interestRate`). Intersected with the entitlement scope's allowedFields and the entity's full column set. If empty after intersection, falls back to all columns. It also SELECTS the opt-in columns, which are not part of the list DTO and are never delivered unless named here: `communityLending` (properties, originators, companies, branches) — the Community Lending neighborhood profile, identical to the block on the entity's detail endpoint; `parties` (properties) — the mortgage parties attributed to the parcel, by attribution scope; `marketCount` / `countyCount` / `stateCount` / `zipCount` / `lenderCount` (originators) — the market-breadth rollups you can already filter on; and the computed `governmentPct` (originators: FHA + VA percent of loans, 0–100), `branchCount` (companies: NMLS branch count) and `managerName` / `managerNmlsId` (branches: the first branch manager) and `licensedSince` (branches: first-licensed date, the earliest license `issueDate`, YYYY-MM-DD). Agents also offer `email2` / `phone2` (the best-ranked email / phone distinct from `email` / `phone`, admitted by the `email` / `phone` entitlement field), `bestEmail` / `bestEmail2` and `bestPhone` / `bestPhone2` (the best and runner-up contact over every email / phone on the record, `email` / `phone` included — the pair the ModelMatch web app's agent export shows; same entitlement fields), `officePhone` (admitted by `phone`), `activeListings` (current active listings; null when unknown), and the profile-link columns `facebook`, `instagram`, `linkedin`, `twitter`, `youtube`, `tiktok`, `zillow`, `otherLinks` (a `; `-joined list of profile URLs on no known platform) — all admitted by the `links` entitlement field. Loans offer the list row's transaction-export fields (`employerName`, `employerNmlsId`, `brokerName`, `titleCompanyName`, `soldAgentName`, `listAgentName`, `coListAgentName`, `buyer1FirstMiddle` … `seller2Last`). In `csv` and `parquet` the two block columns are JSON-encoded cells; in `json` and `ndjson` they are nested objects. Windowed production (originators, agents, companies, branches): name `<field>_<n>mo` for n in 3, 6, 12, 14, 18, 24 to get a production field for that trailing window regardless of `period` — e.g. `volume_3mo`, `units_6mo`, `purchaseVolume_24mo`. Available for originators `volume`, `units`, `avgLoanAmount`, `purchaseVolume`, `purchaseUnits`, `refinanceVolume`, `refinanceUnits`, `conventionalPct`, `fhaPct`, `vaPct`; agents `volume`, `units`, `avgSoldPrice`, `buyerVolume`, `buyerUnits`, `sellerVolume`, `sellerUnits`, `totalOriginatorsWorkedWith`, `totalCompaniesWorkedWith`, `totalLendersWorkedWith`; companies `volume`, `units`, `avgLoanAmount`, `loCount`; branches `volume`, `units`, `avgLoanAmount`, `purchasePct`, `refinancePct`, `loCount`. Numbers (null when the window has no data); an entitlement that allows a field allows every window of it.",
|
|
49462
50124
|
"items": {
|
|
49463
50125
|
"minLength": 1,
|
|
49464
50126
|
"type": "string"
|
|
@@ -51089,7 +51751,7 @@
|
|
|
51089
51751
|
"additionalProperties": false,
|
|
51090
51752
|
"properties": {
|
|
51091
51753
|
"columns": {
|
|
51092
|
-
"description": "A FORMATTED file: its columns, in order, with header labels and number formats — for `format` `csv` or `xlsx` only, and not combined with `fields` or a push-target `destination` (400 `columns_format_unsupported` / `columns_with_fields` / `columns_with_destination`). Every field a column reads is gated by the entitlement exactly as if it were listed in `fields`: a withheld field drops out of a column's fallback list, and a column with nothing left is omitted. An unknown field is a 400 `unknown_column_field`. No `id` column is added. A formatted `csv` starts with a UTF-8 byte-order mark and uses CRLF line endings, so Excel opens it with accented names intact. Columns may read any DTO field and any opt-in column `fields` documents, including the computed `governmentPct`, `branchCount
|
|
51754
|
+
"description": "A FORMATTED file: its columns, in order, with header labels and number formats — for `format` `csv` or `xlsx` only, and not combined with `fields` or a push-target `destination` (400 `columns_format_unsupported` / `columns_with_fields` / `columns_with_destination`). Every field a column reads is gated by the entitlement exactly as if it were listed in `fields`: a withheld field drops out of a column's fallback list, and a column with nothing left is omitted. An unknown field is a 400 `unknown_column_field`. No `id` column is added. A formatted `csv` starts with a UTF-8 byte-order mark and uses CRLF line endings, so Excel opens it with accented names intact. Columns may read any DTO field and any opt-in column `fields` documents, including the computed `governmentPct`, `branchCount`, `managerName` / `managerNmlsId` and `licensedSince`.",
|
|
51093
51755
|
"items": {
|
|
51094
51756
|
"$ref": "#/components/schemas/BulkDeliveryColumn"
|
|
51095
51757
|
},
|
|
@@ -51101,7 +51763,7 @@
|
|
|
51101
51763
|
"$ref": "#/components/schemas/BulkDeliveryDestination"
|
|
51102
51764
|
},
|
|
51103
51765
|
"fields": {
|
|
51104
|
-
"description": "Optional output column projection, named by the response DTO fields (the same camelCase fields the list endpoint returns, e.g. `city`, `interestRate`). Intersected with the entitlement scope's allowedFields and the entity's full column set. If empty after intersection, falls back to all columns. It also SELECTS the opt-in columns, which are not part of the list DTO and are never delivered unless named here: `communityLending` (properties, originators, companies, branches) — the Community Lending neighborhood profile, identical to the block on the entity's detail endpoint; `parties` (properties) — the mortgage parties attributed to the parcel, by attribution scope; `marketCount` / `countyCount` / `stateCount` / `zipCount` / `lenderCount` (originators) — the market-breadth rollups you can already filter on; and the computed `governmentPct` (originators: FHA + VA percent of loans, 0–100), `branchCount` (companies: NMLS branch count) and `managerName` / `managerNmlsId` (branches: the first branch manager). Agents also offer `email2` / `phone2` (the best-ranked email / phone distinct from `email` / `phone`, admitted by the `email` / `phone` entitlement field), `bestEmail` / `bestEmail2` and `bestPhone` / `bestPhone2` (the best and runner-up contact over every email / phone on the record, `email` / `phone` included — the pair the ModelMatch web app's agent export shows; same entitlement fields), `officePhone` (admitted by `phone`), `activeListings` (current active listings; null when unknown), and the profile-link columns `facebook`, `instagram`, `linkedin`, `twitter`, `youtube`, `tiktok`, `zillow`, `otherLinks` (a `; `-joined list of profile URLs on no known platform) — all admitted by the `links` entitlement field. Loans offer the list row's transaction-export fields (`employerName`, `employerNmlsId`, `brokerName`, `titleCompanyName`, `soldAgentName`, `listAgentName`, `coListAgentName`, `buyer1FirstMiddle` … `seller2Last`). In `csv` and `parquet` the two block columns are JSON-encoded cells; in `json` and `ndjson` they are nested objects. Windowed production (originators, agents, companies, branches): name `<field>_<n>mo` for n in 3, 6, 12, 14, 18, 24 to get a production field for that trailing window regardless of `period` — e.g. `volume_3mo`, `units_6mo`, `purchaseVolume_24mo`. Available for originators `volume`, `units`, `avgLoanAmount`, `purchaseVolume`, `purchaseUnits`, `refinanceVolume`, `refinanceUnits`, `conventionalPct`, `fhaPct`, `vaPct`; agents `volume`, `units`, `avgSoldPrice`, `buyerVolume`, `buyerUnits`, `sellerVolume`, `sellerUnits`, `totalOriginatorsWorkedWith`, `totalCompaniesWorkedWith`, `totalLendersWorkedWith`; companies `volume`, `units`, `avgLoanAmount`, `loCount`; branches `volume`, `units`, `avgLoanAmount`, `purchasePct`, `refinancePct`, `loCount`. Numbers (null when the window has no data); an entitlement that allows a field allows every window of it.",
|
|
51766
|
+
"description": "Optional output column projection, named by the response DTO fields (the same camelCase fields the list endpoint returns, e.g. `city`, `interestRate`). Intersected with the entitlement scope's allowedFields and the entity's full column set. If empty after intersection, falls back to all columns. It also SELECTS the opt-in columns, which are not part of the list DTO and are never delivered unless named here: `communityLending` (properties, originators, companies, branches) — the Community Lending neighborhood profile, identical to the block on the entity's detail endpoint; `parties` (properties) — the mortgage parties attributed to the parcel, by attribution scope; `marketCount` / `countyCount` / `stateCount` / `zipCount` / `lenderCount` (originators) — the market-breadth rollups you can already filter on; and the computed `governmentPct` (originators: FHA + VA percent of loans, 0–100), `branchCount` (companies: NMLS branch count) and `managerName` / `managerNmlsId` (branches: the first branch manager) and `licensedSince` (branches: first-licensed date, the earliest license `issueDate`, YYYY-MM-DD). Agents also offer `email2` / `phone2` (the best-ranked email / phone distinct from `email` / `phone`, admitted by the `email` / `phone` entitlement field), `bestEmail` / `bestEmail2` and `bestPhone` / `bestPhone2` (the best and runner-up contact over every email / phone on the record, `email` / `phone` included — the pair the ModelMatch web app's agent export shows; same entitlement fields), `officePhone` (admitted by `phone`), `activeListings` (current active listings; null when unknown), and the profile-link columns `facebook`, `instagram`, `linkedin`, `twitter`, `youtube`, `tiktok`, `zillow`, `otherLinks` (a `; `-joined list of profile URLs on no known platform) — all admitted by the `links` entitlement field. Loans offer the list row's transaction-export fields (`employerName`, `employerNmlsId`, `brokerName`, `titleCompanyName`, `soldAgentName`, `listAgentName`, `coListAgentName`, `buyer1FirstMiddle` … `seller2Last`). In `csv` and `parquet` the two block columns are JSON-encoded cells; in `json` and `ndjson` they are nested objects. Windowed production (originators, agents, companies, branches): name `<field>_<n>mo` for n in 3, 6, 12, 14, 18, 24 to get a production field for that trailing window regardless of `period` — e.g. `volume_3mo`, `units_6mo`, `purchaseVolume_24mo`. Available for originators `volume`, `units`, `avgLoanAmount`, `purchaseVolume`, `purchaseUnits`, `refinanceVolume`, `refinanceUnits`, `conventionalPct`, `fhaPct`, `vaPct`; agents `volume`, `units`, `avgSoldPrice`, `buyerVolume`, `buyerUnits`, `sellerVolume`, `sellerUnits`, `totalOriginatorsWorkedWith`, `totalCompaniesWorkedWith`, `totalLendersWorkedWith`; companies `volume`, `units`, `avgLoanAmount`, `loCount`; branches `volume`, `units`, `avgLoanAmount`, `purchasePct`, `refinancePct`, `loCount`. Numbers (null when the window has no data); an entitlement that allows a field allows every window of it.",
|
|
51105
51767
|
"items": {
|
|
51106
51768
|
"minLength": 1,
|
|
51107
51769
|
"type": "string"
|
|
@@ -53922,6 +54584,115 @@
|
|
|
53922
54584
|
]
|
|
53923
54585
|
}
|
|
53924
54586
|
},
|
|
54587
|
+
"/v1/companies/{nmlsId}/retention": {
|
|
54588
|
+
"get": {
|
|
54589
|
+
"description": "How well a company keeps its borrowers when they refinance: kept (refinanced again by ANY LO at the company) vs lost to other companies, with the capturing companies and LOs, timing, the trend, a verdict, and the company's leakiest LOs. Precomputed weekly — `computedAt` says when. 404 means not computed (no loans since 2017, or not reached yet), never zero retention.",
|
|
54590
|
+
"operationId": "companyRetention",
|
|
54591
|
+
"parameters": [
|
|
54592
|
+
{
|
|
54593
|
+
"description": "Company NMLS ID",
|
|
54594
|
+
"in": "path",
|
|
54595
|
+
"name": "nmlsId",
|
|
54596
|
+
"required": true,
|
|
54597
|
+
"schema": {
|
|
54598
|
+
"description": "Company NMLS ID",
|
|
54599
|
+
"type": "string"
|
|
54600
|
+
}
|
|
54601
|
+
},
|
|
54602
|
+
{
|
|
54603
|
+
"description": "`last12Months` (the trailing 12 months to the computation date, with the 12 months before as `previous`) or `allTime` (2017-01-01 on). Default `last12Months`.",
|
|
54604
|
+
"in": "query",
|
|
54605
|
+
"name": "window",
|
|
54606
|
+
"required": false,
|
|
54607
|
+
"schema": {
|
|
54608
|
+
"default": "last12Months",
|
|
54609
|
+
"description": "`last12Months` (the trailing 12 months to the computation date, with the 12 months before as `previous`) or `allTime` (2017-01-01 on). Default `last12Months`.",
|
|
54610
|
+
"enum": [
|
|
54611
|
+
"last12Months",
|
|
54612
|
+
"allTime"
|
|
54613
|
+
],
|
|
54614
|
+
"type": "string"
|
|
54615
|
+
}
|
|
54616
|
+
}
|
|
54617
|
+
],
|
|
54618
|
+
"responses": {
|
|
54619
|
+
"200": {
|
|
54620
|
+
"content": {
|
|
54621
|
+
"application/json": {
|
|
54622
|
+
"schema": {
|
|
54623
|
+
"$ref": "#/components/schemas/CompanyRetentionSnapshot"
|
|
54624
|
+
}
|
|
54625
|
+
}
|
|
54626
|
+
},
|
|
54627
|
+
"description": "The stored snapshot"
|
|
54628
|
+
},
|
|
54629
|
+
"400": {
|
|
54630
|
+
"content": {
|
|
54631
|
+
"application/json": {
|
|
54632
|
+
"schema": {
|
|
54633
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
54634
|
+
}
|
|
54635
|
+
}
|
|
54636
|
+
},
|
|
54637
|
+
"description": "Validation error"
|
|
54638
|
+
},
|
|
54639
|
+
"401": {
|
|
54640
|
+
"content": {
|
|
54641
|
+
"application/json": {
|
|
54642
|
+
"schema": {
|
|
54643
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
54644
|
+
}
|
|
54645
|
+
}
|
|
54646
|
+
},
|
|
54647
|
+
"description": "Unauthorized"
|
|
54648
|
+
},
|
|
54649
|
+
"403": {
|
|
54650
|
+
"content": {
|
|
54651
|
+
"application/json": {
|
|
54652
|
+
"schema": {
|
|
54653
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
54654
|
+
}
|
|
54655
|
+
}
|
|
54656
|
+
},
|
|
54657
|
+
"description": "Forbidden (authenticated, but missing required context — e.g. no active organization)"
|
|
54658
|
+
},
|
|
54659
|
+
"404": {
|
|
54660
|
+
"content": {
|
|
54661
|
+
"application/json": {
|
|
54662
|
+
"schema": {
|
|
54663
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
54664
|
+
}
|
|
54665
|
+
}
|
|
54666
|
+
},
|
|
54667
|
+
"description": "Not found"
|
|
54668
|
+
},
|
|
54669
|
+
"413": {
|
|
54670
|
+
"content": {
|
|
54671
|
+
"application/json": {
|
|
54672
|
+
"schema": {
|
|
54673
|
+
"$ref": "#/components/schemas/PayloadTooLarge"
|
|
54674
|
+
}
|
|
54675
|
+
}
|
|
54676
|
+
},
|
|
54677
|
+
"description": "Response payload too large — detail endpoint capped to fit Lambda response limits"
|
|
54678
|
+
},
|
|
54679
|
+
"503": {
|
|
54680
|
+
"content": {
|
|
54681
|
+
"application/json": {
|
|
54682
|
+
"schema": {
|
|
54683
|
+
"$ref": "#/components/schemas/SearchUnavailable"
|
|
54684
|
+
}
|
|
54685
|
+
}
|
|
54686
|
+
},
|
|
54687
|
+
"description": "Search timed out or the cluster is overloaded — retry after `Retry-After` seconds."
|
|
54688
|
+
}
|
|
54689
|
+
},
|
|
54690
|
+
"summary": "Company borrower retention (weekly snapshot)",
|
|
54691
|
+
"tags": [
|
|
54692
|
+
"Companies"
|
|
54693
|
+
]
|
|
54694
|
+
}
|
|
54695
|
+
},
|
|
53925
54696
|
"/v1/companies/{nmlsId}/sponsored-individuals": {
|
|
53926
54697
|
"post": {
|
|
53927
54698
|
"operationId": "companySponsoredIndividuals",
|
|
@@ -69862,7 +70633,7 @@
|
|
|
69862
70633
|
"additionalProperties": false,
|
|
69863
70634
|
"properties": {
|
|
69864
70635
|
"columns": {
|
|
69865
|
-
"description": "A FORMATTED file: its columns, in order, with header labels and number formats — for `format` `csv` or `xlsx` only, and not combined with `fields` or a push-target `destination` (400 `columns_format_unsupported` / `columns_with_fields` / `columns_with_destination`). Every field a column reads is gated by the entitlement exactly as if it were listed in `fields`: a withheld field drops out of a column's fallback list, and a column with nothing left is omitted. An unknown field is a 400 `unknown_column_field`. No `id` column is added. A formatted `csv` starts with a UTF-8 byte-order mark and uses CRLF line endings, so Excel opens it with accented names intact. Columns may read any DTO field and any opt-in column `fields` documents, including the computed `governmentPct`, `branchCount
|
|
70636
|
+
"description": "A FORMATTED file: its columns, in order, with header labels and number formats — for `format` `csv` or `xlsx` only, and not combined with `fields` or a push-target `destination` (400 `columns_format_unsupported` / `columns_with_fields` / `columns_with_destination`). Every field a column reads is gated by the entitlement exactly as if it were listed in `fields`: a withheld field drops out of a column's fallback list, and a column with nothing left is omitted. An unknown field is a 400 `unknown_column_field`. No `id` column is added. A formatted `csv` starts with a UTF-8 byte-order mark and uses CRLF line endings, so Excel opens it with accented names intact. Columns may read any DTO field and any opt-in column `fields` documents, including the computed `governmentPct`, `branchCount`, `managerName` / `managerNmlsId` and `licensedSince`.",
|
|
69866
70637
|
"items": {
|
|
69867
70638
|
"$ref": "#/components/schemas/BulkDeliveryColumn"
|
|
69868
70639
|
},
|
|
@@ -69874,7 +70645,7 @@
|
|
|
69874
70645
|
"$ref": "#/components/schemas/BulkDeliveryDestination"
|
|
69875
70646
|
},
|
|
69876
70647
|
"fields": {
|
|
69877
|
-
"description": "Optional output column projection, named by the response DTO fields (the same camelCase fields the list endpoint returns, e.g. `city`, `interestRate`). Intersected with the entitlement scope's allowedFields and the entity's full column set. If empty after intersection, falls back to all columns. It also SELECTS the opt-in columns, which are not part of the list DTO and are never delivered unless named here: `communityLending` (properties, originators, companies, branches) — the Community Lending neighborhood profile, identical to the block on the entity's detail endpoint; `parties` (properties) — the mortgage parties attributed to the parcel, by attribution scope; `marketCount` / `countyCount` / `stateCount` / `zipCount` / `lenderCount` (originators) — the market-breadth rollups you can already filter on; and the computed `governmentPct` (originators: FHA + VA percent of loans, 0–100), `branchCount` (companies: NMLS branch count) and `managerName` / `managerNmlsId` (branches: the first branch manager). Agents also offer `email2` / `phone2` (the best-ranked email / phone distinct from `email` / `phone`, admitted by the `email` / `phone` entitlement field), `bestEmail` / `bestEmail2` and `bestPhone` / `bestPhone2` (the best and runner-up contact over every email / phone on the record, `email` / `phone` included — the pair the ModelMatch web app's agent export shows; same entitlement fields), `officePhone` (admitted by `phone`), `activeListings` (current active listings; null when unknown), and the profile-link columns `facebook`, `instagram`, `linkedin`, `twitter`, `youtube`, `tiktok`, `zillow`, `otherLinks` (a `; `-joined list of profile URLs on no known platform) — all admitted by the `links` entitlement field. Loans offer the list row's transaction-export fields (`employerName`, `employerNmlsId`, `brokerName`, `titleCompanyName`, `soldAgentName`, `listAgentName`, `coListAgentName`, `buyer1FirstMiddle` … `seller2Last`). In `csv` and `parquet` the two block columns are JSON-encoded cells; in `json` and `ndjson` they are nested objects. Windowed production (originators, agents, companies, branches): name `<field>_<n>mo` for n in 3, 6, 12, 14, 18, 24 to get a production field for that trailing window regardless of `period` — e.g. `volume_3mo`, `units_6mo`, `purchaseVolume_24mo`. Available for originators `volume`, `units`, `avgLoanAmount`, `purchaseVolume`, `purchaseUnits`, `refinanceVolume`, `refinanceUnits`, `conventionalPct`, `fhaPct`, `vaPct`; agents `volume`, `units`, `avgSoldPrice`, `buyerVolume`, `buyerUnits`, `sellerVolume`, `sellerUnits`, `totalOriginatorsWorkedWith`, `totalCompaniesWorkedWith`, `totalLendersWorkedWith`; companies `volume`, `units`, `avgLoanAmount`, `loCount`; branches `volume`, `units`, `avgLoanAmount`, `purchasePct`, `refinancePct`, `loCount`. Numbers (null when the window has no data); an entitlement that allows a field allows every window of it.",
|
|
70648
|
+
"description": "Optional output column projection, named by the response DTO fields (the same camelCase fields the list endpoint returns, e.g. `city`, `interestRate`). Intersected with the entitlement scope's allowedFields and the entity's full column set. If empty after intersection, falls back to all columns. It also SELECTS the opt-in columns, which are not part of the list DTO and are never delivered unless named here: `communityLending` (properties, originators, companies, branches) — the Community Lending neighborhood profile, identical to the block on the entity's detail endpoint; `parties` (properties) — the mortgage parties attributed to the parcel, by attribution scope; `marketCount` / `countyCount` / `stateCount` / `zipCount` / `lenderCount` (originators) — the market-breadth rollups you can already filter on; and the computed `governmentPct` (originators: FHA + VA percent of loans, 0–100), `branchCount` (companies: NMLS branch count) and `managerName` / `managerNmlsId` (branches: the first branch manager) and `licensedSince` (branches: first-licensed date, the earliest license `issueDate`, YYYY-MM-DD). Agents also offer `email2` / `phone2` (the best-ranked email / phone distinct from `email` / `phone`, admitted by the `email` / `phone` entitlement field), `bestEmail` / `bestEmail2` and `bestPhone` / `bestPhone2` (the best and runner-up contact over every email / phone on the record, `email` / `phone` included — the pair the ModelMatch web app's agent export shows; same entitlement fields), `officePhone` (admitted by `phone`), `activeListings` (current active listings; null when unknown), and the profile-link columns `facebook`, `instagram`, `linkedin`, `twitter`, `youtube`, `tiktok`, `zillow`, `otherLinks` (a `; `-joined list of profile URLs on no known platform) — all admitted by the `links` entitlement field. Loans offer the list row's transaction-export fields (`employerName`, `employerNmlsId`, `brokerName`, `titleCompanyName`, `soldAgentName`, `listAgentName`, `coListAgentName`, `buyer1FirstMiddle` … `seller2Last`). In `csv` and `parquet` the two block columns are JSON-encoded cells; in `json` and `ndjson` they are nested objects. Windowed production (originators, agents, companies, branches): name `<field>_<n>mo` for n in 3, 6, 12, 14, 18, 24 to get a production field for that trailing window regardless of `period` — e.g. `volume_3mo`, `units_6mo`, `purchaseVolume_24mo`. Available for originators `volume`, `units`, `avgLoanAmount`, `purchaseVolume`, `purchaseUnits`, `refinanceVolume`, `refinanceUnits`, `conventionalPct`, `fhaPct`, `vaPct`; agents `volume`, `units`, `avgSoldPrice`, `buyerVolume`, `buyerUnits`, `sellerVolume`, `sellerUnits`, `totalOriginatorsWorkedWith`, `totalCompaniesWorkedWith`, `totalLendersWorkedWith`; companies `volume`, `units`, `avgLoanAmount`, `loCount`; branches `volume`, `units`, `avgLoanAmount`, `purchasePct`, `refinancePct`, `loCount`. Numbers (null when the window has no data); an entitlement that allows a field allows every window of it.",
|
|
69878
70649
|
"items": {
|
|
69879
70650
|
"minLength": 1,
|
|
69880
70651
|
"type": "string"
|
|
@@ -74307,7 +75078,7 @@
|
|
|
74307
75078
|
"additionalProperties": false,
|
|
74308
75079
|
"properties": {
|
|
74309
75080
|
"columns": {
|
|
74310
|
-
"description": "A FORMATTED file: its columns, in order, with header labels and number formats — for `format` `csv` or `xlsx` only, and not combined with `fields` or a push-target `destination` (400 `columns_format_unsupported` / `columns_with_fields` / `columns_with_destination`). Every field a column reads is gated by the entitlement exactly as if it were listed in `fields`: a withheld field drops out of a column's fallback list, and a column with nothing left is omitted. An unknown field is a 400 `unknown_column_field`. No `id` column is added. A formatted `csv` starts with a UTF-8 byte-order mark and uses CRLF line endings, so Excel opens it with accented names intact. Columns may read any DTO field and any opt-in column `fields` documents, including the computed `governmentPct`, `branchCount
|
|
75081
|
+
"description": "A FORMATTED file: its columns, in order, with header labels and number formats — for `format` `csv` or `xlsx` only, and not combined with `fields` or a push-target `destination` (400 `columns_format_unsupported` / `columns_with_fields` / `columns_with_destination`). Every field a column reads is gated by the entitlement exactly as if it were listed in `fields`: a withheld field drops out of a column's fallback list, and a column with nothing left is omitted. An unknown field is a 400 `unknown_column_field`. No `id` column is added. A formatted `csv` starts with a UTF-8 byte-order mark and uses CRLF line endings, so Excel opens it with accented names intact. Columns may read any DTO field and any opt-in column `fields` documents, including the computed `governmentPct`, `branchCount`, `managerName` / `managerNmlsId` and `licensedSince`.",
|
|
74311
75082
|
"items": {
|
|
74312
75083
|
"$ref": "#/components/schemas/BulkDeliveryColumn"
|
|
74313
75084
|
},
|
|
@@ -74319,7 +75090,7 @@
|
|
|
74319
75090
|
"$ref": "#/components/schemas/BulkDeliveryDestination"
|
|
74320
75091
|
},
|
|
74321
75092
|
"fields": {
|
|
74322
|
-
"description": "Optional output column projection, named by the response DTO fields (the same camelCase fields the list endpoint returns, e.g. `city`, `interestRate`). Intersected with the entitlement scope's allowedFields and the entity's full column set. If empty after intersection, falls back to all columns. It also SELECTS the opt-in columns, which are not part of the list DTO and are never delivered unless named here: `communityLending` (properties, originators, companies, branches) — the Community Lending neighborhood profile, identical to the block on the entity's detail endpoint; `parties` (properties) — the mortgage parties attributed to the parcel, by attribution scope; `marketCount` / `countyCount` / `stateCount` / `zipCount` / `lenderCount` (originators) — the market-breadth rollups you can already filter on; and the computed `governmentPct` (originators: FHA + VA percent of loans, 0–100), `branchCount` (companies: NMLS branch count) and `managerName` / `managerNmlsId` (branches: the first branch manager). Agents also offer `email2` / `phone2` (the best-ranked email / phone distinct from `email` / `phone`, admitted by the `email` / `phone` entitlement field), `bestEmail` / `bestEmail2` and `bestPhone` / `bestPhone2` (the best and runner-up contact over every email / phone on the record, `email` / `phone` included — the pair the ModelMatch web app's agent export shows; same entitlement fields), `officePhone` (admitted by `phone`), `activeListings` (current active listings; null when unknown), and the profile-link columns `facebook`, `instagram`, `linkedin`, `twitter`, `youtube`, `tiktok`, `zillow`, `otherLinks` (a `; `-joined list of profile URLs on no known platform) — all admitted by the `links` entitlement field. Loans offer the list row's transaction-export fields (`employerName`, `employerNmlsId`, `brokerName`, `titleCompanyName`, `soldAgentName`, `listAgentName`, `coListAgentName`, `buyer1FirstMiddle` … `seller2Last`). In `csv` and `parquet` the two block columns are JSON-encoded cells; in `json` and `ndjson` they are nested objects. Windowed production (originators, agents, companies, branches): name `<field>_<n>mo` for n in 3, 6, 12, 14, 18, 24 to get a production field for that trailing window regardless of `period` — e.g. `volume_3mo`, `units_6mo`, `purchaseVolume_24mo`. Available for originators `volume`, `units`, `avgLoanAmount`, `purchaseVolume`, `purchaseUnits`, `refinanceVolume`, `refinanceUnits`, `conventionalPct`, `fhaPct`, `vaPct`; agents `volume`, `units`, `avgSoldPrice`, `buyerVolume`, `buyerUnits`, `sellerVolume`, `sellerUnits`, `totalOriginatorsWorkedWith`, `totalCompaniesWorkedWith`, `totalLendersWorkedWith`; companies `volume`, `units`, `avgLoanAmount`, `loCount`; branches `volume`, `units`, `avgLoanAmount`, `purchasePct`, `refinancePct`, `loCount`. Numbers (null when the window has no data); an entitlement that allows a field allows every window of it.",
|
|
75093
|
+
"description": "Optional output column projection, named by the response DTO fields (the same camelCase fields the list endpoint returns, e.g. `city`, `interestRate`). Intersected with the entitlement scope's allowedFields and the entity's full column set. If empty after intersection, falls back to all columns. It also SELECTS the opt-in columns, which are not part of the list DTO and are never delivered unless named here: `communityLending` (properties, originators, companies, branches) — the Community Lending neighborhood profile, identical to the block on the entity's detail endpoint; `parties` (properties) — the mortgage parties attributed to the parcel, by attribution scope; `marketCount` / `countyCount` / `stateCount` / `zipCount` / `lenderCount` (originators) — the market-breadth rollups you can already filter on; and the computed `governmentPct` (originators: FHA + VA percent of loans, 0–100), `branchCount` (companies: NMLS branch count) and `managerName` / `managerNmlsId` (branches: the first branch manager) and `licensedSince` (branches: first-licensed date, the earliest license `issueDate`, YYYY-MM-DD). Agents also offer `email2` / `phone2` (the best-ranked email / phone distinct from `email` / `phone`, admitted by the `email` / `phone` entitlement field), `bestEmail` / `bestEmail2` and `bestPhone` / `bestPhone2` (the best and runner-up contact over every email / phone on the record, `email` / `phone` included — the pair the ModelMatch web app's agent export shows; same entitlement fields), `officePhone` (admitted by `phone`), `activeListings` (current active listings; null when unknown), and the profile-link columns `facebook`, `instagram`, `linkedin`, `twitter`, `youtube`, `tiktok`, `zillow`, `otherLinks` (a `; `-joined list of profile URLs on no known platform) — all admitted by the `links` entitlement field. Loans offer the list row's transaction-export fields (`employerName`, `employerNmlsId`, `brokerName`, `titleCompanyName`, `soldAgentName`, `listAgentName`, `coListAgentName`, `buyer1FirstMiddle` … `seller2Last`). In `csv` and `parquet` the two block columns are JSON-encoded cells; in `json` and `ndjson` they are nested objects. Windowed production (originators, agents, companies, branches): name `<field>_<n>mo` for n in 3, 6, 12, 14, 18, 24 to get a production field for that trailing window regardless of `period` — e.g. `volume_3mo`, `units_6mo`, `purchaseVolume_24mo`. Available for originators `volume`, `units`, `avgLoanAmount`, `purchaseVolume`, `purchaseUnits`, `refinanceVolume`, `refinanceUnits`, `conventionalPct`, `fhaPct`, `vaPct`; agents `volume`, `units`, `avgSoldPrice`, `buyerVolume`, `buyerUnits`, `sellerVolume`, `sellerUnits`, `totalOriginatorsWorkedWith`, `totalCompaniesWorkedWith`, `totalLendersWorkedWith`; companies `volume`, `units`, `avgLoanAmount`, `loCount`; branches `volume`, `units`, `avgLoanAmount`, `purchasePct`, `refinancePct`, `loCount`. Numbers (null when the window has no data); an entitlement that allows a field allows every window of it.",
|
|
74323
75094
|
"items": {
|
|
74324
75095
|
"minLength": 1,
|
|
74325
75096
|
"type": "string"
|
|
@@ -76915,7 +77686,7 @@
|
|
|
76915
77686
|
"additionalProperties": false,
|
|
76916
77687
|
"properties": {
|
|
76917
77688
|
"columns": {
|
|
76918
|
-
"description": "A FORMATTED file: its columns, in order, with header labels and number formats — for `format` `csv` or `xlsx` only, and not combined with `fields` or a push-target `destination` (400 `columns_format_unsupported` / `columns_with_fields` / `columns_with_destination`). Every field a column reads is gated by the entitlement exactly as if it were listed in `fields`: a withheld field drops out of a column's fallback list, and a column with nothing left is omitted. An unknown field is a 400 `unknown_column_field`. No `id` column is added. A formatted `csv` starts with a UTF-8 byte-order mark and uses CRLF line endings, so Excel opens it with accented names intact. Columns may read any DTO field and any opt-in column `fields` documents, including the computed `governmentPct`, `branchCount
|
|
77689
|
+
"description": "A FORMATTED file: its columns, in order, with header labels and number formats — for `format` `csv` or `xlsx` only, and not combined with `fields` or a push-target `destination` (400 `columns_format_unsupported` / `columns_with_fields` / `columns_with_destination`). Every field a column reads is gated by the entitlement exactly as if it were listed in `fields`: a withheld field drops out of a column's fallback list, and a column with nothing left is omitted. An unknown field is a 400 `unknown_column_field`. No `id` column is added. A formatted `csv` starts with a UTF-8 byte-order mark and uses CRLF line endings, so Excel opens it with accented names intact. Columns may read any DTO field and any opt-in column `fields` documents, including the computed `governmentPct`, `branchCount`, `managerName` / `managerNmlsId` and `licensedSince`.",
|
|
76919
77690
|
"items": {
|
|
76920
77691
|
"$ref": "#/components/schemas/BulkDeliveryColumn"
|
|
76921
77692
|
},
|
|
@@ -76927,7 +77698,7 @@
|
|
|
76927
77698
|
"$ref": "#/components/schemas/BulkDeliveryDestination"
|
|
76928
77699
|
},
|
|
76929
77700
|
"fields": {
|
|
76930
|
-
"description": "Optional output column projection, named by the response DTO fields (the same camelCase fields the list endpoint returns, e.g. `city`, `interestRate`). Intersected with the entitlement scope's allowedFields and the entity's full column set. If empty after intersection, falls back to all columns. It also SELECTS the opt-in columns, which are not part of the list DTO and are never delivered unless named here: `communityLending` (properties, originators, companies, branches) — the Community Lending neighborhood profile, identical to the block on the entity's detail endpoint; `parties` (properties) — the mortgage parties attributed to the parcel, by attribution scope; `marketCount` / `countyCount` / `stateCount` / `zipCount` / `lenderCount` (originators) — the market-breadth rollups you can already filter on; and the computed `governmentPct` (originators: FHA + VA percent of loans, 0–100), `branchCount` (companies: NMLS branch count) and `managerName` / `managerNmlsId` (branches: the first branch manager). Agents also offer `email2` / `phone2` (the best-ranked email / phone distinct from `email` / `phone`, admitted by the `email` / `phone` entitlement field), `bestEmail` / `bestEmail2` and `bestPhone` / `bestPhone2` (the best and runner-up contact over every email / phone on the record, `email` / `phone` included — the pair the ModelMatch web app's agent export shows; same entitlement fields), `officePhone` (admitted by `phone`), `activeListings` (current active listings; null when unknown), and the profile-link columns `facebook`, `instagram`, `linkedin`, `twitter`, `youtube`, `tiktok`, `zillow`, `otherLinks` (a `; `-joined list of profile URLs on no known platform) — all admitted by the `links` entitlement field. Loans offer the list row's transaction-export fields (`employerName`, `employerNmlsId`, `brokerName`, `titleCompanyName`, `soldAgentName`, `listAgentName`, `coListAgentName`, `buyer1FirstMiddle` … `seller2Last`). In `csv` and `parquet` the two block columns are JSON-encoded cells; in `json` and `ndjson` they are nested objects. Windowed production (originators, agents, companies, branches): name `<field>_<n>mo` for n in 3, 6, 12, 14, 18, 24 to get a production field for that trailing window regardless of `period` — e.g. `volume_3mo`, `units_6mo`, `purchaseVolume_24mo`. Available for originators `volume`, `units`, `avgLoanAmount`, `purchaseVolume`, `purchaseUnits`, `refinanceVolume`, `refinanceUnits`, `conventionalPct`, `fhaPct`, `vaPct`; agents `volume`, `units`, `avgSoldPrice`, `buyerVolume`, `buyerUnits`, `sellerVolume`, `sellerUnits`, `totalOriginatorsWorkedWith`, `totalCompaniesWorkedWith`, `totalLendersWorkedWith`; companies `volume`, `units`, `avgLoanAmount`, `loCount`; branches `volume`, `units`, `avgLoanAmount`, `purchasePct`, `refinancePct`, `loCount`. Numbers (null when the window has no data); an entitlement that allows a field allows every window of it.",
|
|
77701
|
+
"description": "Optional output column projection, named by the response DTO fields (the same camelCase fields the list endpoint returns, e.g. `city`, `interestRate`). Intersected with the entitlement scope's allowedFields and the entity's full column set. If empty after intersection, falls back to all columns. It also SELECTS the opt-in columns, which are not part of the list DTO and are never delivered unless named here: `communityLending` (properties, originators, companies, branches) — the Community Lending neighborhood profile, identical to the block on the entity's detail endpoint; `parties` (properties) — the mortgage parties attributed to the parcel, by attribution scope; `marketCount` / `countyCount` / `stateCount` / `zipCount` / `lenderCount` (originators) — the market-breadth rollups you can already filter on; and the computed `governmentPct` (originators: FHA + VA percent of loans, 0–100), `branchCount` (companies: NMLS branch count) and `managerName` / `managerNmlsId` (branches: the first branch manager) and `licensedSince` (branches: first-licensed date, the earliest license `issueDate`, YYYY-MM-DD). Agents also offer `email2` / `phone2` (the best-ranked email / phone distinct from `email` / `phone`, admitted by the `email` / `phone` entitlement field), `bestEmail` / `bestEmail2` and `bestPhone` / `bestPhone2` (the best and runner-up contact over every email / phone on the record, `email` / `phone` included — the pair the ModelMatch web app's agent export shows; same entitlement fields), `officePhone` (admitted by `phone`), `activeListings` (current active listings; null when unknown), and the profile-link columns `facebook`, `instagram`, `linkedin`, `twitter`, `youtube`, `tiktok`, `zillow`, `otherLinks` (a `; `-joined list of profile URLs on no known platform) — all admitted by the `links` entitlement field. Loans offer the list row's transaction-export fields (`employerName`, `employerNmlsId`, `brokerName`, `titleCompanyName`, `soldAgentName`, `listAgentName`, `coListAgentName`, `buyer1FirstMiddle` … `seller2Last`). In `csv` and `parquet` the two block columns are JSON-encoded cells; in `json` and `ndjson` they are nested objects. Windowed production (originators, agents, companies, branches): name `<field>_<n>mo` for n in 3, 6, 12, 14, 18, 24 to get a production field for that trailing window regardless of `period` — e.g. `volume_3mo`, `units_6mo`, `purchaseVolume_24mo`. Available for originators `volume`, `units`, `avgLoanAmount`, `purchaseVolume`, `purchaseUnits`, `refinanceVolume`, `refinanceUnits`, `conventionalPct`, `fhaPct`, `vaPct`; agents `volume`, `units`, `avgSoldPrice`, `buyerVolume`, `buyerUnits`, `sellerVolume`, `sellerUnits`, `totalOriginatorsWorkedWith`, `totalCompaniesWorkedWith`, `totalLendersWorkedWith`; companies `volume`, `units`, `avgLoanAmount`, `loCount`; branches `volume`, `units`, `avgLoanAmount`, `purchasePct`, `refinancePct`, `loCount`. Numbers (null when the window has no data); an entitlement that allows a field allows every window of it.",
|
|
76931
77702
|
"items": {
|
|
76932
77703
|
"minLength": 1,
|
|
76933
77704
|
"type": "string"
|