@model-match/api 3.57.1 → 3.58.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/openapi.json CHANGED
@@ -29661,7 +29661,9 @@
29661
29661
  "veteranIndicator",
29662
29662
  "hmdaActionTaken",
29663
29663
  "selfEmployed",
29664
- "currentHomeOwner"
29664
+ "currentHomeOwner",
29665
+ "lenderType",
29666
+ "lenderVolumeClass"
29665
29667
  ],
29666
29668
  "type": "string"
29667
29669
  }
@@ -30616,6 +30618,660 @@
30616
30618
  ],
30617
30619
  "type": "object"
30618
30620
  },
30621
+ "MarketSignalsRequest": {
30622
+ "additionalProperties": false,
30623
+ "properties": {
30624
+ "flatFilters": {
30625
+ "$ref": "#/components/schemas/MarketFlatFilters"
30626
+ },
30627
+ "lookbackMonths": {
30628
+ "maximum": 120,
30629
+ "minimum": 6,
30630
+ "type": "integer"
30631
+ },
30632
+ "previous": {
30633
+ "allOf": [
30634
+ {
30635
+ "$ref": "#/components/schemas/MarketSignalsWindow"
30636
+ },
30637
+ {
30638
+ "description": "Comparison window; defaults to the preceding equal-length one."
30639
+ }
30640
+ ]
30641
+ },
30642
+ "stats": {
30643
+ "items": {
30644
+ "enum": [
30645
+ "funnel",
30646
+ "refiMix",
30647
+ "affordability",
30648
+ "pipeline",
30649
+ "status",
30650
+ "refiOpportunity"
30651
+ ],
30652
+ "type": "string"
30653
+ },
30654
+ "minItems": 1,
30655
+ "type": "array"
30656
+ },
30657
+ "thresholdBps": {
30658
+ "maximum": 500,
30659
+ "minimum": 0,
30660
+ "type": "integer"
30661
+ },
30662
+ "window": {
30663
+ "$ref": "#/components/schemas/MarketSignalsWindow"
30664
+ }
30665
+ },
30666
+ "required": [
30667
+ "window",
30668
+ "stats"
30669
+ ],
30670
+ "type": "object"
30671
+ },
30672
+ "MarketSignalsResponse": {
30673
+ "properties": {
30674
+ "affordability": {
30675
+ "properties": {
30676
+ "current": {
30677
+ "properties": {
30678
+ "medianAnnualIncome": {
30679
+ "nullable": true,
30680
+ "type": "number"
30681
+ },
30682
+ "medianLoanAmount": {
30683
+ "nullable": true,
30684
+ "type": "number"
30685
+ },
30686
+ "sampleCount": {
30687
+ "type": "number"
30688
+ }
30689
+ },
30690
+ "required": [
30691
+ "medianLoanAmount",
30692
+ "medianAnnualIncome",
30693
+ "sampleCount"
30694
+ ],
30695
+ "type": "object"
30696
+ },
30697
+ "monthly": {
30698
+ "items": {
30699
+ "properties": {
30700
+ "medianAnnualIncome": {
30701
+ "nullable": true,
30702
+ "type": "number"
30703
+ },
30704
+ "medianLoanAmount": {
30705
+ "nullable": true,
30706
+ "type": "number"
30707
+ },
30708
+ "month": {
30709
+ "type": "string"
30710
+ },
30711
+ "sampleCount": {
30712
+ "type": "number"
30713
+ }
30714
+ },
30715
+ "required": [
30716
+ "medianLoanAmount",
30717
+ "medianAnnualIncome",
30718
+ "sampleCount",
30719
+ "month"
30720
+ ],
30721
+ "type": "object"
30722
+ },
30723
+ "type": "array"
30724
+ },
30725
+ "previous": {
30726
+ "properties": {
30727
+ "medianAnnualIncome": {
30728
+ "nullable": true,
30729
+ "type": "number"
30730
+ },
30731
+ "medianLoanAmount": {
30732
+ "nullable": true,
30733
+ "type": "number"
30734
+ },
30735
+ "sampleCount": {
30736
+ "type": "number"
30737
+ }
30738
+ },
30739
+ "required": [
30740
+ "medianLoanAmount",
30741
+ "medianAnnualIncome",
30742
+ "sampleCount"
30743
+ ],
30744
+ "type": "object"
30745
+ }
30746
+ },
30747
+ "required": [
30748
+ "current",
30749
+ "previous",
30750
+ "monthly"
30751
+ ],
30752
+ "type": "object"
30753
+ },
30754
+ "funnel": {
30755
+ "properties": {
30756
+ "reLock": {
30757
+ "properties": {
30758
+ "reLockedCount": {
30759
+ "type": "number"
30760
+ },
30761
+ "sampleCount": {
30762
+ "type": "number"
30763
+ }
30764
+ },
30765
+ "required": [
30766
+ "reLockedCount",
30767
+ "sampleCount"
30768
+ ],
30769
+ "type": "object"
30770
+ },
30771
+ "timeToClose": {
30772
+ "properties": {
30773
+ "p25": {
30774
+ "nullable": true,
30775
+ "type": "number"
30776
+ },
30777
+ "p50": {
30778
+ "nullable": true,
30779
+ "type": "number"
30780
+ },
30781
+ "p75": {
30782
+ "nullable": true,
30783
+ "type": "number"
30784
+ },
30785
+ "sampleCount": {
30786
+ "type": "number"
30787
+ }
30788
+ },
30789
+ "required": [
30790
+ "p25",
30791
+ "p50",
30792
+ "p75",
30793
+ "sampleCount"
30794
+ ],
30795
+ "type": "object"
30796
+ }
30797
+ },
30798
+ "required": [
30799
+ "timeToClose",
30800
+ "reLock"
30801
+ ],
30802
+ "type": "object"
30803
+ },
30804
+ "pipeline": {
30805
+ "properties": {
30806
+ "expected": {
30807
+ "properties": {
30808
+ "next30Days": {
30809
+ "type": "number"
30810
+ },
30811
+ "next60Days": {
30812
+ "type": "number"
30813
+ },
30814
+ "next90Days": {
30815
+ "type": "number"
30816
+ },
30817
+ "weekly": {
30818
+ "items": {
30819
+ "properties": {
30820
+ "count": {
30821
+ "type": "number"
30822
+ },
30823
+ "weekStart": {
30824
+ "type": "string"
30825
+ }
30826
+ },
30827
+ "required": [
30828
+ "weekStart",
30829
+ "count"
30830
+ ],
30831
+ "type": "object"
30832
+ },
30833
+ "type": "array"
30834
+ }
30835
+ },
30836
+ "required": [
30837
+ "next30Days",
30838
+ "next60Days",
30839
+ "next90Days",
30840
+ "weekly"
30841
+ ],
30842
+ "type": "object"
30843
+ },
30844
+ "funnel": {
30845
+ "properties": {
30846
+ "application": {
30847
+ "type": "number"
30848
+ },
30849
+ "closing": {
30850
+ "type": "number"
30851
+ },
30852
+ "funded": {
30853
+ "type": "number"
30854
+ },
30855
+ "locked": {
30856
+ "type": "number"
30857
+ }
30858
+ },
30859
+ "required": [
30860
+ "application",
30861
+ "locked",
30862
+ "closing",
30863
+ "funded"
30864
+ ],
30865
+ "type": "object"
30866
+ },
30867
+ "transitions": {
30868
+ "properties": {
30869
+ "appToLock": {
30870
+ "properties": {
30871
+ "converted": {
30872
+ "type": "number"
30873
+ },
30874
+ "p25": {
30875
+ "nullable": true,
30876
+ "type": "number"
30877
+ },
30878
+ "p50": {
30879
+ "nullable": true,
30880
+ "type": "number"
30881
+ },
30882
+ "p75": {
30883
+ "nullable": true,
30884
+ "type": "number"
30885
+ },
30886
+ "priorP50": {
30887
+ "nullable": true,
30888
+ "type": "number"
30889
+ },
30890
+ "priorSampleCount": {
30891
+ "type": "number"
30892
+ },
30893
+ "reached": {
30894
+ "type": "number"
30895
+ },
30896
+ "sampleCount": {
30897
+ "type": "number"
30898
+ }
30899
+ },
30900
+ "required": [
30901
+ "p25",
30902
+ "p50",
30903
+ "p75",
30904
+ "sampleCount",
30905
+ "priorP50",
30906
+ "priorSampleCount",
30907
+ "reached",
30908
+ "converted"
30909
+ ],
30910
+ "type": "object"
30911
+ },
30912
+ "closeToFunding": {
30913
+ "properties": {
30914
+ "converted": {
30915
+ "type": "number"
30916
+ },
30917
+ "p25": {
30918
+ "nullable": true,
30919
+ "type": "number"
30920
+ },
30921
+ "p50": {
30922
+ "nullable": true,
30923
+ "type": "number"
30924
+ },
30925
+ "p75": {
30926
+ "nullable": true,
30927
+ "type": "number"
30928
+ },
30929
+ "priorP50": {
30930
+ "nullable": true,
30931
+ "type": "number"
30932
+ },
30933
+ "priorSampleCount": {
30934
+ "type": "number"
30935
+ },
30936
+ "reached": {
30937
+ "type": "number"
30938
+ },
30939
+ "sampleCount": {
30940
+ "type": "number"
30941
+ }
30942
+ },
30943
+ "required": [
30944
+ "p25",
30945
+ "p50",
30946
+ "p75",
30947
+ "sampleCount",
30948
+ "priorP50",
30949
+ "priorSampleCount",
30950
+ "reached",
30951
+ "converted"
30952
+ ],
30953
+ "type": "object"
30954
+ }
30955
+ },
30956
+ "required": [
30957
+ "appToLock",
30958
+ "closeToFunding"
30959
+ ],
30960
+ "type": "object"
30961
+ }
30962
+ },
30963
+ "required": [
30964
+ "transitions",
30965
+ "funnel",
30966
+ "expected"
30967
+ ],
30968
+ "type": "object"
30969
+ },
30970
+ "refiMix": {
30971
+ "properties": {
30972
+ "cashOut": {
30973
+ "properties": {
30974
+ "medianAmount": {
30975
+ "nullable": true,
30976
+ "type": "number"
30977
+ },
30978
+ "sampleCount": {
30979
+ "type": "number"
30980
+ }
30981
+ },
30982
+ "required": [
30983
+ "medianAmount",
30984
+ "sampleCount"
30985
+ ],
30986
+ "type": "object"
30987
+ },
30988
+ "purposes": {
30989
+ "items": {
30990
+ "properties": {
30991
+ "count": {
30992
+ "type": "number"
30993
+ },
30994
+ "key": {
30995
+ "type": "string"
30996
+ }
30997
+ },
30998
+ "required": [
30999
+ "key",
31000
+ "count"
31001
+ ],
31002
+ "type": "object"
31003
+ },
31004
+ "type": "array"
31005
+ }
31006
+ },
31007
+ "required": [
31008
+ "purposes",
31009
+ "cashOut"
31010
+ ],
31011
+ "type": "object"
31012
+ },
31013
+ "refiOpportunity": {
31014
+ "properties": {
31015
+ "baseline": {
31016
+ "nullable": true,
31017
+ "type": "number"
31018
+ },
31019
+ "byLoanType": {
31020
+ "items": {
31021
+ "properties": {
31022
+ "count": {
31023
+ "type": "number"
31024
+ },
31025
+ "key": {
31026
+ "type": "string"
31027
+ }
31028
+ },
31029
+ "required": [
31030
+ "key",
31031
+ "count"
31032
+ ],
31033
+ "type": "object"
31034
+ },
31035
+ "type": "array"
31036
+ },
31037
+ "byState": {
31038
+ "items": {
31039
+ "properties": {
31040
+ "avgRate": {
31041
+ "nullable": true,
31042
+ "type": "number"
31043
+ },
31044
+ "avgSpreadBps": {
31045
+ "nullable": true,
31046
+ "type": "number"
31047
+ },
31048
+ "count": {
31049
+ "type": "number"
31050
+ },
31051
+ "state": {
31052
+ "type": "string"
31053
+ },
31054
+ "totalVolume": {
31055
+ "type": "number"
31056
+ }
31057
+ },
31058
+ "required": [
31059
+ "state",
31060
+ "count",
31061
+ "totalVolume",
31062
+ "avgRate",
31063
+ "avgSpreadBps"
31064
+ ],
31065
+ "type": "object"
31066
+ },
31067
+ "type": "array"
31068
+ },
31069
+ "byVintage": {
31070
+ "items": {
31071
+ "properties": {
31072
+ "count": {
31073
+ "type": "number"
31074
+ },
31075
+ "year": {
31076
+ "type": "number"
31077
+ }
31078
+ },
31079
+ "required": [
31080
+ "year",
31081
+ "count"
31082
+ ],
31083
+ "type": "object"
31084
+ },
31085
+ "type": "array"
31086
+ },
31087
+ "lookbackMonths": {
31088
+ "type": "number"
31089
+ },
31090
+ "medianSpreadBps": {
31091
+ "nullable": true,
31092
+ "type": "number"
31093
+ },
31094
+ "spreadHistogram": {
31095
+ "items": {
31096
+ "properties": {
31097
+ "count": {
31098
+ "type": "number"
31099
+ },
31100
+ "spreadBps": {
31101
+ "type": "number"
31102
+ }
31103
+ },
31104
+ "required": [
31105
+ "spreadBps",
31106
+ "count"
31107
+ ],
31108
+ "type": "object"
31109
+ },
31110
+ "type": "array"
31111
+ },
31112
+ "thresholdBps": {
31113
+ "type": "number"
31114
+ },
31115
+ "topStateConcentrationPct": {
31116
+ "type": "number"
31117
+ },
31118
+ "totals": {
31119
+ "properties": {
31120
+ "count": {
31121
+ "type": "number"
31122
+ },
31123
+ "medianLoanAmount": {
31124
+ "nullable": true,
31125
+ "type": "number"
31126
+ },
31127
+ "totalVolume": {
31128
+ "type": "number"
31129
+ }
31130
+ },
31131
+ "required": [
31132
+ "count",
31133
+ "totalVolume",
31134
+ "medianLoanAmount"
31135
+ ],
31136
+ "type": "object"
31137
+ }
31138
+ },
31139
+ "required": [
31140
+ "baseline",
31141
+ "thresholdBps",
31142
+ "lookbackMonths",
31143
+ "totals",
31144
+ "byState",
31145
+ "spreadHistogram",
31146
+ "medianSpreadBps",
31147
+ "byVintage",
31148
+ "byLoanType",
31149
+ "topStateConcentrationPct"
31150
+ ],
31151
+ "type": "object"
31152
+ },
31153
+ "status": {
31154
+ "properties": {
31155
+ "applications": {
31156
+ "properties": {
31157
+ "current": {
31158
+ "type": "number"
31159
+ },
31160
+ "prior": {
31161
+ "type": "number"
31162
+ }
31163
+ },
31164
+ "required": [
31165
+ "current",
31166
+ "prior"
31167
+ ],
31168
+ "type": "object"
31169
+ },
31170
+ "approvals": {
31171
+ "properties": {
31172
+ "current": {
31173
+ "type": "number"
31174
+ },
31175
+ "prior": {
31176
+ "type": "number"
31177
+ }
31178
+ },
31179
+ "required": [
31180
+ "current",
31181
+ "prior"
31182
+ ],
31183
+ "type": "object"
31184
+ },
31185
+ "expectedClosings": {
31186
+ "type": "number"
31187
+ },
31188
+ "locks": {
31189
+ "properties": {
31190
+ "current": {
31191
+ "type": "number"
31192
+ },
31193
+ "prior": {
31194
+ "type": "number"
31195
+ }
31196
+ },
31197
+ "required": [
31198
+ "current",
31199
+ "prior"
31200
+ ],
31201
+ "type": "object"
31202
+ },
31203
+ "timeToClose": {
31204
+ "properties": {
31205
+ "current": {
31206
+ "properties": {
31207
+ "median": {
31208
+ "nullable": true,
31209
+ "type": "number"
31210
+ },
31211
+ "sampleCount": {
31212
+ "type": "number"
31213
+ }
31214
+ },
31215
+ "required": [
31216
+ "median",
31217
+ "sampleCount"
31218
+ ],
31219
+ "type": "object"
31220
+ },
31221
+ "prior": {
31222
+ "properties": {
31223
+ "median": {
31224
+ "nullable": true,
31225
+ "type": "number"
31226
+ },
31227
+ "sampleCount": {
31228
+ "type": "number"
31229
+ }
31230
+ },
31231
+ "required": [
31232
+ "median",
31233
+ "sampleCount"
31234
+ ],
31235
+ "type": "object"
31236
+ }
31237
+ },
31238
+ "required": [
31239
+ "current",
31240
+ "prior"
31241
+ ],
31242
+ "type": "object"
31243
+ }
31244
+ },
31245
+ "required": [
31246
+ "applications",
31247
+ "locks",
31248
+ "approvals",
31249
+ "timeToClose",
31250
+ "expectedClosings"
31251
+ ],
31252
+ "type": "object"
31253
+ }
31254
+ },
31255
+ "type": "object"
31256
+ },
31257
+ "MarketSignalsWindow": {
31258
+ "description": "`[gte, lt)` window, YYYY-MM-DD.",
31259
+ "properties": {
31260
+ "gte": {
31261
+ "format": "date",
31262
+ "type": "string"
31263
+ },
31264
+ "lt": {
31265
+ "format": "date",
31266
+ "type": "string"
31267
+ }
31268
+ },
31269
+ "required": [
31270
+ "gte",
31271
+ "lt"
31272
+ ],
31273
+ "type": "object"
31274
+ },
30619
31275
  "MarketSliceDimension": {
30620
31276
  "enum": [
30621
31277
  "state",
@@ -30633,7 +31289,9 @@
30633
31289
  "veteranIndicator",
30634
31290
  "hmdaActionTaken",
30635
31291
  "selfEmployed",
30636
- "currentHomeOwner"
31292
+ "currentHomeOwner",
31293
+ "lenderType",
31294
+ "lenderVolumeClass"
30637
31295
  ],
30638
31296
  "type": "string"
30639
31297
  },
