@model-match/api 3.44.0 → 3.45.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.
@@ -1,4 +1,4 @@
1
- import { S as client, n as createClient } from "../src-DX-mM6Og.mjs";
1
+ import { S as client, n as createClient } from "../src-DCqOC4qE.mjs";
2
2
  //#region src/slim/sdk.gen.ts
3
3
  /**
4
4
  * Search agents with filters
@@ -5365,7 +5365,7 @@ const originatorRetention = (options) => (options.client ?? client).post({
5365
5365
  /**
5366
5366
  * Search properties with filters
5367
5367
  *
5368
- * Search and list individual properties/parcels with filters — one row per parcel. Filter by location (state, county, city, zip, address), owner name, property characteristics (beds, baths, square footage, year built, property type), value, and ownership or transaction history, with sorting and cursor pagination. This is the discrete per-property record search: use it to find specific properties or build a filtered property list. (For a single property by its ID use the property detail endpoint.) If you only need how many properties match and not the records themselves, send the same request body to `countProperties`.
5368
+ * Search and list individual properties/parcels with filters — one row per parcel. Filter by location (state, county, city, zip, address), owner name, property characteristics (beds, baths, square footage, year built, property type), value, ownership or transaction history, and occupancy (`ownerOccupancy: not_flagged` plus `absenteeOwner: true` targets likely investor / non-owner-occupied parcels — pair `absenteeOwner` with a geography filter), with sorting and cursor pagination. This is the discrete per-property record search: use it to find specific properties or build a filtered property list. (For a single property by its ID use the property detail endpoint.) If you only need how many properties match and not the records themselves, send the same request body to `countProperties`.
5369
5369
  */
