@model-match/api 3.15.0 → 3.16.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-BCrq4x8K.d.mts → index-DN9Yrnc2.d.mts} +454 -1
- package/dist/index.d.mts +2 -2
- package/dist/index.mjs +2 -2
- package/dist/slim/index.d.mts +26 -2
- package/dist/slim/index.mjs +94 -2
- package/dist/{src-DA2DVf_U.mjs → src-DmJ3haPq.mjs} +95 -1
- package/openapi.json +1238 -192
- package/package.json +2 -2
package/openapi.json
CHANGED
|
@@ -1144,13 +1144,13 @@
|
|
|
1144
1144
|
"AgentCountyFilterValue": {
|
|
1145
1145
|
"anyOf": [
|
|
1146
1146
|
{
|
|
1147
|
-
"pattern": "^\\d{5}
|
|
1147
|
+
"pattern": "^\\d{5}$",
|
|
1148
1148
|
"type": "string"
|
|
1149
1149
|
},
|
|
1150
1150
|
{
|
|
1151
1151
|
"description": "Match any of several counties",
|
|
1152
1152
|
"items": {
|
|
1153
|
-
"pattern": "^\\d{5}
|
|
1153
|
+
"pattern": "^\\d{5}$",
|
|
1154
1154
|
"type": "string"
|
|
1155
1155
|
},
|
|
1156
1156
|
"type": "array"
|
|
@@ -1969,13 +1969,13 @@
|
|
|
1969
1969
|
"from": {
|
|
1970
1970
|
"description": "Inclusive lower bound on the transaction date.",
|
|
1971
1971
|
"example": "2024-01-01",
|
|
1972
|
-
"pattern": "^\\d{4}(-\\d{2}(-\\d{2})?)
|
|
1972
|
+
"pattern": "^\\d{4}(-\\d{2}(-\\d{2})?)?$",
|
|
1973
1973
|
"type": "string"
|
|
1974
1974
|
},
|
|
1975
1975
|
"to": {
|
|
1976
1976
|
"description": "Inclusive upper bound on the transaction date.",
|
|
1977
1977
|
"example": "2025-12-31",
|
|
1978
|
-
"pattern": "^\\d{4}(-\\d{2}(-\\d{2})?)
|
|
1978
|
+
"pattern": "^\\d{4}(-\\d{2}(-\\d{2})?)?$",
|
|
1979
1979
|
"type": "string"
|
|
1980
1980
|
}
|
|
1981
1981
|
},
|
|
@@ -3102,7 +3102,7 @@
|
|
|
3102
3102
|
"$ref": "#/components/schemas/NumericFilterValue"
|
|
3103
3103
|
},
|
|
3104
3104
|
{
|
|
3105
|
-
"description": "Loan-to-value at ORIGINATION (sparse). This is not a current LTV — there is no stored current-LTV field on loans."
|
|
3105
|
+
"description": "Loan-to-value at ORIGINATION (sparse), as a PERCENT on a 0-100 scale (`80` = 80% LTV; values above 100 are real underwater loans). This is not a current LTV — there is no stored current-LTV field on loans."
|
|
3106
3106
|
}
|
|
3107
3107
|
]
|
|
3108
3108
|
},
|
|
@@ -4518,7 +4518,7 @@
|
|
|
4518
4518
|
"$ref": "#/components/schemas/NumericFilterValue"
|
|
4519
4519
|
},
|
|
4520
4520
|
{
|
|
4521
|
-
"description": "Loan-to-value at ORIGINATION (sparse). This is not a current LTV — there is no stored current-LTV field on loans."
|
|
4521
|
+
"description": "Loan-to-value at ORIGINATION (sparse), as a PERCENT on a 0-100 scale (`80` = 80% LTV; values above 100 are real underwater loans). This is not a current LTV — there is no stored current-LTV field on loans."
|
|
4522
4522
|
}
|
|
4523
4523
|
]
|
|
4524
4524
|
},
|
|
@@ -4827,7 +4827,7 @@
|
|
|
4827
4827
|
"$ref": "#/components/schemas/NumericFilterValue"
|
|
4828
4828
|
},
|
|
4829
4829
|
{
|
|
4830
|
-
"description": "Loan-to-value at ORIGINATION (sparse). This is not a current LTV — there is no stored current-LTV field on loans."
|
|
4830
|
+
"description": "Loan-to-value at ORIGINATION (sparse), as a PERCENT on a 0-100 scale (`80` = 80% LTV; values above 100 are real underwater loans). This is not a current LTV — there is no stored current-LTV field on loans."
|
|
4831
4831
|
}
|
|
4832
4832
|
]
|
|
4833
4833
|
},
|
|
@@ -5189,7 +5189,7 @@
|
|
|
5189
5189
|
"$ref": "#/components/schemas/NumericFilterValue"
|
|
5190
5190
|
},
|
|
5191
5191
|
{
|
|
5192
|
-
"description": "Loan-to-value at ORIGINATION (sparse). This is not a current LTV — there is no stored current-LTV field on loans."
|
|
5192
|
+
"description": "Loan-to-value at ORIGINATION (sparse), as a PERCENT on a 0-100 scale (`80` = 80% LTV; values above 100 are real underwater loans). This is not a current LTV — there is no stored current-LTV field on loans."
|
|
5193
5193
|
}
|
|
5194
5194
|
]
|
|
5195
5195
|
},
|
|
@@ -6040,7 +6040,7 @@
|
|
|
6040
6040
|
"$ref": "#/components/schemas/NumericFilterValue"
|
|
6041
6041
|
},
|
|
6042
6042
|
{
|
|
6043
|
-
"description": "Loan-to-value at ORIGINATION (sparse). This is not a current LTV — there is no stored current-LTV field on loans."
|
|
6043
|
+
"description": "Loan-to-value at ORIGINATION (sparse), as a PERCENT on a 0-100 scale (`80` = 80% LTV; values above 100 are real underwater loans). This is not a current LTV — there is no stored current-LTV field on loans."
|
|
6044
6044
|
}
|
|
6045
6045
|
]
|
|
6046
6046
|
},
|
|
@@ -6423,7 +6423,7 @@
|
|
|
6423
6423
|
"$ref": "#/components/schemas/NumericFilterValue"
|
|
6424
6424
|
},
|
|
6425
6425
|
{
|
|
6426
|
-
"description": "Loan-to-value at ORIGINATION (sparse). This is not a current LTV — there is no stored current-LTV field on loans."
|
|
6426
|
+
"description": "Loan-to-value at ORIGINATION (sparse), as a PERCENT on a 0-100 scale (`80` = 80% LTV; values above 100 are real underwater loans). This is not a current LTV — there is no stored current-LTV field on loans."
|
|
6427
6427
|
}
|
|
6428
6428
|
]
|
|
6429
6429
|
},
|
|
@@ -8424,7 +8424,7 @@
|
|
|
8424
8424
|
"$ref": "#/components/schemas/NumericFilterValue"
|
|
8425
8425
|
},
|
|
8426
8426
|
{
|
|
8427
|
-
"description": "Loan-to-value at ORIGINATION (sparse). This is not a current LTV — there is no stored current-LTV field on loans."
|
|
8427
|
+
"description": "Loan-to-value at ORIGINATION (sparse), as a PERCENT on a 0-100 scale (`80` = 80% LTV; values above 100 are real underwater loans). This is not a current LTV — there is no stored current-LTV field on loans."
|
|
8428
8428
|
}
|
|
8429
8429
|
]
|
|
8430
8430
|
},
|
|
@@ -9130,7 +9130,7 @@
|
|
|
9130
9130
|
"$ref": "#/components/schemas/NumericFilterValue"
|
|
9131
9131
|
},
|
|
9132
9132
|
{
|
|
9133
|
-
"description": "Loan-to-value at ORIGINATION (sparse). This is not a current LTV — there is no stored current-LTV field on loans."
|
|
9133
|
+
"description": "Loan-to-value at ORIGINATION (sparse), as a PERCENT on a 0-100 scale (`80` = 80% LTV; values above 100 are real underwater loans). This is not a current LTV — there is no stored current-LTV field on loans."
|
|
9134
9134
|
}
|
|
9135
9135
|
]
|
|
9136
9136
|
},
|
|
@@ -9827,7 +9827,7 @@
|
|
|
9827
9827
|
"$ref": "#/components/schemas/NumericFilterValue"
|
|
9828
9828
|
},
|
|
9829
9829
|
{
|
|
9830
|
-
"description": "Loan-to-value at ORIGINATION (sparse). This is not a current LTV — there is no stored current-LTV field on loans."
|
|
9830
|
+
"description": "Loan-to-value at ORIGINATION (sparse), as a PERCENT on a 0-100 scale (`80` = 80% LTV; values above 100 are real underwater loans). This is not a current LTV — there is no stored current-LTV field on loans."
|
|
9831
9831
|
}
|
|
9832
9832
|
]
|
|
9833
9833
|
},
|
|
@@ -10213,7 +10213,7 @@
|
|
|
10213
10213
|
"$ref": "#/components/schemas/NumericFilterValue"
|
|
10214
10214
|
},
|
|
10215
10215
|
{
|
|
10216
|
-
"description": "Loan-to-value at ORIGINATION (sparse). This is not a current LTV — there is no stored current-LTV field on loans."
|
|
10216
|
+
"description": "Loan-to-value at ORIGINATION (sparse), as a PERCENT on a 0-100 scale (`80` = 80% LTV; values above 100 are real underwater loans). This is not a current LTV — there is no stored current-LTV field on loans."
|
|
10217
10217
|
}
|
|
10218
10218
|
]
|
|
10219
10219
|
},
|
|
@@ -10392,6 +10392,98 @@
|
|
|
10392
10392
|
],
|
|
10393
10393
|
"type": "object"
|
|
10394
10394
|
},
|
|
10395
|
+
"CreateSavedFilterRequest": {
|
|
10396
|
+
"additionalProperties": false,
|
|
10397
|
+
"properties": {
|
|
10398
|
+
"fidelity": {
|
|
10399
|
+
"description": "How much of the UI state `query` captures: `exact`; `partial` (see `unmapped`); `ui_only` — no runnable query. Defaults from whether `query` is present.",
|
|
10400
|
+
"enum": [
|
|
10401
|
+
"exact",
|
|
10402
|
+
"partial",
|
|
10403
|
+
"ui_only"
|
|
10404
|
+
],
|
|
10405
|
+
"type": "string"
|
|
10406
|
+
},
|
|
10407
|
+
"icon": {
|
|
10408
|
+
"$ref": "#/components/schemas/SavedFilterIcon"
|
|
10409
|
+
},
|
|
10410
|
+
"kind": {
|
|
10411
|
+
"description": "`filter` (default) — a saved search; `view` — a saved CRM table layout (columns / order) kept in `uiState`. Views never carry a `query` and have their own 25-per-target quota. Fixed at create.",
|
|
10412
|
+
"enum": [
|
|
10413
|
+
"filter",
|
|
10414
|
+
"view"
|
|
10415
|
+
],
|
|
10416
|
+
"type": "string"
|
|
10417
|
+
},
|
|
10418
|
+
"name": {
|
|
10419
|
+
"maxLength": 100,
|
|
10420
|
+
"minLength": 1,
|
|
10421
|
+
"type": "string"
|
|
10422
|
+
},
|
|
10423
|
+
"query": {
|
|
10424
|
+
"additionalProperties": {
|
|
10425
|
+
"nullable": true
|
|
10426
|
+
},
|
|
10427
|
+
"description": "The target list operation's request body WITHOUT `pagination` (e.g. `{ flatFilters, filters, sort, period }` for listOriginators). Validated against that operation's schema; unknown filter fields are rejected. Null/omitted for a UI-only filter.",
|
|
10428
|
+
"nullable": true,
|
|
10429
|
+
"type": "object"
|
|
10430
|
+
},
|
|
10431
|
+
"target": {
|
|
10432
|
+
"description": "Which list the filter runs against. Market targets run against that entity's list operation (see `operationId`, e.g. listOriginators); `crm_people` / `crm_companies` are UI-only (filtered client-side).",
|
|
10433
|
+
"enum": [
|
|
10434
|
+
"originators",
|
|
10435
|
+
"agents",
|
|
10436
|
+
"companies",
|
|
10437
|
+
"branches",
|
|
10438
|
+
"offices",
|
|
10439
|
+
"loans",
|
|
10440
|
+
"properties",
|
|
10441
|
+
"sales",
|
|
10442
|
+
"crm_people",
|
|
10443
|
+
"crm_companies"
|
|
10444
|
+
],
|
|
10445
|
+
"type": "string"
|
|
10446
|
+
},
|
|
10447
|
+
"uiState": {
|
|
10448
|
+
"additionalProperties": {
|
|
10449
|
+
"nullable": true
|
|
10450
|
+
},
|
|
10451
|
+
"description": "Opaque client UI state used to restore a filter panel (≤16KB). Not interpreted by the API.",
|
|
10452
|
+
"nullable": true,
|
|
10453
|
+
"type": "object"
|
|
10454
|
+
},
|
|
10455
|
+
"uiStateVersion": {
|
|
10456
|
+
"minimum": 1,
|
|
10457
|
+
"type": "integer"
|
|
10458
|
+
},
|
|
10459
|
+
"unmapped": {
|
|
10460
|
+
"description": "UI filter keys the client could not express in `query` (set with `fidelity: partial`).",
|
|
10461
|
+
"items": {
|
|
10462
|
+
"maxLength": 200,
|
|
10463
|
+
"minLength": 1,
|
|
10464
|
+
"type": "string"
|
|
10465
|
+
},
|
|
10466
|
+
"maxItems": 100,
|
|
10467
|
+
"type": "array"
|
|
10468
|
+
}
|
|
10469
|
+
},
|
|
10470
|
+
"required": [
|
|
10471
|
+
"name",
|
|
10472
|
+
"target"
|
|
10473
|
+
],
|
|
10474
|
+
"type": "object"
|
|
10475
|
+
},
|
|
10476
|
+
"CreateSavedFilterResult": {
|
|
10477
|
+
"properties": {
|
|
10478
|
+
"data": {
|
|
10479
|
+
"$ref": "#/components/schemas/SavedFilter"
|
|
10480
|
+
}
|
|
10481
|
+
},
|
|
10482
|
+
"required": [
|
|
10483
|
+
"data"
|
|
10484
|
+
],
|
|
10485
|
+
"type": "object"
|
|
10486
|
+
},
|
|
10395
10487
|
"CrmActiveCall": {
|
|
10396
10488
|
"nullable": true,
|
|
10397
10489
|
"properties": {
|
|
@@ -16117,6 +16209,28 @@
|
|
|
16117
16209
|
],
|
|
16118
16210
|
"type": "string"
|
|
16119
16211
|
},
|
|
16212
|
+
"DeleteSavedFilterResult": {
|
|
16213
|
+
"properties": {
|
|
16214
|
+
"data": {
|
|
16215
|
+
"properties": {
|
|
16216
|
+
"deleted": {
|
|
16217
|
+
"enum": [
|
|
16218
|
+
true
|
|
16219
|
+
],
|
|
16220
|
+
"type": "boolean"
|
|
16221
|
+
}
|
|
16222
|
+
},
|
|
16223
|
+
"required": [
|
|
16224
|
+
"deleted"
|
|
16225
|
+
],
|
|
16226
|
+
"type": "object"
|
|
16227
|
+
}
|
|
16228
|
+
},
|
|
16229
|
+
"required": [
|
|
16230
|
+
"data"
|
|
16231
|
+
],
|
|
16232
|
+
"type": "object"
|
|
16233
|
+
},
|
|
16120
16234
|
"EarlyExitCounterparty": {
|
|
16121
16235
|
"properties": {
|
|
16122
16236
|
"name": {
|
|
@@ -16896,14 +17010,130 @@
|
|
|
16896
17010
|
],
|
|
16897
17011
|
"type": "object"
|
|
16898
17012
|
},
|
|
17013
|
+
"EnrichmentCacheStats": {
|
|
17014
|
+
"properties": {
|
|
17015
|
+
"computedAt": {
|
|
17016
|
+
"description": "ISO 8601 timestamp",
|
|
17017
|
+
"type": "string"
|
|
17018
|
+
},
|
|
17019
|
+
"costUsd": {
|
|
17020
|
+
"description": "`total × unitCostUsd` — upstream spend behind the live table.",
|
|
17021
|
+
"minimum": 0,
|
|
17022
|
+
"type": "number"
|
|
17023
|
+
},
|
|
17024
|
+
"empty": {
|
|
17025
|
+
"description": "Unexpired rows where the provider returned no persons.",
|
|
17026
|
+
"minimum": 0,
|
|
17027
|
+
"type": "integer"
|
|
17028
|
+
},
|
|
17029
|
+
"expired": {
|
|
17030
|
+
"minimum": 0,
|
|
17031
|
+
"type": "integer"
|
|
17032
|
+
},
|
|
17033
|
+
"healthy": {
|
|
17034
|
+
"description": "Unexpired rows with at least one person.",
|
|
17035
|
+
"minimum": 0,
|
|
17036
|
+
"type": "integer"
|
|
17037
|
+
},
|
|
17038
|
+
"memberRows": {
|
|
17039
|
+
"description": "Member entitlement rows across every workspace.",
|
|
17040
|
+
"minimum": 0,
|
|
17041
|
+
"type": "integer"
|
|
17042
|
+
},
|
|
17043
|
+
"partial": {
|
|
17044
|
+
"description": "True when the scan hit its page/time budget; counts are a lower bound.",
|
|
17045
|
+
"type": "boolean"
|
|
17046
|
+
},
|
|
17047
|
+
"savedLookups": {
|
|
17048
|
+
"description": "Member entitlements served from the internal cache rather than a fresh BatchData call (every member beyond the first per property).",
|
|
17049
|
+
"minimum": 0,
|
|
17050
|
+
"type": "integer"
|
|
17051
|
+
},
|
|
17052
|
+
"savingsUsd": {
|
|
17053
|
+
"description": "`savedLookups × unitCostUsd`.",
|
|
17054
|
+
"minimum": 0,
|
|
17055
|
+
"type": "number"
|
|
17056
|
+
},
|
|
17057
|
+
"total": {
|
|
17058
|
+
"description": "Internal property cache rows — one per enriched property.",
|
|
17059
|
+
"minimum": 0,
|
|
17060
|
+
"type": "integer"
|
|
17061
|
+
},
|
|
17062
|
+
"unitCostUsd": {
|
|
17063
|
+
"minimum": 0,
|
|
17064
|
+
"type": "number"
|
|
17065
|
+
}
|
|
17066
|
+
},
|
|
17067
|
+
"required": [
|
|
17068
|
+
"total",
|
|
17069
|
+
"expired",
|
|
17070
|
+
"empty",
|
|
17071
|
+
"healthy",
|
|
17072
|
+
"memberRows",
|
|
17073
|
+
"savedLookups",
|
|
17074
|
+
"costUsd",
|
|
17075
|
+
"savingsUsd",
|
|
17076
|
+
"unitCostUsd",
|
|
17077
|
+
"partial",
|
|
17078
|
+
"computedAt"
|
|
17079
|
+
],
|
|
17080
|
+
"type": "object"
|
|
17081
|
+
},
|
|
17082
|
+
"EnrichmentCharge": {
|
|
17083
|
+
"properties": {
|
|
17084
|
+
"at": {
|
|
17085
|
+
"description": "ISO 8601 time of the debit",
|
|
17086
|
+
"type": "string"
|
|
17087
|
+
},
|
|
17088
|
+
"credits": {
|
|
17089
|
+
"type": "number"
|
|
17090
|
+
},
|
|
17091
|
+
"refresh": {
|
|
17092
|
+
"description": "True when this charge came from a forced re-run",
|
|
17093
|
+
"type": "boolean"
|
|
17094
|
+
}
|
|
17095
|
+
},
|
|
17096
|
+
"required": [
|
|
17097
|
+
"at",
|
|
17098
|
+
"credits",
|
|
17099
|
+
"refresh"
|
|
17100
|
+
],
|
|
17101
|
+
"type": "object"
|
|
17102
|
+
},
|
|
16899
17103
|
"EnrichmentListItem": {
|
|
16900
17104
|
"properties": {
|
|
17105
|
+
"charged": {
|
|
17106
|
+
"description": "Whether the call that produced the current result debited credits. `null` for results stored before charges were recorded.",
|
|
17107
|
+
"nullable": true,
|
|
17108
|
+
"type": "boolean"
|
|
17109
|
+
},
|
|
17110
|
+
"charges": {
|
|
17111
|
+
"description": "Every recorded debit for this property, oldest first. More than one means it was paid for more than once (a `refresh` re-run). `null` when not recorded.",
|
|
17112
|
+
"items": {
|
|
17113
|
+
"$ref": "#/components/schemas/EnrichmentCharge"
|
|
17114
|
+
},
|
|
17115
|
+
"nullable": true,
|
|
17116
|
+
"type": "array"
|
|
17117
|
+
},
|
|
17118
|
+
"creditsCharged": {
|
|
17119
|
+
"description": "Total credits debited for this property across every recorded run, including forced re-runs. `null` when not recorded.",
|
|
17120
|
+
"nullable": true,
|
|
17121
|
+
"type": "number"
|
|
17122
|
+
},
|
|
17123
|
+
"emailCount": {
|
|
17124
|
+
"description": "Email addresses found across every matched person.",
|
|
17125
|
+
"type": "number"
|
|
17126
|
+
},
|
|
16901
17127
|
"enrichedAt": {
|
|
16902
17128
|
"type": "string"
|
|
16903
17129
|
},
|
|
16904
17130
|
"personCount": {
|
|
16905
17131
|
"type": "number"
|
|
16906
17132
|
},
|
|
17133
|
+
"phoneCount": {
|
|
17134
|
+
"description": "Phone numbers found across every matched person. A matched person can have none.",
|
|
17135
|
+
"type": "number"
|
|
17136
|
+
},
|
|
16907
17137
|
"propertyId": {
|
|
16908
17138
|
"type": "string"
|
|
16909
17139
|
},
|
|
@@ -16915,7 +17145,12 @@
|
|
|
16915
17145
|
"propertyId",
|
|
16916
17146
|
"enrichedAt",
|
|
16917
17147
|
"source",
|
|
16918
|
-
"personCount"
|
|
17148
|
+
"personCount",
|
|
17149
|
+
"phoneCount",
|
|
17150
|
+
"emailCount",
|
|
17151
|
+
"charged",
|
|
17152
|
+
"creditsCharged",
|
|
17153
|
+
"charges"
|
|
16919
17154
|
],
|
|
16920
17155
|
"type": "object"
|
|
16921
17156
|
},
|
|
@@ -17742,6 +17977,17 @@
|
|
|
17742
17977
|
],
|
|
17743
17978
|
"type": "object"
|
|
17744
17979
|
},
|
|
17980
|
+
"GetSavedFilterResult": {
|
|
17981
|
+
"properties": {
|
|
17982
|
+
"data": {
|
|
17983
|
+
"$ref": "#/components/schemas/SavedFilter"
|
|
17984
|
+
}
|
|
17985
|
+
},
|
|
17986
|
+
"required": [
|
|
17987
|
+
"data"
|
|
17988
|
+
],
|
|
17989
|
+
"type": "object"
|
|
17990
|
+
},
|
|
17745
17991
|
"HeadcountPoint": {
|
|
17746
17992
|
"properties": {
|
|
17747
17993
|
"active": {
|
|
@@ -18637,7 +18883,7 @@
|
|
|
18637
18883
|
"$ref": "#/components/schemas/NumericFilterValue"
|
|
18638
18884
|
},
|
|
18639
18885
|
{
|
|
18640
|
-
"description": "Loan-to-value at ORIGINATION (sparse). This is not a current LTV — there is no stored current-LTV field on loans."
|
|
18886
|
+
"description": "Loan-to-value at ORIGINATION (sparse), as a PERCENT on a 0-100 scale (`80` = 80% LTV; values above 100 are real underwater loans). This is not a current LTV — there is no stored current-LTV field on loans."
|
|
18641
18887
|
}
|
|
18642
18888
|
]
|
|
18643
18889
|
},
|
|
@@ -19041,7 +19287,7 @@
|
|
|
19041
19287
|
"$ref": "#/components/schemas/NumericFilterValue"
|
|
19042
19288
|
},
|
|
19043
19289
|
{
|
|
19044
|
-
"description": "Loan-to-value at ORIGINATION (sparse). This is not a current LTV — there is no stored current-LTV field on loans."
|
|
19290
|
+
"description": "Loan-to-value at ORIGINATION (sparse), as a PERCENT on a 0-100 scale (`80` = 80% LTV; values above 100 are real underwater loans). This is not a current LTV — there is no stored current-LTV field on loans."
|
|
19045
19291
|
}
|
|
19046
19292
|
]
|
|
19047
19293
|
},
|
|
@@ -19587,7 +19833,7 @@
|
|
|
19587
19833
|
"$ref": "#/components/schemas/NumericFilterValue"
|
|
19588
19834
|
},
|
|
19589
19835
|
{
|
|
19590
|
-
"description": "Loan-to-value at ORIGINATION (sparse). This is not a current LTV — there is no stored current-LTV field on loans."
|
|
19836
|
+
"description": "Loan-to-value at ORIGINATION (sparse), as a PERCENT on a 0-100 scale (`80` = 80% LTV; values above 100 are real underwater loans). This is not a current LTV — there is no stored current-LTV field on loans."
|
|
19591
19837
|
}
|
|
19592
19838
|
]
|
|
19593
19839
|
},
|
|
@@ -19888,7 +20134,7 @@
|
|
|
19888
20134
|
"$ref": "#/components/schemas/NumericFilterValue"
|
|
19889
20135
|
},
|
|
19890
20136
|
{
|
|
19891
|
-
"description": "Loan-to-value at ORIGINATION (sparse). This is not a current LTV — there is no stored current-LTV field on loans."
|
|
20137
|
+
"description": "Loan-to-value at ORIGINATION (sparse), as a PERCENT on a 0-100 scale (`80` = 80% LTV; values above 100 are real underwater loans). This is not a current LTV — there is no stored current-LTV field on loans."
|
|
19892
20138
|
}
|
|
19893
20139
|
]
|
|
19894
20140
|
},
|
|
@@ -23479,7 +23725,7 @@
|
|
|
23479
23725
|
"$ref": "#/components/schemas/NumericFilterValue"
|
|
23480
23726
|
},
|
|
23481
23727
|
{
|
|
23482
|
-
"description": "Loan-to-value at ORIGINATION (sparse). This is not a current LTV — there is no stored current-LTV field on loans."
|
|
23728
|
+
"description": "Loan-to-value at ORIGINATION (sparse), as a PERCENT on a 0-100 scale (`80` = 80% LTV; values above 100 are real underwater loans). This is not a current LTV — there is no stored current-LTV field on loans."
|
|
23483
23729
|
}
|
|
23484
23730
|
]
|
|
23485
23731
|
},
|
|
@@ -25550,11 +25796,11 @@
|
|
|
25550
25796
|
"description": "Custom window. A period is a fixed pre-aggregated window and cannot be re-cut, so any bound here switches the response to live transaction data.",
|
|
25551
25797
|
"properties": {
|
|
25552
25798
|
"from": {
|
|
25553
|
-
"pattern": "^\\d{4}(?:-\\d{2}(?:-\\d{2})?)
|
|
25799
|
+
"pattern": "^\\d{4}(?:-\\d{2}(?:-\\d{2})?)?$",
|
|
25554
25800
|
"type": "string"
|
|
25555
25801
|
},
|
|
25556
25802
|
"to": {
|
|
25557
|
-
"pattern": "^\\d{4}(?:-\\d{2}(?:-\\d{2})?)
|
|
25803
|
+
"pattern": "^\\d{4}(?:-\\d{2}(?:-\\d{2})?)?$",
|
|
25558
25804
|
"type": "string"
|
|
25559
25805
|
}
|
|
25560
25806
|
},
|
|
@@ -26429,7 +26675,7 @@
|
|
|
26429
26675
|
"$ref": "#/components/schemas/NumericFilterValue"
|
|
26430
26676
|
},
|
|
26431
26677
|
{
|
|
26432
|
-
"description": "Loan-to-value at ORIGINATION (sparse). This is not a current LTV — there is no stored current-LTV field on loans."
|
|
26678
|
+
"description": "Loan-to-value at ORIGINATION (sparse), as a PERCENT on a 0-100 scale (`80` = 80% LTV; values above 100 are real underwater loans). This is not a current LTV — there is no stored current-LTV field on loans."
|
|
26433
26679
|
}
|
|
26434
26680
|
]
|
|
26435
26681
|
},
|
|
@@ -26739,7 +26985,7 @@
|
|
|
26739
26985
|
"$ref": "#/components/schemas/NumericFilterValue"
|
|
26740
26986
|
},
|
|
26741
26987
|
{
|
|
26742
|
-
"description": "Loan-to-value at ORIGINATION (sparse). This is not a current LTV — there is no stored current-LTV field on loans."
|
|
26988
|
+
"description": "Loan-to-value at ORIGINATION (sparse), as a PERCENT on a 0-100 scale (`80` = 80% LTV; values above 100 are real underwater loans). This is not a current LTV — there is no stored current-LTV field on loans."
|
|
26743
26989
|
}
|
|
26744
26990
|
]
|
|
26745
26991
|
},
|
|
@@ -29765,7 +30011,7 @@
|
|
|
29765
30011
|
"properties": {
|
|
29766
30012
|
"asOf": {
|
|
29767
30013
|
"description": "The subscribe day (yyyy-MM-dd). Step 0 replays the backfill window a real subscribe would deliver on this date.",
|
|
29768
|
-
"pattern": "^\\d{4}-\\d{2}-\\d{2}
|
|
30014
|
+
"pattern": "^\\d{4}-\\d{2}-\\d{2}",
|
|
29769
30015
|
"type": "string"
|
|
29770
30016
|
},
|
|
29771
30017
|
"backfillDays": {
|
|
@@ -29795,7 +30041,7 @@
|
|
|
29795
30041
|
"steps": {
|
|
29796
30042
|
"description": "Later dates (yyyy-MM-dd) to advance to. Each shows only what is NEW since the previous date — the forward delta the cron would have delivered. Sorted + de-duplicated; capped at 12 dates total.",
|
|
29797
30043
|
"items": {
|
|
29798
|
-
"pattern": "^\\d{4}-\\d{2}-\\d{2}
|
|
30044
|
+
"pattern": "^\\d{4}-\\d{2}-\\d{2}",
|
|
29799
30045
|
"type": "string"
|
|
29800
30046
|
},
|
|
29801
30047
|
"type": "array"
|
|
@@ -30601,6 +30847,260 @@
|
|
|
30601
30847
|
],
|
|
30602
30848
|
"type": "object"
|
|
30603
30849
|
},
|
|
30850
|
+
"SavedFilter": {
|
|
30851
|
+
"properties": {
|
|
30852
|
+
"createdAt": {
|
|
30853
|
+
"format": "date-time",
|
|
30854
|
+
"type": "string"
|
|
30855
|
+
},
|
|
30856
|
+
"fidelity": {
|
|
30857
|
+
"description": "How much of the UI state `query` captures: `exact`; `partial` (see `unmapped`); `ui_only` — no runnable query. Defaults from whether `query` is present.",
|
|
30858
|
+
"enum": [
|
|
30859
|
+
"exact",
|
|
30860
|
+
"partial",
|
|
30861
|
+
"ui_only"
|
|
30862
|
+
],
|
|
30863
|
+
"type": "string"
|
|
30864
|
+
},
|
|
30865
|
+
"icon": {
|
|
30866
|
+
"$ref": "#/components/schemas/SavedFilterIcon"
|
|
30867
|
+
},
|
|
30868
|
+
"id": {
|
|
30869
|
+
"type": "string"
|
|
30870
|
+
},
|
|
30871
|
+
"kind": {
|
|
30872
|
+
"description": "`filter` (default) — a saved search; `view` — a saved CRM table layout (columns / order) kept in `uiState`. Views never carry a `query` and have their own 25-per-target quota. Fixed at create.",
|
|
30873
|
+
"enum": [
|
|
30874
|
+
"filter",
|
|
30875
|
+
"view"
|
|
30876
|
+
],
|
|
30877
|
+
"type": "string"
|
|
30878
|
+
},
|
|
30879
|
+
"name": {
|
|
30880
|
+
"type": "string"
|
|
30881
|
+
},
|
|
30882
|
+
"operationId": {
|
|
30883
|
+
"description": "The operation to run `query` against (e.g. `listOriginators`); null for UI-only targets.",
|
|
30884
|
+
"nullable": true,
|
|
30885
|
+
"type": "string"
|
|
30886
|
+
},
|
|
30887
|
+
"query": {
|
|
30888
|
+
"additionalProperties": {
|
|
30889
|
+
"nullable": true
|
|
30890
|
+
},
|
|
30891
|
+
"nullable": true,
|
|
30892
|
+
"type": "object"
|
|
30893
|
+
},
|
|
30894
|
+
"queryVersion": {
|
|
30895
|
+
"type": "integer"
|
|
30896
|
+
},
|
|
30897
|
+
"stale": {
|
|
30898
|
+
"description": "True when the stored `query` no longer validates against the operation (its contract changed). Re-save or adjust before running.",
|
|
30899
|
+
"type": "boolean"
|
|
30900
|
+
},
|
|
30901
|
+
"staleIssues": {
|
|
30902
|
+
"items": {
|
|
30903
|
+
"properties": {
|
|
30904
|
+
"message": {
|
|
30905
|
+
"type": "string"
|
|
30906
|
+
},
|
|
30907
|
+
"path": {
|
|
30908
|
+
"type": "string"
|
|
30909
|
+
}
|
|
30910
|
+
},
|
|
30911
|
+
"required": [
|
|
30912
|
+
"path",
|
|
30913
|
+
"message"
|
|
30914
|
+
],
|
|
30915
|
+
"type": "object"
|
|
30916
|
+
},
|
|
30917
|
+
"type": "array"
|
|
30918
|
+
},
|
|
30919
|
+
"target": {
|
|
30920
|
+
"description": "Which list the filter runs against. Market targets run against that entity's list operation (see `operationId`, e.g. listOriginators); `crm_people` / `crm_companies` are UI-only (filtered client-side).",
|
|
30921
|
+
"enum": [
|
|
30922
|
+
"originators",
|
|
30923
|
+
"agents",
|
|
30924
|
+
"companies",
|
|
30925
|
+
"branches",
|
|
30926
|
+
"offices",
|
|
30927
|
+
"loans",
|
|
30928
|
+
"properties",
|
|
30929
|
+
"sales",
|
|
30930
|
+
"crm_people",
|
|
30931
|
+
"crm_companies"
|
|
30932
|
+
],
|
|
30933
|
+
"type": "string"
|
|
30934
|
+
},
|
|
30935
|
+
"uiState": {
|
|
30936
|
+
"additionalProperties": {
|
|
30937
|
+
"nullable": true
|
|
30938
|
+
},
|
|
30939
|
+
"nullable": true,
|
|
30940
|
+
"type": "object"
|
|
30941
|
+
},
|
|
30942
|
+
"uiStateVersion": {
|
|
30943
|
+
"type": "integer"
|
|
30944
|
+
},
|
|
30945
|
+
"unmapped": {
|
|
30946
|
+
"items": {
|
|
30947
|
+
"type": "string"
|
|
30948
|
+
},
|
|
30949
|
+
"type": "array"
|
|
30950
|
+
},
|
|
30951
|
+
"updatedAt": {
|
|
30952
|
+
"format": "date-time",
|
|
30953
|
+
"type": "string"
|
|
30954
|
+
},
|
|
30955
|
+
"visibility": {
|
|
30956
|
+
"description": "Always `private` in v1.",
|
|
30957
|
+
"enum": [
|
|
30958
|
+
"private",
|
|
30959
|
+
"organization",
|
|
30960
|
+
"shared"
|
|
30961
|
+
],
|
|
30962
|
+
"type": "string"
|
|
30963
|
+
}
|
|
30964
|
+
},
|
|
30965
|
+
"required": [
|
|
30966
|
+
"id",
|
|
30967
|
+
"name",
|
|
30968
|
+
"target",
|
|
30969
|
+
"kind",
|
|
30970
|
+
"icon",
|
|
30971
|
+
"query",
|
|
30972
|
+
"queryVersion",
|
|
30973
|
+
"uiState",
|
|
30974
|
+
"uiStateVersion",
|
|
30975
|
+
"fidelity",
|
|
30976
|
+
"unmapped",
|
|
30977
|
+
"visibility",
|
|
30978
|
+
"operationId",
|
|
30979
|
+
"stale",
|
|
30980
|
+
"staleIssues",
|
|
30981
|
+
"createdAt",
|
|
30982
|
+
"updatedAt"
|
|
30983
|
+
],
|
|
30984
|
+
"type": "object"
|
|
30985
|
+
},
|
|
30986
|
+
"SavedFilterError": {
|
|
30987
|
+
"properties": {
|
|
30988
|
+
"code": {
|
|
30989
|
+
"description": "`QUOTA_EXCEEDED` (409, 25 per target + kind).",
|
|
30990
|
+
"type": "string"
|
|
30991
|
+
},
|
|
30992
|
+
"error": {
|
|
30993
|
+
"type": "string"
|
|
30994
|
+
},
|
|
30995
|
+
"issues": {
|
|
30996
|
+
"items": {
|
|
30997
|
+
"properties": {
|
|
30998
|
+
"message": {
|
|
30999
|
+
"type": "string"
|
|
31000
|
+
},
|
|
31001
|
+
"path": {
|
|
31002
|
+
"type": "string"
|
|
31003
|
+
}
|
|
31004
|
+
},
|
|
31005
|
+
"required": [
|
|
31006
|
+
"path",
|
|
31007
|
+
"message"
|
|
31008
|
+
],
|
|
31009
|
+
"type": "object"
|
|
31010
|
+
},
|
|
31011
|
+
"type": "array"
|
|
31012
|
+
}
|
|
31013
|
+
},
|
|
31014
|
+
"required": [
|
|
31015
|
+
"error"
|
|
31016
|
+
],
|
|
31017
|
+
"type": "object"
|
|
31018
|
+
},
|
|
31019
|
+
"SavedFilterIcon": {
|
|
31020
|
+
"description": "Optional marker: a color dot, a tinted icon, or an emoji.",
|
|
31021
|
+
"oneOf": [
|
|
31022
|
+
{
|
|
31023
|
+
"properties": {
|
|
31024
|
+
"color": {
|
|
31025
|
+
"pattern": "^#[0-9a-fA-F]{6}$",
|
|
31026
|
+
"type": "string"
|
|
31027
|
+
},
|
|
31028
|
+
"type": {
|
|
31029
|
+
"enum": [
|
|
31030
|
+
"color"
|
|
31031
|
+
],
|
|
31032
|
+
"type": "string"
|
|
31033
|
+
}
|
|
31034
|
+
},
|
|
31035
|
+
"required": [
|
|
31036
|
+
"type",
|
|
31037
|
+
"color"
|
|
31038
|
+
],
|
|
31039
|
+
"type": "object"
|
|
31040
|
+
},
|
|
31041
|
+
{
|
|
31042
|
+
"properties": {
|
|
31043
|
+
"color": {
|
|
31044
|
+
"pattern": "^#[0-9a-fA-F]{6}$",
|
|
31045
|
+
"type": "string"
|
|
31046
|
+
},
|
|
31047
|
+
"icon": {
|
|
31048
|
+
"pattern": "^[A-Za-z][A-Za-z0-9]{0,63}$",
|
|
31049
|
+
"type": "string"
|
|
31050
|
+
},
|
|
31051
|
+
"type": {
|
|
31052
|
+
"enum": [
|
|
31053
|
+
"icon"
|
|
31054
|
+
],
|
|
31055
|
+
"type": "string"
|
|
31056
|
+
}
|
|
31057
|
+
},
|
|
31058
|
+
"required": [
|
|
31059
|
+
"type",
|
|
31060
|
+
"icon",
|
|
31061
|
+
"color"
|
|
31062
|
+
],
|
|
31063
|
+
"type": "object"
|
|
31064
|
+
},
|
|
31065
|
+
{
|
|
31066
|
+
"properties": {
|
|
31067
|
+
"emoji": {
|
|
31068
|
+
"maxLength": 16,
|
|
31069
|
+
"minLength": 1,
|
|
31070
|
+
"type": "string"
|
|
31071
|
+
},
|
|
31072
|
+
"type": {
|
|
31073
|
+
"enum": [
|
|
31074
|
+
"emoji"
|
|
31075
|
+
],
|
|
31076
|
+
"type": "string"
|
|
31077
|
+
}
|
|
31078
|
+
},
|
|
31079
|
+
"required": [
|
|
31080
|
+
"type",
|
|
31081
|
+
"emoji"
|
|
31082
|
+
],
|
|
31083
|
+
"type": "object"
|
|
31084
|
+
},
|
|
31085
|
+
{
|
|
31086
|
+
"nullable": true
|
|
31087
|
+
}
|
|
31088
|
+
]
|
|
31089
|
+
},
|
|
31090
|
+
"SavedFilterList": {
|
|
31091
|
+
"properties": {
|
|
31092
|
+
"data": {
|
|
31093
|
+
"items": {
|
|
31094
|
+
"$ref": "#/components/schemas/SavedFilter"
|
|
31095
|
+
},
|
|
31096
|
+
"type": "array"
|
|
31097
|
+
}
|
|
31098
|
+
},
|
|
31099
|
+
"required": [
|
|
31100
|
+
"data"
|
|
31101
|
+
],
|
|
31102
|
+
"type": "object"
|
|
31103
|
+
},
|
|
30604
31104
|
"ScoredBreakdownRequest": {
|
|
30605
31105
|
"properties": {
|
|
30606
31106
|
"period": {
|
|
@@ -31495,6 +31995,70 @@
|
|
|
31495
31995
|
},
|
|
31496
31996
|
"type": "object"
|
|
31497
31997
|
},
|
|
31998
|
+
"UpdateSavedFilterRequest": {
|
|
31999
|
+
"additionalProperties": false,
|
|
32000
|
+
"properties": {
|
|
32001
|
+
"fidelity": {
|
|
32002
|
+
"description": "How much of the UI state `query` captures: `exact`; `partial` (see `unmapped`); `ui_only` — no runnable query. Defaults from whether `query` is present.",
|
|
32003
|
+
"enum": [
|
|
32004
|
+
"exact",
|
|
32005
|
+
"partial",
|
|
32006
|
+
"ui_only"
|
|
32007
|
+
],
|
|
32008
|
+
"type": "string"
|
|
32009
|
+
},
|
|
32010
|
+
"icon": {
|
|
32011
|
+
"$ref": "#/components/schemas/SavedFilterIcon"
|
|
32012
|
+
},
|
|
32013
|
+
"name": {
|
|
32014
|
+
"maxLength": 100,
|
|
32015
|
+
"minLength": 1,
|
|
32016
|
+
"type": "string"
|
|
32017
|
+
},
|
|
32018
|
+
"query": {
|
|
32019
|
+
"additionalProperties": {
|
|
32020
|
+
"nullable": true
|
|
32021
|
+
},
|
|
32022
|
+
"description": "The target list operation's request body WITHOUT `pagination` (e.g. `{ flatFilters, filters, sort, period }` for listOriginators). Validated against that operation's schema; unknown filter fields are rejected. Null/omitted for a UI-only filter.",
|
|
32023
|
+
"nullable": true,
|
|
32024
|
+
"type": "object"
|
|
32025
|
+
},
|
|
32026
|
+
"uiState": {
|
|
32027
|
+
"additionalProperties": {
|
|
32028
|
+
"nullable": true
|
|
32029
|
+
},
|
|
32030
|
+
"description": "Opaque client UI state used to restore a filter panel (≤16KB). Not interpreted by the API.",
|
|
32031
|
+
"nullable": true,
|
|
32032
|
+
"type": "object"
|
|
32033
|
+
},
|
|
32034
|
+
"uiStateVersion": {
|
|
32035
|
+
"minimum": 1,
|
|
32036
|
+
"type": "integer"
|
|
32037
|
+
},
|
|
32038
|
+
"unmapped": {
|
|
32039
|
+
"description": "UI filter keys the client could not express in `query` (set with `fidelity: partial`).",
|
|
32040
|
+
"items": {
|
|
32041
|
+
"maxLength": 200,
|
|
32042
|
+
"minLength": 1,
|
|
32043
|
+
"type": "string"
|
|
32044
|
+
},
|
|
32045
|
+
"maxItems": 100,
|
|
32046
|
+
"type": "array"
|
|
32047
|
+
}
|
|
32048
|
+
},
|
|
32049
|
+
"type": "object"
|
|
32050
|
+
},
|
|
32051
|
+
"UpdateSavedFilterResult": {
|
|
32052
|
+
"properties": {
|
|
32053
|
+
"data": {
|
|
32054
|
+
"$ref": "#/components/schemas/SavedFilter"
|
|
32055
|
+
}
|
|
32056
|
+
},
|
|
32057
|
+
"required": [
|
|
32058
|
+
"data"
|
|
32059
|
+
],
|
|
32060
|
+
"type": "object"
|
|
32061
|
+
},
|
|
31498
32062
|
"WatchedAgent": {
|
|
31499
32063
|
"properties": {
|
|
31500
32064
|
"addedAt": {
|
|
@@ -31746,7 +32310,7 @@
|
|
|
31746
32310
|
"info": {
|
|
31747
32311
|
"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 1,000 rows per delivery: no entitlement required.** Available to\n every authenticated caller.\n- **Above 1,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.",
|
|
31748
32312
|
"title": "ModelMatch API",
|
|
31749
|
-
"version": "3.
|
|
32313
|
+
"version": "3.62.0"
|
|
31750
32314
|
},
|
|
31751
32315
|
"openapi": "3.1.0",
|
|
31752
32316
|
"paths": {
|
|
@@ -35447,7 +36011,7 @@
|
|
|
35447
36011
|
"schema": {
|
|
35448
36012
|
"description": "Individual NMLS id.",
|
|
35449
36013
|
"example": "3352",
|
|
35450
|
-
"pattern": "^\\d
|
|
36014
|
+
"pattern": "^\\d+$",
|
|
35451
36015
|
"type": "string"
|
|
35452
36016
|
}
|
|
35453
36017
|
}
|
|
@@ -35585,7 +36149,7 @@
|
|
|
35585
36149
|
"schema": {
|
|
35586
36150
|
"description": "ECS task id returned by the launch route.",
|
|
35587
36151
|
"example": "0123456789abcdef0123456789abcdef",
|
|
35588
|
-
"pattern": "^[a-f0-9]{32}
|
|
36152
|
+
"pattern": "^[a-f0-9]{32}$",
|
|
35589
36153
|
"type": "string"
|
|
35590
36154
|
}
|
|
35591
36155
|
}
|
|
@@ -42259,7 +42823,7 @@
|
|
|
42259
42823
|
"required": false,
|
|
42260
42824
|
"schema": {
|
|
42261
42825
|
"description": "Window start, inclusive (YYYY-MM-DD). Overrides `period`.",
|
|
42262
|
-
"pattern": "^\\d{4}-\\d{2}-\\d{2}
|
|
42826
|
+
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
|
|
42263
42827
|
"type": "string"
|
|
42264
42828
|
}
|
|
42265
42829
|
},
|
|
@@ -42270,7 +42834,7 @@
|
|
|
42270
42834
|
"required": false,
|
|
42271
42835
|
"schema": {
|
|
42272
42836
|
"description": "Window end, inclusive (YYYY-MM-DD). Overrides `period`.",
|
|
42273
|
-
"pattern": "^\\d{4}-\\d{2}-\\d{2}
|
|
42837
|
+
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
|
|
42274
42838
|
"type": "string"
|
|
42275
42839
|
}
|
|
42276
42840
|
},
|
|
@@ -42281,7 +42845,7 @@
|
|
|
42281
42845
|
"required": false,
|
|
42282
42846
|
"schema": {
|
|
42283
42847
|
"description": "Drill into one hire cohort (`YYYY-MM`): `data` then lists its early departures and recent starts.",
|
|
42284
|
-
"pattern": "^\\d{4}-\\d{2}
|
|
42848
|
+
"pattern": "^\\d{4}-\\d{2}$",
|
|
42285
42849
|
"type": "string"
|
|
42286
42850
|
}
|
|
42287
42851
|
},
|
|
@@ -42403,7 +42967,7 @@
|
|
|
42403
42967
|
"required": false,
|
|
42404
42968
|
"schema": {
|
|
42405
42969
|
"description": "Window start, inclusive (YYYY-MM-DD). Overrides `period`.",
|
|
42406
|
-
"pattern": "^\\d{4}-\\d{2}-\\d{2}
|
|
42970
|
+
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
|
|
42407
42971
|
"type": "string"
|
|
42408
42972
|
}
|
|
42409
42973
|
},
|
|
@@ -42414,7 +42978,7 @@
|
|
|
42414
42978
|
"required": false,
|
|
42415
42979
|
"schema": {
|
|
42416
42980
|
"description": "Window end, inclusive (YYYY-MM-DD). Overrides `period`.",
|
|
42417
|
-
"pattern": "^\\d{4}-\\d{2}-\\d{2}
|
|
42981
|
+
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
|
|
42418
42982
|
"type": "string"
|
|
42419
42983
|
}
|
|
42420
42984
|
}
|
|
@@ -42541,7 +43105,7 @@
|
|
|
42541
43105
|
"required": false,
|
|
42542
43106
|
"schema": {
|
|
42543
43107
|
"description": "Window start, inclusive (YYYY-MM-DD). Overrides `period`.",
|
|
42544
|
-
"pattern": "^\\d{4}-\\d{2}-\\d{2}
|
|
43108
|
+
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
|
|
42545
43109
|
"type": "string"
|
|
42546
43110
|
}
|
|
42547
43111
|
},
|
|
@@ -42552,7 +43116,7 @@
|
|
|
42552
43116
|
"required": false,
|
|
42553
43117
|
"schema": {
|
|
42554
43118
|
"description": "Window end, inclusive (YYYY-MM-DD). Overrides `period`.",
|
|
42555
|
-
"pattern": "^\\d{4}-\\d{2}-\\d{2}
|
|
43119
|
+
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
|
|
42556
43120
|
"type": "string"
|
|
42557
43121
|
}
|
|
42558
43122
|
},
|
|
@@ -42563,7 +43127,7 @@
|
|
|
42563
43127
|
"required": false,
|
|
42564
43128
|
"schema": {
|
|
42565
43129
|
"description": "Roster AS OF this date (YYYY-MM-DD): loan officers with a record covering it. Replaces the window; `status` must be `active` or omitted.",
|
|
42566
|
-
"pattern": "^\\d{4}-\\d{2}-\\d{2}
|
|
43130
|
+
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
|
|
42567
43131
|
"type": "string"
|
|
42568
43132
|
}
|
|
42569
43133
|
},
|
|
@@ -42739,7 +43303,7 @@
|
|
|
42739
43303
|
"required": false,
|
|
42740
43304
|
"schema": {
|
|
42741
43305
|
"description": "Window start, inclusive (YYYY-MM-DD). Overrides `period`.",
|
|
42742
|
-
"pattern": "^\\d{4}-\\d{2}-\\d{2}
|
|
43306
|
+
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
|
|
42743
43307
|
"type": "string"
|
|
42744
43308
|
}
|
|
42745
43309
|
},
|
|
@@ -42750,7 +43314,7 @@
|
|
|
42750
43314
|
"required": false,
|
|
42751
43315
|
"schema": {
|
|
42752
43316
|
"description": "Window end, inclusive (YYYY-MM-DD). Overrides `period`.",
|
|
42753
|
-
"pattern": "^\\d{4}-\\d{2}-\\d{2}
|
|
43317
|
+
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
|
|
42754
43318
|
"type": "string"
|
|
42755
43319
|
}
|
|
42756
43320
|
},
|
|
@@ -43150,7 +43714,7 @@
|
|
|
43150
43714
|
"required": false,
|
|
43151
43715
|
"schema": {
|
|
43152
43716
|
"description": "Window start, inclusive (YYYY-MM-DD). Overrides `period`.",
|
|
43153
|
-
"pattern": "^\\d{4}-\\d{2}-\\d{2}
|
|
43717
|
+
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
|
|
43154
43718
|
"type": "string"
|
|
43155
43719
|
}
|
|
43156
43720
|
},
|
|
@@ -43161,7 +43725,7 @@
|
|
|
43161
43725
|
"required": false,
|
|
43162
43726
|
"schema": {
|
|
43163
43727
|
"description": "Window end, inclusive (YYYY-MM-DD). Overrides `period`.",
|
|
43164
|
-
"pattern": "^\\d{4}-\\d{2}-\\d{2}
|
|
43728
|
+
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
|
|
43165
43729
|
"type": "string"
|
|
43166
43730
|
}
|
|
43167
43731
|
},
|
|
@@ -57312,7 +57876,7 @@
|
|
|
57312
57876
|
"schema": {
|
|
57313
57877
|
"description": "Reporting window. `last_N_months` = the N most recent COMPLETED calendar months (the current month is excluded); `year_to_date` = Jan 1 through the end of last month; `YYYY` (or `fy_YYYY`) = that calendar year; `all_time`. Default `last_12_months`.",
|
|
57314
57878
|
"example": "last_12_months",
|
|
57315
|
-
"pattern": "^(?:last_\\d{1,3}_months|year_to_date|all_time|(?:fy_|fiscal_)?\\d{4})
|
|
57879
|
+
"pattern": "^(?:last_\\d{1,3}_months|year_to_date|all_time|(?:fy_|fiscal_)?\\d{4})$",
|
|
57316
57880
|
"type": "string"
|
|
57317
57881
|
}
|
|
57318
57882
|
},
|
|
@@ -57324,7 +57888,7 @@
|
|
|
57324
57888
|
"schema": {
|
|
57325
57889
|
"description": "Two-letter state. Matches the loan officer's CURRENT NMLS location, not where they were when they moved.",
|
|
57326
57890
|
"example": "TX",
|
|
57327
|
-
"pattern": "^[A-Za-z]{2}
|
|
57891
|
+
"pattern": "^[A-Za-z]{2}$",
|
|
57328
57892
|
"type": "string"
|
|
57329
57893
|
}
|
|
57330
57894
|
},
|
|
@@ -57336,7 +57900,7 @@
|
|
|
57336
57900
|
"schema": {
|
|
57337
57901
|
"description": "Comma-separated two-letter states (e.g. a region). ORed; combined with `state` when both are sent.",
|
|
57338
57902
|
"example": "WA,OR,ID",
|
|
57339
|
-
"pattern": "^[A-Za-z]{2}(?:,[A-Za-z]{2})
|
|
57903
|
+
"pattern": "^[A-Za-z]{2}(?:,[A-Za-z]{2})*$",
|
|
57340
57904
|
"type": "string"
|
|
57341
57905
|
}
|
|
57342
57906
|
},
|
|
@@ -57455,7 +58019,7 @@
|
|
|
57455
58019
|
"schema": {
|
|
57456
58020
|
"description": "Reporting window. `last_N_months` = the N most recent COMPLETED calendar months (the current month is excluded); `year_to_date` = Jan 1 through the end of last month; `YYYY` (or `fy_YYYY`) = that calendar year; `all_time`. Default `last_12_months`.",
|
|
57457
58021
|
"example": "last_12_months",
|
|
57458
|
-
"pattern": "^(?:last_\\d{1,3}_months|year_to_date|all_time|(?:fy_|fiscal_)?\\d{4})
|
|
58022
|
+
"pattern": "^(?:last_\\d{1,3}_months|year_to_date|all_time|(?:fy_|fiscal_)?\\d{4})$",
|
|
57459
58023
|
"type": "string"
|
|
57460
58024
|
}
|
|
57461
58025
|
},
|
|
@@ -57467,7 +58031,7 @@
|
|
|
57467
58031
|
"schema": {
|
|
57468
58032
|
"description": "Two-letter state. Matches the loan officer's CURRENT NMLS location, not where they were when they moved.",
|
|
57469
58033
|
"example": "TX",
|
|
57470
|
-
"pattern": "^[A-Za-z]{2}
|
|
58034
|
+
"pattern": "^[A-Za-z]{2}$",
|
|
57471
58035
|
"type": "string"
|
|
57472
58036
|
}
|
|
57473
58037
|
},
|
|
@@ -57479,7 +58043,7 @@
|
|
|
57479
58043
|
"schema": {
|
|
57480
58044
|
"description": "Comma-separated two-letter states (e.g. a region). ORed; combined with `state` when both are sent.",
|
|
57481
58045
|
"example": "WA,OR,ID",
|
|
57482
|
-
"pattern": "^[A-Za-z]{2}(?:,[A-Za-z]{2})
|
|
58046
|
+
"pattern": "^[A-Za-z]{2}(?:,[A-Za-z]{2})*$",
|
|
57483
58047
|
"type": "string"
|
|
57484
58048
|
}
|
|
57485
58049
|
},
|
|
@@ -57503,7 +58067,7 @@
|
|
|
57503
58067
|
"schema": {
|
|
57504
58068
|
"description": "Comma-separated company categories (`BANK`, `CU`, `OTHER`) applied to the company whose roster changed — the destination for arrivals, the company left for departures.",
|
|
57505
58069
|
"example": "BANK,CU",
|
|
57506
|
-
"pattern": "^(?:BANK|CU|OTHER)(?:,(?:BANK|CU|OTHER))
|
|
58070
|
+
"pattern": "^(?:BANK|CU|OTHER)(?:,(?:BANK|CU|OTHER))*$",
|
|
57507
58071
|
"type": "string"
|
|
57508
58072
|
}
|
|
57509
58073
|
},
|
|
@@ -57622,7 +58186,7 @@
|
|
|
57622
58186
|
"schema": {
|
|
57623
58187
|
"description": "Reporting window. `last_N_months` = the N most recent COMPLETED calendar months (the current month is excluded); `year_to_date` = Jan 1 through the end of last month; `YYYY` (or `fy_YYYY`) = that calendar year; `all_time`. Default `last_12_months`.",
|
|
57624
58188
|
"example": "last_12_months",
|
|
57625
|
-
"pattern": "^(?:last_\\d{1,3}_months|year_to_date|all_time|(?:fy_|fiscal_)?\\d{4})
|
|
58189
|
+
"pattern": "^(?:last_\\d{1,3}_months|year_to_date|all_time|(?:fy_|fiscal_)?\\d{4})$",
|
|
57626
58190
|
"type": "string"
|
|
57627
58191
|
}
|
|
57628
58192
|
},
|
|
@@ -57634,7 +58198,7 @@
|
|
|
57634
58198
|
"schema": {
|
|
57635
58199
|
"description": "Two-letter state. Matches the loan officer's CURRENT NMLS location, not where they were when they moved.",
|
|
57636
58200
|
"example": "TX",
|
|
57637
|
-
"pattern": "^[A-Za-z]{2}
|
|
58201
|
+
"pattern": "^[A-Za-z]{2}$",
|
|
57638
58202
|
"type": "string"
|
|
57639
58203
|
}
|
|
57640
58204
|
},
|
|
@@ -57646,7 +58210,7 @@
|
|
|
57646
58210
|
"schema": {
|
|
57647
58211
|
"description": "Comma-separated two-letter states (e.g. a region). ORed; combined with `state` when both are sent.",
|
|
57648
58212
|
"example": "WA,OR,ID",
|
|
57649
|
-
"pattern": "^[A-Za-z]{2}(?:,[A-Za-z]{2})
|
|
58213
|
+
"pattern": "^[A-Za-z]{2}(?:,[A-Za-z]{2})*$",
|
|
57650
58214
|
"type": "string"
|
|
57651
58215
|
}
|
|
57652
58216
|
},
|
|
@@ -57670,7 +58234,7 @@
|
|
|
57670
58234
|
"schema": {
|
|
57671
58235
|
"description": "Comma-separated company categories (`BANK`, `CU`, `OTHER`) applied to the company whose roster changed — the destination for arrivals, the company left for departures.",
|
|
57672
58236
|
"example": "BANK,CU",
|
|
57673
|
-
"pattern": "^(?:BANK|CU|OTHER)(?:,(?:BANK|CU|OTHER))
|
|
58237
|
+
"pattern": "^(?:BANK|CU|OTHER)(?:,(?:BANK|CU|OTHER))*$",
|
|
57674
58238
|
"type": "string"
|
|
57675
58239
|
}
|
|
57676
58240
|
},
|
|
@@ -57792,7 +58356,7 @@
|
|
|
57792
58356
|
"schema": {
|
|
57793
58357
|
"description": "Reporting window. `last_N_months` = the N most recent COMPLETED calendar months (the current month is excluded); `year_to_date` = Jan 1 through the end of last month; `YYYY` (or `fy_YYYY`) = that calendar year; `all_time`. Default `last_12_months`.",
|
|
57794
58358
|
"example": "last_12_months",
|
|
57795
|
-
"pattern": "^(?:last_\\d{1,3}_months|year_to_date|all_time|(?:fy_|fiscal_)?\\d{4})
|
|
58359
|
+
"pattern": "^(?:last_\\d{1,3}_months|year_to_date|all_time|(?:fy_|fiscal_)?\\d{4})$",
|
|
57796
58360
|
"type": "string"
|
|
57797
58361
|
}
|
|
57798
58362
|
},
|
|
@@ -57804,7 +58368,7 @@
|
|
|
57804
58368
|
"schema": {
|
|
57805
58369
|
"description": "Two-letter state. Matches the loan officer's CURRENT NMLS location, not where they were when they moved.",
|
|
57806
58370
|
"example": "TX",
|
|
57807
|
-
"pattern": "^[A-Za-z]{2}
|
|
58371
|
+
"pattern": "^[A-Za-z]{2}$",
|
|
57808
58372
|
"type": "string"
|
|
57809
58373
|
}
|
|
57810
58374
|
},
|
|
@@ -57816,7 +58380,7 @@
|
|
|
57816
58380
|
"schema": {
|
|
57817
58381
|
"description": "Comma-separated two-letter states (e.g. a region). ORed; combined with `state` when both are sent.",
|
|
57818
58382
|
"example": "WA,OR,ID",
|
|
57819
|
-
"pattern": "^[A-Za-z]{2}(?:,[A-Za-z]{2})
|
|
58383
|
+
"pattern": "^[A-Za-z]{2}(?:,[A-Za-z]{2})*$",
|
|
57820
58384
|
"type": "string"
|
|
57821
58385
|
}
|
|
57822
58386
|
},
|
|
@@ -57840,7 +58404,7 @@
|
|
|
57840
58404
|
"schema": {
|
|
57841
58405
|
"description": "Comma-separated company categories (`BANK`, `CU`, `OTHER`) applied to the company whose roster changed — the destination for arrivals, the company left for departures.",
|
|
57842
58406
|
"example": "BANK,CU",
|
|
57843
|
-
"pattern": "^(?:BANK|CU|OTHER)(?:,(?:BANK|CU|OTHER))
|
|
58407
|
+
"pattern": "^(?:BANK|CU|OTHER)(?:,(?:BANK|CU|OTHER))*$",
|
|
57844
58408
|
"type": "string"
|
|
57845
58409
|
}
|
|
57846
58410
|
},
|
|
@@ -57973,7 +58537,7 @@
|
|
|
57973
58537
|
"schema": {
|
|
57974
58538
|
"description": "Reporting window. `last_N_months` = the N most recent COMPLETED calendar months (the current month is excluded); `year_to_date` = Jan 1 through the end of last month; `YYYY` (or `fy_YYYY`) = that calendar year; `all_time`. Default `last_12_months`.",
|
|
57975
58539
|
"example": "last_12_months",
|
|
57976
|
-
"pattern": "^(?:last_\\d{1,3}_months|year_to_date|all_time|(?:fy_|fiscal_)?\\d{4})
|
|
58540
|
+
"pattern": "^(?:last_\\d{1,3}_months|year_to_date|all_time|(?:fy_|fiscal_)?\\d{4})$",
|
|
57977
58541
|
"type": "string"
|
|
57978
58542
|
}
|
|
57979
58543
|
},
|
|
@@ -57985,7 +58549,7 @@
|
|
|
57985
58549
|
"schema": {
|
|
57986
58550
|
"description": "Two-letter state. Matches the loan officer's CURRENT NMLS location, not where they were when they moved.",
|
|
57987
58551
|
"example": "TX",
|
|
57988
|
-
"pattern": "^[A-Za-z]{2}
|
|
58552
|
+
"pattern": "^[A-Za-z]{2}$",
|
|
57989
58553
|
"type": "string"
|
|
57990
58554
|
}
|
|
57991
58555
|
},
|
|
@@ -57997,7 +58561,7 @@
|
|
|
57997
58561
|
"schema": {
|
|
57998
58562
|
"description": "Comma-separated two-letter states (e.g. a region). ORed; combined with `state` when both are sent.",
|
|
57999
58563
|
"example": "WA,OR,ID",
|
|
58000
|
-
"pattern": "^[A-Za-z]{2}(?:,[A-Za-z]{2})
|
|
58564
|
+
"pattern": "^[A-Za-z]{2}(?:,[A-Za-z]{2})*$",
|
|
58001
58565
|
"type": "string"
|
|
58002
58566
|
}
|
|
58003
58567
|
},
|
|
@@ -58021,7 +58585,7 @@
|
|
|
58021
58585
|
"schema": {
|
|
58022
58586
|
"description": "Comma-separated company categories (`BANK`, `CU`, `OTHER`) applied to the company whose roster changed — the destination for arrivals, the company left for departures.",
|
|
58023
58587
|
"example": "BANK,CU",
|
|
58024
|
-
"pattern": "^(?:BANK|CU|OTHER)(?:,(?:BANK|CU|OTHER))
|
|
58588
|
+
"pattern": "^(?:BANK|CU|OTHER)(?:,(?:BANK|CU|OTHER))*$",
|
|
58025
58589
|
"type": "string"
|
|
58026
58590
|
}
|
|
58027
58591
|
},
|
|
@@ -58154,7 +58718,7 @@
|
|
|
58154
58718
|
"schema": {
|
|
58155
58719
|
"description": "Reporting window. `last_N_months` = the N most recent COMPLETED calendar months (the current month is excluded); `year_to_date` = Jan 1 through the end of last month; `YYYY` (or `fy_YYYY`) = that calendar year; `all_time`. Default `last_12_months`.",
|
|
58156
58720
|
"example": "last_12_months",
|
|
58157
|
-
"pattern": "^(?:last_\\d{1,3}_months|year_to_date|all_time|(?:fy_|fiscal_)?\\d{4})
|
|
58721
|
+
"pattern": "^(?:last_\\d{1,3}_months|year_to_date|all_time|(?:fy_|fiscal_)?\\d{4})$",
|
|
58158
58722
|
"type": "string"
|
|
58159
58723
|
}
|
|
58160
58724
|
},
|
|
@@ -58166,7 +58730,7 @@
|
|
|
58166
58730
|
"schema": {
|
|
58167
58731
|
"description": "Two-letter state. Matches the loan officer's CURRENT NMLS location, not where they were when they moved.",
|
|
58168
58732
|
"example": "TX",
|
|
58169
|
-
"pattern": "^[A-Za-z]{2}
|
|
58733
|
+
"pattern": "^[A-Za-z]{2}$",
|
|
58170
58734
|
"type": "string"
|
|
58171
58735
|
}
|
|
58172
58736
|
},
|
|
@@ -58178,7 +58742,7 @@
|
|
|
58178
58742
|
"schema": {
|
|
58179
58743
|
"description": "Comma-separated two-letter states (e.g. a region). ORed; combined with `state` when both are sent.",
|
|
58180
58744
|
"example": "WA,OR,ID",
|
|
58181
|
-
"pattern": "^[A-Za-z]{2}(?:,[A-Za-z]{2})
|
|
58745
|
+
"pattern": "^[A-Za-z]{2}(?:,[A-Za-z]{2})*$",
|
|
58182
58746
|
"type": "string"
|
|
58183
58747
|
}
|
|
58184
58748
|
},
|
|
@@ -58202,7 +58766,7 @@
|
|
|
58202
58766
|
"schema": {
|
|
58203
58767
|
"description": "Comma-separated company categories (`BANK`, `CU`, `OTHER`) applied to the company whose roster changed — the destination for arrivals, the company left for departures.",
|
|
58204
58768
|
"example": "BANK,CU",
|
|
58205
|
-
"pattern": "^(?:BANK|CU|OTHER)(?:,(?:BANK|CU|OTHER))
|
|
58769
|
+
"pattern": "^(?:BANK|CU|OTHER)(?:,(?:BANK|CU|OTHER))*$",
|
|
58206
58770
|
"type": "string"
|
|
58207
58771
|
}
|
|
58208
58772
|
},
|
|
@@ -58382,7 +58946,7 @@
|
|
|
58382
58946
|
"required": false,
|
|
58383
58947
|
"schema": {
|
|
58384
58948
|
"description": "Calendar year to rank (default: last year).",
|
|
58385
|
-
"pattern": "^\\d{4}
|
|
58949
|
+
"pattern": "^\\d{4}$",
|
|
58386
58950
|
"type": "string"
|
|
58387
58951
|
}
|
|
58388
58952
|
},
|
|
@@ -58511,7 +59075,7 @@
|
|
|
58511
59075
|
"schema": {
|
|
58512
59076
|
"description": "Reporting window. `last_N_months` = the N most recent COMPLETED calendar months (the current month is excluded); `year_to_date` = Jan 1 through the end of last month; `YYYY` (or `fy_YYYY`) = that calendar year; `all_time`. Default `last_12_months`.",
|
|
58513
59077
|
"example": "last_12_months",
|
|
58514
|
-
"pattern": "^(?:last_\\d{1,3}_months|year_to_date|all_time|(?:fy_|fiscal_)?\\d{4})
|
|
59078
|
+
"pattern": "^(?:last_\\d{1,3}_months|year_to_date|all_time|(?:fy_|fiscal_)?\\d{4})$",
|
|
58515
59079
|
"type": "string"
|
|
58516
59080
|
}
|
|
58517
59081
|
},
|
|
@@ -58523,7 +59087,7 @@
|
|
|
58523
59087
|
"schema": {
|
|
58524
59088
|
"description": "Two-letter state. Matches the loan officer's CURRENT NMLS location, not where they were when they moved.",
|
|
58525
59089
|
"example": "TX",
|
|
58526
|
-
"pattern": "^[A-Za-z]{2}
|
|
59090
|
+
"pattern": "^[A-Za-z]{2}$",
|
|
58527
59091
|
"type": "string"
|
|
58528
59092
|
}
|
|
58529
59093
|
},
|
|
@@ -58535,7 +59099,7 @@
|
|
|
58535
59099
|
"schema": {
|
|
58536
59100
|
"description": "Comma-separated two-letter states (e.g. a region). ORed; combined with `state` when both are sent.",
|
|
58537
59101
|
"example": "WA,OR,ID",
|
|
58538
|
-
"pattern": "^[A-Za-z]{2}(?:,[A-Za-z]{2})
|
|
59102
|
+
"pattern": "^[A-Za-z]{2}(?:,[A-Za-z]{2})*$",
|
|
58539
59103
|
"type": "string"
|
|
58540
59104
|
}
|
|
58541
59105
|
},
|
|
@@ -58559,7 +59123,7 @@
|
|
|
58559
59123
|
"schema": {
|
|
58560
59124
|
"description": "Comma-separated company categories (`BANK`, `CU`, `OTHER`) applied to the company whose roster changed — the destination for arrivals, the company left for departures.",
|
|
58561
59125
|
"example": "BANK,CU",
|
|
58562
|
-
"pattern": "^(?:BANK|CU|OTHER)(?:,(?:BANK|CU|OTHER))
|
|
59126
|
+
"pattern": "^(?:BANK|CU|OTHER)(?:,(?:BANK|CU|OTHER))*$",
|
|
58563
59127
|
"type": "string"
|
|
58564
59128
|
}
|
|
58565
59129
|
}
|
|
@@ -58666,7 +59230,7 @@
|
|
|
58666
59230
|
"schema": {
|
|
58667
59231
|
"description": "Reporting window. `last_N_months` = the N most recent COMPLETED calendar months (the current month is excluded); `year_to_date` = Jan 1 through the end of last month; `YYYY` (or `fy_YYYY`) = that calendar year; `all_time`. Default `last_12_months`.",
|
|
58668
59232
|
"example": "last_12_months",
|
|
58669
|
-
"pattern": "^(?:last_\\d{1,3}_months|year_to_date|all_time|(?:fy_|fiscal_)?\\d{4})
|
|
59233
|
+
"pattern": "^(?:last_\\d{1,3}_months|year_to_date|all_time|(?:fy_|fiscal_)?\\d{4})$",
|
|
58670
59234
|
"type": "string"
|
|
58671
59235
|
}
|
|
58672
59236
|
},
|
|
@@ -58678,7 +59242,7 @@
|
|
|
58678
59242
|
"schema": {
|
|
58679
59243
|
"description": "Two-letter state. Matches the loan officer's CURRENT NMLS location, not where they were when they moved.",
|
|
58680
59244
|
"example": "TX",
|
|
58681
|
-
"pattern": "^[A-Za-z]{2}
|
|
59245
|
+
"pattern": "^[A-Za-z]{2}$",
|
|
58682
59246
|
"type": "string"
|
|
58683
59247
|
}
|
|
58684
59248
|
},
|
|
@@ -58690,7 +59254,7 @@
|
|
|
58690
59254
|
"schema": {
|
|
58691
59255
|
"description": "Comma-separated two-letter states (e.g. a region). ORed; combined with `state` when both are sent.",
|
|
58692
59256
|
"example": "WA,OR,ID",
|
|
58693
|
-
"pattern": "^[A-Za-z]{2}(?:,[A-Za-z]{2})
|
|
59257
|
+
"pattern": "^[A-Za-z]{2}(?:,[A-Za-z]{2})*$",
|
|
58694
59258
|
"type": "string"
|
|
58695
59259
|
}
|
|
58696
59260
|
},
|
|
@@ -58714,7 +59278,7 @@
|
|
|
58714
59278
|
"schema": {
|
|
58715
59279
|
"description": "Comma-separated company categories (`BANK`, `CU`, `OTHER`) applied to the company whose roster changed — the destination for arrivals, the company left for departures.",
|
|
58716
59280
|
"example": "BANK,CU",
|
|
58717
|
-
"pattern": "^(?:BANK|CU|OTHER)(?:,(?:BANK|CU|OTHER))
|
|
59281
|
+
"pattern": "^(?:BANK|CU|OTHER)(?:,(?:BANK|CU|OTHER))*$",
|
|
58718
59282
|
"type": "string"
|
|
58719
59283
|
}
|
|
58720
59284
|
},
|
|
@@ -59013,7 +59577,7 @@
|
|
|
59013
59577
|
"required": false,
|
|
59014
59578
|
"schema": {
|
|
59015
59579
|
"description": "Usage window start (YYYY-MM-DD, inclusive)",
|
|
59016
|
-
"pattern": "^\\d{4}-\\d{2}-\\d{2}
|
|
59580
|
+
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
|
|
59017
59581
|
"type": "string"
|
|
59018
59582
|
}
|
|
59019
59583
|
},
|
|
@@ -59024,7 +59588,7 @@
|
|
|
59024
59588
|
"required": false,
|
|
59025
59589
|
"schema": {
|
|
59026
59590
|
"description": "Usage window end (YYYY-MM-DD, inclusive)",
|
|
59027
|
-
"pattern": "^\\d{4}-\\d{2}-\\d{2}
|
|
59591
|
+
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
|
|
59028
59592
|
"type": "string"
|
|
59029
59593
|
}
|
|
59030
59594
|
}
|
|
@@ -62466,6 +63030,17 @@
|
|
|
62466
63030
|
"description": "Pagination cursor from a previous response",
|
|
62467
63031
|
"type": "string"
|
|
62468
63032
|
}
|
|
63033
|
+
},
|
|
63034
|
+
{
|
|
63035
|
+
"description": "Return only this property's enrichment (zero or one item). The id is the one in the credit ledger's `enrich:<propertyId>` reason.",
|
|
63036
|
+
"in": "query",
|
|
63037
|
+
"name": "propertyId",
|
|
63038
|
+
"required": false,
|
|
63039
|
+
"schema": {
|
|
63040
|
+
"description": "Return only this property's enrichment (zero or one item). The id is the one in the credit ledger's `enrich:<propertyId>` reason.",
|
|
63041
|
+
"minLength": 1,
|
|
63042
|
+
"type": "string"
|
|
63043
|
+
}
|
|
62469
63044
|
}
|
|
62470
63045
|
],
|
|
62471
63046
|
"responses": {
|
|
@@ -63092,34 +63667,440 @@
|
|
|
63092
63667
|
"description": "Response payload too large — detail endpoint capped to fit Lambda response limits"
|
|
63093
63668
|
}
|
|
63094
63669
|
},
|
|
63095
|
-
"summary": "Search sales with filters",
|
|
63670
|
+
"summary": "Search sales with filters",
|
|
63671
|
+
"tags": [
|
|
63672
|
+
"Sales"
|
|
63673
|
+
]
|
|
63674
|
+
}
|
|
63675
|
+
},
|
|
63676
|
+
"/v1/sales/analytics/chart": {
|
|
63677
|
+
"post": {
|
|
63678
|
+
"operationId": "salesAnalyticsChart",
|
|
63679
|
+
"requestBody": {
|
|
63680
|
+
"content": {
|
|
63681
|
+
"application/json": {
|
|
63682
|
+
"schema": {
|
|
63683
|
+
"$ref": "#/components/schemas/SaleChartRequest"
|
|
63684
|
+
}
|
|
63685
|
+
}
|
|
63686
|
+
}
|
|
63687
|
+
},
|
|
63688
|
+
"responses": {
|
|
63689
|
+
"200": {
|
|
63690
|
+
"content": {
|
|
63691
|
+
"application/json": {
|
|
63692
|
+
"schema": {
|
|
63693
|
+
"$ref": "#/components/schemas/ChartResponse"
|
|
63694
|
+
}
|
|
63695
|
+
}
|
|
63696
|
+
},
|
|
63697
|
+
"description": "Chart data"
|
|
63698
|
+
},
|
|
63699
|
+
"400": {
|
|
63700
|
+
"content": {
|
|
63701
|
+
"application/json": {
|
|
63702
|
+
"schema": {
|
|
63703
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
63704
|
+
}
|
|
63705
|
+
}
|
|
63706
|
+
},
|
|
63707
|
+
"description": "Validation error"
|
|
63708
|
+
},
|
|
63709
|
+
"401": {
|
|
63710
|
+
"content": {
|
|
63711
|
+
"application/json": {
|
|
63712
|
+
"schema": {
|
|
63713
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
63714
|
+
}
|
|
63715
|
+
}
|
|
63716
|
+
},
|
|
63717
|
+
"description": "Unauthorized"
|
|
63718
|
+
},
|
|
63719
|
+
"403": {
|
|
63720
|
+
"content": {
|
|
63721
|
+
"application/json": {
|
|
63722
|
+
"schema": {
|
|
63723
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
63724
|
+
}
|
|
63725
|
+
}
|
|
63726
|
+
},
|
|
63727
|
+
"description": "Forbidden (authenticated, but missing required context — e.g. no active organization)"
|
|
63728
|
+
},
|
|
63729
|
+
"404": {
|
|
63730
|
+
"content": {
|
|
63731
|
+
"application/json": {
|
|
63732
|
+
"schema": {
|
|
63733
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
63734
|
+
}
|
|
63735
|
+
}
|
|
63736
|
+
},
|
|
63737
|
+
"description": "Not found"
|
|
63738
|
+
},
|
|
63739
|
+
"413": {
|
|
63740
|
+
"content": {
|
|
63741
|
+
"application/json": {
|
|
63742
|
+
"schema": {
|
|
63743
|
+
"$ref": "#/components/schemas/PayloadTooLarge"
|
|
63744
|
+
}
|
|
63745
|
+
}
|
|
63746
|
+
},
|
|
63747
|
+
"description": "Response payload too large — detail endpoint capped to fit Lambda response limits"
|
|
63748
|
+
}
|
|
63749
|
+
},
|
|
63750
|
+
"summary": "Configurable chart (measure × slice) over the market",
|
|
63751
|
+
"tags": [
|
|
63752
|
+
"Sales"
|
|
63753
|
+
]
|
|
63754
|
+
}
|
|
63755
|
+
},
|
|
63756
|
+
"/v1/sales/analytics/summary": {
|
|
63757
|
+
"post": {
|
|
63758
|
+
"operationId": "salesAnalyticsSummary",
|
|
63759
|
+
"requestBody": {
|
|
63760
|
+
"content": {
|
|
63761
|
+
"application/json": {
|
|
63762
|
+
"schema": {
|
|
63763
|
+
"$ref": "#/components/schemas/SaleSummaryRequest"
|
|
63764
|
+
}
|
|
63765
|
+
}
|
|
63766
|
+
}
|
|
63767
|
+
},
|
|
63768
|
+
"responses": {
|
|
63769
|
+
"200": {
|
|
63770
|
+
"content": {
|
|
63771
|
+
"application/json": {
|
|
63772
|
+
"schema": {
|
|
63773
|
+
"$ref": "#/components/schemas/SidedSummaryResponse"
|
|
63774
|
+
}
|
|
63775
|
+
}
|
|
63776
|
+
},
|
|
63777
|
+
"description": "Sided market summary with previous-period comparison"
|
|
63778
|
+
},
|
|
63779
|
+
"400": {
|
|
63780
|
+
"content": {
|
|
63781
|
+
"application/json": {
|
|
63782
|
+
"schema": {
|
|
63783
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
63784
|
+
}
|
|
63785
|
+
}
|
|
63786
|
+
},
|
|
63787
|
+
"description": "Validation error"
|
|
63788
|
+
},
|
|
63789
|
+
"401": {
|
|
63790
|
+
"content": {
|
|
63791
|
+
"application/json": {
|
|
63792
|
+
"schema": {
|
|
63793
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
63794
|
+
}
|
|
63795
|
+
}
|
|
63796
|
+
},
|
|
63797
|
+
"description": "Unauthorized"
|
|
63798
|
+
},
|
|
63799
|
+
"403": {
|
|
63800
|
+
"content": {
|
|
63801
|
+
"application/json": {
|
|
63802
|
+
"schema": {
|
|
63803
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
63804
|
+
}
|
|
63805
|
+
}
|
|
63806
|
+
},
|
|
63807
|
+
"description": "Forbidden (authenticated, but missing required context — e.g. no active organization)"
|
|
63808
|
+
},
|
|
63809
|
+
"404": {
|
|
63810
|
+
"content": {
|
|
63811
|
+
"application/json": {
|
|
63812
|
+
"schema": {
|
|
63813
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
63814
|
+
}
|
|
63815
|
+
}
|
|
63816
|
+
},
|
|
63817
|
+
"description": "Not found"
|
|
63818
|
+
},
|
|
63819
|
+
"413": {
|
|
63820
|
+
"content": {
|
|
63821
|
+
"application/json": {
|
|
63822
|
+
"schema": {
|
|
63823
|
+
"$ref": "#/components/schemas/PayloadTooLarge"
|
|
63824
|
+
}
|
|
63825
|
+
}
|
|
63826
|
+
},
|
|
63827
|
+
"description": "Response payload too large — detail endpoint capped to fit Lambda response limits"
|
|
63828
|
+
}
|
|
63829
|
+
},
|
|
63830
|
+
"summary": "Market summary with buyer/seller/dual split + previous period",
|
|
63831
|
+
"tags": [
|
|
63832
|
+
"Sales"
|
|
63833
|
+
]
|
|
63834
|
+
}
|
|
63835
|
+
},
|
|
63836
|
+
"/v1/sales/analytics/time-series": {
|
|
63837
|
+
"post": {
|
|
63838
|
+
"operationId": "salesAnalyticsTimeSeries",
|
|
63839
|
+
"requestBody": {
|
|
63840
|
+
"content": {
|
|
63841
|
+
"application/json": {
|
|
63842
|
+
"schema": {
|
|
63843
|
+
"$ref": "#/components/schemas/SaleTimeSeriesRequest"
|
|
63844
|
+
}
|
|
63845
|
+
}
|
|
63846
|
+
}
|
|
63847
|
+
},
|
|
63848
|
+
"responses": {
|
|
63849
|
+
"200": {
|
|
63850
|
+
"content": {
|
|
63851
|
+
"application/json": {
|
|
63852
|
+
"schema": {
|
|
63853
|
+
"$ref": "#/components/schemas/SalesTimeSeriesResponse"
|
|
63854
|
+
}
|
|
63855
|
+
}
|
|
63856
|
+
},
|
|
63857
|
+
"description": "Time-series with side splits + previous period. Every side carries `volume`, `units`, and `measureValue` for the requested `measure`."
|
|
63858
|
+
},
|
|
63859
|
+
"400": {
|
|
63860
|
+
"content": {
|
|
63861
|
+
"application/json": {
|
|
63862
|
+
"schema": {
|
|
63863
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
63864
|
+
}
|
|
63865
|
+
}
|
|
63866
|
+
},
|
|
63867
|
+
"description": "Validation error"
|
|
63868
|
+
},
|
|
63869
|
+
"401": {
|
|
63870
|
+
"content": {
|
|
63871
|
+
"application/json": {
|
|
63872
|
+
"schema": {
|
|
63873
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
63874
|
+
}
|
|
63875
|
+
}
|
|
63876
|
+
},
|
|
63877
|
+
"description": "Unauthorized"
|
|
63878
|
+
},
|
|
63879
|
+
"403": {
|
|
63880
|
+
"content": {
|
|
63881
|
+
"application/json": {
|
|
63882
|
+
"schema": {
|
|
63883
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
63884
|
+
}
|
|
63885
|
+
}
|
|
63886
|
+
},
|
|
63887
|
+
"description": "Forbidden (authenticated, but missing required context — e.g. no active organization)"
|
|
63888
|
+
},
|
|
63889
|
+
"404": {
|
|
63890
|
+
"content": {
|
|
63891
|
+
"application/json": {
|
|
63892
|
+
"schema": {
|
|
63893
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
63894
|
+
}
|
|
63895
|
+
}
|
|
63896
|
+
},
|
|
63897
|
+
"description": "Not found"
|
|
63898
|
+
},
|
|
63899
|
+
"413": {
|
|
63900
|
+
"content": {
|
|
63901
|
+
"application/json": {
|
|
63902
|
+
"schema": {
|
|
63903
|
+
"$ref": "#/components/schemas/PayloadTooLarge"
|
|
63904
|
+
}
|
|
63905
|
+
}
|
|
63906
|
+
},
|
|
63907
|
+
"description": "Response payload too large — detail endpoint capped to fit Lambda response limits"
|
|
63908
|
+
}
|
|
63909
|
+
},
|
|
63910
|
+
"summary": "Volume/units over time with buyer/seller/dual split",
|
|
63911
|
+
"tags": [
|
|
63912
|
+
"Sales"
|
|
63913
|
+
]
|
|
63914
|
+
}
|
|
63915
|
+
},
|
|
63916
|
+
"/v1/sales/count": {
|
|
63917
|
+
"post": {
|
|
63918
|
+
"description": "Return the exact number of sales matching the given filters. Accepts the same request body as `listSales` (pagination and sort are ignored). Use this when you only need a total; to get the matching sales themselves, send the same request body to `listSales`.",
|
|
63919
|
+
"operationId": "countSales",
|
|
63920
|
+
"requestBody": {
|
|
63921
|
+
"content": {
|
|
63922
|
+
"application/json": {
|
|
63923
|
+
"schema": {
|
|
63924
|
+
"$ref": "#/components/schemas/SaleListRequest"
|
|
63925
|
+
}
|
|
63926
|
+
}
|
|
63927
|
+
}
|
|
63928
|
+
},
|
|
63929
|
+
"responses": {
|
|
63930
|
+
"200": {
|
|
63931
|
+
"content": {
|
|
63932
|
+
"application/json": {
|
|
63933
|
+
"schema": {
|
|
63934
|
+
"$ref": "#/components/schemas/CountResponse"
|
|
63935
|
+
}
|
|
63936
|
+
}
|
|
63937
|
+
},
|
|
63938
|
+
"description": "Exact count of matching sales"
|
|
63939
|
+
},
|
|
63940
|
+
"400": {
|
|
63941
|
+
"content": {
|
|
63942
|
+
"application/json": {
|
|
63943
|
+
"schema": {
|
|
63944
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
63945
|
+
}
|
|
63946
|
+
}
|
|
63947
|
+
},
|
|
63948
|
+
"description": "Validation error"
|
|
63949
|
+
},
|
|
63950
|
+
"401": {
|
|
63951
|
+
"content": {
|
|
63952
|
+
"application/json": {
|
|
63953
|
+
"schema": {
|
|
63954
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
63955
|
+
}
|
|
63956
|
+
}
|
|
63957
|
+
},
|
|
63958
|
+
"description": "Unauthorized"
|
|
63959
|
+
},
|
|
63960
|
+
"403": {
|
|
63961
|
+
"content": {
|
|
63962
|
+
"application/json": {
|
|
63963
|
+
"schema": {
|
|
63964
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
63965
|
+
}
|
|
63966
|
+
}
|
|
63967
|
+
},
|
|
63968
|
+
"description": "Forbidden (authenticated, but missing required context — e.g. no active organization)"
|
|
63969
|
+
},
|
|
63970
|
+
"404": {
|
|
63971
|
+
"content": {
|
|
63972
|
+
"application/json": {
|
|
63973
|
+
"schema": {
|
|
63974
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
63975
|
+
}
|
|
63976
|
+
}
|
|
63977
|
+
},
|
|
63978
|
+
"description": "Not found"
|
|
63979
|
+
},
|
|
63980
|
+
"413": {
|
|
63981
|
+
"content": {
|
|
63982
|
+
"application/json": {
|
|
63983
|
+
"schema": {
|
|
63984
|
+
"$ref": "#/components/schemas/PayloadTooLarge"
|
|
63985
|
+
}
|
|
63986
|
+
}
|
|
63987
|
+
},
|
|
63988
|
+
"description": "Response payload too large — detail endpoint capped to fit Lambda response limits"
|
|
63989
|
+
}
|
|
63990
|
+
},
|
|
63991
|
+
"summary": "Count sales matching filters",
|
|
63096
63992
|
"tags": [
|
|
63097
63993
|
"Sales"
|
|
63098
|
-
]
|
|
63994
|
+
],
|
|
63995
|
+
"x-mm-records-via": "listSales"
|
|
63099
63996
|
}
|
|
63100
63997
|
},
|
|
63101
|
-
"/v1/sales/
|
|
63102
|
-
"
|
|
63103
|
-
"operationId": "
|
|
63104
|
-
"
|
|
63105
|
-
|
|
63106
|
-
"
|
|
63107
|
-
|
|
63108
|
-
|
|
63109
|
-
|
|
63998
|
+
"/v1/sales/{id}": {
|
|
63999
|
+
"get": {
|
|
64000
|
+
"operationId": "getSale",
|
|
64001
|
+
"parameters": [
|
|
64002
|
+
{
|
|
64003
|
+
"description": "Sale document ID",
|
|
64004
|
+
"in": "path",
|
|
64005
|
+
"name": "id",
|
|
64006
|
+
"required": true,
|
|
64007
|
+
"schema": {
|
|
64008
|
+
"description": "Sale document ID",
|
|
64009
|
+
"type": "string"
|
|
63110
64010
|
}
|
|
63111
64011
|
}
|
|
64012
|
+
],
|
|
64013
|
+
"responses": {
|
|
64014
|
+
"200": {
|
|
64015
|
+
"content": {
|
|
64016
|
+
"application/json": {
|
|
64017
|
+
"schema": {
|
|
64018
|
+
"$ref": "#/components/schemas/SaleDetailResponse"
|
|
64019
|
+
}
|
|
64020
|
+
}
|
|
64021
|
+
},
|
|
64022
|
+
"description": "Sale detail"
|
|
64023
|
+
},
|
|
64024
|
+
"404": {
|
|
64025
|
+
"content": {
|
|
64026
|
+
"application/json": {
|
|
64027
|
+
"schema": {
|
|
64028
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
64029
|
+
}
|
|
64030
|
+
}
|
|
64031
|
+
},
|
|
64032
|
+
"description": "Sale not found"
|
|
64033
|
+
},
|
|
64034
|
+
"413": {
|
|
64035
|
+
"content": {
|
|
64036
|
+
"application/json": {
|
|
64037
|
+
"schema": {
|
|
64038
|
+
"$ref": "#/components/schemas/PayloadTooLarge"
|
|
64039
|
+
}
|
|
64040
|
+
}
|
|
64041
|
+
},
|
|
64042
|
+
"description": "Response payload too large"
|
|
64043
|
+
}
|
|
63112
64044
|
},
|
|
64045
|
+
"summary": "Get sale by ID",
|
|
64046
|
+
"tags": [
|
|
64047
|
+
"Sales"
|
|
64048
|
+
]
|
|
64049
|
+
}
|
|
64050
|
+
},
|
|
64051
|
+
"/v1/sales/{id}/related": {
|
|
64052
|
+
"get": {
|
|
64053
|
+
"description": "Return the ids of records of another type that are linked to this record. Links resolve by identifier, strongest identifier first, and equally-trusted identifiers are combined — a company's linked loans cover every role it holds on a loan, not just the first one found. The response reports which strength was used: `primary` is the canonical identifier for that pair, `secondary` is a real but weaker alternate used only when the record carries nothing better. This is a lightweight index: it returns ids and a count, not full records. For filtering, sorting, pagination and full detail, use the named endpoint for the pair (for example the originator loans endpoint) and fetch records by id.",
|
|
64054
|
+
"operationId": "saleRelated",
|
|
64055
|
+
"parameters": [
|
|
64056
|
+
{
|
|
64057
|
+
"description": "Sale id",
|
|
64058
|
+
"in": "path",
|
|
64059
|
+
"name": "id",
|
|
64060
|
+
"required": true,
|
|
64061
|
+
"schema": {
|
|
64062
|
+
"description": "Sale id",
|
|
64063
|
+
"type": "string"
|
|
64064
|
+
}
|
|
64065
|
+
},
|
|
64066
|
+
{
|
|
64067
|
+
"description": "Type of record to link to",
|
|
64068
|
+
"in": "query",
|
|
64069
|
+
"name": "to",
|
|
64070
|
+
"required": true,
|
|
64071
|
+
"schema": {
|
|
64072
|
+
"description": "Type of record to link to",
|
|
64073
|
+
"enum": [
|
|
64074
|
+
"agents",
|
|
64075
|
+
"loans",
|
|
64076
|
+
"properties"
|
|
64077
|
+
],
|
|
64078
|
+
"type": "string"
|
|
64079
|
+
}
|
|
64080
|
+
},
|
|
64081
|
+
{
|
|
64082
|
+
"description": "Maximum ids to return (default 25, max 200)",
|
|
64083
|
+
"in": "query",
|
|
64084
|
+
"name": "limit",
|
|
64085
|
+
"required": false,
|
|
64086
|
+
"schema": {
|
|
64087
|
+
"description": "Maximum ids to return (default 25, max 200)",
|
|
64088
|
+
"maximum": 200,
|
|
64089
|
+
"minimum": 1,
|
|
64090
|
+
"type": "integer"
|
|
64091
|
+
}
|
|
64092
|
+
}
|
|
64093
|
+
],
|
|
63113
64094
|
"responses": {
|
|
63114
64095
|
"200": {
|
|
63115
64096
|
"content": {
|
|
63116
64097
|
"application/json": {
|
|
63117
64098
|
"schema": {
|
|
63118
|
-
"$ref": "#/components/schemas/
|
|
64099
|
+
"$ref": "#/components/schemas/RelatedResponse"
|
|
63119
64100
|
}
|
|
63120
64101
|
}
|
|
63121
64102
|
},
|
|
63122
|
-
"description": "
|
|
64103
|
+
"description": "Linked record ids"
|
|
63123
64104
|
},
|
|
63124
64105
|
"400": {
|
|
63125
64106
|
"content": {
|
|
@@ -63159,7 +64140,7 @@
|
|
|
63159
64140
|
}
|
|
63160
64141
|
}
|
|
63161
64142
|
},
|
|
63162
|
-
"description": "
|
|
64143
|
+
"description": "Record not found"
|
|
63163
64144
|
},
|
|
63164
64145
|
"413": {
|
|
63165
64146
|
"content": {
|
|
@@ -63172,34 +64153,64 @@
|
|
|
63172
64153
|
"description": "Response payload too large — detail endpoint capped to fit Lambda response limits"
|
|
63173
64154
|
}
|
|
63174
64155
|
},
|
|
63175
|
-
"summary": "
|
|
64156
|
+
"summary": "Records linked to this one",
|
|
63176
64157
|
"tags": [
|
|
63177
|
-
"
|
|
64158
|
+
"Related"
|
|
63178
64159
|
]
|
|
63179
64160
|
}
|
|
63180
64161
|
},
|
|
63181
|
-
"/v1/
|
|
63182
|
-
"
|
|
63183
|
-
"
|
|
63184
|
-
"
|
|
63185
|
-
|
|
63186
|
-
|
|
63187
|
-
|
|
63188
|
-
|
|
63189
|
-
|
|
64162
|
+
"/v1/saved-filters": {
|
|
64163
|
+
"get": {
|
|
64164
|
+
"description": "The caller's saved filters (and saved CRM views) in the active organization, oldest first, optionally narrowed by target and kind.",
|
|
64165
|
+
"operationId": "listSavedFilters",
|
|
64166
|
+
"parameters": [
|
|
64167
|
+
{
|
|
64168
|
+
"description": "Which list the filter runs against. Market targets run against that entity's list operation (see `operationId`, e.g. listOriginators); `crm_people` / `crm_companies` are UI-only (filtered client-side).",
|
|
64169
|
+
"in": "query",
|
|
64170
|
+
"name": "target",
|
|
64171
|
+
"required": false,
|
|
64172
|
+
"schema": {
|
|
64173
|
+
"description": "Which list the filter runs against. Market targets run against that entity's list operation (see `operationId`, e.g. listOriginators); `crm_people` / `crm_companies` are UI-only (filtered client-side).",
|
|
64174
|
+
"enum": [
|
|
64175
|
+
"originators",
|
|
64176
|
+
"agents",
|
|
64177
|
+
"companies",
|
|
64178
|
+
"branches",
|
|
64179
|
+
"offices",
|
|
64180
|
+
"loans",
|
|
64181
|
+
"properties",
|
|
64182
|
+
"sales",
|
|
64183
|
+
"crm_people",
|
|
64184
|
+
"crm_companies"
|
|
64185
|
+
],
|
|
64186
|
+
"type": "string"
|
|
64187
|
+
}
|
|
64188
|
+
},
|
|
64189
|
+
{
|
|
64190
|
+
"description": "`filter` (default) — a saved search; `view` — a saved CRM table layout (columns / order) kept in `uiState`. Views never carry a `query` and have their own 25-per-target quota. Fixed at create.",
|
|
64191
|
+
"in": "query",
|
|
64192
|
+
"name": "kind",
|
|
64193
|
+
"required": false,
|
|
64194
|
+
"schema": {
|
|
64195
|
+
"description": "`filter` (default) — a saved search; `view` — a saved CRM table layout (columns / order) kept in `uiState`. Views never carry a `query` and have their own 25-per-target quota. Fixed at create.",
|
|
64196
|
+
"enum": [
|
|
64197
|
+
"filter",
|
|
64198
|
+
"view"
|
|
64199
|
+
],
|
|
64200
|
+
"type": "string"
|
|
63190
64201
|
}
|
|
63191
64202
|
}
|
|
63192
|
-
|
|
64203
|
+
],
|
|
63193
64204
|
"responses": {
|
|
63194
64205
|
"200": {
|
|
63195
64206
|
"content": {
|
|
63196
64207
|
"application/json": {
|
|
63197
64208
|
"schema": {
|
|
63198
|
-
"$ref": "#/components/schemas/
|
|
64209
|
+
"$ref": "#/components/schemas/SavedFilterList"
|
|
63199
64210
|
}
|
|
63200
64211
|
}
|
|
63201
64212
|
},
|
|
63202
|
-
"description": "
|
|
64213
|
+
"description": "Saved filters."
|
|
63203
64214
|
},
|
|
63204
64215
|
"400": {
|
|
63205
64216
|
"content": {
|
|
@@ -63252,44 +64263,43 @@
|
|
|
63252
64263
|
"description": "Response payload too large — detail endpoint capped to fit Lambda response limits"
|
|
63253
64264
|
}
|
|
63254
64265
|
},
|
|
63255
|
-
"summary": "
|
|
64266
|
+
"summary": "List your saved filters",
|
|
63256
64267
|
"tags": [
|
|
63257
|
-
"
|
|
64268
|
+
"Saved Filters"
|
|
63258
64269
|
]
|
|
63259
|
-
}
|
|
63260
|
-
},
|
|
63261
|
-
"/v1/sales/analytics/time-series": {
|
|
64270
|
+
},
|
|
63262
64271
|
"post": {
|
|
63263
|
-
"
|
|
64272
|
+
"description": "Save a named filter for a list target. For a market target, `query` is the target operation's request body without `pagination` (e.g. the body you would send to listOriginators) and is validated against it. Limit: 25 per target.",
|
|
64273
|
+
"operationId": "createSavedFilter",
|
|
63264
64274
|
"requestBody": {
|
|
63265
64275
|
"content": {
|
|
63266
64276
|
"application/json": {
|
|
63267
64277
|
"schema": {
|
|
63268
|
-
"$ref": "#/components/schemas/
|
|
64278
|
+
"$ref": "#/components/schemas/CreateSavedFilterRequest"
|
|
63269
64279
|
}
|
|
63270
64280
|
}
|
|
63271
64281
|
}
|
|
63272
64282
|
},
|
|
63273
64283
|
"responses": {
|
|
63274
|
-
"
|
|
64284
|
+
"201": {
|
|
63275
64285
|
"content": {
|
|
63276
64286
|
"application/json": {
|
|
63277
64287
|
"schema": {
|
|
63278
|
-
"$ref": "#/components/schemas/
|
|
64288
|
+
"$ref": "#/components/schemas/CreateSavedFilterResult"
|
|
63279
64289
|
}
|
|
63280
64290
|
}
|
|
63281
64291
|
},
|
|
63282
|
-
"description": "
|
|
64292
|
+
"description": "The saved filter."
|
|
63283
64293
|
},
|
|
63284
64294
|
"400": {
|
|
63285
64295
|
"content": {
|
|
63286
64296
|
"application/json": {
|
|
63287
64297
|
"schema": {
|
|
63288
|
-
"$ref": "#/components/schemas/
|
|
64298
|
+
"$ref": "#/components/schemas/SavedFilterError"
|
|
63289
64299
|
}
|
|
63290
64300
|
}
|
|
63291
64301
|
},
|
|
63292
|
-
"description": "Validation error"
|
|
64302
|
+
"description": "Validation error — including a `query` that is not a valid request for the target's operation (`issues` lists each problem)."
|
|
63293
64303
|
},
|
|
63294
64304
|
"401": {
|
|
63295
64305
|
"content": {
|
|
@@ -63321,6 +64331,16 @@
|
|
|
63321
64331
|
},
|
|
63322
64332
|
"description": "Not found"
|
|
63323
64333
|
},
|
|
64334
|
+
"409": {
|
|
64335
|
+
"content": {
|
|
64336
|
+
"application/json": {
|
|
64337
|
+
"schema": {
|
|
64338
|
+
"$ref": "#/components/schemas/SavedFilterError"
|
|
64339
|
+
}
|
|
64340
|
+
}
|
|
64341
|
+
},
|
|
64342
|
+
"description": "`QUOTA_EXCEEDED` — 25 saved filters for this target already; update or delete one."
|
|
64343
|
+
},
|
|
63324
64344
|
"413": {
|
|
63325
64345
|
"content": {
|
|
63326
64346
|
"application/json": {
|
|
@@ -63332,35 +64352,41 @@
|
|
|
63332
64352
|
"description": "Response payload too large — detail endpoint capped to fit Lambda response limits"
|
|
63333
64353
|
}
|
|
63334
64354
|
},
|
|
63335
|
-
"summary": "
|
|
64355
|
+
"summary": "Save a filter",
|
|
63336
64356
|
"tags": [
|
|
63337
|
-
"
|
|
64357
|
+
"Saved Filters"
|
|
63338
64358
|
]
|
|
63339
64359
|
}
|
|
63340
64360
|
},
|
|
63341
|
-
"/v1/
|
|
63342
|
-
"
|
|
63343
|
-
"
|
|
63344
|
-
"
|
|
63345
|
-
|
|
63346
|
-
|
|
63347
|
-
"
|
|
63348
|
-
|
|
63349
|
-
|
|
63350
|
-
|
|
64361
|
+
"/v1/saved-filters/{id}": {
|
|
64362
|
+
"delete": {
|
|
64363
|
+
"operationId": "deleteSavedFilter",
|
|
64364
|
+
"parameters": [
|
|
64365
|
+
{
|
|
64366
|
+
"description": "Saved-filter id (nanoid).",
|
|
64367
|
+
"in": "path",
|
|
64368
|
+
"name": "id",
|
|
64369
|
+
"required": true,
|
|
64370
|
+
"schema": {
|
|
64371
|
+
"description": "Saved-filter id (nanoid).",
|
|
64372
|
+
"example": "V1StGXR8_Z5jdHi6B-myT",
|
|
64373
|
+
"maxLength": 32,
|
|
64374
|
+
"minLength": 1,
|
|
64375
|
+
"pattern": "^[\\w-]+$",
|
|
64376
|
+
"type": "string"
|
|
63351
64377
|
}
|
|
63352
64378
|
}
|
|
63353
|
-
|
|
64379
|
+
],
|
|
63354
64380
|
"responses": {
|
|
63355
64381
|
"200": {
|
|
63356
64382
|
"content": {
|
|
63357
64383
|
"application/json": {
|
|
63358
64384
|
"schema": {
|
|
63359
|
-
"$ref": "#/components/schemas/
|
|
64385
|
+
"$ref": "#/components/schemas/DeleteSavedFilterResult"
|
|
63360
64386
|
}
|
|
63361
64387
|
}
|
|
63362
64388
|
},
|
|
63363
|
-
"description": "
|
|
64389
|
+
"description": "Deleted."
|
|
63364
64390
|
},
|
|
63365
64391
|
"400": {
|
|
63366
64392
|
"content": {
|
|
@@ -63396,11 +64422,11 @@
|
|
|
63396
64422
|
"content": {
|
|
63397
64423
|
"application/json": {
|
|
63398
64424
|
"schema": {
|
|
63399
|
-
"$ref": "#/components/schemas/
|
|
64425
|
+
"$ref": "#/components/schemas/SavedFilterError"
|
|
63400
64426
|
}
|
|
63401
64427
|
}
|
|
63402
64428
|
},
|
|
63403
|
-
"description": "
|
|
64429
|
+
"description": "No saved filter with that id belongs to the caller."
|
|
63404
64430
|
},
|
|
63405
64431
|
"413": {
|
|
63406
64432
|
"content": {
|
|
@@ -63413,24 +64439,26 @@
|
|
|
63413
64439
|
"description": "Response payload too large — detail endpoint capped to fit Lambda response limits"
|
|
63414
64440
|
}
|
|
63415
64441
|
},
|
|
63416
|
-
"summary": "
|
|
64442
|
+
"summary": "Delete a saved filter",
|
|
63417
64443
|
"tags": [
|
|
63418
|
-
"
|
|
63419
|
-
]
|
|
63420
|
-
|
|
63421
|
-
}
|
|
63422
|
-
},
|
|
63423
|
-
"/v1/sales/{id}": {
|
|
64444
|
+
"Saved Filters"
|
|
64445
|
+
]
|
|
64446
|
+
},
|
|
63424
64447
|
"get": {
|
|
63425
|
-
"
|
|
64448
|
+
"description": "Returns the saved `query` and the `operationId` to run it with. Check `fidelity` (`partial` → `unmapped` lists what the query omits; `ui_only` → nothing to run) and `stale` (the query no longer validates) before running.",
|
|
64449
|
+
"operationId": "getSavedFilter",
|
|
63426
64450
|
"parameters": [
|
|
63427
64451
|
{
|
|
63428
|
-
"description": "
|
|
64452
|
+
"description": "Saved-filter id (nanoid).",
|
|
63429
64453
|
"in": "path",
|
|
63430
64454
|
"name": "id",
|
|
63431
64455
|
"required": true,
|
|
63432
64456
|
"schema": {
|
|
63433
|
-
"description": "
|
|
64457
|
+
"description": "Saved-filter id (nanoid).",
|
|
64458
|
+
"example": "V1StGXR8_Z5jdHi6B-myT",
|
|
64459
|
+
"maxLength": 32,
|
|
64460
|
+
"minLength": 1,
|
|
64461
|
+
"pattern": "^[\\w-]+$",
|
|
63434
64462
|
"type": "string"
|
|
63435
64463
|
}
|
|
63436
64464
|
}
|
|
@@ -63440,13 +64468,13 @@
|
|
|
63440
64468
|
"content": {
|
|
63441
64469
|
"application/json": {
|
|
63442
64470
|
"schema": {
|
|
63443
|
-
"$ref": "#/components/schemas/
|
|
64471
|
+
"$ref": "#/components/schemas/GetSavedFilterResult"
|
|
63444
64472
|
}
|
|
63445
64473
|
}
|
|
63446
64474
|
},
|
|
63447
|
-
"description": "
|
|
64475
|
+
"description": "The saved filter."
|
|
63448
64476
|
},
|
|
63449
|
-
"
|
|
64477
|
+
"400": {
|
|
63450
64478
|
"content": {
|
|
63451
64479
|
"application/json": {
|
|
63452
64480
|
"schema": {
|
|
@@ -63454,7 +64482,37 @@
|
|
|
63454
64482
|
}
|
|
63455
64483
|
}
|
|
63456
64484
|
},
|
|
63457
|
-
"description": "
|
|
64485
|
+
"description": "Validation error"
|
|
64486
|
+
},
|
|
64487
|
+
"401": {
|
|
64488
|
+
"content": {
|
|
64489
|
+
"application/json": {
|
|
64490
|
+
"schema": {
|
|
64491
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
64492
|
+
}
|
|
64493
|
+
}
|
|
64494
|
+
},
|
|
64495
|
+
"description": "Unauthorized"
|
|
64496
|
+
},
|
|
64497
|
+
"403": {
|
|
64498
|
+
"content": {
|
|
64499
|
+
"application/json": {
|
|
64500
|
+
"schema": {
|
|
64501
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
64502
|
+
}
|
|
64503
|
+
}
|
|
64504
|
+
},
|
|
64505
|
+
"description": "Forbidden (authenticated, but missing required context — e.g. no active organization)"
|
|
64506
|
+
},
|
|
64507
|
+
"404": {
|
|
64508
|
+
"content": {
|
|
64509
|
+
"application/json": {
|
|
64510
|
+
"schema": {
|
|
64511
|
+
"$ref": "#/components/schemas/SavedFilterError"
|
|
64512
|
+
}
|
|
64513
|
+
}
|
|
64514
|
+
},
|
|
64515
|
+
"description": "No saved filter with that id belongs to the caller."
|
|
63458
64516
|
},
|
|
63459
64517
|
"413": {
|
|
63460
64518
|
"content": {
|
|
@@ -63464,78 +64522,62 @@
|
|
|
63464
64522
|
}
|
|
63465
64523
|
}
|
|
63466
64524
|
},
|
|
63467
|
-
"description": "Response payload too large"
|
|
64525
|
+
"description": "Response payload too large — detail endpoint capped to fit Lambda response limits"
|
|
63468
64526
|
}
|
|
63469
64527
|
},
|
|
63470
|
-
"summary": "Get
|
|
64528
|
+
"summary": "Get a saved filter (with the operation to run it)",
|
|
63471
64529
|
"tags": [
|
|
63472
|
-
"
|
|
64530
|
+
"Saved Filters"
|
|
63473
64531
|
]
|
|
63474
|
-
}
|
|
63475
|
-
|
|
63476
|
-
|
|
63477
|
-
|
|
63478
|
-
"description": "Return the ids of records of another type that are linked to this record. Links resolve by identifier, strongest identifier first, and equally-trusted identifiers are combined — a company's linked loans cover every role it holds on a loan, not just the first one found. The response reports which strength was used: `primary` is the canonical identifier for that pair, `secondary` is a real but weaker alternate used only when the record carries nothing better. This is a lightweight index: it returns ids and a count, not full records. For filtering, sorting, pagination and full detail, use the named endpoint for the pair (for example the originator loans endpoint) and fetch records by id.",
|
|
63479
|
-
"operationId": "saleRelated",
|
|
64532
|
+
},
|
|
64533
|
+
"patch": {
|
|
64534
|
+
"description": "Rename, re-icon, or replace the query / UI state. The target is fixed. A new `query` is validated like on create.",
|
|
64535
|
+
"operationId": "updateSavedFilter",
|
|
63480
64536
|
"parameters": [
|
|
63481
64537
|
{
|
|
63482
|
-
"description": "
|
|
64538
|
+
"description": "Saved-filter id (nanoid).",
|
|
63483
64539
|
"in": "path",
|
|
63484
64540
|
"name": "id",
|
|
63485
64541
|
"required": true,
|
|
63486
64542
|
"schema": {
|
|
63487
|
-
"description": "
|
|
63488
|
-
"
|
|
63489
|
-
|
|
63490
|
-
|
|
63491
|
-
|
|
63492
|
-
"description": "Type of record to link to",
|
|
63493
|
-
"in": "query",
|
|
63494
|
-
"name": "to",
|
|
63495
|
-
"required": true,
|
|
63496
|
-
"schema": {
|
|
63497
|
-
"description": "Type of record to link to",
|
|
63498
|
-
"enum": [
|
|
63499
|
-
"agents",
|
|
63500
|
-
"loans",
|
|
63501
|
-
"properties"
|
|
63502
|
-
],
|
|
64543
|
+
"description": "Saved-filter id (nanoid).",
|
|
64544
|
+
"example": "V1StGXR8_Z5jdHi6B-myT",
|
|
64545
|
+
"maxLength": 32,
|
|
64546
|
+
"minLength": 1,
|
|
64547
|
+
"pattern": "^[\\w-]+$",
|
|
63503
64548
|
"type": "string"
|
|
63504
64549
|
}
|
|
63505
|
-
},
|
|
63506
|
-
{
|
|
63507
|
-
"description": "Maximum ids to return (default 25, max 200)",
|
|
63508
|
-
"in": "query",
|
|
63509
|
-
"name": "limit",
|
|
63510
|
-
"required": false,
|
|
63511
|
-
"schema": {
|
|
63512
|
-
"description": "Maximum ids to return (default 25, max 200)",
|
|
63513
|
-
"maximum": 200,
|
|
63514
|
-
"minimum": 1,
|
|
63515
|
-
"type": "integer"
|
|
63516
|
-
}
|
|
63517
64550
|
}
|
|
63518
64551
|
],
|
|
64552
|
+
"requestBody": {
|
|
64553
|
+
"content": {
|
|
64554
|
+
"application/json": {
|
|
64555
|
+
"schema": {
|
|
64556
|
+
"$ref": "#/components/schemas/UpdateSavedFilterRequest"
|
|
64557
|
+
}
|
|
64558
|
+
}
|
|
64559
|
+
}
|
|
64560
|
+
},
|
|
63519
64561
|
"responses": {
|
|
63520
64562
|
"200": {
|
|
63521
64563
|
"content": {
|
|
63522
64564
|
"application/json": {
|
|
63523
64565
|
"schema": {
|
|
63524
|
-
"$ref": "#/components/schemas/
|
|
64566
|
+
"$ref": "#/components/schemas/UpdateSavedFilterResult"
|
|
63525
64567
|
}
|
|
63526
64568
|
}
|
|
63527
64569
|
},
|
|
63528
|
-
"description": "
|
|
64570
|
+
"description": "The updated filter."
|
|
63529
64571
|
},
|
|
63530
64572
|
"400": {
|
|
63531
64573
|
"content": {
|
|
63532
64574
|
"application/json": {
|
|
63533
64575
|
"schema": {
|
|
63534
|
-
"$ref": "#/components/schemas/
|
|
64576
|
+
"$ref": "#/components/schemas/SavedFilterError"
|
|
63535
64577
|
}
|
|
63536
64578
|
}
|
|
63537
64579
|
},
|
|
63538
|
-
"description": "Validation error"
|
|
64580
|
+
"description": "Validation error — including a `query` that is not a valid request for the target's operation (`issues` lists each problem)."
|
|
63539
64581
|
},
|
|
63540
64582
|
"401": {
|
|
63541
64583
|
"content": {
|
|
@@ -63561,11 +64603,11 @@
|
|
|
63561
64603
|
"content": {
|
|
63562
64604
|
"application/json": {
|
|
63563
64605
|
"schema": {
|
|
63564
|
-
"$ref": "#/components/schemas/
|
|
64606
|
+
"$ref": "#/components/schemas/SavedFilterError"
|
|
63565
64607
|
}
|
|
63566
64608
|
}
|
|
63567
64609
|
},
|
|
63568
|
-
"description": "
|
|
64610
|
+
"description": "No saved filter with that id belongs to the caller."
|
|
63569
64611
|
},
|
|
63570
64612
|
"413": {
|
|
63571
64613
|
"content": {
|
|
@@ -63578,9 +64620,9 @@
|
|
|
63578
64620
|
"description": "Response payload too large — detail endpoint capped to fit Lambda response limits"
|
|
63579
64621
|
}
|
|
63580
64622
|
},
|
|
63581
|
-
"summary": "
|
|
64623
|
+
"summary": "Update a saved filter",
|
|
63582
64624
|
"tags": [
|
|
63583
|
-
"
|
|
64625
|
+
"Saved Filters"
|
|
63584
64626
|
]
|
|
63585
64627
|
}
|
|
63586
64628
|
},
|
|
@@ -63744,6 +64786,10 @@
|
|
|
63744
64786
|
"description": "Real-estate sales transactions",
|
|
63745
64787
|
"name": "Sales"
|
|
63746
64788
|
},
|
|
64789
|
+
{
|
|
64790
|
+
"description": "Your saved list filters — store a query once, re-run it against its list operation",
|
|
64791
|
+
"name": "Saved Filters"
|
|
64792
|
+
},
|
|
63747
64793
|
{
|
|
63748
64794
|
"description": "Instant multi-entity search",
|
|
63749
64795
|
"name": "Search"
|