@@ -44803,7 +45461,7 @@
44803
45461
  "info": {
44804
45462
  "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.",
44805
45463
  "title": "ModelMatch API",
44806
- "version": "3.123.1"
45464
+ "version": "3.124.0"
44807
45465
  },
44808
45466
  "openapi": "3.1.0",
44809
45467
  "paths": {
@@ -74764,6 +75422,96 @@
74764
75422
  ]
74765
75423
  }
74766
75424
  },
75425
+ "/v1/market/signals": {
75426
+ "post": {
75427
+ "operationId": "marketSignals",
75428
+ "requestBody": {
75429
+ "content": {
75430
+ "application/json": {
75431
+ "schema": {
75432
+ "$ref": "#/components/schemas/MarketSignalsRequest"
75433
+ }
75434
+ }
75435
+ }
75436
+ },
75437
+ "responses": {
75438
+ "200": {
75439
+ "content": {
75440
+ "application/json": {
75441
+ "schema": {
75442
+ "$ref": "#/components/schemas/MarketSignalsResponse"
75443
+ }
75444
+ }
75445
+ },
75446
+ "description": "The requested stats"
75447
+ },
75448
+ "400": {
75449
+ "content": {
75450
+ "application/json": {
75451
+ "schema": {
75452
+ "$ref": "#/components/schemas/ErrorResponse"
75453
+ }
75454
+ }
75455
+ },
75456
+ "description": "Validation error"
75457
+ },
75458
+ "401": {
75459
+ "content": {
75460
+ "application/json": {
75461
+ "schema": {
75462
+ "$ref": "#/components/schemas/ErrorResponse"
75463
+ }
75464
+ }
75465
+ },
75466
+ "description": "Unauthorized"
75467
+ },
75468
+ "403": {
75469
+ "content": {
75470
+ "application/json": {
75471
+ "schema": {
75472
+ "$ref": "#/components/schemas/ErrorResponse"
75473
+ }
75474
+ }
75475
+ },
75476
+ "description": "Forbidden (authenticated, but missing required context — e.g. no active organization)"
75477
+ },
75478
+ "404": {
75479
+ "content": {
75480
+ "application/json": {
75481
+ "schema": {
75482
+ "$ref": "#/components/schemas/ErrorResponse"
75483
+ }
75484
+ }
75485
+ },
75486
+ "description": "Not found"
75487
+ },
75488
+ "413": {
75489
+ "content": {
75490
+ "application/json": {
75491
+ "schema": {
75492
+ "$ref": "#/components/schemas/PayloadTooLarge"
75493
+ }
75494
+ }
75495
+ },
75496
+ "description": "Response payload too large — detail endpoint capped to fit Lambda response limits"
75497
+ },
75498
+ "503": {
75499
+ "content": {
75500
+ "application/json": {
75501
+ "schema": {
75502
+ "$ref": "#/components/schemas/SearchUnavailable"
75503
+ }
75504
+ }
75505
+ },
75506
+ "description": "Search timed out or the cluster is overloaded — retry after `Retry-After` seconds."
75507
+ }
75508
+ },
75509
+ "summary": "Market Signals card stats (web app feed)",
75510
+ "tags": [
75511
+ "Market"
75512
+ ]
75513
+ }
75514
+ },
74767
75515
  "/v1/me": {
74768
75516
  "get": {
74769
75517
  "description": "Identity, active organization + membership role, and how the caller authenticated.\n\nExtended profile fields (`nmlsId`, `jobRole`, the contact-card block) are resolved for every caller type — session-cookie, API-key, and OAuth-bearer alike. `auth.profileResolved` is `true` on any successful read; it is retained for compatibility and no longer varies by the credential the caller presented.",