@model-match/api 3.39.0 → 3.41.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/dist/{index-CVOUUFFx.d.mts → index-L3GbaiFd.d.mts} +246 -1
- package/dist/index.d.mts +2 -2
- package/dist/index.mjs +1 -1
- package/dist/slim/index.d.mts +17 -2
- package/dist/slim/index.mjs +57 -2
- package/dist/{src-Drg2qi1O.mjs → src-o5p0n_5A.mjs} +55 -0
- package/openapi.json +489 -1
- package/package.json +1 -1
package/openapi.json
CHANGED
|
@@ -17196,6 +17196,37 @@
|
|
|
17196
17196
|
],
|
|
17197
17197
|
"type": "object"
|
|
17198
17198
|
},
|
|
17199
|
+
"CompanyDepartureStatusResponse": {
|
|
17200
|
+
"properties": {
|
|
17201
|
+
"notWorking": {
|
|
17202
|
+
"description": "Exits with no current employer on file today — not re-employed yet, or left the industry. `workingElsewhere` + `notWorking` = `total`.",
|
|
17203
|
+
"type": "number"
|
|
17204
|
+
},
|
|
17205
|
+
"total": {
|
|
17206
|
+
"description": "Exits in the window. An exit is a loan officer whose latest record at this company ended inside the window and who holds NO open record there — a complete departure.",
|
|
17207
|
+
"type": "number"
|
|
17208
|
+
},
|
|
17209
|
+
"truncated": {
|
|
17210
|
+
"description": "`true` when the company has more than 100,000 loan officers in scope and only the first 100,000 (by NMLS ID) were counted. `false` means every figure covers the full population.",
|
|
17211
|
+
"type": "boolean"
|
|
17212
|
+
},
|
|
17213
|
+
"window": {
|
|
17214
|
+
"$ref": "#/components/schemas/EmploymentWindow"
|
|
17215
|
+
},
|
|
17216
|
+
"workingElsewhere": {
|
|
17217
|
+
"description": "Exits whose current employer on file today is another company.",
|
|
17218
|
+
"type": "number"
|
|
17219
|
+
}
|
|
17220
|
+
},
|
|
17221
|
+
"required": [
|
|
17222
|
+
"window",
|
|
17223
|
+
"total",
|
|
17224
|
+
"workingElsewhere",
|
|
17225
|
+
"notWorking",
|
|
17226
|
+
"truncated"
|
|
17227
|
+
],
|
|
17228
|
+
"type": "object"
|
|
17229
|
+
},
|
|
17199
17230
|
"CompanyDetail": {
|
|
17200
17231
|
"allOf": [
|
|
17201
17232
|
{
|
|
@@ -19484,6 +19515,74 @@
|
|
|
19484
19515
|
],
|
|
19485
19516
|
"type": "object"
|
|
19486
19517
|
},
|
|
19518
|
+
"CompanyMoverProductionResponse": {
|
|
19519
|
+
"properties": {
|
|
19520
|
+
"arrivals": {
|
|
19521
|
+
"description": "Hires in the window. A hire is a loan officer whose earliest employment record at this company still relevant to the window (open, or ended on/after the window start) starts inside it — so someone who fully left and came back inside the window counts, and an existing employee who adds a state license does not.",
|
|
19522
|
+
"properties": {
|
|
19523
|
+
"count": {
|
|
19524
|
+
"description": "Loan officers on this side.",
|
|
19525
|
+
"type": "number"
|
|
19526
|
+
},
|
|
19527
|
+
"units": {
|
|
19528
|
+
"description": "Loans behind `volume`.",
|
|
19529
|
+
"type": "number"
|
|
19530
|
+
},
|
|
19531
|
+
"volume": {
|
|
19532
|
+
"description": "Their combined production across ALL employers, recorded inside the production window.",
|
|
19533
|
+
"type": "number"
|
|
19534
|
+
}
|
|
19535
|
+
},
|
|
19536
|
+
"required": [
|
|
19537
|
+
"count",
|
|
19538
|
+
"volume",
|
|
19539
|
+
"units"
|
|
19540
|
+
],
|
|
19541
|
+
"type": "object"
|
|
19542
|
+
},
|
|
19543
|
+
"departures": {
|
|
19544
|
+
"description": "Exits in the window. An exit is a loan officer whose latest record at this company ended inside the window and who holds NO open record there — a complete departure.",
|
|
19545
|
+
"properties": {
|
|
19546
|
+
"count": {
|
|
19547
|
+
"description": "Loan officers on this side.",
|
|
19548
|
+
"type": "number"
|
|
19549
|
+
},
|
|
19550
|
+
"units": {
|
|
19551
|
+
"description": "Loans behind `volume`.",
|
|
19552
|
+
"type": "number"
|
|
19553
|
+
},
|
|
19554
|
+
"volume": {
|
|
19555
|
+
"description": "Their combined production across ALL employers, recorded inside the production window.",
|
|
19556
|
+
"type": "number"
|
|
19557
|
+
}
|
|
19558
|
+
},
|
|
19559
|
+
"required": [
|
|
19560
|
+
"count",
|
|
19561
|
+
"volume",
|
|
19562
|
+
"units"
|
|
19563
|
+
],
|
|
19564
|
+
"type": "object"
|
|
19565
|
+
},
|
|
19566
|
+
"productionWindow": {
|
|
19567
|
+
"$ref": "#/components/schemas/EmploymentWindow"
|
|
19568
|
+
},
|
|
19569
|
+
"truncated": {
|
|
19570
|
+
"description": "`true` when the company has more than 100,000 loan officers in scope and only the first 100,000 (by NMLS ID) were counted. `false` means every figure covers the full population.",
|
|
19571
|
+
"type": "boolean"
|
|
19572
|
+
},
|
|
19573
|
+
"window": {
|
|
19574
|
+
"$ref": "#/components/schemas/EmploymentWindow"
|
|
19575
|
+
}
|
|
19576
|
+
},
|
|
19577
|
+
"required": [
|
|
19578
|
+
"window",
|
|
19579
|
+
"productionWindow",
|
|
19580
|
+
"arrivals",
|
|
19581
|
+
"departures",
|
|
19582
|
+
"truncated"
|
|
19583
|
+
],
|
|
19584
|
+
"type": "object"
|
|
19585
|
+
},
|
|
19487
19586
|
"CompanyMsaFilterValue": {
|
|
19488
19587
|
"anyOf": [
|
|
19489
19588
|
{
|
|
@@ -46149,7 +46248,7 @@
|
|
|
46149
46248
|
"info": {
|
|
46150
46249
|
"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.",
|
|
46151
46250
|
"title": "ModelMatch API",
|
|
46152
|
-
"version": "3.
|
|
46251
|
+
"version": "3.101.0"
|
|
46153
46252
|
},
|
|
46154
46253
|
"openapi": "3.1.0",
|
|
46155
46254
|
"paths": {
|
|
@@ -56382,6 +56481,138 @@
|
|
|
56382
56481
|
]
|
|
56383
56482
|
}
|
|
56384
56483
|
},
|
|
56484
|
+
"/v1/companies/{nmlsId}/departure-status": {
|
|
56485
|
+
"get": {
|
|
56486
|
+
"description": "The window's complete departures, split by whether each loan officer's current employer on file is another company. One aggregate — no rows.",
|
|
56487
|
+
"operationId": "companyDepartureStatus",
|
|
56488
|
+
"parameters": [
|
|
56489
|
+
{
|
|
56490
|
+
"description": "Company NMLS ID",
|
|
56491
|
+
"in": "path",
|
|
56492
|
+
"name": "nmlsId",
|
|
56493
|
+
"required": true,
|
|
56494
|
+
"schema": {
|
|
56495
|
+
"description": "Company NMLS ID",
|
|
56496
|
+
"type": "string"
|
|
56497
|
+
}
|
|
56498
|
+
},
|
|
56499
|
+
{
|
|
56500
|
+
"description": "Preset window when `from`/`to` are not given (default `last12Months`). Rolling periods start on the FIRST day of the month N months back and end today; a year is Jan 1 – Dec 31; `allTime` starts 2017-01-01, the earliest reliable registration data. Also selects the production period for volume/units.",
|
|
56501
|
+
"in": "query",
|
|
56502
|
+
"name": "period",
|
|
56503
|
+
"required": false,
|
|
56504
|
+
"schema": {
|
|
56505
|
+
"allOf": [
|
|
56506
|
+
{
|
|
56507
|
+
"$ref": "#/components/schemas/Period"
|
|
56508
|
+
},
|
|
56509
|
+
{
|
|
56510
|
+
"description": "Preset window when `from`/`to` are not given (default `last12Months`). Rolling periods start on the FIRST day of the month N months back and end today; a year is Jan 1 – Dec 31; `allTime` starts 2017-01-01, the earliest reliable registration data. Also selects the production period for volume/units."
|
|
56511
|
+
}
|
|
56512
|
+
]
|
|
56513
|
+
}
|
|
56514
|
+
},
|
|
56515
|
+
{
|
|
56516
|
+
"description": "Window start, inclusive (YYYY-MM-DD). Overrides `period`.",
|
|
56517
|
+
"in": "query",
|
|
56518
|
+
"name": "from",
|
|
56519
|
+
"required": false,
|
|
56520
|
+
"schema": {
|
|
56521
|
+
"description": "Window start, inclusive (YYYY-MM-DD). Overrides `period`.",
|
|
56522
|
+
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
|
|
56523
|
+
"type": "string"
|
|
56524
|
+
}
|
|
56525
|
+
},
|
|
56526
|
+
{
|
|
56527
|
+
"description": "Window end, inclusive (YYYY-MM-DD). Overrides `period`.",
|
|
56528
|
+
"in": "query",
|
|
56529
|
+
"name": "to",
|
|
56530
|
+
"required": false,
|
|
56531
|
+
"schema": {
|
|
56532
|
+
"description": "Window end, inclusive (YYYY-MM-DD). Overrides `period`.",
|
|
56533
|
+
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
|
|
56534
|
+
"type": "string"
|
|
56535
|
+
}
|
|
56536
|
+
}
|
|
56537
|
+
],
|
|
56538
|
+
"responses": {
|
|
56539
|
+
"200": {
|
|
56540
|
+
"content": {
|
|
56541
|
+
"application/json": {
|
|
56542
|
+
"schema": {
|
|
56543
|
+
"$ref": "#/components/schemas/CompanyDepartureStatusResponse"
|
|
56544
|
+
}
|
|
56545
|
+
}
|
|
56546
|
+
},
|
|
56547
|
+
"description": "Exits working elsewhere vs not working"
|
|
56548
|
+
},
|
|
56549
|
+
"400": {
|
|
56550
|
+
"content": {
|
|
56551
|
+
"application/json": {
|
|
56552
|
+
"schema": {
|
|
56553
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
56554
|
+
}
|
|
56555
|
+
}
|
|
56556
|
+
},
|
|
56557
|
+
"description": "Validation error"
|
|
56558
|
+
},
|
|
56559
|
+
"401": {
|
|
56560
|
+
"content": {
|
|
56561
|
+
"application/json": {
|
|
56562
|
+
"schema": {
|
|
56563
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
56564
|
+
}
|
|
56565
|
+
}
|
|
56566
|
+
},
|
|
56567
|
+
"description": "Unauthorized"
|
|
56568
|
+
},
|
|
56569
|
+
"403": {
|
|
56570
|
+
"content": {
|
|
56571
|
+
"application/json": {
|
|
56572
|
+
"schema": {
|
|
56573
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
56574
|
+
}
|
|
56575
|
+
}
|
|
56576
|
+
},
|
|
56577
|
+
"description": "Forbidden (authenticated, but missing required context — e.g. no active organization)"
|
|
56578
|
+
},
|
|
56579
|
+
"404": {
|
|
56580
|
+
"content": {
|
|
56581
|
+
"application/json": {
|
|
56582
|
+
"schema": {
|
|
56583
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
56584
|
+
}
|
|
56585
|
+
}
|
|
56586
|
+
},
|
|
56587
|
+
"description": "Not found"
|
|
56588
|
+
},
|
|
56589
|
+
"413": {
|
|
56590
|
+
"content": {
|
|
56591
|
+
"application/json": {
|
|
56592
|
+
"schema": {
|
|
56593
|
+
"$ref": "#/components/schemas/PayloadTooLarge"
|
|
56594
|
+
}
|
|
56595
|
+
}
|
|
56596
|
+
},
|
|
56597
|
+
"description": "Response payload too large — detail endpoint capped to fit Lambda response limits"
|
|
56598
|
+
},
|
|
56599
|
+
"503": {
|
|
56600
|
+
"content": {
|
|
56601
|
+
"application/json": {
|
|
56602
|
+
"schema": {
|
|
56603
|
+
"$ref": "#/components/schemas/SearchUnavailable"
|
|
56604
|
+
}
|
|
56605
|
+
}
|
|
56606
|
+
},
|
|
56607
|
+
"description": "Search timed out or the cluster is overloaded — retry after `Retry-After` seconds."
|
|
56608
|
+
}
|
|
56609
|
+
},
|
|
56610
|
+
"summary": "How many of a company's exits work elsewhere today",
|
|
56611
|
+
"tags": [
|
|
56612
|
+
"Companies"
|
|
56613
|
+
]
|
|
56614
|
+
}
|
|
56615
|
+
},
|
|
56385
56616
|
"/v1/companies/{nmlsId}/early-exits": {
|
|
56386
56617
|
"get": {
|
|
56387
56618
|
"operationId": "companyEarlyExits",
|
|
@@ -57141,6 +57372,160 @@
|
|
|
57141
57372
|
]
|
|
57142
57373
|
}
|
|
57143
57374
|
},
|
|
57375
|
+
"/v1/companies/{nmlsId}/mover-production": {
|
|
57376
|
+
"get": {
|
|
57377
|
+
"description": "The window's hires and complete departures, each side's combined production across ALL employers recorded inside the production window (default: the same window). Pass a prior window's movers with the current production window to see how past hires and exits perform now.",
|
|
57378
|
+
"operationId": "companyMoverProduction",
|
|
57379
|
+
"parameters": [
|
|
57380
|
+
{
|
|
57381
|
+
"description": "Company NMLS ID",
|
|
57382
|
+
"in": "path",
|
|
57383
|
+
"name": "nmlsId",
|
|
57384
|
+
"required": true,
|
|
57385
|
+
"schema": {
|
|
57386
|
+
"description": "Company NMLS ID",
|
|
57387
|
+
"type": "string"
|
|
57388
|
+
}
|
|
57389
|
+
},
|
|
57390
|
+
{
|
|
57391
|
+
"description": "Preset window when `from`/`to` are not given (default `last12Months`). Rolling periods start on the FIRST day of the month N months back and end today; a year is Jan 1 – Dec 31; `allTime` starts 2017-01-01, the earliest reliable registration data. Also selects the production period for volume/units.",
|
|
57392
|
+
"in": "query",
|
|
57393
|
+
"name": "period",
|
|
57394
|
+
"required": false,
|
|
57395
|
+
"schema": {
|
|
57396
|
+
"allOf": [
|
|
57397
|
+
{
|
|
57398
|
+
"$ref": "#/components/schemas/Period"
|
|
57399
|
+
},
|
|
57400
|
+
{
|
|
57401
|
+
"description": "Preset window when `from`/`to` are not given (default `last12Months`). Rolling periods start on the FIRST day of the month N months back and end today; a year is Jan 1 – Dec 31; `allTime` starts 2017-01-01, the earliest reliable registration data. Also selects the production period for volume/units."
|
|
57402
|
+
}
|
|
57403
|
+
]
|
|
57404
|
+
}
|
|
57405
|
+
},
|
|
57406
|
+
{
|
|
57407
|
+
"description": "Window start, inclusive (YYYY-MM-DD). Overrides `period`.",
|
|
57408
|
+
"in": "query",
|
|
57409
|
+
"name": "from",
|
|
57410
|
+
"required": false,
|
|
57411
|
+
"schema": {
|
|
57412
|
+
"description": "Window start, inclusive (YYYY-MM-DD). Overrides `period`.",
|
|
57413
|
+
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
|
|
57414
|
+
"type": "string"
|
|
57415
|
+
}
|
|
57416
|
+
},
|
|
57417
|
+
{
|
|
57418
|
+
"description": "Window end, inclusive (YYYY-MM-DD). Overrides `period`.",
|
|
57419
|
+
"in": "query",
|
|
57420
|
+
"name": "to",
|
|
57421
|
+
"required": false,
|
|
57422
|
+
"schema": {
|
|
57423
|
+
"description": "Window end, inclusive (YYYY-MM-DD). Overrides `period`.",
|
|
57424
|
+
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
|
|
57425
|
+
"type": "string"
|
|
57426
|
+
}
|
|
57427
|
+
},
|
|
57428
|
+
{
|
|
57429
|
+
"description": "Production window start, inclusive (YYYY-MM-DD). Defaults to the mover window's start.",
|
|
57430
|
+
"in": "query",
|
|
57431
|
+
"name": "productionFrom",
|
|
57432
|
+
"required": false,
|
|
57433
|
+
"schema": {
|
|
57434
|
+
"description": "Production window start, inclusive (YYYY-MM-DD). Defaults to the mover window's start.",
|
|
57435
|
+
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
|
|
57436
|
+
"type": "string"
|
|
57437
|
+
}
|
|
57438
|
+
},
|
|
57439
|
+
{
|
|
57440
|
+
"description": "Production window end, inclusive (YYYY-MM-DD). Defaults to the mover window's end.",
|
|
57441
|
+
"in": "query",
|
|
57442
|
+
"name": "productionTo",
|
|
57443
|
+
"required": false,
|
|
57444
|
+
"schema": {
|
|
57445
|
+
"description": "Production window end, inclusive (YYYY-MM-DD). Defaults to the mover window's end.",
|
|
57446
|
+
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
|
|
57447
|
+
"type": "string"
|
|
57448
|
+
}
|
|
57449
|
+
}
|
|
57450
|
+
],
|
|
57451
|
+
"responses": {
|
|
57452
|
+
"200": {
|
|
57453
|
+
"content": {
|
|
57454
|
+
"application/json": {
|
|
57455
|
+
"schema": {
|
|
57456
|
+
"$ref": "#/components/schemas/CompanyMoverProductionResponse"
|
|
57457
|
+
}
|
|
57458
|
+
}
|
|
57459
|
+
},
|
|
57460
|
+
"description": "Hires' and exits' production"
|
|
57461
|
+
},
|
|
57462
|
+
"400": {
|
|
57463
|
+
"content": {
|
|
57464
|
+
"application/json": {
|
|
57465
|
+
"schema": {
|
|
57466
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
57467
|
+
}
|
|
57468
|
+
}
|
|
57469
|
+
},
|
|
57470
|
+
"description": "Validation error"
|
|
57471
|
+
},
|
|
57472
|
+
"401": {
|
|
57473
|
+
"content": {
|
|
57474
|
+
"application/json": {
|
|
57475
|
+
"schema": {
|
|
57476
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
57477
|
+
}
|
|
57478
|
+
}
|
|
57479
|
+
},
|
|
57480
|
+
"description": "Unauthorized"
|
|
57481
|
+
},
|
|
57482
|
+
"403": {
|
|
57483
|
+
"content": {
|
|
57484
|
+
"application/json": {
|
|
57485
|
+
"schema": {
|
|
57486
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
57487
|
+
}
|
|
57488
|
+
}
|
|
57489
|
+
},
|
|
57490
|
+
"description": "Forbidden (authenticated, but missing required context — e.g. no active organization)"
|
|
57491
|
+
},
|
|
57492
|
+
"404": {
|
|
57493
|
+
"content": {
|
|
57494
|
+
"application/json": {
|
|
57495
|
+
"schema": {
|
|
57496
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
57497
|
+
}
|
|
57498
|
+
}
|
|
57499
|
+
},
|
|
57500
|
+
"description": "Not found"
|
|
57501
|
+
},
|
|
57502
|
+
"413": {
|
|
57503
|
+
"content": {
|
|
57504
|
+
"application/json": {
|
|
57505
|
+
"schema": {
|
|
57506
|
+
"$ref": "#/components/schemas/PayloadTooLarge"
|
|
57507
|
+
}
|
|
57508
|
+
}
|
|
57509
|
+
},
|
|
57510
|
+
"description": "Response payload too large — detail endpoint capped to fit Lambda response limits"
|
|
57511
|
+
},
|
|
57512
|
+
"503": {
|
|
57513
|
+
"content": {
|
|
57514
|
+
"application/json": {
|
|
57515
|
+
"schema": {
|
|
57516
|
+
"$ref": "#/components/schemas/SearchUnavailable"
|
|
57517
|
+
}
|
|
57518
|
+
}
|
|
57519
|
+
},
|
|
57520
|
+
"description": "Search timed out or the cluster is overloaded — retry after `Retry-After` seconds."
|
|
57521
|
+
}
|
|
57522
|
+
},
|
|
57523
|
+
"summary": "Combined production of a company's hires and exits",
|
|
57524
|
+
"tags": [
|
|
57525
|
+
"Companies"
|
|
57526
|
+
]
|
|
57527
|
+
}
|
|
57528
|
+
},
|
|
57144
57529
|
"/v1/companies/{nmlsId}/sponsored-individuals": {
|
|
57145
57530
|
"post": {
|
|
57146
57531
|
"operationId": "companySponsoredIndividuals",
|
|
@@ -77430,6 +77815,109 @@
|
|
|
77430
77815
|
]
|
|
77431
77816
|
}
|
|
77432
77817
|
},
|
|
77818
|
+
"/v1/originators/{nmlsId}/breakdowns/builders": {
|
|
77819
|
+
"post": {
|
|
77820
|
+
"description": "Ranks the home builders behind this LO's new-construction loans, by volume. A loan counts when `originatorLoans` with `flatFilters.hasBuilder: true` keeps it, and is credited to the `builderName` that list shows on its row (the parcel's newest builder-named sale, else the builder named on the loan or its builder seller of record) — so a row's `units` equals that list filtered to the builder. Spellings that differ only in case, spacing or punctuation are one row; `id` is that normalized key and `label` the most common spelling. Percentages are shares of the LO's whole loan population in scope, so rows do not sum to 100. More than 50,000 loans in scope is a 400 (narrow the period); `truncated` is set when the builder loans exceed that cap.",
|
|
77821
|
+
"operationId": "originatorBuilders",
|
|
77822
|
+
"parameters": [
|
|
77823
|
+
{
|
|
77824
|
+
"description": "Originator NMLS ID",
|
|
77825
|
+
"in": "path",
|
|
77826
|
+
"name": "nmlsId",
|
|
77827
|
+
"required": true,
|
|
77828
|
+
"schema": {
|
|
77829
|
+
"description": "Originator NMLS ID",
|
|
77830
|
+
"type": "string"
|
|
77831
|
+
}
|
|
77832
|
+
}
|
|
77833
|
+
],
|
|
77834
|
+
"requestBody": {
|
|
77835
|
+
"content": {
|
|
77836
|
+
"application/json": {
|
|
77837
|
+
"schema": {
|
|
77838
|
+
"$ref": "#/components/schemas/BreakdownRequest"
|
|
77839
|
+
}
|
|
77840
|
+
}
|
|
77841
|
+
}
|
|
77842
|
+
},
|
|
77843
|
+
"responses": {
|
|
77844
|
+
"200": {
|
|
77845
|
+
"content": {
|
|
77846
|
+
"application/json": {
|
|
77847
|
+
"schema": {
|
|
77848
|
+
"$ref": "#/components/schemas/BreakdownResponse"
|
|
77849
|
+
}
|
|
77850
|
+
}
|
|
77851
|
+
},
|
|
77852
|
+
"description": "Breakdown of the LO's builder loans by home builder"
|
|
77853
|
+
},
|
|
77854
|
+
"400": {
|
|
77855
|
+
"content": {
|
|
77856
|
+
"application/json": {
|
|
77857
|
+
"schema": {
|
|
77858
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
77859
|
+
}
|
|
77860
|
+
}
|
|
77861
|
+
},
|
|
77862
|
+
"description": "Validation error"
|
|
77863
|
+
},
|
|
77864
|
+
"401": {
|
|
77865
|
+
"content": {
|
|
77866
|
+
"application/json": {
|
|
77867
|
+
"schema": {
|
|
77868
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
77869
|
+
}
|
|
77870
|
+
}
|
|
77871
|
+
},
|
|
77872
|
+
"description": "Unauthorized"
|
|
77873
|
+
},
|
|
77874
|
+
"403": {
|
|
77875
|
+
"content": {
|
|
77876
|
+
"application/json": {
|
|
77877
|
+
"schema": {
|
|
77878
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
77879
|
+
}
|
|
77880
|
+
}
|
|
77881
|
+
},
|
|
77882
|
+
"description": "Forbidden (authenticated, but missing required context — e.g. no active organization)"
|
|
77883
|
+
},
|
|
77884
|
+
"404": {
|
|
77885
|
+
"content": {
|
|
77886
|
+
"application/json": {
|
|
77887
|
+
"schema": {
|
|
77888
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
77889
|
+
}
|
|
77890
|
+
}
|
|
77891
|
+
},
|
|
77892
|
+
"description": "Not found"
|
|
77893
|
+
},
|
|
77894
|
+
"413": {
|
|
77895
|
+
"content": {
|
|
77896
|
+
"application/json": {
|
|
77897
|
+
"schema": {
|
|
77898
|
+
"$ref": "#/components/schemas/PayloadTooLarge"
|
|
77899
|
+
}
|
|
77900
|
+
}
|
|
77901
|
+
},
|
|
77902
|
+
"description": "Response payload too large — detail endpoint capped to fit Lambda response limits"
|
|
77903
|
+
},
|
|
77904
|
+
"503": {
|
|
77905
|
+
"content": {
|
|
77906
|
+
"application/json": {
|
|
77907
|
+
"schema": {
|
|
77908
|
+
"$ref": "#/components/schemas/SearchUnavailable"
|
|
77909
|
+
}
|
|
77910
|
+
}
|
|
77911
|
+
},
|
|
77912
|
+
"description": "Search timed out or the cluster is overloaded — retry after `Retry-After` seconds."
|
|
77913
|
+
}
|
|
77914
|
+
},
|
|
77915
|
+
"summary": "Home builders on this LO's new-construction loans",
|
|
77916
|
+
"tags": [
|
|
77917
|
+
"Originators"
|
|
77918
|
+
]
|
|
77919
|
+
}
|
|
77920
|
+
},
|
|
77433
77921
|
"/v1/originators/{nmlsId}/breakdowns/cities": {
|
|
77434
77922
|
"post": {
|
|
77435
77923
|
"operationId": "originatorCitiesBreakdown",
|