@model-match/api 3.41.0 → 3.42.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-L3GbaiFd.d.mts → index-KGy1KIQe.d.mts} +346 -3
- package/dist/index.d.mts +2 -2
- package/dist/index.mjs +1 -1
- package/dist/slim/index.d.mts +27 -2
- package/dist/slim/index.mjs +107 -2
- package/dist/{src-o5p0n_5A.mjs → src-CCTsE9Lr.mjs} +105 -0
- package/openapi.json +971 -156
- package/package.json +2 -2
package/openapi.json
CHANGED
|
@@ -35158,6 +35158,47 @@
|
|
|
35158
35158
|
},
|
|
35159
35159
|
"type": "object"
|
|
35160
35160
|
},
|
|
35161
|
+
"OfficeCrmListFilter": {
|
|
35162
|
+
"additionalProperties": false,
|
|
35163
|
+
"description": "Scope the result to the caller's CRM. Resolved against the caller's ACTIVE WORKSPACE at query time — list membership is read server-side, so the request never carries member ids. Only real-estate office members count; people, mortgage companies, branches and manual (unlinked) records on the same list are ignored. `mode: \"in\"` with no matching members returns an empty page (not an unfiltered one). Errors: 400 `crm_list_requires_workspace` when the caller has no active workspace (API-key / OAuth callers must select an organization), 403 / 404 when a named list is not visible to the caller or does not exist, and 400 `crm_list_too_large` when the selected lists hold more than 50,000 offices in total — narrow the selection rather than get a silently partial answer.",
|
|
35164
|
+
"properties": {
|
|
35165
|
+
"lists": {
|
|
35166
|
+
"anyOf": [
|
|
35167
|
+
{
|
|
35168
|
+
"description": "Every list in the caller's workspace that the caller can see (own, org-wide, or shared with them) and that holds this kind of record — People lists for originators and agents, Company lists for companies.",
|
|
35169
|
+
"enum": [
|
|
35170
|
+
"any"
|
|
35171
|
+
],
|
|
35172
|
+
"type": "string"
|
|
35173
|
+
},
|
|
35174
|
+
{
|
|
35175
|
+
"description": "Specific CRM list ids (1–50).",
|
|
35176
|
+
"items": {
|
|
35177
|
+
"minLength": 1,
|
|
35178
|
+
"type": "string"
|
|
35179
|
+
},
|
|
35180
|
+
"maxItems": 50,
|
|
35181
|
+
"minItems": 1,
|
|
35182
|
+
"type": "array"
|
|
35183
|
+
}
|
|
35184
|
+
],
|
|
35185
|
+
"description": "Which lists: `\"any\"` for every Company list the caller can see, or an array of list ids. Membership is the UNION across the selected lists."
|
|
35186
|
+
},
|
|
35187
|
+
"mode": {
|
|
35188
|
+
"description": "`in` — only offices who are a member of the selected list(s). `notIn` — exclude every office who is a member of the selected list(s); everyone else passes, including offices on none of your lists.",
|
|
35189
|
+
"enum": [
|
|
35190
|
+
"in",
|
|
35191
|
+
"notIn"
|
|
35192
|
+
],
|
|
35193
|
+
"type": "string"
|
|
35194
|
+
}
|
|
35195
|
+
},
|
|
35196
|
+
"required": [
|
|
35197
|
+
"mode",
|
|
35198
|
+
"lists"
|
|
35199
|
+
],
|
|
35200
|
+
"type": "object"
|
|
35201
|
+
},
|
|
35161
35202
|
"OfficeDetail": {
|
|
35162
35203
|
"allOf": [
|
|
35163
35204
|
{
|
|
@@ -35165,10 +35206,6 @@
|
|
|
35165
35206
|
},
|
|
35166
35207
|
{
|
|
35167
35208
|
"properties": {
|
|
35168
|
-
"email": {
|
|
35169
|
-
"nullable": true,
|
|
35170
|
-
"type": "string"
|
|
35171
|
-
},
|
|
35172
35209
|
"fullAddress": {
|
|
35173
35210
|
"nullable": true,
|
|
35174
35211
|
"type": "string"
|
|
@@ -35177,10 +35214,6 @@
|
|
|
35177
35214
|
"nullable": true,
|
|
35178
35215
|
"type": "string"
|
|
35179
35216
|
},
|
|
35180
|
-
"phone": {
|
|
35181
|
-
"nullable": true,
|
|
35182
|
-
"type": "string"
|
|
35183
|
-
},
|
|
35184
35217
|
"totalListPriceActive": {
|
|
35185
35218
|
"description": "Total list price of active listings at this office",
|
|
35186
35219
|
"nullable": true,
|
|
@@ -35236,9 +35269,49 @@
|
|
|
35236
35269
|
"avgListPrice": {
|
|
35237
35270
|
"$ref": "#/components/schemas/NumericFilterValue"
|
|
35238
35271
|
},
|
|
35272
|
+
"avgMortgagedBuyerLoanAmount": {
|
|
35273
|
+
"allOf": [
|
|
35274
|
+
{
|
|
35275
|
+
"$ref": "#/components/schemas/NumericFilterValue"
|
|
35276
|
+
},
|
|
35277
|
+
{
|
|
35278
|
+
"description": "Mean loan size on the office's financed BUYER-side deals in the period."
|
|
35279
|
+
}
|
|
35280
|
+
]
|
|
35281
|
+
},
|
|
35282
|
+
"avgMortgagedLoanAmount": {
|
|
35283
|
+
"allOf": [
|
|
35284
|
+
{
|
|
35285
|
+
"$ref": "#/components/schemas/NumericFilterValue"
|
|
35286
|
+
},
|
|
35287
|
+
{
|
|
35288
|
+
"description": "Mean loan size on the office's financed deals in the period (either side)."
|
|
35289
|
+
}
|
|
35290
|
+
]
|
|
35291
|
+
},
|
|
35292
|
+
"avgMortgagedSellerLoanAmount": {
|
|
35293
|
+
"allOf": [
|
|
35294
|
+
{
|
|
35295
|
+
"$ref": "#/components/schemas/NumericFilterValue"
|
|
35296
|
+
},
|
|
35297
|
+
{
|
|
35298
|
+
"description": "Mean loan size on the office's financed LISTING-side deals (the buyer's loan) in the period."
|
|
35299
|
+
}
|
|
35300
|
+
]
|
|
35301
|
+
},
|
|
35239
35302
|
"avgSalePrice": {
|
|
35240
35303
|
"$ref": "#/components/schemas/NumericFilterValue"
|
|
35241
35304
|
},
|
|
35305
|
+
"builderCount": {
|
|
35306
|
+
"allOf": [
|
|
35307
|
+
{
|
|
35308
|
+
"$ref": "#/components/schemas/NumericFilterValue"
|
|
35309
|
+
},
|
|
35310
|
+
{
|
|
35311
|
+
"description": "Distinct home builders on the office's deals in the period — `{gt: 0}` = works with builders."
|
|
35312
|
+
}
|
|
35313
|
+
]
|
|
35314
|
+
},
|
|
35242
35315
|
"buyerUnits": {
|
|
35243
35316
|
"$ref": "#/components/schemas/NumericFilterValue"
|
|
35244
35317
|
},
|
|
@@ -35251,6 +35324,16 @@
|
|
|
35251
35324
|
"company": {
|
|
35252
35325
|
"$ref": "#/components/schemas/TextFilterValue"
|
|
35253
35326
|
},
|
|
35327
|
+
"county": {
|
|
35328
|
+
"allOf": [
|
|
35329
|
+
{
|
|
35330
|
+
"$ref": "#/components/schemas/TextFilterValue"
|
|
35331
|
+
},
|
|
35332
|
+
{
|
|
35333
|
+
"description": "Office address COUNTY: a name (`Travis`, with `state` when ambiguous), a 5-digit FIPS (`48453`) or a dictionary county id; an array matches any. Matches when the office's geocoded point lies inside the county boundary (no geocode = no match). Unknown county = 400."
|
|
35334
|
+
}
|
|
35335
|
+
]
|
|
35336
|
+
},
|
|
35254
35337
|
"dualUnits": {
|
|
35255
35338
|
"$ref": "#/components/schemas/NumericFilterValue"
|
|
35256
35339
|
},
|
|
@@ -35267,6 +35350,17 @@
|
|
|
35267
35350
|
],
|
|
35268
35351
|
"type": "string"
|
|
35269
35352
|
},
|
|
35353
|
+
"msa": {
|
|
35354
|
+
"$ref": "#/components/schemas/OfficeMsaFilterValue"
|
|
35355
|
+
},
|
|
35356
|
+
"namePrefix": {
|
|
35357
|
+
"description": "Prefix name search: every word must start a word of the name (\"keller wil\" → Keller Williams Realty). No fuzzy/nickname matching; relevance-ranked unless `sort` is set. Max 100 chars / 6 words (emails, URLs, phones ignored), else 400. Spelling variants of brokerage names also match (\"remax\" ↔ \"Re/Max\").",
|
|
35358
|
+
"minLength": 1,
|
|
35359
|
+
"type": "string"
|
|
35360
|
+
},
|
|
35361
|
+
"region": {
|
|
35362
|
+
"$ref": "#/components/schemas/OfficeRegionFilterValue"
|
|
35363
|
+
},
|
|
35270
35364
|
"sellerUnits": {
|
|
35271
35365
|
"$ref": "#/components/schemas/NumericFilterValue"
|
|
35272
35366
|
},
|
|
@@ -35300,12 +35394,36 @@
|
|
|
35300
35394
|
"advancedFilters": {
|
|
35301
35395
|
"$ref": "#/components/schemas/FilterNode"
|
|
35302
35396
|
},
|
|
35397
|
+
"builderShare": {
|
|
35398
|
+
"additionalProperties": false,
|
|
35399
|
+
"description": "Share of the office's deals in the period that named a home builder, as a 0–100 percent (Σ builder units / total units). Implies `builderCount > 0`.",
|
|
35400
|
+
"properties": {
|
|
35401
|
+
"gte": {
|
|
35402
|
+
"maximum": 100,
|
|
35403
|
+
"minimum": 0,
|
|
35404
|
+
"type": "number"
|
|
35405
|
+
},
|
|
35406
|
+
"lte": {
|
|
35407
|
+
"maximum": 100,
|
|
35408
|
+
"minimum": 0,
|
|
35409
|
+
"type": "number"
|
|
35410
|
+
}
|
|
35411
|
+
},
|
|
35412
|
+
"type": "object"
|
|
35413
|
+
},
|
|
35414
|
+
"crmList": {
|
|
35415
|
+
"$ref": "#/components/schemas/OfficeCrmListFilter"
|
|
35416
|
+
},
|
|
35303
35417
|
"filters": {
|
|
35304
35418
|
"$ref": "#/components/schemas/FilterNode"
|
|
35305
35419
|
},
|
|
35306
35420
|
"flatFilters": {
|
|
35307
35421
|
"$ref": "#/components/schemas/OfficeFlatFilters"
|
|
35308
35422
|
},
|
|
35423
|
+
"includeTopOriginator": {
|
|
35424
|
+
"description": "Add `topOriginator` to every row (the LO on the most buyer-side deals in the period). Off by default — it reads each office's LO list.",
|
|
35425
|
+
"type": "boolean"
|
|
35426
|
+
},
|
|
35309
35427
|
"lenderFilters": {
|
|
35310
35428
|
"items": {
|
|
35311
35429
|
"$ref": "#/components/schemas/LenderFilterEntry"
|
|
@@ -35362,6 +35480,146 @@
|
|
|
35362
35480
|
],
|
|
35363
35481
|
"type": "object"
|
|
35364
35482
|
},
|
|
35483
|
+
"OfficeMsaFilterValue": {
|
|
35484
|
+
"anyOf": [
|
|
35485
|
+
{
|
|
35486
|
+
"type": "string"
|
|
35487
|
+
},
|
|
35488
|
+
{
|
|
35489
|
+
"items": {
|
|
35490
|
+
"type": "string"
|
|
35491
|
+
},
|
|
35492
|
+
"maxItems": 50,
|
|
35493
|
+
"minItems": 1,
|
|
35494
|
+
"type": "array"
|
|
35495
|
+
},
|
|
35496
|
+
{
|
|
35497
|
+
"nullable": true
|
|
35498
|
+
}
|
|
35499
|
+
],
|
|
35500
|
+
"description": "Office address METRO (MSA / CBSA): 5-digit CBSA code (`12420`) or metro name (`Austin Metro`); an array matches any. The office point inside any member county. Unknown/ambiguous = 400 naming candidates."
|
|
35501
|
+
},
|
|
35502
|
+
"OfficeNameSuggestRequest": {
|
|
35503
|
+
"additionalProperties": false,
|
|
35504
|
+
"properties": {
|
|
35505
|
+
"limit": {
|
|
35506
|
+
"description": "Max names (default 20).",
|
|
35507
|
+
"maximum": 50,
|
|
35508
|
+
"minimum": 1,
|
|
35509
|
+
"type": "integer"
|
|
35510
|
+
},
|
|
35511
|
+
"query": {
|
|
35512
|
+
"description": "The start of an office name (≥ 2 chars), matched as a phrase prefix on the name's words.",
|
|
35513
|
+
"maxLength": 100,
|
|
35514
|
+
"minLength": 2,
|
|
35515
|
+
"type": "string"
|
|
35516
|
+
}
|
|
35517
|
+
},
|
|
35518
|
+
"required": [
|
|
35519
|
+
"query"
|
|
35520
|
+
],
|
|
35521
|
+
"type": "object"
|
|
35522
|
+
},
|
|
35523
|
+
"OfficeNameSuggestResponse": {
|
|
35524
|
+
"properties": {
|
|
35525
|
+
"data": {
|
|
35526
|
+
"items": {
|
|
35527
|
+
"properties": {
|
|
35528
|
+
"agentCount": {
|
|
35529
|
+
"description": "Agents across every office with this name",
|
|
35530
|
+
"type": "number"
|
|
35531
|
+
},
|
|
35532
|
+
"name": {
|
|
35533
|
+
"description": "The office name as stored (lowercase) — pass it back as `company` on `listOffices`, or as `currentOffice` / `office` on `listAgents`.",
|
|
35534
|
+
"type": "string"
|
|
35535
|
+
},
|
|
35536
|
+
"officeCount": {
|
|
35537
|
+
"description": "Offices with this name",
|
|
35538
|
+
"type": "number"
|
|
35539
|
+
}
|
|
35540
|
+
},
|
|
35541
|
+
"required": [
|
|
35542
|
+
"name",
|
|
35543
|
+
"agentCount",
|
|
35544
|
+
"officeCount"
|
|
35545
|
+
],
|
|
35546
|
+
"type": "object"
|
|
35547
|
+
},
|
|
35548
|
+
"type": "array"
|
|
35549
|
+
}
|
|
35550
|
+
},
|
|
35551
|
+
"required": [
|
|
35552
|
+
"data"
|
|
35553
|
+
],
|
|
35554
|
+
"type": "object"
|
|
35555
|
+
},
|
|
35556
|
+
"OfficeRegionFilterValue": {
|
|
35557
|
+
"anyOf": [
|
|
35558
|
+
{
|
|
35559
|
+
"enum": [
|
|
35560
|
+
"northeast",
|
|
35561
|
+
"northeast-division-1",
|
|
35562
|
+
"northeast-division-2",
|
|
35563
|
+
"midwest",
|
|
35564
|
+
"midwest-division-3",
|
|
35565
|
+
"midwest-division-4",
|
|
35566
|
+
"south",
|
|
35567
|
+
"south-division-5",
|
|
35568
|
+
"south-division-6",
|
|
35569
|
+
"south-division-7",
|
|
35570
|
+
"west",
|
|
35571
|
+
"west-division-8",
|
|
35572
|
+
"west-division-9"
|
|
35573
|
+
],
|
|
35574
|
+
"type": "string"
|
|
35575
|
+
},
|
|
35576
|
+
{
|
|
35577
|
+
"items": {
|
|
35578
|
+
"enum": [
|
|
35579
|
+
"northeast",
|
|
35580
|
+
"northeast-division-1",
|
|
35581
|
+
"northeast-division-2",
|
|
35582
|
+
"midwest",
|
|
35583
|
+
"midwest-division-3",
|
|
35584
|
+
"midwest-division-4",
|
|
35585
|
+
"south",
|
|
35586
|
+
"south-division-5",
|
|
35587
|
+
"south-division-6",
|
|
35588
|
+
"south-division-7",
|
|
35589
|
+
"west",
|
|
35590
|
+
"west-division-8",
|
|
35591
|
+
"west-division-9"
|
|
35592
|
+
],
|
|
35593
|
+
"type": "string"
|
|
35594
|
+
},
|
|
35595
|
+
"maxItems": 50,
|
|
35596
|
+
"minItems": 1,
|
|
35597
|
+
"type": "array"
|
|
35598
|
+
},
|
|
35599
|
+
{
|
|
35600
|
+
"nullable": true
|
|
35601
|
+
}
|
|
35602
|
+
],
|
|
35603
|
+
"description": "Office address CENSUS REGION / DIVISION (`<region>-division-<n>`, 1–9) — offices in ANY state of it. An array matches any."
|
|
35604
|
+
},
|
|
35605
|
+
"OfficeScoredBreakdownRequest": {
|
|
35606
|
+
"properties": {
|
|
35607
|
+
"bySide": {
|
|
35608
|
+
"description": "Also return the `buyer` and `listing` views under `bySide`, computed in the same query — each identical to calling again with that `side`. Use instead of one call per side. `pagination.cursor` pages every view in step (each view's own `cursor` is absent once it ends).",
|
|
35609
|
+
"type": "boolean"
|
|
35610
|
+
},
|
|
35611
|
+
"period": {
|
|
35612
|
+
"$ref": "#/components/schemas/Period"
|
|
35613
|
+
},
|
|
35614
|
+
"side": {
|
|
35615
|
+
"$ref": "#/components/schemas/AgentSide"
|
|
35616
|
+
},
|
|
35617
|
+
"sort": {
|
|
35618
|
+
"$ref": "#/components/schemas/BreakdownSort"
|
|
35619
|
+
}
|
|
35620
|
+
},
|
|
35621
|
+
"type": "object"
|
|
35622
|
+
},
|
|
35365
35623
|
"OfficeSummary": {
|
|
35366
35624
|
"properties": {
|
|
35367
35625
|
"activeListings": {
|
|
@@ -35426,6 +35684,11 @@
|
|
|
35426
35684
|
"nullable": true,
|
|
35427
35685
|
"type": "number"
|
|
35428
35686
|
},
|
|
35687
|
+
"email": {
|
|
35688
|
+
"description": "Office email (list rows since 2026-10-15; was detail-only)",
|
|
35689
|
+
"nullable": true,
|
|
35690
|
+
"type": "string"
|
|
35691
|
+
},
|
|
35429
35692
|
"id": {
|
|
35430
35693
|
"description": "Office key (mm_office_key)",
|
|
35431
35694
|
"type": "string"
|
|
@@ -35438,6 +35701,11 @@
|
|
|
35438
35701
|
"nullable": true,
|
|
35439
35702
|
"type": "string"
|
|
35440
35703
|
},
|
|
35704
|
+
"phone": {
|
|
35705
|
+
"description": "Office phone (list rows since 2026-10-15; was detail-only)",
|
|
35706
|
+
"nullable": true,
|
|
35707
|
+
"type": "string"
|
|
35708
|
+
},
|
|
35441
35709
|
"sellerUnits": {
|
|
35442
35710
|
"nullable": true,
|
|
35443
35711
|
"type": "number"
|
|
@@ -35459,6 +35727,50 @@
|
|
|
35459
35727
|
"nullable": true,
|
|
35460
35728
|
"type": "number"
|
|
35461
35729
|
},
|
|
35730
|
+
"topOriginator": {
|
|
35731
|
+
"description": "Present only when the request set `includeTopOriginator`: the loan officer on the most of this office's BUYER-side deals in the period (ties → more volume, then lower NMLS id), named from the LO's own profile with their current employer. `null` when no buyer-side deal had a tracked LO.",
|
|
35732
|
+
"nullable": true,
|
|
35733
|
+
"properties": {
|
|
35734
|
+
"buyerUnits": {
|
|
35735
|
+
"type": "number"
|
|
35736
|
+
},
|
|
35737
|
+
"buyerVolume": {
|
|
35738
|
+
"type": "number"
|
|
35739
|
+
},
|
|
35740
|
+
"company": {
|
|
35741
|
+
"nullable": true,
|
|
35742
|
+
"properties": {
|
|
35743
|
+
"name": {
|
|
35744
|
+
"nullable": true,
|
|
35745
|
+
"type": "string"
|
|
35746
|
+
},
|
|
35747
|
+
"nmlsId": {
|
|
35748
|
+
"nullable": true,
|
|
35749
|
+
"type": "string"
|
|
35750
|
+
}
|
|
35751
|
+
},
|
|
35752
|
+
"required": [
|
|
35753
|
+
"name",
|
|
35754
|
+
"nmlsId"
|
|
35755
|
+
],
|
|
35756
|
+
"type": "object"
|
|
35757
|
+
},
|
|
35758
|
+
"name": {
|
|
35759
|
+
"type": "string"
|
|
35760
|
+
},
|
|
35761
|
+
"nmlsId": {
|
|
35762
|
+
"type": "string"
|
|
35763
|
+
}
|
|
35764
|
+
},
|
|
35765
|
+
"required": [
|
|
35766
|
+
"nmlsId",
|
|
35767
|
+
"name",
|
|
35768
|
+
"company",
|
|
35769
|
+
"buyerUnits",
|
|
35770
|
+
"buyerVolume"
|
|
35771
|
+
],
|
|
35772
|
+
"type": "object"
|
|
35773
|
+
},
|
|
35462
35774
|
"units": {
|
|
35463
35775
|
"nullable": true,
|
|
35464
35776
|
"type": "number"
|
|
@@ -46248,7 +46560,7 @@
|
|
|
46248
46560
|
"info": {
|
|
46249
46561
|
"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.",
|
|
46250
46562
|
"title": "ModelMatch API",
|
|
46251
|
-
"version": "3.
|
|
46563
|
+
"version": "3.102.0"
|
|
46252
46564
|
},
|
|
46253
46565
|
"openapi": "3.1.0",
|
|
46254
46566
|
"paths": {
|
|
@@ -75881,16 +76193,496 @@
|
|
|
75881
76193
|
},
|
|
75882
76194
|
"description": "Response payload too large — detail endpoint capped to fit Lambda response limits"
|
|
75883
76195
|
},
|
|
75884
|
-
"502": {
|
|
75885
|
-
"content": {
|
|
75886
|
-
"application/json": {
|
|
75887
|
-
"schema": {
|
|
75888
|
-
"$ref": "#/components/schemas/AccountServiceUnavailable"
|
|
75889
|
-
}
|
|
75890
|
-
}
|
|
75891
|
-
},
|
|
75892
|
-
"description": "Account service unavailable"
|
|
75893
|
-
},
|
|
76196
|
+
"502": {
|
|
76197
|
+
"content": {
|
|
76198
|
+
"application/json": {
|
|
76199
|
+
"schema": {
|
|
76200
|
+
"$ref": "#/components/schemas/AccountServiceUnavailable"
|
|
76201
|
+
}
|
|
76202
|
+
}
|
|
76203
|
+
},
|
|
76204
|
+
"description": "Account service unavailable"
|
|
76205
|
+
},
|
|
76206
|
+
"503": {
|
|
76207
|
+
"content": {
|
|
76208
|
+
"application/json": {
|
|
76209
|
+
"schema": {
|
|
76210
|
+
"$ref": "#/components/schemas/SearchUnavailable"
|
|
76211
|
+
}
|
|
76212
|
+
}
|
|
76213
|
+
},
|
|
76214
|
+
"description": "Search timed out or the cluster is overloaded — retry after `Retry-After` seconds."
|
|
76215
|
+
}
|
|
76216
|
+
},
|
|
76217
|
+
"summary": "Update the current caller's profile",
|
|
76218
|
+
"tags": [
|
|
76219
|
+
"Me"
|
|
76220
|
+
]
|
|
76221
|
+
}
|
|
76222
|
+
},
|
|
76223
|
+
"/v1/me/credits": {
|
|
76224
|
+
"get": {
|
|
76225
|
+
"description": "Balance split by bucket (cycle allowance, purchased on-demand, personal), the per-cycle allowance and on-demand unit price, and ledger totals over a window.\n\nThe window defaults to the current calendar month to date (UTC). Figures are for the caller's own membership in their active organization — the same organization the API meters requests against.",
|
|
76226
|
+
"operationId": "getMeCredits",
|
|
76227
|
+
"parameters": [
|
|
76228
|
+
{
|
|
76229
|
+
"description": "Usage window start (YYYY-MM-DD, inclusive)",
|
|
76230
|
+
"in": "query",
|
|
76231
|
+
"name": "startDate",
|
|
76232
|
+
"required": false,
|
|
76233
|
+
"schema": {
|
|
76234
|
+
"description": "Usage window start (YYYY-MM-DD, inclusive)",
|
|
76235
|
+
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
|
|
76236
|
+
"type": "string"
|
|
76237
|
+
}
|
|
76238
|
+
},
|
|
76239
|
+
{
|
|
76240
|
+
"description": "Usage window end (YYYY-MM-DD, inclusive)",
|
|
76241
|
+
"in": "query",
|
|
76242
|
+
"name": "endDate",
|
|
76243
|
+
"required": false,
|
|
76244
|
+
"schema": {
|
|
76245
|
+
"description": "Usage window end (YYYY-MM-DD, inclusive)",
|
|
76246
|
+
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
|
|
76247
|
+
"type": "string"
|
|
76248
|
+
}
|
|
76249
|
+
}
|
|
76250
|
+
],
|
|
76251
|
+
"responses": {
|
|
76252
|
+
"200": {
|
|
76253
|
+
"content": {
|
|
76254
|
+
"application/json": {
|
|
76255
|
+
"schema": {
|
|
76256
|
+
"$ref": "#/components/schemas/MeCreditsResponse"
|
|
76257
|
+
}
|
|
76258
|
+
}
|
|
76259
|
+
},
|
|
76260
|
+
"description": "Credit balance and usage"
|
|
76261
|
+
},
|
|
76262
|
+
"400": {
|
|
76263
|
+
"content": {
|
|
76264
|
+
"application/json": {
|
|
76265
|
+
"schema": {
|
|
76266
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
76267
|
+
}
|
|
76268
|
+
}
|
|
76269
|
+
},
|
|
76270
|
+
"description": "Validation error"
|
|
76271
|
+
},
|
|
76272
|
+
"401": {
|
|
76273
|
+
"content": {
|
|
76274
|
+
"application/json": {
|
|
76275
|
+
"schema": {
|
|
76276
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
76277
|
+
}
|
|
76278
|
+
}
|
|
76279
|
+
},
|
|
76280
|
+
"description": "Unauthorized"
|
|
76281
|
+
},
|
|
76282
|
+
"403": {
|
|
76283
|
+
"content": {
|
|
76284
|
+
"application/json": {
|
|
76285
|
+
"schema": {
|
|
76286
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
76287
|
+
}
|
|
76288
|
+
}
|
|
76289
|
+
},
|
|
76290
|
+
"description": "Forbidden (authenticated, but missing required context — e.g. no active organization)"
|
|
76291
|
+
},
|
|
76292
|
+
"404": {
|
|
76293
|
+
"content": {
|
|
76294
|
+
"application/json": {
|
|
76295
|
+
"schema": {
|
|
76296
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
76297
|
+
}
|
|
76298
|
+
}
|
|
76299
|
+
},
|
|
76300
|
+
"description": "Not found"
|
|
76301
|
+
},
|
|
76302
|
+
"413": {
|
|
76303
|
+
"content": {
|
|
76304
|
+
"application/json": {
|
|
76305
|
+
"schema": {
|
|
76306
|
+
"$ref": "#/components/schemas/PayloadTooLarge"
|
|
76307
|
+
}
|
|
76308
|
+
}
|
|
76309
|
+
},
|
|
76310
|
+
"description": "Response payload too large — detail endpoint capped to fit Lambda response limits"
|
|
76311
|
+
},
|
|
76312
|
+
"502": {
|
|
76313
|
+
"content": {
|
|
76314
|
+
"application/json": {
|
|
76315
|
+
"schema": {
|
|
76316
|
+
"$ref": "#/components/schemas/AccountServiceUnavailable"
|
|
76317
|
+
}
|
|
76318
|
+
}
|
|
76319
|
+
},
|
|
76320
|
+
"description": "Account service unavailable"
|
|
76321
|
+
},
|
|
76322
|
+
"503": {
|
|
76323
|
+
"content": {
|
|
76324
|
+
"application/json": {
|
|
76325
|
+
"schema": {
|
|
76326
|
+
"$ref": "#/components/schemas/SearchUnavailable"
|
|
76327
|
+
}
|
|
76328
|
+
}
|
|
76329
|
+
},
|
|
76330
|
+
"description": "Search timed out or the cluster is overloaded — retry after `Retry-After` seconds."
|
|
76331
|
+
}
|
|
76332
|
+
},
|
|
76333
|
+
"summary": "Get the caller's credit balance and usage",
|
|
76334
|
+
"tags": [
|
|
76335
|
+
"Me"
|
|
76336
|
+
]
|
|
76337
|
+
}
|
|
76338
|
+
},
|
|
76339
|
+
"/v1/me/plan": {
|
|
76340
|
+
"get": {
|
|
76341
|
+
"description": "The active organization's resolved plan (with its limit map), the subscription status backing it, and the plan grants attached to the organization and to the user.\n\n`plan` is null when the workspace has no active, trialing, or past-due subscription. No billing details (invoices, payment methods) are exposed.",
|
|
76342
|
+
"operationId": "getMePlan",
|
|
76343
|
+
"responses": {
|
|
76344
|
+
"200": {
|
|
76345
|
+
"content": {
|
|
76346
|
+
"application/json": {
|
|
76347
|
+
"schema": {
|
|
76348
|
+
"$ref": "#/components/schemas/MePlanResponse"
|
|
76349
|
+
}
|
|
76350
|
+
}
|
|
76351
|
+
},
|
|
76352
|
+
"description": "The caller's plan"
|
|
76353
|
+
},
|
|
76354
|
+
"400": {
|
|
76355
|
+
"content": {
|
|
76356
|
+
"application/json": {
|
|
76357
|
+
"schema": {
|
|
76358
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
76359
|
+
}
|
|
76360
|
+
}
|
|
76361
|
+
},
|
|
76362
|
+
"description": "Validation error"
|
|
76363
|
+
},
|
|
76364
|
+
"401": {
|
|
76365
|
+
"content": {
|
|
76366
|
+
"application/json": {
|
|
76367
|
+
"schema": {
|
|
76368
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
76369
|
+
}
|
|
76370
|
+
}
|
|
76371
|
+
},
|
|
76372
|
+
"description": "Unauthorized"
|
|
76373
|
+
},
|
|
76374
|
+
"403": {
|
|
76375
|
+
"content": {
|
|
76376
|
+
"application/json": {
|
|
76377
|
+
"schema": {
|
|
76378
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
76379
|
+
}
|
|
76380
|
+
}
|
|
76381
|
+
},
|
|
76382
|
+
"description": "Forbidden (authenticated, but missing required context — e.g. no active organization)"
|
|
76383
|
+
},
|
|
76384
|
+
"404": {
|
|
76385
|
+
"content": {
|
|
76386
|
+
"application/json": {
|
|
76387
|
+
"schema": {
|
|
76388
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
76389
|
+
}
|
|
76390
|
+
}
|
|
76391
|
+
},
|
|
76392
|
+
"description": "Not found"
|
|
76393
|
+
},
|
|
76394
|
+
"413": {
|
|
76395
|
+
"content": {
|
|
76396
|
+
"application/json": {
|
|
76397
|
+
"schema": {
|
|
76398
|
+
"$ref": "#/components/schemas/PayloadTooLarge"
|
|
76399
|
+
}
|
|
76400
|
+
}
|
|
76401
|
+
},
|
|
76402
|
+
"description": "Response payload too large — detail endpoint capped to fit Lambda response limits"
|
|
76403
|
+
},
|
|
76404
|
+
"502": {
|
|
76405
|
+
"content": {
|
|
76406
|
+
"application/json": {
|
|
76407
|
+
"schema": {
|
|
76408
|
+
"$ref": "#/components/schemas/AccountServiceUnavailable"
|
|
76409
|
+
}
|
|
76410
|
+
}
|
|
76411
|
+
},
|
|
76412
|
+
"description": "Account service unavailable"
|
|
76413
|
+
},
|
|
76414
|
+
"503": {
|
|
76415
|
+
"content": {
|
|
76416
|
+
"application/json": {
|
|
76417
|
+
"schema": {
|
|
76418
|
+
"$ref": "#/components/schemas/SearchUnavailable"
|
|
76419
|
+
}
|
|
76420
|
+
}
|
|
76421
|
+
},
|
|
76422
|
+
"description": "Search timed out or the cluster is overloaded — retry after `Retry-After` seconds."
|
|
76423
|
+
}
|
|
76424
|
+
},
|
|
76425
|
+
"summary": "Get the caller's current plan",
|
|
76426
|
+
"tags": [
|
|
76427
|
+
"Me"
|
|
76428
|
+
]
|
|
76429
|
+
}
|
|
76430
|
+
},
|
|
76431
|
+
"/v1/offices": {
|
|
76432
|
+
"post": {
|
|
76433
|
+
"description": "NOT NMLS mortgage branches — use `/branches` for those. Returns office name, address, agent count, coordinates, and office-level production for the selected period. Default sort is by agent count descending. If you only need how many offices match and not the records themselves, send the same request body to `countOffices`.",
|
|
76434
|
+
"operationId": "listOffices",
|
|
76435
|
+
"requestBody": {
|
|
76436
|
+
"content": {
|
|
76437
|
+
"application/json": {
|
|
76438
|
+
"schema": {
|
|
76439
|
+
"$ref": "#/components/schemas/OfficeListRequest"
|
|
76440
|
+
}
|
|
76441
|
+
}
|
|
76442
|
+
}
|
|
76443
|
+
},
|
|
76444
|
+
"responses": {
|
|
76445
|
+
"200": {
|
|
76446
|
+
"content": {
|
|
76447
|
+
"application/json": {
|
|
76448
|
+
"schema": {
|
|
76449
|
+
"$ref": "#/components/schemas/OfficeListResponse"
|
|
76450
|
+
}
|
|
76451
|
+
}
|
|
76452
|
+
},
|
|
76453
|
+
"description": "Paginated list of offices"
|
|
76454
|
+
},
|
|
76455
|
+
"400": {
|
|
76456
|
+
"content": {
|
|
76457
|
+
"application/json": {
|
|
76458
|
+
"schema": {
|
|
76459
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
76460
|
+
}
|
|
76461
|
+
}
|
|
76462
|
+
},
|
|
76463
|
+
"description": "Validation error"
|
|
76464
|
+
},
|
|
76465
|
+
"401": {
|
|
76466
|
+
"content": {
|
|
76467
|
+
"application/json": {
|
|
76468
|
+
"schema": {
|
|
76469
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
76470
|
+
}
|
|
76471
|
+
}
|
|
76472
|
+
},
|
|
76473
|
+
"description": "Unauthorized"
|
|
76474
|
+
},
|
|
76475
|
+
"403": {
|
|
76476
|
+
"content": {
|
|
76477
|
+
"application/json": {
|
|
76478
|
+
"schema": {
|
|
76479
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
76480
|
+
}
|
|
76481
|
+
}
|
|
76482
|
+
},
|
|
76483
|
+
"description": "Forbidden (authenticated, but missing required context — e.g. no active organization)"
|
|
76484
|
+
},
|
|
76485
|
+
"404": {
|
|
76486
|
+
"content": {
|
|
76487
|
+
"application/json": {
|
|
76488
|
+
"schema": {
|
|
76489
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
76490
|
+
}
|
|
76491
|
+
}
|
|
76492
|
+
},
|
|
76493
|
+
"description": "Not found"
|
|
76494
|
+
},
|
|
76495
|
+
"413": {
|
|
76496
|
+
"content": {
|
|
76497
|
+
"application/json": {
|
|
76498
|
+
"schema": {
|
|
76499
|
+
"$ref": "#/components/schemas/PayloadTooLarge"
|
|
76500
|
+
}
|
|
76501
|
+
}
|
|
76502
|
+
},
|
|
76503
|
+
"description": "Response payload too large — detail endpoint capped to fit Lambda response limits"
|
|
76504
|
+
},
|
|
76505
|
+
"503": {
|
|
76506
|
+
"content": {
|
|
76507
|
+
"application/json": {
|
|
76508
|
+
"schema": {
|
|
76509
|
+
"$ref": "#/components/schemas/SearchUnavailable"
|
|
76510
|
+
}
|
|
76511
|
+
}
|
|
76512
|
+
},
|
|
76513
|
+
"description": "Search timed out or the cluster is overloaded — retry after `Retry-After` seconds."
|
|
76514
|
+
}
|
|
76515
|
+
},
|
|
76516
|
+
"summary": "Search real-estate offices with filters",
|
|
76517
|
+
"tags": [
|
|
76518
|
+
"Offices"
|
|
76519
|
+
]
|
|
76520
|
+
}
|
|
76521
|
+
},
|
|
76522
|
+
"/v1/offices/agents": {
|
|
76523
|
+
"post": {
|
|
76524
|
+
"operationId": "officeAgents",
|
|
76525
|
+
"requestBody": {
|
|
76526
|
+
"content": {
|
|
76527
|
+
"application/json": {
|
|
76528
|
+
"schema": {
|
|
76529
|
+
"$ref": "#/components/schemas/OfficeAgentsRequest"
|
|
76530
|
+
}
|
|
76531
|
+
}
|
|
76532
|
+
}
|
|
76533
|
+
},
|
|
76534
|
+
"responses": {
|
|
76535
|
+
"200": {
|
|
76536
|
+
"content": {
|
|
76537
|
+
"application/json": {
|
|
76538
|
+
"schema": {
|
|
76539
|
+
"$ref": "#/components/schemas/AgentListResponse"
|
|
76540
|
+
}
|
|
76541
|
+
}
|
|
76542
|
+
},
|
|
76543
|
+
"description": "Paginated list of agents at the office"
|
|
76544
|
+
},
|
|
76545
|
+
"400": {
|
|
76546
|
+
"content": {
|
|
76547
|
+
"application/json": {
|
|
76548
|
+
"schema": {
|
|
76549
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
76550
|
+
}
|
|
76551
|
+
}
|
|
76552
|
+
},
|
|
76553
|
+
"description": "Validation error"
|
|
76554
|
+
},
|
|
76555
|
+
"401": {
|
|
76556
|
+
"content": {
|
|
76557
|
+
"application/json": {
|
|
76558
|
+
"schema": {
|
|
76559
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
76560
|
+
}
|
|
76561
|
+
}
|
|
76562
|
+
},
|
|
76563
|
+
"description": "Unauthorized"
|
|
76564
|
+
},
|
|
76565
|
+
"403": {
|
|
76566
|
+
"content": {
|
|
76567
|
+
"application/json": {
|
|
76568
|
+
"schema": {
|
|
76569
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
76570
|
+
}
|
|
76571
|
+
}
|
|
76572
|
+
},
|
|
76573
|
+
"description": "Forbidden (authenticated, but missing required context — e.g. no active organization)"
|
|
76574
|
+
},
|
|
76575
|
+
"404": {
|
|
76576
|
+
"content": {
|
|
76577
|
+
"application/json": {
|
|
76578
|
+
"schema": {
|
|
76579
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
76580
|
+
}
|
|
76581
|
+
}
|
|
76582
|
+
},
|
|
76583
|
+
"description": "Not found"
|
|
76584
|
+
},
|
|
76585
|
+
"413": {
|
|
76586
|
+
"content": {
|
|
76587
|
+
"application/json": {
|
|
76588
|
+
"schema": {
|
|
76589
|
+
"$ref": "#/components/schemas/PayloadTooLarge"
|
|
76590
|
+
}
|
|
76591
|
+
}
|
|
76592
|
+
},
|
|
76593
|
+
"description": "Response payload too large — detail endpoint capped to fit Lambda response limits"
|
|
76594
|
+
},
|
|
76595
|
+
"503": {
|
|
76596
|
+
"content": {
|
|
76597
|
+
"application/json": {
|
|
76598
|
+
"schema": {
|
|
76599
|
+
"$ref": "#/components/schemas/SearchUnavailable"
|
|
76600
|
+
}
|
|
76601
|
+
}
|
|
76602
|
+
},
|
|
76603
|
+
"description": "Search timed out or the cluster is overloaded — retry after `Retry-After` seconds."
|
|
76604
|
+
}
|
|
76605
|
+
},
|
|
76606
|
+
"summary": "Agents at an office",
|
|
76607
|
+
"tags": [
|
|
76608
|
+
"Offices"
|
|
76609
|
+
]
|
|
76610
|
+
}
|
|
76611
|
+
},
|
|
76612
|
+
"/v1/offices/count": {
|
|
76613
|
+
"post": {
|
|
76614
|
+
"description": "Return the exact number of offices matching the given filters. Accepts the same request body as `listOffices` (pagination and sort are ignored). Use this when you only need a total; to get the matching offices themselves, send the same request body to `listOffices`.",
|
|
76615
|
+
"operationId": "countOffices",
|
|
76616
|
+
"requestBody": {
|
|
76617
|
+
"content": {
|
|
76618
|
+
"application/json": {
|
|
76619
|
+
"schema": {
|
|
76620
|
+
"$ref": "#/components/schemas/OfficeListRequest"
|
|
76621
|
+
}
|
|
76622
|
+
}
|
|
76623
|
+
}
|
|
76624
|
+
},
|
|
76625
|
+
"responses": {
|
|
76626
|
+
"200": {
|
|
76627
|
+
"content": {
|
|
76628
|
+
"application/json": {
|
|
76629
|
+
"schema": {
|
|
76630
|
+
"$ref": "#/components/schemas/CountResponse"
|
|
76631
|
+
}
|
|
76632
|
+
}
|
|
76633
|
+
},
|
|
76634
|
+
"description": "Exact count of matching offices"
|
|
76635
|
+
},
|
|
76636
|
+
"400": {
|
|
76637
|
+
"content": {
|
|
76638
|
+
"application/json": {
|
|
76639
|
+
"schema": {
|
|
76640
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
76641
|
+
}
|
|
76642
|
+
}
|
|
76643
|
+
},
|
|
76644
|
+
"description": "Validation error"
|
|
76645
|
+
},
|
|
76646
|
+
"401": {
|
|
76647
|
+
"content": {
|
|
76648
|
+
"application/json": {
|
|
76649
|
+
"schema": {
|
|
76650
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
76651
|
+
}
|
|
76652
|
+
}
|
|
76653
|
+
},
|
|
76654
|
+
"description": "Unauthorized"
|
|
76655
|
+
},
|
|
76656
|
+
"403": {
|
|
76657
|
+
"content": {
|
|
76658
|
+
"application/json": {
|
|
76659
|
+
"schema": {
|
|
76660
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
76661
|
+
}
|
|
76662
|
+
}
|
|
76663
|
+
},
|
|
76664
|
+
"description": "Forbidden (authenticated, but missing required context — e.g. no active organization)"
|
|
76665
|
+
},
|
|
76666
|
+
"404": {
|
|
76667
|
+
"content": {
|
|
76668
|
+
"application/json": {
|
|
76669
|
+
"schema": {
|
|
76670
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
76671
|
+
}
|
|
76672
|
+
}
|
|
76673
|
+
},
|
|
76674
|
+
"description": "Not found"
|
|
76675
|
+
},
|
|
76676
|
+
"413": {
|
|
76677
|
+
"content": {
|
|
76678
|
+
"application/json": {
|
|
76679
|
+
"schema": {
|
|
76680
|
+
"$ref": "#/components/schemas/PayloadTooLarge"
|
|
76681
|
+
}
|
|
76682
|
+
}
|
|
76683
|
+
},
|
|
76684
|
+
"description": "Response payload too large — detail endpoint capped to fit Lambda response limits"
|
|
76685
|
+
},
|
|
75894
76686
|
"503": {
|
|
75895
76687
|
"content": {
|
|
75896
76688
|
"application/json": {
|
|
@@ -75902,50 +76694,36 @@
|
|
|
75902
76694
|
"description": "Search timed out or the cluster is overloaded — retry after `Retry-After` seconds."
|
|
75903
76695
|
}
|
|
75904
76696
|
},
|
|
75905
|
-
"summary": "
|
|
76697
|
+
"summary": "Count offices matching filters",
|
|
75906
76698
|
"tags": [
|
|
75907
|
-
"
|
|
75908
|
-
]
|
|
76699
|
+
"Offices"
|
|
76700
|
+
],
|
|
76701
|
+
"x-mm-records-via": "listOffices"
|
|
75909
76702
|
}
|
|
75910
76703
|
},
|
|
75911
|
-
"/v1/
|
|
75912
|
-
"
|
|
75913
|
-
"description": "
|
|
75914
|
-
"operationId": "
|
|
75915
|
-
"
|
|
75916
|
-
{
|
|
75917
|
-
"
|
|
75918
|
-
|
|
75919
|
-
|
|
75920
|
-
|
|
75921
|
-
"schema": {
|
|
75922
|
-
"description": "Usage window start (YYYY-MM-DD, inclusive)",
|
|
75923
|
-
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
|
|
75924
|
-
"type": "string"
|
|
75925
|
-
}
|
|
75926
|
-
},
|
|
75927
|
-
{
|
|
75928
|
-
"description": "Usage window end (YYYY-MM-DD, inclusive)",
|
|
75929
|
-
"in": "query",
|
|
75930
|
-
"name": "endDate",
|
|
75931
|
-
"required": false,
|
|
75932
|
-
"schema": {
|
|
75933
|
-
"description": "Usage window end (YYYY-MM-DD, inclusive)",
|
|
75934
|
-
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
|
|
75935
|
-
"type": "string"
|
|
76704
|
+
"/v1/offices/names": {
|
|
76705
|
+
"post": {
|
|
76706
|
+
"description": "Distinct real-estate office names starting with `query`, each with the agents and offices behind that name across all its offices — the picker for filters that match by office name (`listOffices` `company`, `listAgents` `currentOffice`). To find one office, use `instantSearch` or `listOffices` instead.",
|
|
76707
|
+
"operationId": "suggestOfficeNames",
|
|
76708
|
+
"requestBody": {
|
|
76709
|
+
"content": {
|
|
76710
|
+
"application/json": {
|
|
76711
|
+
"schema": {
|
|
76712
|
+
"$ref": "#/components/schemas/OfficeNameSuggestRequest"
|
|
76713
|
+
}
|
|
75936
76714
|
}
|
|
75937
76715
|
}
|
|
75938
|
-
|
|
76716
|
+
},
|
|
75939
76717
|
"responses": {
|
|
75940
76718
|
"200": {
|
|
75941
76719
|
"content": {
|
|
75942
76720
|
"application/json": {
|
|
75943
76721
|
"schema": {
|
|
75944
|
-
"$ref": "#/components/schemas/
|
|
76722
|
+
"$ref": "#/components/schemas/OfficeNameSuggestResponse"
|
|
75945
76723
|
}
|
|
75946
76724
|
}
|
|
75947
76725
|
},
|
|
75948
|
-
"description": "
|
|
76726
|
+
"description": "Matching office names"
|
|
75949
76727
|
},
|
|
75950
76728
|
"400": {
|
|
75951
76729
|
"content": {
|
|
@@ -75997,47 +76775,117 @@
|
|
|
75997
76775
|
},
|
|
75998
76776
|
"description": "Response payload too large — detail endpoint capped to fit Lambda response limits"
|
|
75999
76777
|
},
|
|
76000
|
-
"
|
|
76778
|
+
"503": {
|
|
76001
76779
|
"content": {
|
|
76002
76780
|
"application/json": {
|
|
76003
76781
|
"schema": {
|
|
76004
|
-
"$ref": "#/components/schemas/
|
|
76782
|
+
"$ref": "#/components/schemas/SearchUnavailable"
|
|
76005
76783
|
}
|
|
76006
76784
|
}
|
|
76007
76785
|
},
|
|
76008
|
-
"description": "
|
|
76786
|
+
"description": "Search timed out or the cluster is overloaded — retry after `Retry-After` seconds."
|
|
76787
|
+
}
|
|
76788
|
+
},
|
|
76789
|
+
"summary": "Office-name typeahead (distinct names with agent totals)",
|
|
76790
|
+
"tags": [
|
|
76791
|
+
"Offices"
|
|
76792
|
+
]
|
|
76793
|
+
}
|
|
76794
|
+
},
|
|
76795
|
+
"/v1/offices/{id}": {
|
|
76796
|
+
"get": {
|
|
76797
|
+
"operationId": "getOffice",
|
|
76798
|
+
"parameters": [
|
|
76799
|
+
{
|
|
76800
|
+
"description": "Office key (mm_office_key)",
|
|
76801
|
+
"in": "path",
|
|
76802
|
+
"name": "id",
|
|
76803
|
+
"required": true,
|
|
76804
|
+
"schema": {
|
|
76805
|
+
"description": "Office key (mm_office_key)",
|
|
76806
|
+
"type": "string"
|
|
76807
|
+
}
|
|
76009
76808
|
},
|
|
76010
|
-
|
|
76809
|
+
{
|
|
76810
|
+
"description": "Period for production metrics (default: last12Months)",
|
|
76811
|
+
"in": "query",
|
|
76812
|
+
"name": "period",
|
|
76813
|
+
"required": false,
|
|
76814
|
+
"schema": {
|
|
76815
|
+
"allOf": [
|
|
76816
|
+
{
|
|
76817
|
+
"$ref": "#/components/schemas/Period"
|
|
76818
|
+
},
|
|
76819
|
+
{
|
|
76820
|
+
"description": "Period for production metrics (default: last12Months)"
|
|
76821
|
+
}
|
|
76822
|
+
]
|
|
76823
|
+
}
|
|
76824
|
+
}
|
|
76825
|
+
],
|
|
76826
|
+
"responses": {
|
|
76827
|
+
"200": {
|
|
76011
76828
|
"content": {
|
|
76012
76829
|
"application/json": {
|
|
76013
76830
|
"schema": {
|
|
76014
|
-
"$ref": "#/components/schemas/
|
|
76831
|
+
"$ref": "#/components/schemas/OfficeDetailResponse"
|
|
76015
76832
|
}
|
|
76016
76833
|
}
|
|
76017
76834
|
},
|
|
76018
|
-
"description": "
|
|
76835
|
+
"description": "Office detail"
|
|
76836
|
+
},
|
|
76837
|
+
"404": {
|
|
76838
|
+
"content": {
|
|
76839
|
+
"application/json": {
|
|
76840
|
+
"schema": {
|
|
76841
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
76842
|
+
}
|
|
76843
|
+
}
|
|
76844
|
+
},
|
|
76845
|
+
"description": "Office not found"
|
|
76019
76846
|
}
|
|
76020
76847
|
},
|
|
76021
|
-
"summary": "Get
|
|
76848
|
+
"summary": "Get office by key with office-level production",
|
|
76022
76849
|
"tags": [
|
|
76023
|
-
"
|
|
76850
|
+
"Offices"
|
|
76024
76851
|
]
|
|
76025
76852
|
}
|
|
76026
76853
|
},
|
|
76027
|
-
"/v1/
|
|
76028
|
-
"
|
|
76029
|
-
"description": "
|
|
76030
|
-
"operationId": "
|
|
76854
|
+
"/v1/offices/{id}/breakdowns/builders": {
|
|
76855
|
+
"post": {
|
|
76856
|
+
"description": "New-construction builders named on the office's deals in the period, ranked by units. Deal COUNT only: every row's `volume` / `pctVolume` is 0 and `pctUnits` is a share of ALL the office's deals. No buyer/listing split: `side` must be `any` (or omitted).",
|
|
76857
|
+
"operationId": "officeBuilders",
|
|
76858
|
+
"parameters": [
|
|
76859
|
+
{
|
|
76860
|
+
"description": "Office id (from `listOffices` / `instantSearch`)",
|
|
76861
|
+
"in": "path",
|
|
76862
|
+
"name": "id",
|
|
76863
|
+
"required": true,
|
|
76864
|
+
"schema": {
|
|
76865
|
+
"description": "Office id (from `listOffices` / `instantSearch`)",
|
|
76866
|
+
"type": "string"
|
|
76867
|
+
}
|
|
76868
|
+
}
|
|
76869
|
+
],
|
|
76870
|
+
"requestBody": {
|
|
76871
|
+
"content": {
|
|
76872
|
+
"application/json": {
|
|
76873
|
+
"schema": {
|
|
76874
|
+
"$ref": "#/components/schemas/OfficeScoredBreakdownRequest"
|
|
76875
|
+
}
|
|
76876
|
+
}
|
|
76877
|
+
}
|
|
76878
|
+
},
|
|
76031
76879
|
"responses": {
|
|
76032
76880
|
"200": {
|
|
76033
76881
|
"content": {
|
|
76034
76882
|
"application/json": {
|
|
76035
76883
|
"schema": {
|
|
76036
|
-
"$ref": "#/components/schemas/
|
|
76884
|
+
"$ref": "#/components/schemas/AgentSidedBreakdownResponse"
|
|
76037
76885
|
}
|
|
76038
76886
|
}
|
|
76039
76887
|
},
|
|
76040
|
-
"description": "
|
|
76888
|
+
"description": "Pre-aggregated builders breakdown from the office's scored doc"
|
|
76041
76889
|
},
|
|
76042
76890
|
"400": {
|
|
76043
76891
|
"content": {
|
|
@@ -76089,16 +76937,6 @@
|
|
|
76089
76937
|
},
|
|
76090
76938
|
"description": "Response payload too large — detail endpoint capped to fit Lambda response limits"
|
|
76091
76939
|
},
|
|
76092
|
-
"502": {
|
|
76093
|
-
"content": {
|
|
76094
|
-
"application/json": {
|
|
76095
|
-
"schema": {
|
|
76096
|
-
"$ref": "#/components/schemas/AccountServiceUnavailable"
|
|
76097
|
-
}
|
|
76098
|
-
}
|
|
76099
|
-
},
|
|
76100
|
-
"description": "Account service unavailable"
|
|
76101
|
-
},
|
|
76102
76940
|
"503": {
|
|
76103
76941
|
"content": {
|
|
76104
76942
|
"application/json": {
|
|
@@ -76110,21 +76948,33 @@
|
|
|
76110
76948
|
"description": "Search timed out or the cluster is overloaded — retry after `Retry-After` seconds."
|
|
76111
76949
|
}
|
|
76112
76950
|
},
|
|
76113
|
-
"summary": "
|
|
76951
|
+
"summary": "Home builders on the office's deals (pre-aggregated)",
|
|
76114
76952
|
"tags": [
|
|
76115
|
-
"
|
|
76953
|
+
"Offices"
|
|
76116
76954
|
]
|
|
76117
76955
|
}
|
|
76118
76956
|
},
|
|
76119
|
-
"/v1/offices": {
|
|
76957
|
+
"/v1/offices/{id}/breakdowns/lenders": {
|
|
76120
76958
|
"post": {
|
|
76121
|
-
"description": "
|
|
76122
|
-
"operationId": "
|
|
76959
|
+
"description": "Lenders that financed the office's deals in the period. `id` is the lender id (pass it back as the `lender` filter on the loans routes), `label` its display name. The row for deals with no lender attributed carries no `id`.",
|
|
76960
|
+
"operationId": "officeLenders",
|
|
76961
|
+
"parameters": [
|
|
76962
|
+
{
|
|
76963
|
+
"description": "Office id (from `listOffices` / `instantSearch`)",
|
|
76964
|
+
"in": "path",
|
|
76965
|
+
"name": "id",
|
|
76966
|
+
"required": true,
|
|
76967
|
+
"schema": {
|
|
76968
|
+
"description": "Office id (from `listOffices` / `instantSearch`)",
|
|
76969
|
+
"type": "string"
|
|
76970
|
+
}
|
|
76971
|
+
}
|
|
76972
|
+
],
|
|
76123
76973
|
"requestBody": {
|
|
76124
76974
|
"content": {
|
|
76125
76975
|
"application/json": {
|
|
76126
76976
|
"schema": {
|
|
76127
|
-
"$ref": "#/components/schemas/
|
|
76977
|
+
"$ref": "#/components/schemas/OfficeScoredBreakdownRequest"
|
|
76128
76978
|
}
|
|
76129
76979
|
}
|
|
76130
76980
|
}
|
|
@@ -76134,11 +76984,11 @@
|
|
|
76134
76984
|
"content": {
|
|
76135
76985
|
"application/json": {
|
|
76136
76986
|
"schema": {
|
|
76137
|
-
"$ref": "#/components/schemas/
|
|
76987
|
+
"$ref": "#/components/schemas/AgentSidedBreakdownResponse"
|
|
76138
76988
|
}
|
|
76139
76989
|
}
|
|
76140
76990
|
},
|
|
76141
|
-
"description": "
|
|
76991
|
+
"description": "Pre-aggregated lenders breakdown from the office's scored doc"
|
|
76142
76992
|
},
|
|
76143
76993
|
"400": {
|
|
76144
76994
|
"content": {
|
|
@@ -76201,20 +77051,33 @@
|
|
|
76201
77051
|
"description": "Search timed out or the cluster is overloaded — retry after `Retry-After` seconds."
|
|
76202
77052
|
}
|
|
76203
77053
|
},
|
|
76204
|
-
"summary": "
|
|
77054
|
+
"summary": "Lenders on the office's deals (pre-aggregated)",
|
|
76205
77055
|
"tags": [
|
|
76206
77056
|
"Offices"
|
|
76207
77057
|
]
|
|
76208
77058
|
}
|
|
76209
77059
|
},
|
|
76210
|
-
"/v1/offices/
|
|
77060
|
+
"/v1/offices/{id}/breakdowns/loanTypes": {
|
|
76211
77061
|
"post": {
|
|
76212
|
-
"
|
|
77062
|
+
"description": "The office's financed deals in the period by loan product (`label` = product key, e.g. `conventional`, `fha`, `va`), summed across its lenders. Shares are of the financed deals on the requested side, so rows sum to 1; cash deals are not counted.",
|
|
77063
|
+
"operationId": "officeLoanTypes",
|
|
77064
|
+
"parameters": [
|
|
77065
|
+
{
|
|
77066
|
+
"description": "Office id (from `listOffices` / `instantSearch`)",
|
|
77067
|
+
"in": "path",
|
|
77068
|
+
"name": "id",
|
|
77069
|
+
"required": true,
|
|
77070
|
+
"schema": {
|
|
77071
|
+
"description": "Office id (from `listOffices` / `instantSearch`)",
|
|
77072
|
+
"type": "string"
|
|
77073
|
+
}
|
|
77074
|
+
}
|
|
77075
|
+
],
|
|
76213
77076
|
"requestBody": {
|
|
76214
77077
|
"content": {
|
|
76215
77078
|
"application/json": {
|
|
76216
77079
|
"schema": {
|
|
76217
|
-
"$ref": "#/components/schemas/
|
|
77080
|
+
"$ref": "#/components/schemas/OfficeScoredBreakdownRequest"
|
|
76218
77081
|
}
|
|
76219
77082
|
}
|
|
76220
77083
|
}
|
|
@@ -76224,11 +77087,11 @@
|
|
|
76224
77087
|
"content": {
|
|
76225
77088
|
"application/json": {
|
|
76226
77089
|
"schema": {
|
|
76227
|
-
"$ref": "#/components/schemas/
|
|
77090
|
+
"$ref": "#/components/schemas/AgentSidedBreakdownResponse"
|
|
76228
77091
|
}
|
|
76229
77092
|
}
|
|
76230
77093
|
},
|
|
76231
|
-
"description": "
|
|
77094
|
+
"description": "Pre-aggregated loanTypes breakdown from the office's scored doc"
|
|
76232
77095
|
},
|
|
76233
77096
|
"400": {
|
|
76234
77097
|
"content": {
|
|
@@ -76291,21 +77154,33 @@
|
|
|
76291
77154
|
"description": "Search timed out or the cluster is overloaded — retry after `Retry-After` seconds."
|
|
76292
77155
|
}
|
|
76293
77156
|
},
|
|
76294
|
-
"summary": "
|
|
77157
|
+
"summary": "Loan products on the office's financed deals (pre-aggregated)",
|
|
76295
77158
|
"tags": [
|
|
76296
77159
|
"Offices"
|
|
76297
77160
|
]
|
|
76298
77161
|
}
|
|
76299
77162
|
},
|
|
76300
|
-
"/v1/offices/
|
|
77163
|
+
"/v1/offices/{id}/breakdowns/originators": {
|
|
76301
77164
|
"post": {
|
|
76302
|
-
"description": "
|
|
76303
|
-
"operationId": "
|
|
77165
|
+
"description": "Loan officers on the office's deals in the period. `id` is the LO's NMLS id; `label` their registered name and `company` their current employer (both from the LO's own profile, not the deal records). `side: buyer` = deals where this office represented the buyer.",
|
|
77166
|
+
"operationId": "officeOriginators",
|
|
77167
|
+
"parameters": [
|
|
77168
|
+
{
|
|
77169
|
+
"description": "Office id (from `listOffices` / `instantSearch`)",
|
|
77170
|
+
"in": "path",
|
|
77171
|
+
"name": "id",
|
|
77172
|
+
"required": true,
|
|
77173
|
+
"schema": {
|
|
77174
|
+
"description": "Office id (from `listOffices` / `instantSearch`)",
|
|
77175
|
+
"type": "string"
|
|
77176
|
+
}
|
|
77177
|
+
}
|
|
77178
|
+
],
|
|
76304
77179
|
"requestBody": {
|
|
76305
77180
|
"content": {
|
|
76306
77181
|
"application/json": {
|
|
76307
77182
|
"schema": {
|
|
76308
|
-
"$ref": "#/components/schemas/
|
|
77183
|
+
"$ref": "#/components/schemas/OfficeScoredBreakdownRequest"
|
|
76309
77184
|
}
|
|
76310
77185
|
}
|
|
76311
77186
|
}
|
|
@@ -76315,11 +77190,11 @@
|
|
|
76315
77190
|
"content": {
|
|
76316
77191
|
"application/json": {
|
|
76317
77192
|
"schema": {
|
|
76318
|
-
"$ref": "#/components/schemas/
|
|
77193
|
+
"$ref": "#/components/schemas/AgentSidedBreakdownResponse"
|
|
76319
77194
|
}
|
|
76320
77195
|
}
|
|
76321
77196
|
},
|
|
76322
|
-
"description": "
|
|
77197
|
+
"description": "Pre-aggregated originators breakdown from the office's scored doc"
|
|
76323
77198
|
},
|
|
76324
77199
|
"400": {
|
|
76325
77200
|
"content": {
|
|
@@ -76382,67 +77257,7 @@
|
|
|
76382
77257
|
"description": "Search timed out or the cluster is overloaded — retry after `Retry-After` seconds."
|
|
76383
77258
|
}
|
|
76384
77259
|
},
|
|
76385
|
-
"summary": "
|
|
76386
|
-
"tags": [
|
|
76387
|
-
"Offices"
|
|
76388
|
-
],
|
|
76389
|
-
"x-mm-records-via": "listOffices"
|
|
76390
|
-
}
|
|
76391
|
-
},
|
|
76392
|
-
"/v1/offices/{id}": {
|
|
76393
|
-
"get": {
|
|
76394
|
-
"operationId": "getOffice",
|
|
76395
|
-
"parameters": [
|
|
76396
|
-
{
|
|
76397
|
-
"description": "Office key (mm_office_key)",
|
|
76398
|
-
"in": "path",
|
|
76399
|
-
"name": "id",
|
|
76400
|
-
"required": true,
|
|
76401
|
-
"schema": {
|
|
76402
|
-
"description": "Office key (mm_office_key)",
|
|
76403
|
-
"type": "string"
|
|
76404
|
-
}
|
|
76405
|
-
},
|
|
76406
|
-
{
|
|
76407
|
-
"description": "Period for production metrics (default: last12Months)",
|
|
76408
|
-
"in": "query",
|
|
76409
|
-
"name": "period",
|
|
76410
|
-
"required": false,
|
|
76411
|
-
"schema": {
|
|
76412
|
-
"allOf": [
|
|
76413
|
-
{
|
|
76414
|
-
"$ref": "#/components/schemas/Period"
|
|
76415
|
-
},
|
|
76416
|
-
{
|
|
76417
|
-
"description": "Period for production metrics (default: last12Months)"
|
|
76418
|
-
}
|
|
76419
|
-
]
|
|
76420
|
-
}
|
|
76421
|
-
}
|
|
76422
|
-
],
|
|
76423
|
-
"responses": {
|
|
76424
|
-
"200": {
|
|
76425
|
-
"content": {
|
|
76426
|
-
"application/json": {
|
|
76427
|
-
"schema": {
|
|
76428
|
-
"$ref": "#/components/schemas/OfficeDetailResponse"
|
|
76429
|
-
}
|
|
76430
|
-
}
|
|
76431
|
-
},
|
|
76432
|
-
"description": "Office detail"
|
|
76433
|
-
},
|
|
76434
|
-
"404": {
|
|
76435
|
-
"content": {
|
|
76436
|
-
"application/json": {
|
|
76437
|
-
"schema": {
|
|
76438
|
-
"$ref": "#/components/schemas/ErrorResponse"
|
|
76439
|
-
}
|
|
76440
|
-
}
|
|
76441
|
-
},
|
|
76442
|
-
"description": "Office not found"
|
|
76443
|
-
}
|
|
76444
|
-
},
|
|
76445
|
-
"summary": "Get office by key with office-level production",
|
|
77260
|
+
"summary": "Loan officers the office's agents worked with (pre-aggregated)",
|
|
76446
77261
|
"tags": [
|
|
76447
77262
|
"Offices"
|
|
76448
77263
|
]
|