@model-match/api 3.50.0 → 3.51.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 +9 -0
- package/dist/{index-CDZ5kWDW.d.mts → index-UNX4nS0Z.d.mts} +440 -11
- package/dist/index.d.mts +2 -2
- package/dist/index.mjs +1 -1
- package/dist/slim/index.d.mts +38 -2
- package/dist/slim/index.mjs +102 -2
- package/dist/{src-Djq2yv-x.mjs → src-CkltiqZ6.mjs} +112 -0
- package/openapi.json +943 -81
- package/package.json +1 -1
package/openapi.json
CHANGED
|
@@ -8142,7 +8142,7 @@
|
|
|
8142
8142
|
"$ref": "#/components/schemas/BranchSlice"
|
|
8143
8143
|
},
|
|
8144
8144
|
{
|
|
8145
|
-
"description": "Optional second dimension. Each bucket of `slice` then carries `segments`: the same `measure` broken down by this dimension (e.g. `slice: \"loanType\", segment: \"lender\"` is loan type × lender in one call), top 25 per bucket ranked by `measure`, with the remainder counted in `segmentsOmittedCount`. Omit it and the response is the one-dimensional chart, unchanged. Must differ from `slice
|
|
8145
|
+
"description": "Optional second dimension. Each bucket of `slice` then carries `segments`: the same `measure` broken down by this dimension (e.g. `slice: \"loanType\", segment: \"lender\"` is loan type × lender in one call), top 25 per bucket ranked by `measure`, with the remainder counted in `segmentsOmittedCount`. Omit it and the response is the one-dimensional chart, unchanged. Must differ from `slice` (400). Combines with `size` / `after` paging on a party slice: the cursor pages the `slice` ranking and every bucket on each page carries its own segments (e.g. `slice: \"broker\", segment: \"lender\"` walks every broker shop × its lenders)."
|
|
8146
8146
|
}
|
|
8147
8147
|
]
|
|
8148
8148
|
},
|
|
@@ -9460,6 +9460,50 @@
|
|
|
9460
9460
|
],
|
|
9461
9461
|
"type": "string"
|
|
9462
9462
|
},
|
|
9463
|
+
"BranchStatsResponse": {
|
|
9464
|
+
"properties": {
|
|
9465
|
+
"data": {
|
|
9466
|
+
"properties": {
|
|
9467
|
+
"avgLoCount": {
|
|
9468
|
+
"description": "Mean current roster size (`loCount`) across matching branches; `null` when none carry one. A snapshot — does not vary by period.",
|
|
9469
|
+
"nullable": true,
|
|
9470
|
+
"type": "number"
|
|
9471
|
+
},
|
|
9472
|
+
"branches": {
|
|
9473
|
+
"description": "Branches matching the request — equals `countBranches.total`.",
|
|
9474
|
+
"type": "integer"
|
|
9475
|
+
},
|
|
9476
|
+
"producingBranches": {
|
|
9477
|
+
"description": "Matching branches with at least one loan (units > 0) in the period.",
|
|
9478
|
+
"type": "integer"
|
|
9479
|
+
},
|
|
9480
|
+
"topUnits": {
|
|
9481
|
+
"description": "Units of the 3 highest-unit matching branches, descending. Divide their sum by `totalUnits` for top-3 concentration.",
|
|
9482
|
+
"items": {
|
|
9483
|
+
"type": "number"
|
|
9484
|
+
},
|
|
9485
|
+
"type": "array"
|
|
9486
|
+
},
|
|
9487
|
+
"totalUnits": {
|
|
9488
|
+
"description": "Sum of the period's branch-level units.",
|
|
9489
|
+
"type": "number"
|
|
9490
|
+
}
|
|
9491
|
+
},
|
|
9492
|
+
"required": [
|
|
9493
|
+
"branches",
|
|
9494
|
+
"producingBranches",
|
|
9495
|
+
"avgLoCount",
|
|
9496
|
+
"totalUnits",
|
|
9497
|
+
"topUnits"
|
|
9498
|
+
],
|
|
9499
|
+
"type": "object"
|
|
9500
|
+
}
|
|
9501
|
+
},
|
|
9502
|
+
"required": [
|
|
9503
|
+
"data"
|
|
9504
|
+
],
|
|
9505
|
+
"type": "object"
|
|
9506
|
+
},
|
|
9463
9507
|
"BranchSummary": {
|
|
9464
9508
|
"properties": {
|
|
9465
9509
|
"avgLoanAmount": {
|
|
@@ -11079,6 +11123,16 @@
|
|
|
11079
11123
|
],
|
|
11080
11124
|
"type": "string"
|
|
11081
11125
|
},
|
|
11126
|
+
"billingStatus": {
|
|
11127
|
+
"description": "Outcome of the job's single debit, taken before anything is delivered: `charged`, `capped` (balance / spend cap / daily cap declined it — the job fails `insufficient_credits`), `billing_error` (the debit could not be made — the job fails `billing_unavailable`), or `none` (nothing to bill: free delivery or zero rows). Absent until billing has run, and on older jobs.",
|
|
11128
|
+
"enum": [
|
|
11129
|
+
"charged",
|
|
11130
|
+
"capped",
|
|
11131
|
+
"billing_error",
|
|
11132
|
+
"none"
|
|
11133
|
+
],
|
|
11134
|
+
"type": "string"
|
|
11135
|
+
},
|
|
11082
11136
|
"bytes": {
|
|
11083
11137
|
"minimum": 0,
|
|
11084
11138
|
"type": "integer"
|
|
@@ -11096,7 +11150,7 @@
|
|
|
11096
11150
|
"type": "string"
|
|
11097
11151
|
},
|
|
11098
11152
|
"creditsCharged": {
|
|
11099
|
-
"description": "Credits debited for this job (1 credit / row)
|
|
11153
|
+
"description": "Credits ACTUALLY debited for this job (1 credit / row) — `0` when the debit was declined or failed; read `billingStatus` for why. Absent until billing has run.",
|
|
11100
11154
|
"minimum": 0,
|
|
11101
11155
|
"type": "number"
|
|
11102
11156
|
},
|
|
@@ -11111,7 +11165,7 @@
|
|
|
11111
11165
|
"type": "string"
|
|
11112
11166
|
},
|
|
11113
11167
|
"error": {
|
|
11114
|
-
"description": "Why the job failed. `push_handoff_failed` = the rows were exported but could not be handed to the push target (
|
|
11168
|
+
"description": "Why the job failed. `insufficient_credits` = the charge was declined (balance, spend cap or daily cap), nothing delivered. `billing_unavailable` = the charge could not be made, nothing delivered — retry. `push_handoff_failed` = the rows were exported and charged but could not be handed to the push target (see `billingStatus`).",
|
|
11115
11169
|
"type": "string"
|
|
11116
11170
|
},
|
|
11117
11171
|
"estimatedTotal": {
|
|
@@ -11328,6 +11382,167 @@
|
|
|
11328
11382
|
],
|
|
11329
11383
|
"type": "object"
|
|
11330
11384
|
},
|
|
11385
|
+
"CommunityLendingBenchmark": {
|
|
11386
|
+
"description": "Peer rank of an entity's neighborhood lending shares. Values describe the U.S. Census tract (neighborhood) as a whole — tract-level aggregate statistics, never an individual, household or applicant attribute. Percentages are 0-100.",
|
|
11387
|
+
"nullable": true,
|
|
11388
|
+
"properties": {
|
|
11389
|
+
"lowModIncomeTract": {
|
|
11390
|
+
"properties": {
|
|
11391
|
+
"pct": {
|
|
11392
|
+
"description": "This entity's share, 0-100.",
|
|
11393
|
+
"nullable": true,
|
|
11394
|
+
"type": "number"
|
|
11395
|
+
},
|
|
11396
|
+
"peerAvgPct": {
|
|
11397
|
+
"description": "Peer mean share, 0-100. Null with no peers.",
|
|
11398
|
+
"nullable": true,
|
|
11399
|
+
"type": "number"
|
|
11400
|
+
},
|
|
11401
|
+
"percentileRank": {
|
|
11402
|
+
"description": "0-100: share of peers with a lower value. Null when this entity has no value or there are no peers.",
|
|
11403
|
+
"nullable": true,
|
|
11404
|
+
"type": "number"
|
|
11405
|
+
}
|
|
11406
|
+
},
|
|
11407
|
+
"required": [
|
|
11408
|
+
"pct",
|
|
11409
|
+
"percentileRank",
|
|
11410
|
+
"peerAvgPct"
|
|
11411
|
+
],
|
|
11412
|
+
"type": "object"
|
|
11413
|
+
},
|
|
11414
|
+
"majorityMinorityTract": {
|
|
11415
|
+
"properties": {
|
|
11416
|
+
"pct": {
|
|
11417
|
+
"description": "This entity's share, 0-100.",
|
|
11418
|
+
"nullable": true,
|
|
11419
|
+
"type": "number"
|
|
11420
|
+
},
|
|
11421
|
+
"peerAvgPct": {
|
|
11422
|
+
"description": "Peer mean share, 0-100. Null with no peers.",
|
|
11423
|
+
"nullable": true,
|
|
11424
|
+
"type": "number"
|
|
11425
|
+
},
|
|
11426
|
+
"percentileRank": {
|
|
11427
|
+
"description": "0-100: share of peers with a lower value. Null when this entity has no value or there are no peers.",
|
|
11428
|
+
"nullable": true,
|
|
11429
|
+
"type": "number"
|
|
11430
|
+
}
|
|
11431
|
+
},
|
|
11432
|
+
"required": [
|
|
11433
|
+
"pct",
|
|
11434
|
+
"percentileRank",
|
|
11435
|
+
"peerAvgPct"
|
|
11436
|
+
],
|
|
11437
|
+
"type": "object"
|
|
11438
|
+
},
|
|
11439
|
+
"peerPopulation": {
|
|
11440
|
+
"type": "number"
|
|
11441
|
+
},
|
|
11442
|
+
"states": {
|
|
11443
|
+
"description": "The footprint states peers were drawn from (top by units). Empty = nationwide.",
|
|
11444
|
+
"items": {
|
|
11445
|
+
"type": "string"
|
|
11446
|
+
},
|
|
11447
|
+
"type": "array"
|
|
11448
|
+
}
|
|
11449
|
+
},
|
|
11450
|
+
"required": [
|
|
11451
|
+
"states",
|
|
11452
|
+
"peerPopulation",
|
|
11453
|
+
"lowModIncomeTract",
|
|
11454
|
+
"majorityMinorityTract"
|
|
11455
|
+
],
|
|
11456
|
+
"type": "object"
|
|
11457
|
+
},
|
|
11458
|
+
"CommunityLendingBenchmarkResponse": {
|
|
11459
|
+
"properties": {
|
|
11460
|
+
"data": {
|
|
11461
|
+
"$ref": "#/components/schemas/CommunityLendingBenchmark"
|
|
11462
|
+
}
|
|
11463
|
+
},
|
|
11464
|
+
"required": [
|
|
11465
|
+
"data"
|
|
11466
|
+
],
|
|
11467
|
+
"type": "object"
|
|
11468
|
+
},
|
|
11469
|
+
"CommunityLendingMapPoint": {
|
|
11470
|
+
"properties": {
|
|
11471
|
+
"address": {
|
|
11472
|
+
"nullable": true,
|
|
11473
|
+
"type": "string"
|
|
11474
|
+
},
|
|
11475
|
+
"id": {
|
|
11476
|
+
"type": "string"
|
|
11477
|
+
},
|
|
11478
|
+
"lat": {
|
|
11479
|
+
"type": "number"
|
|
11480
|
+
},
|
|
11481
|
+
"lon": {
|
|
11482
|
+
"type": "number"
|
|
11483
|
+
},
|
|
11484
|
+
"mortgageAmount": {
|
|
11485
|
+
"nullable": true,
|
|
11486
|
+
"type": "number"
|
|
11487
|
+
},
|
|
11488
|
+
"tractGeoId": {
|
|
11489
|
+
"description": "11-digit Census tract GEOID (state + county + tract FIPS) — the join key for a tract boundary layer.",
|
|
11490
|
+
"nullable": true,
|
|
11491
|
+
"type": "string"
|
|
11492
|
+
},
|
|
11493
|
+
"transactionDate": {
|
|
11494
|
+
"nullable": true,
|
|
11495
|
+
"type": "string"
|
|
11496
|
+
},
|
|
11497
|
+
"transactionType": {
|
|
11498
|
+
"nullable": true,
|
|
11499
|
+
"type": "string"
|
|
11500
|
+
}
|
|
11501
|
+
},
|
|
11502
|
+
"required": [
|
|
11503
|
+
"id",
|
|
11504
|
+
"lat",
|
|
11505
|
+
"lon",
|
|
11506
|
+
"address",
|
|
11507
|
+
"mortgageAmount",
|
|
11508
|
+
"transactionDate",
|
|
11509
|
+
"transactionType",
|
|
11510
|
+
"tractGeoId"
|
|
11511
|
+
],
|
|
11512
|
+
"type": "object"
|
|
11513
|
+
},
|
|
11514
|
+
"CommunityLendingMapResponse": {
|
|
11515
|
+
"properties": {
|
|
11516
|
+
"points": {
|
|
11517
|
+
"items": {
|
|
11518
|
+
"$ref": "#/components/schemas/CommunityLendingMapPoint"
|
|
11519
|
+
},
|
|
11520
|
+
"type": "array"
|
|
11521
|
+
},
|
|
11522
|
+
"total": {
|
|
11523
|
+
"description": "Every geocoded loan in scope for the period.",
|
|
11524
|
+
"type": "number"
|
|
11525
|
+
},
|
|
11526
|
+
"tractCounts": {
|
|
11527
|
+
"additionalProperties": {
|
|
11528
|
+
"type": "number"
|
|
11529
|
+
},
|
|
11530
|
+
"description": "Plotted loans per tract GEOID. Values describe the U.S. Census tract (neighborhood) as a whole — tract-level aggregate statistics, never an individual, household or applicant attribute. Percentages are 0-100.",
|
|
11531
|
+
"type": "object"
|
|
11532
|
+
},
|
|
11533
|
+
"truncated": {
|
|
11534
|
+
"description": "More than 4000 loans matched; the newest are returned.",
|
|
11535
|
+
"type": "boolean"
|
|
11536
|
+
}
|
|
11537
|
+
},
|
|
11538
|
+
"required": [
|
|
11539
|
+
"points",
|
|
11540
|
+
"tractCounts",
|
|
11541
|
+
"total",
|
|
11542
|
+
"truncated"
|
|
11543
|
+
],
|
|
11544
|
+
"type": "object"
|
|
11545
|
+
},
|
|
11331
11546
|
"CompanyBranch": {
|
|
11332
11547
|
"properties": {
|
|
11333
11548
|
"branchNmlsId": {
|
|
@@ -12407,7 +12622,7 @@
|
|
|
12407
12622
|
"$ref": "#/components/schemas/CompanySlice"
|
|
12408
12623
|
},
|
|
12409
12624
|
{
|
|
12410
|
-
"description": "Optional second dimension. Each bucket of `slice` then carries `segments`: the same `measure` broken down by this dimension (e.g. `slice: \"loanType\", segment: \"lender\"` is loan type × lender in one call), top 25 per bucket ranked by `measure`, with the remainder counted in `segmentsOmittedCount`. Omit it and the response is the one-dimensional chart, unchanged. Must differ from `slice
|
|
12625
|
+
"description": "Optional second dimension. Each bucket of `slice` then carries `segments`: the same `measure` broken down by this dimension (e.g. `slice: \"loanType\", segment: \"lender\"` is loan type × lender in one call), top 25 per bucket ranked by `measure`, with the remainder counted in `segmentsOmittedCount`. Omit it and the response is the one-dimensional chart, unchanged. Must differ from `slice` (400). Combines with `size` / `after` paging on a party slice: the cursor pages the `slice` ranking and every bucket on each page carries its own segments (e.g. `slice: \"broker\", segment: \"lender\"` walks every broker shop × its lenders)."
|
|
12411
12626
|
}
|
|
12412
12627
|
]
|
|
12413
12628
|
},
|
|
@@ -18834,11 +19049,13 @@
|
|
|
18834
19049
|
"type": "string"
|
|
18835
19050
|
},
|
|
18836
19051
|
"outcome": {
|
|
18837
|
-
"description": "Reporting classification (`status` fields only). Absent = in-progress. Seed ids `won`/`lost` classify by convention when
|
|
19052
|
+
"description": "Reporting classification (`status` fields only). Absent = in-progress. Seed ids `won`/`lost` classify by convention when absent; `null` explicitly un-classifies them (in-progress).",
|
|
18838
19053
|
"enum": [
|
|
18839
19054
|
"won",
|
|
18840
|
-
"lost"
|
|
19055
|
+
"lost",
|
|
19056
|
+
null
|
|
18841
19057
|
],
|
|
19058
|
+
"nullable": true,
|
|
18842
19059
|
"type": "string"
|
|
18843
19060
|
}
|
|
18844
19061
|
},
|
|
@@ -27017,6 +27234,10 @@
|
|
|
27017
27234
|
}
|
|
27018
27235
|
]
|
|
27019
27236
|
},
|
|
27237
|
+
"reverseRefinance": {
|
|
27238
|
+
"description": "HECM-to-HECM. `true`: keep only reverse loans recorded AFTER an earlier reverse loan (≥ $1,000) on the same property — a refinance of an existing reverse mortgage, resolved from the property's loan history because the transaction type does not record it. Pair with `loanType: \"reverse\"`. Resolves up to 50,000 distinct properties per request (else 400). Chart only.",
|
|
27239
|
+
"type": "boolean"
|
|
27240
|
+
},
|
|
27020
27241
|
"saleDate": {
|
|
27021
27242
|
"$ref": "#/components/schemas/DateFilterValue"
|
|
27022
27243
|
},
|
|
@@ -27057,7 +27278,7 @@
|
|
|
27057
27278
|
"$ref": "#/components/schemas/LoanSlice"
|
|
27058
27279
|
},
|
|
27059
27280
|
{
|
|
27060
|
-
"description": "Optional second dimension. Each bucket of `slice` then carries `segments`: the same `measure` broken down by this dimension (e.g. `slice: \"loanType\", segment: \"lender\"` is loan type × lender in one call), top 25 per bucket ranked by `measure`, with the remainder counted in `segmentsOmittedCount`. Omit it and the response is the one-dimensional chart, unchanged. Must differ from `slice
|
|
27281
|
+
"description": "Optional second dimension. Each bucket of `slice` then carries `segments`: the same `measure` broken down by this dimension (e.g. `slice: \"loanType\", segment: \"lender\"` is loan type × lender in one call), top 25 per bucket ranked by `measure`, with the remainder counted in `segmentsOmittedCount`. Omit it and the response is the one-dimensional chart, unchanged. Must differ from `slice` (400). Combines with `size` / `after` paging on a party slice: the cursor pages the `slice` ranking and every bucket on each page carries its own segments (e.g. `slice: \"broker\", segment: \"lender\"` walks every broker shop × its lenders)."
|
|
27061
27282
|
}
|
|
27062
27283
|
]
|
|
27063
27284
|
},
|
|
@@ -32798,7 +33019,7 @@
|
|
|
32798
33019
|
"$ref": "#/components/schemas/OriginatorSlice"
|
|
32799
33020
|
},
|
|
32800
33021
|
{
|
|
32801
|
-
"description": "Optional second dimension. Each bucket of `slice` then carries `segments`: the same `measure` broken down by this dimension (e.g. `slice: \"loanType\", segment: \"lender\"` is loan type × lender in one call), top 25 per bucket ranked by `measure`, with the remainder counted in `segmentsOmittedCount`. Omit it and the response is the one-dimensional chart, unchanged. Must differ from `slice
|
|
33022
|
+
"description": "Optional second dimension. Each bucket of `slice` then carries `segments`: the same `measure` broken down by this dimension (e.g. `slice: \"loanType\", segment: \"lender\"` is loan type × lender in one call), top 25 per bucket ranked by `measure`, with the remainder counted in `segmentsOmittedCount`. Omit it and the response is the one-dimensional chart, unchanged. Must differ from `slice` (400). Combines with `size` / `after` paging on a party slice: the cursor pages the `slice` ranking and every bucket on each page carries its own segments (e.g. `slice: \"broker\", segment: \"lender\"` walks every broker shop × its lenders)."
|
|
32802
33023
|
}
|
|
32803
33024
|
]
|
|
32804
33025
|
},
|
|
@@ -43927,7 +44148,7 @@
|
|
|
43927
44148
|
"info": {
|
|
43928
44149
|
"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.",
|
|
43929
44150
|
"title": "ModelMatch API",
|
|
43930
|
-
"version": "3.
|
|
44151
|
+
"version": "3.116.1"
|
|
43931
44152
|
},
|
|
43932
44153
|
"openapi": "3.1.0",
|
|
43933
44154
|
"paths": {
|
|
@@ -44454,7 +44675,7 @@
|
|
|
44454
44675
|
}
|
|
44455
44676
|
}
|
|
44456
44677
|
},
|
|
44457
|
-
"description": "Preflight / S3 / DDB / ECS launch failure,
|
|
44678
|
+
"description": "Preflight / S3 / DDB / ECS launch failure, the push-target check could not reach the auth server, or the credit balance could not be read (`billing_unavailable` — retry; a paid delivery is never queued unverified)"
|
|
44458
44679
|
}
|
|
44459
44680
|
},
|
|
44460
44681
|
"summary": "Submit a bulk-delivery job for agents",
|
|
@@ -50254,7 +50475,7 @@
|
|
|
50254
50475
|
}
|
|
50255
50476
|
}
|
|
50256
50477
|
},
|
|
50257
|
-
"description": "Preflight / S3 / DDB / ECS launch failure,
|
|
50478
|
+
"description": "Preflight / S3 / DDB / ECS launch failure, the push-target check could not reach the auth server, or the credit balance could not be read (`billing_unavailable` — retry; a paid delivery is never queued unverified)"
|
|
50258
50479
|
}
|
|
50259
50480
|
},
|
|
50260
50481
|
"summary": "Submit a bulk-delivery job for branches",
|
|
@@ -50490,6 +50711,97 @@
|
|
|
50490
50711
|
"x-mm-records-via": "listBranches"
|
|
50491
50712
|
}
|
|
50492
50713
|
},
|
|
50714
|
+
"/v1/branches/stats": {
|
|
50715
|
+
"post": {
|
|
50716
|
+
"description": "Accepts the same request body as `listBranches` (pagination and sort are ignored) and returns aggregate KPIs over every matching branch: count, producing count, average roster size, total units and the top 3 branches' units. Use it for a company's branch network summary (`flatFilters.company`).",
|
|
50717
|
+
"operationId": "branchStats",
|
|
50718
|
+
"requestBody": {
|
|
50719
|
+
"content": {
|
|
50720
|
+
"application/json": {
|
|
50721
|
+
"schema": {
|
|
50722
|
+
"$ref": "#/components/schemas/BranchListRequest"
|
|
50723
|
+
}
|
|
50724
|
+
}
|
|
50725
|
+
}
|
|
50726
|
+
},
|
|
50727
|
+
"responses": {
|
|
50728
|
+
"200": {
|
|
50729
|
+
"content": {
|
|
50730
|
+
"application/json": {
|
|
50731
|
+
"schema": {
|
|
50732
|
+
"$ref": "#/components/schemas/BranchStatsResponse"
|
|
50733
|
+
}
|
|
50734
|
+
}
|
|
50735
|
+
},
|
|
50736
|
+
"description": "Branch roll-up KPIs"
|
|
50737
|
+
},
|
|
50738
|
+
"400": {
|
|
50739
|
+
"content": {
|
|
50740
|
+
"application/json": {
|
|
50741
|
+
"schema": {
|
|
50742
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
50743
|
+
}
|
|
50744
|
+
}
|
|
50745
|
+
},
|
|
50746
|
+
"description": "Validation error. Includes unresolvable location filters: a `city`/`county`/`state`/`zip` value that does not match a recognized location returns 400 rather than an empty result set. Resolve the name with `instantSearch` (use an id from its `results.locations[]`) or `suggestLocations` (use the `id` of a `source: \"dictionary\"` result), then pass that id back as the filter value."
|
|
50747
|
+
},
|
|
50748
|
+
"401": {
|
|
50749
|
+
"content": {
|
|
50750
|
+
"application/json": {
|
|
50751
|
+
"schema": {
|
|
50752
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
50753
|
+
}
|
|
50754
|
+
}
|
|
50755
|
+
},
|
|
50756
|
+
"description": "Unauthorized"
|
|
50757
|
+
},
|
|
50758
|
+
"403": {
|
|
50759
|
+
"content": {
|
|
50760
|
+
"application/json": {
|
|
50761
|
+
"schema": {
|
|
50762
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
50763
|
+
}
|
|
50764
|
+
}
|
|
50765
|
+
},
|
|
50766
|
+
"description": "Forbidden (authenticated, but missing required context — e.g. no active organization)"
|
|
50767
|
+
},
|
|
50768
|
+
"404": {
|
|
50769
|
+
"content": {
|
|
50770
|
+
"application/json": {
|
|
50771
|
+
"schema": {
|
|
50772
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
50773
|
+
}
|
|
50774
|
+
}
|
|
50775
|
+
},
|
|
50776
|
+
"description": "Not found"
|
|
50777
|
+
},
|
|
50778
|
+
"413": {
|
|
50779
|
+
"content": {
|
|
50780
|
+
"application/json": {
|
|
50781
|
+
"schema": {
|
|
50782
|
+
"$ref": "#/components/schemas/PayloadTooLarge"
|
|
50783
|
+
}
|
|
50784
|
+
}
|
|
50785
|
+
},
|
|
50786
|
+
"description": "Response payload too large — detail endpoint capped to fit Lambda response limits"
|
|
50787
|
+
},
|
|
50788
|
+
"503": {
|
|
50789
|
+
"content": {
|
|
50790
|
+
"application/json": {
|
|
50791
|
+
"schema": {
|
|
50792
|
+
"$ref": "#/components/schemas/SearchUnavailable"
|
|
50793
|
+
}
|
|
50794
|
+
}
|
|
50795
|
+
},
|
|
50796
|
+
"description": "Search timed out or the cluster is overloaded — retry after `Retry-After` seconds."
|
|
50797
|
+
}
|
|
50798
|
+
},
|
|
50799
|
+
"summary": "Roll-up KPIs over the branches matching filters",
|
|
50800
|
+
"tags": [
|
|
50801
|
+
"Branches"
|
|
50802
|
+
]
|
|
50803
|
+
}
|
|
50804
|
+
},
|
|
50493
50805
|
"/v1/branches/{nmlsId}": {
|
|
50494
50806
|
"get": {
|
|
50495
50807
|
"description": "Retrieve full details for a single NMLS mortgage branch including name, address, parent company, managers, trade names, licensing, and branch-level production for the selected period.",
|
|
@@ -50853,16 +51165,119 @@
|
|
|
50853
51165
|
"description": "Search timed out or the cluster is overloaded — retry after `Retry-After` seconds."
|
|
50854
51166
|
}
|
|
50855
51167
|
},
|
|
50856
|
-
"summary": "Lenders this branch originated through",
|
|
51168
|
+
"summary": "Lenders this branch originated through",
|
|
51169
|
+
"tags": [
|
|
51170
|
+
"Branches"
|
|
51171
|
+
]
|
|
51172
|
+
}
|
|
51173
|
+
},
|
|
51174
|
+
"/v1/branches/{nmlsId}/breakdowns/originators": {
|
|
51175
|
+
"post": {
|
|
51176
|
+
"description": "Ranks the loan officers whose loans public record attributes to this branch, by volume. Each label is the LO's NMLS ID, so it chains straight into `GET /v1/originators/{nmlsId}`. This is the branch's RECORDED roster, not its licensing roster: it answers who actually wrote loans here in the period, which is narrower than everyone registered to the branch and can include someone who has since moved. For the licensed managers on file, read `managers` on `GET /v1/branches/{nmlsId}`.",
|
|
51177
|
+
"operationId": "branchOriginators",
|
|
51178
|
+
"parameters": [
|
|
51179
|
+
{
|
|
51180
|
+
"description": "Branch NMLS ID",
|
|
51181
|
+
"in": "path",
|
|
51182
|
+
"name": "nmlsId",
|
|
51183
|
+
"required": true,
|
|
51184
|
+
"schema": {
|
|
51185
|
+
"description": "Branch NMLS ID",
|
|
51186
|
+
"type": "string"
|
|
51187
|
+
}
|
|
51188
|
+
}
|
|
51189
|
+
],
|
|
51190
|
+
"requestBody": {
|
|
51191
|
+
"content": {
|
|
51192
|
+
"application/json": {
|
|
51193
|
+
"schema": {
|
|
51194
|
+
"$ref": "#/components/schemas/BreakdownRequest"
|
|
51195
|
+
}
|
|
51196
|
+
}
|
|
51197
|
+
}
|
|
51198
|
+
},
|
|
51199
|
+
"responses": {
|
|
51200
|
+
"200": {
|
|
51201
|
+
"content": {
|
|
51202
|
+
"application/json": {
|
|
51203
|
+
"schema": {
|
|
51204
|
+
"$ref": "#/components/schemas/BreakdownResponse"
|
|
51205
|
+
}
|
|
51206
|
+
}
|
|
51207
|
+
},
|
|
51208
|
+
"description": "Breakdown of this branch's loans by originators"
|
|
51209
|
+
},
|
|
51210
|
+
"400": {
|
|
51211
|
+
"content": {
|
|
51212
|
+
"application/json": {
|
|
51213
|
+
"schema": {
|
|
51214
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
51215
|
+
}
|
|
51216
|
+
}
|
|
51217
|
+
},
|
|
51218
|
+
"description": "Validation error"
|
|
51219
|
+
},
|
|
51220
|
+
"401": {
|
|
51221
|
+
"content": {
|
|
51222
|
+
"application/json": {
|
|
51223
|
+
"schema": {
|
|
51224
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
51225
|
+
}
|
|
51226
|
+
}
|
|
51227
|
+
},
|
|
51228
|
+
"description": "Unauthorized"
|
|
51229
|
+
},
|
|
51230
|
+
"403": {
|
|
51231
|
+
"content": {
|
|
51232
|
+
"application/json": {
|
|
51233
|
+
"schema": {
|
|
51234
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
51235
|
+
}
|
|
51236
|
+
}
|
|
51237
|
+
},
|
|
51238
|
+
"description": "Forbidden (authenticated, but missing required context — e.g. no active organization)"
|
|
51239
|
+
},
|
|
51240
|
+
"404": {
|
|
51241
|
+
"content": {
|
|
51242
|
+
"application/json": {
|
|
51243
|
+
"schema": {
|
|
51244
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
51245
|
+
}
|
|
51246
|
+
}
|
|
51247
|
+
},
|
|
51248
|
+
"description": "Not found"
|
|
51249
|
+
},
|
|
51250
|
+
"413": {
|
|
51251
|
+
"content": {
|
|
51252
|
+
"application/json": {
|
|
51253
|
+
"schema": {
|
|
51254
|
+
"$ref": "#/components/schemas/PayloadTooLarge"
|
|
51255
|
+
}
|
|
51256
|
+
}
|
|
51257
|
+
},
|
|
51258
|
+
"description": "Response payload too large — detail endpoint capped to fit Lambda response limits"
|
|
51259
|
+
},
|
|
51260
|
+
"503": {
|
|
51261
|
+
"content": {
|
|
51262
|
+
"application/json": {
|
|
51263
|
+
"schema": {
|
|
51264
|
+
"$ref": "#/components/schemas/SearchUnavailable"
|
|
51265
|
+
}
|
|
51266
|
+
}
|
|
51267
|
+
},
|
|
51268
|
+
"description": "Search timed out or the cluster is overloaded — retry after `Retry-After` seconds."
|
|
51269
|
+
}
|
|
51270
|
+
},
|
|
51271
|
+
"summary": "Loan officers who wrote this branch's loans",
|
|
50857
51272
|
"tags": [
|
|
50858
51273
|
"Branches"
|
|
50859
51274
|
]
|
|
50860
51275
|
}
|
|
50861
51276
|
},
|
|
50862
|
-
"/v1/branches/{nmlsId}/breakdowns/
|
|
51277
|
+
"/v1/branches/{nmlsId}/breakdowns/states": {
|
|
50863
51278
|
"post": {
|
|
50864
|
-
"description": "Ranks the
|
|
50865
|
-
"operationId": "
|
|
51279
|
+
"description": "Ranks the states this branch's loans were secured in, by volume. Labels are two-letter state abbreviations. This is where the branch actually transacted, which is narrower than where it is licensed — licensed states are returned by `GET /v1/branches/{nmlsId}`.",
|
|
51280
|
+
"operationId": "branchStates",
|
|
50866
51281
|
"parameters": [
|
|
50867
51282
|
{
|
|
50868
51283
|
"description": "Branch NMLS ID",
|
|
@@ -50893,7 +51308,7 @@
|
|
|
50893
51308
|
}
|
|
50894
51309
|
}
|
|
50895
51310
|
},
|
|
50896
|
-
"description": "Breakdown of this branch's loans by
|
|
51311
|
+
"description": "Breakdown of this branch's loans by states"
|
|
50897
51312
|
},
|
|
50898
51313
|
"400": {
|
|
50899
51314
|
"content": {
|
|
@@ -50956,16 +51371,16 @@
|
|
|
50956
51371
|
"description": "Search timed out or the cluster is overloaded — retry after `Retry-After` seconds."
|
|
50957
51372
|
}
|
|
50958
51373
|
},
|
|
50959
|
-
"summary": "
|
|
51374
|
+
"summary": "State volume breakdown across this branch's loans",
|
|
50960
51375
|
"tags": [
|
|
50961
51376
|
"Branches"
|
|
50962
51377
|
]
|
|
50963
51378
|
}
|
|
50964
51379
|
},
|
|
50965
|
-
"/v1/branches/{nmlsId}/breakdowns/
|
|
51380
|
+
"/v1/branches/{nmlsId}/breakdowns/title-companies": {
|
|
50966
51381
|
"post": {
|
|
50967
|
-
"description": "Ranks the
|
|
50968
|
-
"operationId": "
|
|
51382
|
+
"description": "Ranks the title companies on this entity's loans (recorded deeds, `recording_date` window — the same population and period axis as every other loans breakdown). Spellings of one company are MERGED: `label` is its most-used spelling, `id` the normalized name every spelling was grouped under (legal-form and filler words such as `inc`, `llc`, `co`, `company`, `title`, `escrow` removed; `natl` → `national`). Placeholder entries meaning \"no title company recorded\" (`none available` and its misspellings, `unknown`, `n/a`, …) and names shorter than 3 characters are excluded rather than ranked. `attorney` and `accommodation` are kept: they say who closed. `pctUnits` / `pctVolume` are shares of the entity's WHOLE loan population in the window, including loans with no title company, so they do not sum to 100 across the page. Pages of up to 100 via `pagination`.",
|
|
51383
|
+
"operationId": "branchTitleCompanies",
|
|
50969
51384
|
"parameters": [
|
|
50970
51385
|
{
|
|
50971
51386
|
"description": "Branch NMLS ID",
|
|
@@ -50996,7 +51411,7 @@
|
|
|
50996
51411
|
}
|
|
50997
51412
|
}
|
|
50998
51413
|
},
|
|
50999
|
-
"description": "Breakdown of
|
|
51414
|
+
"description": "Breakdown of the entity's loans by title company"
|
|
51000
51415
|
},
|
|
51001
51416
|
"400": {
|
|
51002
51417
|
"content": {
|
|
@@ -51059,47 +51474,54 @@
|
|
|
51059
51474
|
"description": "Search timed out or the cluster is overloaded — retry after `Retry-After` seconds."
|
|
51060
51475
|
}
|
|
51061
51476
|
},
|
|
51062
|
-
"summary": "
|
|
51477
|
+
"summary": "Title companies on this branch's loans (spellings merged)",
|
|
51063
51478
|
"tags": [
|
|
51064
51479
|
"Branches"
|
|
51065
51480
|
]
|
|
51066
51481
|
}
|
|
51067
51482
|
},
|
|
51068
|
-
"/v1/branches/{nmlsId}/
|
|
51069
|
-
"
|
|
51070
|
-
"description": "
|
|
51071
|
-
"operationId": "
|
|
51483
|
+
"/v1/branches/{nmlsId}/community-lending/map": {
|
|
51484
|
+
"get": {
|
|
51485
|
+
"description": "Map points for loans written by this branch's current roster in the period that resolved to a Census tract, newest first (up to 4,000), plus a per-tract loan count keyed by 11-digit tract GEOID for a choropleth.",
|
|
51486
|
+
"operationId": "branchCommunityLendingMap",
|
|
51072
51487
|
"parameters": [
|
|
51073
51488
|
{
|
|
51074
|
-
"description": "
|
|
51489
|
+
"description": "Branche NMLS ID",
|
|
51075
51490
|
"in": "path",
|
|
51076
51491
|
"name": "nmlsId",
|
|
51077
51492
|
"required": true,
|
|
51078
51493
|
"schema": {
|
|
51079
|
-
"description": "
|
|
51494
|
+
"description": "Branche NMLS ID",
|
|
51080
51495
|
"type": "string"
|
|
51081
51496
|
}
|
|
51082
|
-
}
|
|
51083
|
-
|
|
51084
|
-
|
|
51085
|
-
|
|
51086
|
-
"
|
|
51087
|
-
|
|
51088
|
-
|
|
51089
|
-
|
|
51497
|
+
},
|
|
51498
|
+
{
|
|
51499
|
+
"description": "Period window (default: last12Months).",
|
|
51500
|
+
"in": "query",
|
|
51501
|
+
"name": "period",
|
|
51502
|
+
"required": false,
|
|
51503
|
+
"schema": {
|
|
51504
|
+
"allOf": [
|
|
51505
|
+
{
|
|
51506
|
+
"$ref": "#/components/schemas/Period"
|
|
51507
|
+
},
|
|
51508
|
+
{
|
|
51509
|
+
"description": "Period window (default: last12Months)."
|
|
51510
|
+
}
|
|
51511
|
+
]
|
|
51090
51512
|
}
|
|
51091
51513
|
}
|
|
51092
|
-
|
|
51514
|
+
],
|
|
51093
51515
|
"responses": {
|
|
51094
51516
|
"200": {
|
|
51095
51517
|
"content": {
|
|
51096
51518
|
"application/json": {
|
|
51097
51519
|
"schema": {
|
|
51098
|
-
"$ref": "#/components/schemas/
|
|
51520
|
+
"$ref": "#/components/schemas/CommunityLendingMapResponse"
|
|
51099
51521
|
}
|
|
51100
51522
|
}
|
|
51101
51523
|
},
|
|
51102
|
-
"description": "
|
|
51524
|
+
"description": "Map feed"
|
|
51103
51525
|
},
|
|
51104
51526
|
"400": {
|
|
51105
51527
|
"content": {
|
|
@@ -51162,7 +51584,7 @@
|
|
|
51162
51584
|
"description": "Search timed out or the cluster is overloaded — retry after `Retry-After` seconds."
|
|
51163
51585
|
}
|
|
51164
51586
|
},
|
|
51165
|
-
"summary": "
|
|
51587
|
+
"summary": "Community Lending map: geocoded loans + per-tract counts",
|
|
51166
51588
|
"tags": [
|
|
51167
51589
|
"Branches"
|
|
51168
51590
|
]
|
|
@@ -51897,7 +52319,7 @@
|
|
|
51897
52319
|
}
|
|
51898
52320
|
}
|
|
51899
52321
|
},
|
|
51900
|
-
"description": "Preflight / S3 / DDB / ECS launch failure,
|
|
52322
|
+
"description": "Preflight / S3 / DDB / ECS launch failure, the push-target check could not reach the auth server, or the credit balance could not be read (`billing_unavailable` — retry; a paid delivery is never queued unverified)"
|
|
51901
52323
|
}
|
|
51902
52324
|
},
|
|
51903
52325
|
"summary": "Submit a bulk-delivery job for companies",
|
|
@@ -53328,47 +53750,259 @@
|
|
|
53328
53750
|
"description": "Search timed out or the cluster is overloaded — retry after `Retry-After` seconds."
|
|
53329
53751
|
}
|
|
53330
53752
|
},
|
|
53331
|
-
"summary": "State volume breakdown across this company's loans",
|
|
53753
|
+
"summary": "State volume breakdown across this company's loans",
|
|
53754
|
+
"tags": [
|
|
53755
|
+
"Companies"
|
|
53756
|
+
]
|
|
53757
|
+
}
|
|
53758
|
+
},
|
|
53759
|
+
"/v1/companies/{nmlsId}/breakdowns/title-companies": {
|
|
53760
|
+
"post": {
|
|
53761
|
+
"description": "Ranks the title companies on this entity's loans (recorded deeds, `recording_date` window — the same population and period axis as every other loans breakdown). Spellings of one company are MERGED: `label` is its most-used spelling, `id` the normalized name every spelling was grouped under (legal-form and filler words such as `inc`, `llc`, `co`, `company`, `title`, `escrow` removed; `natl` → `national`). Placeholder entries meaning \"no title company recorded\" (`none available` and its misspellings, `unknown`, `n/a`, …) and names shorter than 3 characters are excluded rather than ranked. `attorney` and `accommodation` are kept: they say who closed. `pctUnits` / `pctVolume` are shares of the entity's WHOLE loan population in the window, including loans with no title company, so they do not sum to 100 across the page. Pages of up to 100 via `pagination`.",
|
|
53762
|
+
"operationId": "companyTitleCompanies",
|
|
53763
|
+
"parameters": [
|
|
53764
|
+
{
|
|
53765
|
+
"description": "Company NMLS ID",
|
|
53766
|
+
"in": "path",
|
|
53767
|
+
"name": "nmlsId",
|
|
53768
|
+
"required": true,
|
|
53769
|
+
"schema": {
|
|
53770
|
+
"description": "Company NMLS ID",
|
|
53771
|
+
"type": "string"
|
|
53772
|
+
}
|
|
53773
|
+
}
|
|
53774
|
+
],
|
|
53775
|
+
"requestBody": {
|
|
53776
|
+
"content": {
|
|
53777
|
+
"application/json": {
|
|
53778
|
+
"schema": {
|
|
53779
|
+
"$ref": "#/components/schemas/CompanyBreakdownRequest"
|
|
53780
|
+
}
|
|
53781
|
+
}
|
|
53782
|
+
}
|
|
53783
|
+
},
|
|
53784
|
+
"responses": {
|
|
53785
|
+
"200": {
|
|
53786
|
+
"content": {
|
|
53787
|
+
"application/json": {
|
|
53788
|
+
"schema": {
|
|
53789
|
+
"$ref": "#/components/schemas/BreakdownResponse"
|
|
53790
|
+
}
|
|
53791
|
+
}
|
|
53792
|
+
},
|
|
53793
|
+
"description": "Breakdown of the entity's loans by title company"
|
|
53794
|
+
},
|
|
53795
|
+
"400": {
|
|
53796
|
+
"content": {
|
|
53797
|
+
"application/json": {
|
|
53798
|
+
"schema": {
|
|
53799
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
53800
|
+
}
|
|
53801
|
+
}
|
|
53802
|
+
},
|
|
53803
|
+
"description": "Validation error"
|
|
53804
|
+
},
|
|
53805
|
+
"401": {
|
|
53806
|
+
"content": {
|
|
53807
|
+
"application/json": {
|
|
53808
|
+
"schema": {
|
|
53809
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
53810
|
+
}
|
|
53811
|
+
}
|
|
53812
|
+
},
|
|
53813
|
+
"description": "Unauthorized"
|
|
53814
|
+
},
|
|
53815
|
+
"403": {
|
|
53816
|
+
"content": {
|
|
53817
|
+
"application/json": {
|
|
53818
|
+
"schema": {
|
|
53819
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
53820
|
+
}
|
|
53821
|
+
}
|
|
53822
|
+
},
|
|
53823
|
+
"description": "Forbidden (authenticated, but missing required context — e.g. no active organization)"
|
|
53824
|
+
},
|
|
53825
|
+
"404": {
|
|
53826
|
+
"content": {
|
|
53827
|
+
"application/json": {
|
|
53828
|
+
"schema": {
|
|
53829
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
53830
|
+
}
|
|
53831
|
+
}
|
|
53832
|
+
},
|
|
53833
|
+
"description": "Not found"
|
|
53834
|
+
},
|
|
53835
|
+
"413": {
|
|
53836
|
+
"content": {
|
|
53837
|
+
"application/json": {
|
|
53838
|
+
"schema": {
|
|
53839
|
+
"$ref": "#/components/schemas/PayloadTooLarge"
|
|
53840
|
+
}
|
|
53841
|
+
}
|
|
53842
|
+
},
|
|
53843
|
+
"description": "Response payload too large — detail endpoint capped to fit Lambda response limits"
|
|
53844
|
+
},
|
|
53845
|
+
"503": {
|
|
53846
|
+
"content": {
|
|
53847
|
+
"application/json": {
|
|
53848
|
+
"schema": {
|
|
53849
|
+
"$ref": "#/components/schemas/SearchUnavailable"
|
|
53850
|
+
}
|
|
53851
|
+
}
|
|
53852
|
+
},
|
|
53853
|
+
"description": "Search timed out or the cluster is overloaded — retry after `Retry-After` seconds."
|
|
53854
|
+
}
|
|
53855
|
+
},
|
|
53856
|
+
"summary": "Title companies on this company's loans (spellings merged)",
|
|
53857
|
+
"tags": [
|
|
53858
|
+
"Companies"
|
|
53859
|
+
]
|
|
53860
|
+
}
|
|
53861
|
+
},
|
|
53862
|
+
"/v1/companies/{nmlsId}/breakdowns/zip-codes": {
|
|
53863
|
+
"post": {
|
|
53864
|
+
"operationId": "companyZipCodes",
|
|
53865
|
+
"parameters": [
|
|
53866
|
+
{
|
|
53867
|
+
"description": "Company NMLS ID",
|
|
53868
|
+
"in": "path",
|
|
53869
|
+
"name": "nmlsId",
|
|
53870
|
+
"required": true,
|
|
53871
|
+
"schema": {
|
|
53872
|
+
"description": "Company NMLS ID",
|
|
53873
|
+
"type": "string"
|
|
53874
|
+
}
|
|
53875
|
+
}
|
|
53876
|
+
],
|
|
53877
|
+
"requestBody": {
|
|
53878
|
+
"content": {
|
|
53879
|
+
"application/json": {
|
|
53880
|
+
"schema": {
|
|
53881
|
+
"$ref": "#/components/schemas/CompanyBreakdownRequest"
|
|
53882
|
+
}
|
|
53883
|
+
}
|
|
53884
|
+
}
|
|
53885
|
+
},
|
|
53886
|
+
"responses": {
|
|
53887
|
+
"200": {
|
|
53888
|
+
"content": {
|
|
53889
|
+
"application/json": {
|
|
53890
|
+
"schema": {
|
|
53891
|
+
"$ref": "#/components/schemas/BreakdownResponse"
|
|
53892
|
+
}
|
|
53893
|
+
}
|
|
53894
|
+
},
|
|
53895
|
+
"description": "Breakdown of the company's loans by zip-codes"
|
|
53896
|
+
},
|
|
53897
|
+
"400": {
|
|
53898
|
+
"content": {
|
|
53899
|
+
"application/json": {
|
|
53900
|
+
"schema": {
|
|
53901
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
53902
|
+
}
|
|
53903
|
+
}
|
|
53904
|
+
},
|
|
53905
|
+
"description": "Validation error"
|
|
53906
|
+
},
|
|
53907
|
+
"401": {
|
|
53908
|
+
"content": {
|
|
53909
|
+
"application/json": {
|
|
53910
|
+
"schema": {
|
|
53911
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
53912
|
+
}
|
|
53913
|
+
}
|
|
53914
|
+
},
|
|
53915
|
+
"description": "Unauthorized"
|
|
53916
|
+
},
|
|
53917
|
+
"403": {
|
|
53918
|
+
"content": {
|
|
53919
|
+
"application/json": {
|
|
53920
|
+
"schema": {
|
|
53921
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
53922
|
+
}
|
|
53923
|
+
}
|
|
53924
|
+
},
|
|
53925
|
+
"description": "Forbidden (authenticated, but missing required context — e.g. no active organization)"
|
|
53926
|
+
},
|
|
53927
|
+
"404": {
|
|
53928
|
+
"content": {
|
|
53929
|
+
"application/json": {
|
|
53930
|
+
"schema": {
|
|
53931
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
53932
|
+
}
|
|
53933
|
+
}
|
|
53934
|
+
},
|
|
53935
|
+
"description": "Not found"
|
|
53936
|
+
},
|
|
53937
|
+
"413": {
|
|
53938
|
+
"content": {
|
|
53939
|
+
"application/json": {
|
|
53940
|
+
"schema": {
|
|
53941
|
+
"$ref": "#/components/schemas/PayloadTooLarge"
|
|
53942
|
+
}
|
|
53943
|
+
}
|
|
53944
|
+
},
|
|
53945
|
+
"description": "Response payload too large — detail endpoint capped to fit Lambda response limits"
|
|
53946
|
+
},
|
|
53947
|
+
"503": {
|
|
53948
|
+
"content": {
|
|
53949
|
+
"application/json": {
|
|
53950
|
+
"schema": {
|
|
53951
|
+
"$ref": "#/components/schemas/SearchUnavailable"
|
|
53952
|
+
}
|
|
53953
|
+
}
|
|
53954
|
+
},
|
|
53955
|
+
"description": "Search timed out or the cluster is overloaded — retry after `Retry-After` seconds."
|
|
53956
|
+
}
|
|
53957
|
+
},
|
|
53958
|
+
"summary": "Zip-code volume breakdown across this company's loans",
|
|
53332
53959
|
"tags": [
|
|
53333
53960
|
"Companies"
|
|
53334
53961
|
]
|
|
53335
53962
|
}
|
|
53336
53963
|
},
|
|
53337
|
-
"/v1/companies/{nmlsId}/
|
|
53338
|
-
"
|
|
53339
|
-
"description": "
|
|
53340
|
-
"operationId": "
|
|
53964
|
+
"/v1/companies/{nmlsId}/community-lending/benchmark": {
|
|
53965
|
+
"get": {
|
|
53966
|
+
"description": "Percentile rank and peer average of this entity's low- or moderate-income and majority-minority neighborhood shares, against peers producing in its top 12 states by units. `data` is null when the entity has no neighborhood-resolved loans in the period.",
|
|
53967
|
+
"operationId": "companyCommunityLendingBenchmark",
|
|
53341
53968
|
"parameters": [
|
|
53342
53969
|
{
|
|
53343
|
-
"description": "
|
|
53970
|
+
"description": "Companie NMLS ID",
|
|
53344
53971
|
"in": "path",
|
|
53345
53972
|
"name": "nmlsId",
|
|
53346
53973
|
"required": true,
|
|
53347
53974
|
"schema": {
|
|
53348
|
-
"description": "
|
|
53975
|
+
"description": "Companie NMLS ID",
|
|
53349
53976
|
"type": "string"
|
|
53350
53977
|
}
|
|
53351
|
-
}
|
|
53352
|
-
|
|
53353
|
-
|
|
53354
|
-
|
|
53355
|
-
"
|
|
53356
|
-
|
|
53357
|
-
|
|
53358
|
-
|
|
53978
|
+
},
|
|
53979
|
+
{
|
|
53980
|
+
"description": "Period window (default: last12Months).",
|
|
53981
|
+
"in": "query",
|
|
53982
|
+
"name": "period",
|
|
53983
|
+
"required": false,
|
|
53984
|
+
"schema": {
|
|
53985
|
+
"allOf": [
|
|
53986
|
+
{
|
|
53987
|
+
"$ref": "#/components/schemas/Period"
|
|
53988
|
+
},
|
|
53989
|
+
{
|
|
53990
|
+
"description": "Period window (default: last12Months)."
|
|
53991
|
+
}
|
|
53992
|
+
]
|
|
53359
53993
|
}
|
|
53360
53994
|
}
|
|
53361
|
-
|
|
53995
|
+
],
|
|
53362
53996
|
"responses": {
|
|
53363
53997
|
"200": {
|
|
53364
53998
|
"content": {
|
|
53365
53999
|
"application/json": {
|
|
53366
54000
|
"schema": {
|
|
53367
|
-
"$ref": "#/components/schemas/
|
|
54001
|
+
"$ref": "#/components/schemas/CommunityLendingBenchmarkResponse"
|
|
53368
54002
|
}
|
|
53369
54003
|
}
|
|
53370
54004
|
},
|
|
53371
|
-
"description": "
|
|
54005
|
+
"description": "Peer benchmark"
|
|
53372
54006
|
},
|
|
53373
54007
|
"400": {
|
|
53374
54008
|
"content": {
|
|
@@ -53431,46 +54065,54 @@
|
|
|
53431
54065
|
"description": "Search timed out or the cluster is overloaded — retry after `Retry-After` seconds."
|
|
53432
54066
|
}
|
|
53433
54067
|
},
|
|
53434
|
-
"summary": "
|
|
54068
|
+
"summary": "Community Lending peer benchmark (LMI / majority-minority)",
|
|
53435
54069
|
"tags": [
|
|
53436
54070
|
"Companies"
|
|
53437
54071
|
]
|
|
53438
54072
|
}
|
|
53439
54073
|
},
|
|
53440
|
-
"/v1/companies/{nmlsId}/
|
|
53441
|
-
"
|
|
53442
|
-
"
|
|
54074
|
+
"/v1/companies/{nmlsId}/community-lending/map": {
|
|
54075
|
+
"get": {
|
|
54076
|
+
"description": "Map points for loans naming this company on the loan document in the period that resolved to a Census tract, newest first (up to 4,000), plus a per-tract loan count keyed by 11-digit tract GEOID for a choropleth.",
|
|
54077
|
+
"operationId": "companyCommunityLendingMap",
|
|
53443
54078
|
"parameters": [
|
|
53444
54079
|
{
|
|
53445
|
-
"description": "
|
|
54080
|
+
"description": "Companie NMLS ID",
|
|
53446
54081
|
"in": "path",
|
|
53447
54082
|
"name": "nmlsId",
|
|
53448
54083
|
"required": true,
|
|
53449
54084
|
"schema": {
|
|
53450
|
-
"description": "
|
|
54085
|
+
"description": "Companie NMLS ID",
|
|
53451
54086
|
"type": "string"
|
|
53452
54087
|
}
|
|
53453
|
-
}
|
|
53454
|
-
|
|
53455
|
-
|
|
53456
|
-
|
|
53457
|
-
"
|
|
53458
|
-
|
|
53459
|
-
|
|
53460
|
-
|
|
54088
|
+
},
|
|
54089
|
+
{
|
|
54090
|
+
"description": "Period window (default: last12Months).",
|
|
54091
|
+
"in": "query",
|
|
54092
|
+
"name": "period",
|
|
54093
|
+
"required": false,
|
|
54094
|
+
"schema": {
|
|
54095
|
+
"allOf": [
|
|
54096
|
+
{
|
|
54097
|
+
"$ref": "#/components/schemas/Period"
|
|
54098
|
+
},
|
|
54099
|
+
{
|
|
54100
|
+
"description": "Period window (default: last12Months)."
|
|
54101
|
+
}
|
|
54102
|
+
]
|
|
53461
54103
|
}
|
|
53462
54104
|
}
|
|
53463
|
-
|
|
54105
|
+
],
|
|
53464
54106
|
"responses": {
|
|
53465
54107
|
"200": {
|
|
53466
54108
|
"content": {
|
|
53467
54109
|
"application/json": {
|
|
53468
54110
|
"schema": {
|
|
53469
|
-
"$ref": "#/components/schemas/
|
|
54111
|
+
"$ref": "#/components/schemas/CommunityLendingMapResponse"
|
|
53470
54112
|
}
|
|
53471
54113
|
}
|
|
53472
54114
|
},
|
|
53473
|
-
"description": "
|
|
54115
|
+
"description": "Map feed"
|
|
53474
54116
|
},
|
|
53475
54117
|
"400": {
|
|
53476
54118
|
"content": {
|
|
@@ -53533,7 +54175,7 @@
|
|
|
53533
54175
|
"description": "Search timed out or the cluster is overloaded — retry after `Retry-After` seconds."
|
|
53534
54176
|
}
|
|
53535
54177
|
},
|
|
53536
|
-
"summary": "
|
|
54178
|
+
"summary": "Community Lending map: geocoded loans + per-tract counts",
|
|
53537
54179
|
"tags": [
|
|
53538
54180
|
"Companies"
|
|
53539
54181
|
]
|
|
@@ -70779,7 +71421,7 @@
|
|
|
70779
71421
|
}
|
|
70780
71422
|
}
|
|
70781
71423
|
},
|
|
70782
|
-
"description": "Preflight / S3 / DDB / ECS launch failure,
|
|
71424
|
+
"description": "Preflight / S3 / DDB / ECS launch failure, the push-target check could not reach the auth server, or the credit balance could not be read (`billing_unavailable` — retry; a paid delivery is never queued unverified)"
|
|
70783
71425
|
}
|
|
70784
71426
|
},
|
|
70785
71427
|
"summary": "Submit a bulk-delivery job for loans",
|
|
@@ -75224,7 +75866,7 @@
|
|
|
75224
75866
|
}
|
|
75225
75867
|
}
|
|
75226
75868
|
},
|
|
75227
|
-
"description": "Preflight / S3 / DDB / ECS launch failure,
|
|
75869
|
+
"description": "Preflight / S3 / DDB / ECS launch failure, the push-target check could not reach the auth server, or the credit balance could not be read (`billing_unavailable` — retry; a paid delivery is never queued unverified)"
|
|
75228
75870
|
}
|
|
75229
75871
|
},
|
|
75230
75872
|
"summary": "Submit a bulk-delivery job for originators",
|
|
@@ -76988,6 +77630,226 @@
|
|
|
76988
77630
|
]
|
|
76989
77631
|
}
|
|
76990
77632
|
},
|
|
77633
|
+
"/v1/originators/{nmlsId}/community-lending/benchmark": {
|
|
77634
|
+
"get": {
|
|
77635
|
+
"description": "Percentile rank and peer average of this entity's low- or moderate-income and majority-minority neighborhood shares, against peers producing in its top 12 states by units. `data` is null when the entity has no neighborhood-resolved loans in the period.",
|
|
77636
|
+
"operationId": "originatorCommunityLendingBenchmark",
|
|
77637
|
+
"parameters": [
|
|
77638
|
+
{
|
|
77639
|
+
"description": "Originator NMLS ID",
|
|
77640
|
+
"in": "path",
|
|
77641
|
+
"name": "nmlsId",
|
|
77642
|
+
"required": true,
|
|
77643
|
+
"schema": {
|
|
77644
|
+
"description": "Originator NMLS ID",
|
|
77645
|
+
"type": "string"
|
|
77646
|
+
}
|
|
77647
|
+
},
|
|
77648
|
+
{
|
|
77649
|
+
"description": "Period window (default: last12Months).",
|
|
77650
|
+
"in": "query",
|
|
77651
|
+
"name": "period",
|
|
77652
|
+
"required": false,
|
|
77653
|
+
"schema": {
|
|
77654
|
+
"allOf": [
|
|
77655
|
+
{
|
|
77656
|
+
"$ref": "#/components/schemas/Period"
|
|
77657
|
+
},
|
|
77658
|
+
{
|
|
77659
|
+
"description": "Period window (default: last12Months)."
|
|
77660
|
+
}
|
|
77661
|
+
]
|
|
77662
|
+
}
|
|
77663
|
+
}
|
|
77664
|
+
],
|
|
77665
|
+
"responses": {
|
|
77666
|
+
"200": {
|
|
77667
|
+
"content": {
|
|
77668
|
+
"application/json": {
|
|
77669
|
+
"schema": {
|
|
77670
|
+
"$ref": "#/components/schemas/CommunityLendingBenchmarkResponse"
|
|
77671
|
+
}
|
|
77672
|
+
}
|
|
77673
|
+
},
|
|
77674
|
+
"description": "Peer benchmark"
|
|
77675
|
+
},
|
|
77676
|
+
"400": {
|
|
77677
|
+
"content": {
|
|
77678
|
+
"application/json": {
|
|
77679
|
+
"schema": {
|
|
77680
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
77681
|
+
}
|
|
77682
|
+
}
|
|
77683
|
+
},
|
|
77684
|
+
"description": "Validation error"
|
|
77685
|
+
},
|
|
77686
|
+
"401": {
|
|
77687
|
+
"content": {
|
|
77688
|
+
"application/json": {
|
|
77689
|
+
"schema": {
|
|
77690
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
77691
|
+
}
|
|
77692
|
+
}
|
|
77693
|
+
},
|
|
77694
|
+
"description": "Unauthorized"
|
|
77695
|
+
},
|
|
77696
|
+
"403": {
|
|
77697
|
+
"content": {
|
|
77698
|
+
"application/json": {
|
|
77699
|
+
"schema": {
|
|
77700
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
77701
|
+
}
|
|
77702
|
+
}
|
|
77703
|
+
},
|
|
77704
|
+
"description": "Forbidden (authenticated, but missing required context — e.g. no active organization)"
|
|
77705
|
+
},
|
|
77706
|
+
"404": {
|
|
77707
|
+
"content": {
|
|
77708
|
+
"application/json": {
|
|
77709
|
+
"schema": {
|
|
77710
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
77711
|
+
}
|
|
77712
|
+
}
|
|
77713
|
+
},
|
|
77714
|
+
"description": "Not found"
|
|
77715
|
+
},
|
|
77716
|
+
"413": {
|
|
77717
|
+
"content": {
|
|
77718
|
+
"application/json": {
|
|
77719
|
+
"schema": {
|
|
77720
|
+
"$ref": "#/components/schemas/PayloadTooLarge"
|
|
77721
|
+
}
|
|
77722
|
+
}
|
|
77723
|
+
},
|
|
77724
|
+
"description": "Response payload too large — detail endpoint capped to fit Lambda response limits"
|
|
77725
|
+
},
|
|
77726
|
+
"503": {
|
|
77727
|
+
"content": {
|
|
77728
|
+
"application/json": {
|
|
77729
|
+
"schema": {
|
|
77730
|
+
"$ref": "#/components/schemas/SearchUnavailable"
|
|
77731
|
+
}
|
|
77732
|
+
}
|
|
77733
|
+
},
|
|
77734
|
+
"description": "Search timed out or the cluster is overloaded — retry after `Retry-After` seconds."
|
|
77735
|
+
}
|
|
77736
|
+
},
|
|
77737
|
+
"summary": "Community Lending peer benchmark (LMI / majority-minority)",
|
|
77738
|
+
"tags": [
|
|
77739
|
+
"Originators"
|
|
77740
|
+
]
|
|
77741
|
+
}
|
|
77742
|
+
},
|
|
77743
|
+
"/v1/originators/{nmlsId}/community-lending/map": {
|
|
77744
|
+
"get": {
|
|
77745
|
+
"description": "Map points for this loan officer's loans in the period that resolved to a Census tract, newest first (up to 4,000), plus a per-tract loan count keyed by 11-digit tract GEOID for a choropleth.",
|
|
77746
|
+
"operationId": "originatorCommunityLendingMap",
|
|
77747
|
+
"parameters": [
|
|
77748
|
+
{
|
|
77749
|
+
"description": "Originator NMLS ID",
|
|
77750
|
+
"in": "path",
|
|
77751
|
+
"name": "nmlsId",
|
|
77752
|
+
"required": true,
|
|
77753
|
+
"schema": {
|
|
77754
|
+
"description": "Originator NMLS ID",
|
|
77755
|
+
"type": "string"
|
|
77756
|
+
}
|
|
77757
|
+
},
|
|
77758
|
+
{
|
|
77759
|
+
"description": "Period window (default: last12Months).",
|
|
77760
|
+
"in": "query",
|
|
77761
|
+
"name": "period",
|
|
77762
|
+
"required": false,
|
|
77763
|
+
"schema": {
|
|
77764
|
+
"allOf": [
|
|
77765
|
+
{
|
|
77766
|
+
"$ref": "#/components/schemas/Period"
|
|
77767
|
+
},
|
|
77768
|
+
{
|
|
77769
|
+
"description": "Period window (default: last12Months)."
|
|
77770
|
+
}
|
|
77771
|
+
]
|
|
77772
|
+
}
|
|
77773
|
+
}
|
|
77774
|
+
],
|
|
77775
|
+
"responses": {
|
|
77776
|
+
"200": {
|
|
77777
|
+
"content": {
|
|
77778
|
+
"application/json": {
|
|
77779
|
+
"schema": {
|
|
77780
|
+
"$ref": "#/components/schemas/CommunityLendingMapResponse"
|
|
77781
|
+
}
|
|
77782
|
+
}
|
|
77783
|
+
},
|
|
77784
|
+
"description": "Map feed"
|
|
77785
|
+
},
|
|
77786
|
+
"400": {
|
|
77787
|
+
"content": {
|
|
77788
|
+
"application/json": {
|
|
77789
|
+
"schema": {
|
|
77790
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
77791
|
+
}
|
|
77792
|
+
}
|
|
77793
|
+
},
|
|
77794
|
+
"description": "Validation error"
|
|
77795
|
+
},
|
|
77796
|
+
"401": {
|
|
77797
|
+
"content": {
|
|
77798
|
+
"application/json": {
|
|
77799
|
+
"schema": {
|
|
77800
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
77801
|
+
}
|
|
77802
|
+
}
|
|
77803
|
+
},
|
|
77804
|
+
"description": "Unauthorized"
|
|
77805
|
+
},
|
|
77806
|
+
"403": {
|
|
77807
|
+
"content": {
|
|
77808
|
+
"application/json": {
|
|
77809
|
+
"schema": {
|
|
77810
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
77811
|
+
}
|
|
77812
|
+
}
|
|
77813
|
+
},
|
|
77814
|
+
"description": "Forbidden (authenticated, but missing required context — e.g. no active organization)"
|
|
77815
|
+
},
|
|
77816
|
+
"404": {
|
|
77817
|
+
"content": {
|
|
77818
|
+
"application/json": {
|
|
77819
|
+
"schema": {
|
|
77820
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
77821
|
+
}
|
|
77822
|
+
}
|
|
77823
|
+
},
|
|
77824
|
+
"description": "Not found"
|
|
77825
|
+
},
|
|
77826
|
+
"413": {
|
|
77827
|
+
"content": {
|
|
77828
|
+
"application/json": {
|
|
77829
|
+
"schema": {
|
|
77830
|
+
"$ref": "#/components/schemas/PayloadTooLarge"
|
|
77831
|
+
}
|
|
77832
|
+
}
|
|
77833
|
+
},
|
|
77834
|
+
"description": "Response payload too large — detail endpoint capped to fit Lambda response limits"
|
|
77835
|
+
},
|
|
77836
|
+
"503": {
|
|
77837
|
+
"content": {
|
|
77838
|
+
"application/json": {
|
|
77839
|
+
"schema": {
|
|
77840
|
+
"$ref": "#/components/schemas/SearchUnavailable"
|
|
77841
|
+
}
|
|
77842
|
+
}
|
|
77843
|
+
},
|
|
77844
|
+
"description": "Search timed out or the cluster is overloaded — retry after `Retry-After` seconds."
|
|
77845
|
+
}
|
|
77846
|
+
},
|
|
77847
|
+
"summary": "Community Lending map: geocoded loans + per-tract counts",
|
|
77848
|
+
"tags": [
|
|
77849
|
+
"Originators"
|
|
77850
|
+
]
|
|
77851
|
+
}
|
|
77852
|
+
},
|
|
76991
77853
|
"/v1/originators/{nmlsId}/loans": {
|
|
76992
77854
|
"post": {
|
|
76993
77855
|
"operationId": "originatorLoans",
|
|
@@ -77842,7 +78704,7 @@
|
|
|
77842
78704
|
}
|
|
77843
78705
|
}
|
|
77844
78706
|
},
|
|
77845
|
-
"description": "Preflight / S3 / DDB / ECS launch failure,
|
|
78707
|
+
"description": "Preflight / S3 / DDB / ECS launch failure, the push-target check could not reach the auth server, or the credit balance could not be read (`billing_unavailable` — retry; a paid delivery is never queued unverified)"
|
|
77846
78708
|
}
|
|
77847
78709
|
},
|
|
77848
78710
|
"summary": "Submit a bulk-delivery job for properties",
|
|
@@ -78271,7 +79133,7 @@
|
|
|
78271
79133
|
}
|
|
78272
79134
|
}
|
|
78273
79135
|
},
|
|
78274
|
-
"description": "Failed to launch task or stage inputs"
|
|
79136
|
+
"description": "Failed to launch task or stage inputs, or the credit balance could not be read (`billing_unavailable`, nothing queued)"
|
|
78275
79137
|
}
|
|
78276
79138
|
},
|
|
78277
79139
|
"summary": "Submit a bulk skip-trace job",
|