5370
5370
  const listProperties = (options) => (options?.client ?? client).post({
5371
5371
  security: [{
@@ -6678,7 +6678,7 @@ var Properties = class {
6678
6678
  /**
6679
6679
  * Search properties with filters
6680
6680
  *
6681
- * Search and list individual properties/parcels with filters — one row per parcel. Filter by location (state, county, city, zip, address), owner name, property characteristics (beds, baths, square footage, year built, property type), value, and ownership or transaction history, with sorting and cursor pagination. This is the discrete per-property record search: use it to find specific properties or build a filtered property list. (For a single property by its ID use the property detail endpoint.) If you only need how many properties match and not the records themselves, send the same request body to `countProperties`.
6681
+ * Search and list individual properties/parcels with filters — one row per parcel. Filter by location (state, county, city, zip, address), owner name, property characteristics (beds, baths, square footage, year built, property type), value, ownership or transaction history, and occupancy (`ownerOccupancy: not_flagged` plus `absenteeOwner: true` targets likely investor / non-owner-occupied parcels — pair `absenteeOwner` with a geography filter), with sorting and cursor pagination. This is the discrete per-property record search: use it to find specific properties or build a filtered property list. (For a single property by its ID use the property detail endpoint.) If you only need how many properties match and not the records themselves, send the same request body to `countProperties`.
6682
6682
  */
6683
6683
  static list(options) {
6684
6684
  return (options?.client ?? client).post({
package/openapi.json CHANGED
@@ -36519,6 +36519,16 @@
36519
36519
  "PropertyAnalyticsFlatFilters": {
36520
36520
  "additionalProperties": false,
36521
36521
  "properties": {
36522
+ "absenteeOwner": {
36523
+ "allOf": [
36524
+ {
36525
+ "$ref": "#/components/schemas/BooleanFilterValue"
36526
+ },
36527
+ {
36528
+ "description": "Owner's mailing address (street + 5-digit zip, case/punctuation-insensitive) differs from the property's site address — an investor / non-owner-occupied signal. `true` = absentee, `false` = owner mails to the property; parcels with no mailing or site address match neither. Evaluated per candidate document (no stored flag yet), so always pair it with a geography filter (`state`, `county`, `zipCode`, `fips`, a radius) — an unscoped `absenteeOwner` over all parcels may time out."
36529
+ }
36530
+ ]
36531
+ },
36522
36532
  "activeLoanCount": {
36523
36533
  "allOf": [
36524
36534
  {
@@ -36767,6 +36777,9 @@
36767
36777
  "ownerName": {
36768
36778
  "$ref": "#/components/schemas/TextFilterValue"
36769
36779
  },
36780
+ "ownerOccupancy": {
36781
+ "$ref": "#/components/schemas/PropertyOwnerOccupancyFilterValue"
36782
+ },
36770
36783
  "preSaleLoanCount": {
36771
36784
  "allOf": [
36772
36785
  {
@@ -37523,34 +37536,6 @@
37523
37536
  ],
37524
37537
  "type": "object"
37525
37538
  },
37526
- "ownerMailingAddress": {
37527
- "nullable": true,
37528
- "properties": {
37529
- "city": {
37530
- "nullable": true,
37531
- "type": "string"
37532
- },
37533
- "state": {
37534
- "nullable": true,
37535
- "type": "string"
37536
- },
37537
- "street": {
37538
- "nullable": true,
37539
- "type": "string"
37540
- },
37541
- "zip": {
37542
- "nullable": true,
37543
- "type": "string"
37544
- }
37545
- },
37546
- "required": [
37547
- "street",
37548
- "city",
37549
- "state",
37550
- "zip"
37551
- ],
37552
- "type": "object"
37553
- },
37554
37539
  "owners": {
37555
37540
  "description": "Every owner of record — `owners[0]` is the same person the flat `ownerName`/`ownerFirstName`/`ownerLastName` fields describe, and the rest are co-owners/co-borrowers. Additive: those three fields are unchanged. `null` (never `[]`) when the parcel has no readable owner.",
37556
37541
  "items": {
@@ -37728,6 +37713,16 @@
37728
37713
  "PropertyFlatFilters": {
37729
37714
  "additionalProperties": false,
37730
37715
  "properties": {
37716
+ "absenteeOwner": {
37717
+ "allOf": [
37718
+ {
37719
+ "$ref": "#/components/schemas/BooleanFilterValue"
37720
+ },
37721
+ {
37722
+ "description": "Owner's mailing address (street + 5-digit zip, case/punctuation-insensitive) differs from the property's site address — an investor / non-owner-occupied signal. `true` = absentee, `false` = owner mails to the property; parcels with no mailing or site address match neither. Evaluated per candidate document (no stored flag yet), so always pair it with a geography filter (`state`, `county`, `zipCode`, `fips`, a radius) — an unscoped `absenteeOwner` over all parcels may time out."
37723
+ }
37724
+ ]
37725
+ },
37731
37726
  "activeLoanCount": {
37732
37727
  "allOf": [
37733
37728
  {
@@ -38184,6 +38179,9 @@
38184
38179
  "ownerName": {
38185
38180
  "$ref": "#/components/schemas/TextFilterValue"
38186
38181
  },
38182
+ "ownerOccupancy": {
38183
+ "$ref": "#/components/schemas/PropertyOwnerOccupancyFilterValue"
38184
+ },
38187
38185
  "ownerType": {
38188
38186
  "anyOf": [
38189
38187
  {
@@ -39014,6 +39012,48 @@
39014
39012
  ],
39015
39013
  "type": "object"
39016
39014
  },
39015
+ "PropertyOwnerOccupancyFilterValue": {
39016
+ "anyOf": [
39017
+ {
39018
+ "description": "One of (case-insensitive): owner_occupied, probable_owner_occupied, not_flagged",
39019
+ "enum": [
39020
+ "owner_occupied",
39021
+ "probable_owner_occupied",
39022
+ "not_flagged"
39023
+ ],
39024
+ "type": "string"
39025
+ },
39026
+ {
39027
+ "description": "Match any of these values",
39028
+ "items": {
39029
+ "description": "One of (case-insensitive): owner_occupied, probable_owner_occupied, not_flagged",
39030
+ "enum": [
39031
+ "owner_occupied",
39032
+ "probable_owner_occupied",
39033
+ "not_flagged"
39034
+ ],
39035
+ "type": "string"
39036
+ },
39037
+ "type": "array"
39038
+ },
39039
+ {
39040
+ "description": "Fuzzy text match",
39041
+ "properties": {
39042
+ "match": {
39043
+ "type": "string"
39044
+ }
39045
+ },
39046
+ "required": [
39047
+ "match"
39048
+ ],
39049
+ "type": "object"
39050
+ },
39051
+ {
39052
+ "nullable": true
39053
+ }
39054
+ ],
39055
+ "description": "Assessor owner-occupancy flag, bucketed: `\"owner_occupied\"`, `\"probable_owner_occupied\"`, or `\"not_flagged\"` (the assessor did not flag the parcel — where non-owner-occupied/investor parcels land). Accepts one value or an array (any-of). For investor targeting use `{ownerOccupancy: \"not_flagged\", absenteeOwner: true}`, optionally with `ownerType: \"entity\"`."
39056
+ },
39017
39057
  "PropertyParties": {
39018
39058
  "description": "Mortgage parties attributed to the parcel, split by scope: `alltime` (everyone on record, a strict superset of the rest), `active` (parties on loans still outstanding), `matched` (the subset whose loan resolved to a known NMLS entity) and `last` (the most recent loan). Real estate agents are not part of this block — reach parcels from an agent through `POST /v1/agents/{id}/properties`.",
39019
39059
  "properties": {
@@ -39387,6 +39427,11 @@
39387
39427
  },
39388
39428
  "PropertySummary": {
39389
39429
  "properties": {
39430
+ "absenteeOwner": {
39431
+ "description": "`true` when the owner's mailing address (street + 5-digit zip, case/punctuation-insensitive) differs from the property's site address — a non-owner-occupied/investor signal; `false` when the owner mails to the property; `null` when either address is missing. Filterable.",
39432
+ "nullable": true,
39433
+ "type": "boolean"
39434
+ },
39390
39435
  "activeLoanCount": {
39391
39436
  "description": "Mortgages believed to still be outstanding. IMPORTANT: `0` does not always mean the parcel is paid off — on a recently-sold parcel it usually means the buyer's new mortgage has not reached the public record yet, so the honest reading is UNKNOWN. Check `activeLoanCountKnown` before treating a `0` as fact, and do not infer 100% `equity` from it.",
39392
39437
  "nullable": true,
@@ -39516,6 +39561,35 @@
39516
39561
  "nullable": true,
39517
39562
  "type": "string"
39518
39563
  },
39564
+ "ownerMailingAddress": {
39565
+ "description": "Primary owner's mailing address, `null` when none is recorded.",
39566
+ "nullable": true,
39567
+ "properties": {
39568
+ "city": {
39569
+ "nullable": true,
39570
+ "type": "string"
39571
+ },
39572
+ "state": {
39573
+ "nullable": true,
39574
+ "type": "string"
39575
+ },
39576
+ "street": {
39577
+ "nullable": true,
39578
+ "type": "string"
39579
+ },
39580
+ "zip": {
39581
+ "nullable": true,
39582
+ "type": "string"
39583
+ }
39584
+ },
39585
+ "required": [
39586
+ "street",
39587
+ "city",
39588
+ "state",
39589
+ "zip"
39590
+ ],
39591
+ "type": "object"
39592
+ },
39519
39593
  "ownerMiddleName": {
39520
39594
  "nullable": true,
39521
39595
  "type": "string"
@@ -39524,8 +39598,17 @@
39524
39598
  "nullable": true,
39525
39599
  "type": "string"
39526
39600
  },
39601
+ "ownerOccupancy": {
39602
+ "description": "Assessor owner-occupancy flag, bucketed: `owner_occupied` (owner-occupied, incl. the vendor's phased-out non-residential code), `probable_owner_occupied`, or `not_flagged` (the assessor did not flag the parcel — not proof of an investor, but where non-owner-occupied/investor parcels land; pair with `absenteeOwner`). Filterable.",
39603
+ "enum": [
39604
+ "owner_occupied",
39605
+ "probable_owner_occupied",
39606
+ "not_flagged"
39607
+ ],
39608
+ "type": "string"
39609
+ },
39527
39610
  "ownerOccupied": {
39528
- "description": "`true` if recorded owner-occupied; `null` = unknown.",
39611
+ "description": "`true` only on the assessor's confident owner-occupied code (`\"Y\"`); `null` = not flagged / unknown, never `false`. Kept for compatibility — prefer `ownerOccupancy`.",
39529
39612
  "nullable": true,
39530
39613
  "type": "boolean"
39531
39614
  },
@@ -42114,7 +42197,7 @@
42114
42197
  "info": {
42115
42198
  "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.",
42116
42199
  "title": "ModelMatch API",
42117
- "version": "3.103.1"
42200
+ "version": "3.106.0"
42118
42201
  },
42119
42202
  "openapi": "3.1.0",
42120
42203
  "paths": {
@@ -74792,7 +74875,7 @@
74792
74875
  },
74793
74876
  "/v1/properties": {
74794
74877
  "post": {
74795
- "description": "Search and list individual properties/parcels with filters — one row per parcel. Filter by location (state, county, city, zip, address), owner name, property characteristics (beds, baths, square footage, year built, property type), value, and ownership or transaction history, with sorting and cursor pagination. This is the discrete per-property record search: use it to find specific properties or build a filtered property list. (For a single property by its ID use the property detail endpoint.) If you only need how many properties match and not the records themselves, send the same request body to `countProperties`.",
74878
+ "description": "Search and list individual properties/parcels with filters — one row per parcel. Filter by location (state, county, city, zip, address), owner name, property characteristics (beds, baths, square footage, year built, property type), value, ownership or transaction history, and occupancy (`ownerOccupancy: not_flagged` plus `absenteeOwner: true` targets likely investor / non-owner-occupied parcels — pair `absenteeOwner` with a geography filter), with sorting and cursor pagination. This is the discrete per-property record search: use it to find specific properties or build a filtered property list. (For a single property by its ID use the property detail endpoint.) If you only need how many properties match and not the records themselves, send the same request body to `countProperties`.",
74796
74879
  "operationId": "listProperties",
74797
74880
  "requestBody": {
74798
74881
  "content": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@model-match/api",
3
- "version": "3.44.0",
3
+ "version": "3.45.0",
4
4
  "description": "TypeScript client for the ModelMatch API",
5
5
  "license": "MIT",
6
6
  "files": [