@land-catalyst/batch-data-sdk 1.1.12

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.
@@ -0,0 +1,1738 @@
1
+ /**
2
+ * BatchData.io API Types
3
+ *
4
+ * Complete TypeScript type definitions for the BatchData Property Subscription API v2
5
+ *
6
+ * API Documentation: https://developer.batchdata.com/docs/batchdata/batchdata-v2/operations/create-a-property-subscription
7
+ */
8
+ /**
9
+ * String filter operators for text-based search criteria
10
+ */
11
+ export interface StringFilter {
12
+ equals?: string;
13
+ contains?: string;
14
+ startsWith?: string;
15
+ endsWith?: string;
16
+ inList?: string[];
17
+ notInList?: string[];
18
+ matches?: string[];
19
+ }
20
+ /**
21
+ * Numeric range filter for numeric search criteria
22
+ */
23
+ export interface NumericRangeFilter {
24
+ min?: number;
25
+ max?: number;
26
+ }
27
+ /**
28
+ * Date range filter for date-based search criteria
29
+ */
30
+ export interface DateRangeFilter {
31
+ minDate?: string;
32
+ maxDate?: string;
33
+ }
34
+ /**
35
+ * Geographic point (latitude/longitude)
36
+ */
37
+ export interface GeoPoint {
38
+ latitude: number;
39
+ longitude: number;
40
+ }
41
+ /**
42
+ * Geographic distance filter
43
+ */
44
+ export interface GeoLocationDistance {
45
+ geoPoint: GeoPoint;
46
+ distanceMeters?: string;
47
+ distanceKilometers?: string;
48
+ distanceFeet?: string;
49
+ distanceYards?: string;
50
+ distanceMiles?: string;
51
+ }
52
+ /**
53
+ * Geographic bounding box filter
54
+ */
55
+ export interface GeoLocationBoundingBox {
56
+ nwGeoPoint: GeoPoint;
57
+ seGeoPoint: GeoPoint;
58
+ }
59
+ /**
60
+ * Geographic polygon filter
61
+ */
62
+ export interface GeoLocationPolygon {
63
+ geoPoints: GeoPoint[];
64
+ }
65
+ /**
66
+ * Address search criteria
67
+ */
68
+ export interface AddressSearchCriteria {
69
+ street?: StringFilter;
70
+ city?: StringFilter;
71
+ locality?: StringFilter;
72
+ county?: StringFilter;
73
+ countyFipsCode?: StringFilter;
74
+ state?: StringFilter;
75
+ zip?: StringFilter;
76
+ unitType?: StringFilter;
77
+ formattedStreet?: StringFilter;
78
+ streetNoUnit?: StringFilter;
79
+ geoLocationDistance?: GeoLocationDistance;
80
+ geoLocationBoundingBox?: GeoLocationBoundingBox;
81
+ geoLocationPolygon?: GeoLocationPolygon;
82
+ initialGeoStatus?: StringFilter;
83
+ geoStatus?: StringFilter;
84
+ cityState?: StringFilter;
85
+ countyState?: StringFilter;
86
+ }
87
+ /**
88
+ * Assessment search criteria
89
+ */
90
+ export interface AssessmentSearchCriteria {
91
+ assessmentYear?: NumericRangeFilter;
92
+ totalAssessedValue?: NumericRangeFilter;
93
+ assessedImprovementValue?: NumericRangeFilter;
94
+ assessedLandValue?: NumericRangeFilter;
95
+ marketValueYear?: NumericRangeFilter;
96
+ landMarketValue?: NumericRangeFilter;
97
+ improvementMarketValue?: NumericRangeFilter;
98
+ totalMarketValue?: NumericRangeFilter;
99
+ }
100
+ /**
101
+ * Building search criteria
102
+ */
103
+ export interface BuildingSearchCriteria {
104
+ airConditioningSource?: StringFilter;
105
+ basementType?: StringFilter;
106
+ totalBuildingAreaSquareFeet?: NumericRangeFilter;
107
+ buildingClass?: StringFilter;
108
+ buildingCondition?: StringFilter;
109
+ buildingQuality?: StringFilter;
110
+ buildingType?: StringFilter;
111
+ driveway?: StringFilter;
112
+ exteriorWalls?: StringFilter;
113
+ floorCover?: StringFilter;
114
+ garageParkingSpaceCount?: NumericRangeFilter;
115
+ garage?: StringFilter;
116
+ heatSource?: StringFilter;
117
+ heatingFuelType?: StringFilter;
118
+ interiorWalls?: StringFilter;
119
+ buildingCount?: NumericRangeFilter;
120
+ bathroomCount?: NumericRangeFilter;
121
+ calculatedBathroomCount?: NumericRangeFilter;
122
+ bedroomCount?: NumericRangeFilter;
123
+ patio?: StringFilter;
124
+ storyCount?: NumericRangeFilter;
125
+ features?: StringFilter;
126
+ residentialUnitCount?: NumericRangeFilter;
127
+ pool?: StringFilter;
128
+ porch?: StringFilter;
129
+ roofCover?: StringFilter;
130
+ roofType?: StringFilter;
131
+ sewer?: StringFilter;
132
+ style?: StringFilter;
133
+ roomCount?: NumericRangeFilter;
134
+ unitCount?: NumericRangeFilter;
135
+ constructionType?: StringFilter;
136
+ waterService?: StringFilter;
137
+ yearBuilt?: NumericRangeFilter;
138
+ }
139
+ /**
140
+ * Comp address search criteria
141
+ */
142
+ export interface CompAddressSearchCriteria {
143
+ street?: string;
144
+ city?: string;
145
+ state?: string;
146
+ zip?: string;
147
+ hash?: string;
148
+ }
149
+ /**
150
+ * Demographics search criteria
151
+ */
152
+ export interface DemographicsSearchCriteria {
153
+ age?: NumericRangeFilter;
154
+ householdSize?: NumericRangeFilter;
155
+ income?: NumericRangeFilter;
156
+ netWorth?: NumericRangeFilter;
157
+ discretionaryIncome?: NumericRangeFilter;
158
+ homeownerRenter?: StringFilter;
159
+ businessOwner?: StringFilter;
160
+ gender?: StringFilter;
161
+ hasChildren?: {
162
+ equals: boolean;
163
+ };
164
+ investments?: StringFilter;
165
+ demographics?: StringFilter;
166
+ religiousAffiliation?: StringFilter;
167
+ }
168
+ /**
169
+ * Foreclosure search criteria
170
+ */
171
+ export interface ForeclosureSearchCriteria {
172
+ status?: StringFilter;
173
+ recordingDate?: DateRangeFilter;
174
+ auctionDate?: DateRangeFilter;
175
+ releaseDate?: DateRangeFilter;
176
+ auctionMinimumBidAmount?: NumericRangeFilter;
177
+ pastDueAmount?: NumericRangeFilter;
178
+ }
179
+ /**
180
+ * General property search criteria
181
+ */
182
+ export interface GeneralSearchCriteria {
183
+ propertyTypeCategory?: StringFilter;
184
+ propertyTypeDetail?: StringFilter;
185
+ }
186
+ /**
187
+ * IDs search criteria
188
+ */
189
+ export interface IdsSearchCriteria {
190
+ addressHash?: StringFilter;
191
+ mailingAddressHash?: StringFilter;
192
+ fipsCode?: StringFilter;
193
+ apn?: StringFilter;
194
+ taxId?: StringFilter;
195
+ }
196
+ /**
197
+ * Intel search criteria
198
+ */
199
+ export interface IntelSearchCriteria {
200
+ lastSoldDate?: DateRangeFilter;
201
+ lastSoldPrice?: NumericRangeFilter;
202
+ salePropensity?: NumericRangeFilter;
203
+ }
204
+ /**
205
+ * Involuntary lien search criteria
206
+ */
207
+ export interface InvoluntaryLienSearchCriteria {
208
+ lienType?: StringFilter;
209
+ lienTypeCode?: StringFilter;
210
+ documentType?: StringFilter;
211
+ documentTypeCode?: StringFilter;
212
+ recordingDate?: DateRangeFilter;
213
+ filingDate?: DateRangeFilter;
214
+ lienAmount?: NumericRangeFilter;
215
+ }
216
+ /**
217
+ * Legal search criteria
218
+ */
219
+ export interface LegalSearchCriteria {
220
+ subdivisionName?: StringFilter;
221
+ }
222
+ /**
223
+ * Listing search criteria
224
+ */
225
+ export interface ListingSearchCriteria {
226
+ description?: StringFilter;
227
+ price?: NumericRangeFilter;
228
+ daysOnMarket?: NumericRangeFilter;
229
+ status?: StringFilter;
230
+ statusCategory?: StringFilter;
231
+ failedListingDate?: DateRangeFilter;
232
+ soldDate?: DateRangeFilter;
233
+ }
234
+ /**
235
+ * Lot search criteria
236
+ */
237
+ export interface LotSearchCriteria {
238
+ lotSizeAcres?: NumericRangeFilter;
239
+ lotDepthFeet?: NumericRangeFilter;
240
+ lotFrontageFeet?: NumericRangeFilter;
241
+ lotSizeSquareFeet?: NumericRangeFilter;
242
+ zoningCode?: StringFilter;
243
+ }
244
+ /**
245
+ * Open lien search criteria
246
+ */
247
+ export interface OpenLienSearchCriteria {
248
+ allLoanTypes?: StringFilter;
249
+ juniorLoanTypes?: StringFilter;
250
+ totalOpenLienCount?: NumericRangeFilter;
251
+ totalOpenLienBalance?: NumericRangeFilter;
252
+ firstLoanLtv?: NumericRangeFilter;
253
+ firstLoanInterestRate?: NumericRangeFilter;
254
+ secondLoanInterestRate?: NumericRangeFilter;
255
+ thirdLoanInterestRate?: NumericRangeFilter;
256
+ fourthLoanInterestRate?: NumericRangeFilter;
257
+ firstLoanType?: StringFilter;
258
+ secondLoanType?: StringFilter;
259
+ thirdLoanType?: StringFilter;
260
+ fourthLoanType?: StringFilter;
261
+ firstLoanRecordingDate?: DateRangeFilter;
262
+ lastLoanRecordingDate?: DateRangeFilter;
263
+ }
264
+ /**
265
+ * Owner search criteria
266
+ */
267
+ export interface OwnerSearchCriteria {
268
+ firstName?: StringFilter;
269
+ lastName?: StringFilter;
270
+ ownerOccupied?: {
271
+ equals: boolean;
272
+ };
273
+ mailingStreet?: StringFilter;
274
+ mailingCity?: StringFilter;
275
+ mailingState?: StringFilter;
276
+ mailingZip?: StringFilter;
277
+ ownerStatusType?: StringFilter;
278
+ lengthOfResidenceMonths?: NumericRangeFilter;
279
+ lengthOfResidenceYears?: NumericRangeFilter;
280
+ ownershipStartDate?: DateRangeFilter;
281
+ mailingAddressHash?: StringFilter;
282
+ }
283
+ /**
284
+ * Permit search criteria
285
+ */
286
+ export interface PermitSearchCriteria {
287
+ permitCount?: NumericRangeFilter;
288
+ latestDate?: DateRangeFilter;
289
+ earliestDate?: DateRangeFilter;
290
+ totalJobValue?: NumericRangeFilter;
291
+ allTags?: StringFilter;
292
+ }
293
+ /**
294
+ * Property owner profile search criteria
295
+ */
296
+ export interface PropertyOwnerProfileSearchCriteria {
297
+ propertiesCount?: NumericRangeFilter;
298
+ propertiesTotalEquity?: NumericRangeFilter;
299
+ propertiesTotalEstimatedValue?: NumericRangeFilter;
300
+ mortgagesTotalBalance?: NumericRangeFilter;
301
+ mortgagesCount?: NumericRangeFilter;
302
+ mortgagesAverageBalance?: NumericRangeFilter;
303
+ }
304
+ /**
305
+ * Sale search criteria
306
+ */
307
+ export interface SaleSearchCriteria {
308
+ lastSalePrice?: NumericRangeFilter;
309
+ lastSaleDate?: DateRangeFilter;
310
+ lastSaleDocumentType?: StringFilter;
311
+ lastSalePricePerSquareFoot?: NumericRangeFilter;
312
+ flipLength?: NumericRangeFilter;
313
+ flipLengthCategory?: NumericRangeFilter;
314
+ flipProfit?: NumericRangeFilter;
315
+ }
316
+ /**
317
+ * Tax search criteria
318
+ */
319
+ export interface TaxSearchCriteria {
320
+ taxDelinquentYear?: NumericRangeFilter;
321
+ }
322
+ /**
323
+ * Valuation search criteria
324
+ */
325
+ export interface ValuationSearchCriteria {
326
+ estimatedValue?: NumericRangeFilter;
327
+ ltv?: NumericRangeFilter;
328
+ equityPercent?: NumericRangeFilter;
329
+ }
330
+ /**
331
+ * OR criteria - allows OR logic for specific fields
332
+ */
333
+ export interface OrSearchCriteria {
334
+ listing?: {
335
+ status?: StringFilter;
336
+ };
337
+ sale?: {
338
+ lastSaleDate?: DateRangeFilter;
339
+ };
340
+ }
341
+ /**
342
+ * Valid quickList values (without "not-" prefix)
343
+ * Note: According to API docs, "involuntary-lien" is only listed for quickLists/orQuickLists arrays,
344
+ * but it's included here for consistency. If the API rejects it for quickList, it can be removed.
345
+ */
346
+ export type QuickListValue = "absentee-owner" | "active-auction" | "active-listing" | "canceled-listing" | "cash-buyer" | "corporate-owned" | "expired-listing" | "failed-listing" | "fix-and-flip" | "free-and-clear" | "for-sale-by-owner" | "has-hoa" | "has-hoa-fees" | "high-equity" | "inherited" | "involuntary-lien" | "in-state-absentee-owner" | "listed-below-market-price" | "low-equity" | "mailing-address-vacant" | "notice-of-default" | "notice-of-lis-pendens" | "notice-of-sale" | "on-market" | "out-of-state-absentee-owner" | "out-of-state-owner" | "owner-occupied" | "pending-listing" | "preforeclosure" | "recently-sold" | "same-property-and-mailing-address" | "tax-default" | "tired-landlord" | "unknown-equity" | "vacant" | "vacant-lot";
347
+ /**
348
+ * QuickList value that can be prefixed with "not-" to exclude
349
+ */
350
+ export type QuickListValueWithNot = QuickListValue | `not-${QuickListValue}`;
351
+ /**
352
+ * Complete search criteria object
353
+ */
354
+ export interface SearchCriteria {
355
+ query: string;
356
+ quickList?: QuickListValueWithNot;
357
+ quickLists?: QuickListValueWithNot[];
358
+ orQuickLists?: QuickListValueWithNot[];
359
+ address?: AddressSearchCriteria;
360
+ assessment?: AssessmentSearchCriteria;
361
+ building?: BuildingSearchCriteria;
362
+ compAddress?: CompAddressSearchCriteria;
363
+ demographics?: DemographicsSearchCriteria;
364
+ foreclosure?: ForeclosureSearchCriteria;
365
+ general?: GeneralSearchCriteria;
366
+ ids?: IdsSearchCriteria;
367
+ intel?: IntelSearchCriteria;
368
+ involuntaryLien?: InvoluntaryLienSearchCriteria;
369
+ legal?: LegalSearchCriteria;
370
+ listing?: ListingSearchCriteria;
371
+ lot?: LotSearchCriteria;
372
+ openLien?: OpenLienSearchCriteria;
373
+ owner?: OwnerSearchCriteria;
374
+ permit?: PermitSearchCriteria;
375
+ propertyOwnerProfile?: PropertyOwnerProfileSearchCriteria;
376
+ sale?: SaleSearchCriteria;
377
+ tax?: TaxSearchCriteria;
378
+ valuation?: ValuationSearchCriteria;
379
+ or?: OrSearchCriteria[];
380
+ }
381
+ /**
382
+ * Delivery configuration for webhook or Kinesis
383
+ */
384
+ export interface DeliveryConfig {
385
+ type: "webhook" | "kinesis";
386
+ streamName?: string;
387
+ region?: string;
388
+ iamAccessKeyId?: string;
389
+ iamSecretAccessKey?: string;
390
+ url?: string;
391
+ errorUrl?: string;
392
+ headers?: Record<string, string>;
393
+ }
394
+ /**
395
+ * Property subscription request payload
396
+ */
397
+ export interface PropertySubscriptionRequest {
398
+ searchCriteria: SearchCriteria;
399
+ deliveryConfig: DeliveryConfig;
400
+ }
401
+ /**
402
+ * Property subscription response
403
+ */
404
+ export interface PropertySubscriptionResponse {
405
+ id: string;
406
+ status: string;
407
+ }
408
+ /**
409
+ * Property subscription detail (returned by GET endpoints)
410
+ */
411
+ export interface PropertySubscriptionDetail {
412
+ id?: string;
413
+ searchCriteria?: SearchCriteria;
414
+ deliveryConfig?: DeliveryConfig;
415
+ status?: string;
416
+ }
417
+ /**
418
+ * Get property subscriptions response (returns array directly)
419
+ */
420
+ export type GetPropertySubscriptionsResponse = PropertySubscriptionDetail[];
421
+ /**
422
+ * Get property subscription detail response
423
+ */
424
+ export interface GetPropertySubscriptionDetailResponse {
425
+ status?: ResponseStatus;
426
+ results?: {
427
+ subscription?: PropertySubscriptionDetail;
428
+ meta?: ResponseMetadata;
429
+ };
430
+ }
431
+ /**
432
+ * Delete property subscription response
433
+ */
434
+ export interface DeletePropertySubscriptionResponse {
435
+ status?: ResponseStatus;
436
+ }
437
+ /**
438
+ * Property permit request
439
+ */
440
+ export interface PropertyPermitRequest {
441
+ request: {
442
+ address?: PropertyLookupRequestAddress;
443
+ hash?: string;
444
+ propertyId?: string;
445
+ apn?: string;
446
+ countyFipsCode?: string;
447
+ allTags?: StringFilter;
448
+ description?: StringFilter;
449
+ endDate?: DateRangeFilter;
450
+ fileDate?: DateRangeFilter;
451
+ finalDate?: DateRangeFilter;
452
+ issueDate?: DateRangeFilter;
453
+ jobValue?: NumericRangeFilter;
454
+ startDate?: DateRangeFilter;
455
+ status?: StringFilter;
456
+ subType?: StringFilter;
457
+ type?: StringFilter;
458
+ };
459
+ options?: {
460
+ skip?: number;
461
+ take?: number;
462
+ sessionId?: string;
463
+ dateFormat?: string;
464
+ showRequests?: boolean;
465
+ showOptions?: boolean;
466
+ showMeta?: boolean;
467
+ sort?: {
468
+ field?: string;
469
+ order?: "asc" | "desc";
470
+ };
471
+ };
472
+ }
473
+ /**
474
+ * Property permit details
475
+ */
476
+ export interface PropertyPermitDetails {
477
+ permitNumber?: string;
478
+ type?: string;
479
+ subtype?: string;
480
+ description?: string;
481
+ status?: string;
482
+ issueDate?: string;
483
+ finalDate?: string;
484
+ fileDate?: string;
485
+ startDate?: string;
486
+ endDate?: string;
487
+ jobValue?: number;
488
+ fees?: number;
489
+ jurisdiction?: string;
490
+ applicant?: Record<string, any>;
491
+ allTags?: string[];
492
+ tags?: Record<string, boolean>;
493
+ approvalDuration?: number;
494
+ constructionDuration?: number;
495
+ totalDuration?: number;
496
+ }
497
+ /**
498
+ * Property permit API response
499
+ */
500
+ export interface PropertyPermitResponse {
501
+ status?: ResponseStatus;
502
+ result?: {
503
+ permits?: PropertyPermitDetails[];
504
+ property?: {
505
+ address?: PropertyAddress;
506
+ id?: string;
507
+ apn?: string;
508
+ countyFipsCode?: string;
509
+ };
510
+ request?: PropertyPermitRequest["request"];
511
+ options?: PropertyPermitRequest["options"];
512
+ meta?: {
513
+ /** Metadata about the results */
514
+ results?: ResultsMetadata;
515
+ apiVersion?: string;
516
+ requestId?: string;
517
+ };
518
+ };
519
+ }
520
+ /**
521
+ * Property skip trace v3 request item
522
+ */
523
+ export interface PropertySkipTraceV3RequestItem {
524
+ name?: {
525
+ first?: string;
526
+ last?: string;
527
+ };
528
+ propertyAddress?: PropertyLookupRequestAddress;
529
+ mailingAddress?: PropertyLookupRequestAddress;
530
+ apn?: string;
531
+ countyFipsCode?: string;
532
+ county?: string;
533
+ state?: string;
534
+ requestId?: string;
535
+ }
536
+ /**
537
+ * Property skip trace v3 options
538
+ */
539
+ export interface PropertySkipTraceV3Options {
540
+ includeTCPABlacklistedPhones?: boolean;
541
+ webhookUrl?: string;
542
+ errorWebhookUrl?: string;
543
+ dateFormat?: string;
544
+ }
545
+ /**
546
+ * Property skip trace v3 request
547
+ */
548
+ export interface PropertySkipTraceV3Request {
549
+ requests: PropertySkipTraceV3RequestItem[];
550
+ options?: PropertySkipTraceV3Options;
551
+ }
552
+ /**
553
+ * Property skip trace v3 person
554
+ */
555
+ export interface PropertySkipTraceV3Person {
556
+ propertyOwner?: boolean;
557
+ name?: {
558
+ first?: string;
559
+ last?: string;
560
+ middle?: string;
561
+ full?: string;
562
+ };
563
+ addresses?: Array<{
564
+ hash?: string;
565
+ addressValidity?: string;
566
+ fullAddress?: string;
567
+ street?: string;
568
+ city?: string;
569
+ county?: string;
570
+ state?: string;
571
+ zip?: string;
572
+ zipPlus4?: string;
573
+ rank?: number;
574
+ propertyMailingAddress?: boolean;
575
+ }>;
576
+ phones?: Array<{
577
+ rank?: number;
578
+ number?: string;
579
+ type?: string;
580
+ carrier?: string;
581
+ tested?: boolean;
582
+ reachable?: boolean;
583
+ dnc?: boolean;
584
+ tcpa?: boolean;
585
+ }>;
586
+ emails?: Array<{
587
+ rank?: number;
588
+ email?: string;
589
+ tested?: boolean;
590
+ }>;
591
+ litigator?: boolean;
592
+ deceased?: boolean;
593
+ dob?: string;
594
+ }
595
+ /**
596
+ * Property skip trace v3 result item
597
+ */
598
+ export interface PropertySkipTraceV3ResultItem {
599
+ inputIndex?: number;
600
+ input?: {
601
+ propertyAddress?: PropertyAddress;
602
+ requestId?: string;
603
+ inputIndex?: number;
604
+ inputId?: string;
605
+ name?: {
606
+ first?: string;
607
+ last?: string;
608
+ };
609
+ mailingAddress?: PropertyAddress;
610
+ apn?: string;
611
+ countyFipsCode?: string;
612
+ county?: string;
613
+ state?: string;
614
+ };
615
+ property?: {
616
+ id?: string;
617
+ address?: PropertyAddress;
618
+ mailingAddress?: PropertyAddress;
619
+ owners?: Array<{
620
+ name?: {
621
+ first?: string;
622
+ middle?: string;
623
+ last?: string;
624
+ full?: string;
625
+ };
626
+ }>;
627
+ };
628
+ persons?: PropertySkipTraceV3Person[];
629
+ meta?: {
630
+ matched?: boolean;
631
+ error?: boolean;
632
+ };
633
+ }
634
+ /**
635
+ * Property skip trace v3 API response
636
+ */
637
+ export interface PropertySkipTraceV3Response {
638
+ status?: ResponseStatus;
639
+ result?: {
640
+ data?: PropertySkipTraceV3ResultItem[];
641
+ options?: PropertySkipTraceV3Options;
642
+ meta?: {
643
+ apiVersion?: string;
644
+ performance?: PerformanceMetrics;
645
+ results?: {
646
+ requestCount?: number;
647
+ matchCount?: number;
648
+ noMatchCount?: number;
649
+ errorCount?: number;
650
+ };
651
+ requestId?: string;
652
+ };
653
+ };
654
+ }
655
+ /**
656
+ * Property skip trace v3 async request
657
+ */
658
+ export interface PropertySkipTraceV3AsyncRequest {
659
+ requests: PropertySkipTraceV3RequestItem[];
660
+ options?: PropertySkipTraceV3Options;
661
+ }
662
+ /**
663
+ * Property skip trace v3 async API response
664
+ */
665
+ export interface PropertySkipTraceV3AsyncResponse {
666
+ status?: ResponseStatus;
667
+ result?: {
668
+ requestId?: string;
669
+ webhookUrl?: string;
670
+ errorWebhookUrl?: string;
671
+ meta?: {
672
+ apiVersion?: string;
673
+ performance?: PerformanceMetrics;
674
+ };
675
+ };
676
+ }
677
+ /**
678
+ * Property search preview/estimate response
679
+ * Used to preview how many properties match search criteria before creating a subscription
680
+ */
681
+ export interface PropertySearchPreviewResponse {
682
+ /**
683
+ * Estimated or exact count of properties matching the search criteria
684
+ */
685
+ count?: number;
686
+ /**
687
+ * Estimated count (may be approximate)
688
+ */
689
+ estimatedCount?: number;
690
+ /**
691
+ * Exact count (if available)
692
+ */
693
+ exactCount?: number;
694
+ /**
695
+ * Whether the count is an estimate or exact
696
+ */
697
+ isEstimate?: boolean;
698
+ /**
699
+ * Sample properties (if returned)
700
+ */
701
+ sampleProperties?: Property[];
702
+ /**
703
+ * Additional metadata about the search
704
+ */
705
+ metadata?: {
706
+ query?: string;
707
+ searchCriteria?: Partial<SearchCriteria>;
708
+ };
709
+ }
710
+ /**
711
+ * Property address information
712
+ */
713
+ export interface PropertyAddress {
714
+ addressValidity?: string;
715
+ houseNumber?: string;
716
+ street?: string;
717
+ city?: string;
718
+ county?: string;
719
+ state?: string;
720
+ zip?: string;
721
+ zipPlus4?: string;
722
+ latitude?: number;
723
+ longitude?: number;
724
+ countyFipsCode?: string;
725
+ hash?: string;
726
+ }
727
+ /**
728
+ * Mailing address information
729
+ */
730
+ export interface MailingAddress {
731
+ street?: string;
732
+ city?: string;
733
+ state?: string;
734
+ zip?: string;
735
+ hash?: string;
736
+ addressValidity?: string;
737
+ county?: string;
738
+ zipPlus4?: string;
739
+ deliveryPointCode?: string;
740
+ dpvMatchCode?: string;
741
+ dpvFootnotes?: string;
742
+ }
743
+ /**
744
+ * Deed history entry
745
+ */
746
+ export interface DeedHistoryEntry {
747
+ buyers?: string[];
748
+ sellers?: string[];
749
+ recordingDate?: string;
750
+ saleDate?: string;
751
+ documentNumber?: string;
752
+ documentTypeCode?: string;
753
+ documentType?: string;
754
+ salePrice?: number;
755
+ transactionType?: string;
756
+ transactionTypeCode?: string;
757
+ mailingAddress?: MailingAddress;
758
+ newConstruction?: boolean;
759
+ interFamily?: boolean;
760
+ }
761
+ /**
762
+ * Demographics information
763
+ */
764
+ export interface Demographics {
765
+ age?: number;
766
+ householdSize?: number;
767
+ income?: number;
768
+ netWorth?: number;
769
+ discretionaryIncome?: number;
770
+ homeownerRenterCode?: string;
771
+ homeownerRenter?: string;
772
+ genderCode?: string;
773
+ gender?: string;
774
+ maritalStatusCode?: string;
775
+ maritalStatus?: string;
776
+ religious?: boolean;
777
+ religiousAffiliationCode?: string;
778
+ religiousAffiliation?: string;
779
+ individualEducationCode?: string;
780
+ individualEducation?: string;
781
+ individualOccupation?: string;
782
+ individualOccupationCode?: string;
783
+ }
784
+ /**
785
+ * Foreclosure information
786
+ */
787
+ export interface Foreclosure {
788
+ statusCode?: string;
789
+ status?: string;
790
+ recordingDate?: string;
791
+ filingDate?: string;
792
+ documentNumber?: string;
793
+ documentTypeCode?: string;
794
+ documentType?: string;
795
+ releaseDate?: string;
796
+ }
797
+ /**
798
+ * Property IDs
799
+ */
800
+ export interface PropertyIds {
801
+ apn?: string;
802
+ }
803
+ /**
804
+ * Property images
805
+ */
806
+ export interface PropertyImages {
807
+ imageCount?: number;
808
+ imageUrls?: string[];
809
+ }
810
+ /**
811
+ * Intel information
812
+ */
813
+ export interface Intel {
814
+ salePropensity?: number;
815
+ salePropensityStatus?: string;
816
+ salePropensityCategory?: string;
817
+ }
818
+ /**
819
+ * Tax information entry
820
+ */
821
+ export interface TaxEntry {
822
+ amount?: number;
823
+ year?: number;
824
+ }
825
+ /**
826
+ * Listing information
827
+ */
828
+ export interface Listing {
829
+ status?: string;
830
+ price?: number;
831
+ rental?: boolean;
832
+ originalListingDate?: string;
833
+ maxListPrice?: number;
834
+ maxListPriceDate?: string;
835
+ minListPrice?: number;
836
+ minListPriceDate?: string;
837
+ soldPrice?: number;
838
+ soldDate?: string;
839
+ failedListingDate?: string;
840
+ bedroomCount?: number;
841
+ bathroomCount?: number;
842
+ totalBuildingAreaSquareFeet?: number;
843
+ lotSizeSquareFeet?: number;
844
+ propertyType?: string;
845
+ yearBuilt?: number;
846
+ appliances?: string[];
847
+ roofTypes?: string[];
848
+ coolingTypes?: string[];
849
+ heatingTypes?: string[];
850
+ newConstruction?: boolean;
851
+ listingUrl?: string;
852
+ livingArea?: number;
853
+ taxes?: TaxEntry[];
854
+ salePriceIsEstimated?: boolean;
855
+ }
856
+ /**
857
+ * Mortgage history entry
858
+ */
859
+ export interface MortgageHistoryEntry {
860
+ borrowers?: string[];
861
+ saleDate?: string;
862
+ recordingDate?: string;
863
+ dueDate?: string;
864
+ lenderName?: string;
865
+ loanTypeCode?: string;
866
+ loanType?: string;
867
+ loanAmount?: number;
868
+ loanTermMonths?: number;
869
+ interestRate?: number;
870
+ transactionType?: string;
871
+ transactionTypeCode?: string;
872
+ documentDate?: string;
873
+ }
874
+ /**
875
+ * Open lien information
876
+ */
877
+ export interface OpenLien {
878
+ totalOpenLienCount?: number;
879
+ }
880
+ /**
881
+ * Owner name entry
882
+ */
883
+ export interface OwnerName {
884
+ last?: string;
885
+ full?: string;
886
+ }
887
+ /**
888
+ * Owner information
889
+ */
890
+ export interface Owner {
891
+ fullName?: string;
892
+ mailingAddress?: MailingAddress;
893
+ names?: OwnerName[];
894
+ }
895
+ /**
896
+ * Property owner profile
897
+ */
898
+ export interface PropertyOwnerProfile {
899
+ averageYearBuilt?: number;
900
+ propertiesCount?: number;
901
+ mortgagesTotalBalance?: number;
902
+ mortgagesCount?: number;
903
+ mortgagesAverageBalance?: number;
904
+ }
905
+ /**
906
+ * Quick lists flags
907
+ */
908
+ export interface QuickLists {
909
+ absenteeOwner?: boolean;
910
+ absenteeOwnerInState?: boolean;
911
+ absenteeOwnerOutOfState?: boolean;
912
+ activeListing?: boolean;
913
+ activeAuction?: boolean;
914
+ cashBuyer?: boolean;
915
+ corporateOwned?: boolean;
916
+ expiredListing?: boolean;
917
+ failedListing?: boolean;
918
+ freeAndClear?: boolean;
919
+ fixAndFlip?: boolean;
920
+ forSaleByOwner?: boolean;
921
+ highEquity?: boolean;
922
+ inherited?: boolean;
923
+ involuntaryLien?: boolean;
924
+ listedBelowMarketPrice?: boolean;
925
+ lowEquity?: boolean;
926
+ mailingAddressVacant?: boolean;
927
+ onMarket?: boolean;
928
+ outOfStateOwner?: boolean;
929
+ ownerOccupied?: boolean;
930
+ pendingListing?: boolean;
931
+ preforeclosure?: boolean;
932
+ recentlySold?: boolean;
933
+ samePropertyAndMailingAddress?: boolean;
934
+ seniorOwner?: boolean;
935
+ taxDefault?: boolean;
936
+ tiredLandlord?: boolean;
937
+ unknownEquity?: boolean;
938
+ vacant?: boolean;
939
+ vacantLot?: boolean;
940
+ hasHoa?: boolean;
941
+ hasHoaFees?: boolean;
942
+ canceledListing?: boolean;
943
+ noticeOfSale?: boolean;
944
+ noticeOfDefault?: boolean;
945
+ noticeOfLisPendens?: boolean;
946
+ }
947
+ /**
948
+ * Prior sale mortgage information
949
+ */
950
+ export interface PriorSaleMortgage {
951
+ documentNumber?: string;
952
+ pageNumber?: string | null;
953
+ bookNumber?: string | null;
954
+ recordingDate?: string;
955
+ loanAmount?: number;
956
+ loanTypeCode?: string;
957
+ loanType?: string;
958
+ financingTypeCode?: string | null;
959
+ financingType?: string | null;
960
+ interestRate?: number;
961
+ dueDate?: string;
962
+ lenderName?: string;
963
+ loanTerm?: string;
964
+ }
965
+ /**
966
+ * Sale information
967
+ */
968
+ export interface Sale {
969
+ priorSale?: {
970
+ mortgages?: PriorSaleMortgage[];
971
+ };
972
+ }
973
+ /**
974
+ * Valuation information
975
+ */
976
+ export interface Valuation {
977
+ estimatedValue?: number;
978
+ priceRangeMin?: number;
979
+ priceRangeMax?: number;
980
+ standardDeviation?: number;
981
+ confidenceScore?: number;
982
+ asOfDate?: string;
983
+ equityCurrentEstimatedBalance?: number;
984
+ ltv?: number;
985
+ equityPercent?: number;
986
+ }
987
+ /**
988
+ * Complete property object from search results
989
+ */
990
+ export interface Property {
991
+ _id?: string;
992
+ address?: PropertyAddress;
993
+ deedHistory?: DeedHistoryEntry[];
994
+ demographics?: Demographics;
995
+ foreclosure?: Foreclosure;
996
+ ids?: PropertyIds;
997
+ images?: PropertyImages;
998
+ intel?: Intel;
999
+ involuntaryLien?: Record<string, never>;
1000
+ listing?: Listing;
1001
+ mls?: Listing;
1002
+ mortgageHistory?: MortgageHistoryEntry[];
1003
+ openLien?: OpenLien;
1004
+ owner?: Owner;
1005
+ permit?: Record<string, never>;
1006
+ propertyOwnerProfile?: PropertyOwnerProfile;
1007
+ quickLists?: QuickLists;
1008
+ sale?: Sale;
1009
+ valuation?: Valuation;
1010
+ }
1011
+ /**
1012
+ * Response status information
1013
+ */
1014
+ export interface ResponseStatus {
1015
+ code: number;
1016
+ text: string;
1017
+ }
1018
+ /**
1019
+ * Performance metrics
1020
+ */
1021
+ export interface PerformanceMetrics {
1022
+ totalRequestTime?: number;
1023
+ startTime?: string;
1024
+ endTime?: string;
1025
+ }
1026
+ /**
1027
+ * Results metadata
1028
+ */
1029
+ export interface ResultsMetadata {
1030
+ /** Number of results returned. This is the number of properties that matched the search criteria and were returned in the response. */
1031
+ resultCount?: number;
1032
+ /** Number of results found. This is the total number of properties that matched the search criteria. */
1033
+ resultsFound?: number;
1034
+ }
1035
+ /**
1036
+ * Response metadata
1037
+ */
1038
+ export interface ResponseMetadata {
1039
+ apiVersion?: string;
1040
+ performance?: PerformanceMetrics;
1041
+ results?: ResultsMetadata;
1042
+ }
1043
+ /**
1044
+ * Property search results
1045
+ * Response model for multiple properties
1046
+ */
1047
+ export interface PropertySearchResults {
1048
+ /**
1049
+ * An array of objects containing summary information about the property
1050
+ */
1051
+ quicklistCounts?: QuickLists[];
1052
+ /**
1053
+ * An array of objects containing full property details
1054
+ */
1055
+ properties?: Property[];
1056
+ /**
1057
+ * Response model for geocoding polygon responses
1058
+ */
1059
+ areaPolygon?: GeoLocationPolygon;
1060
+ /**
1061
+ * An object containing property search criteria. Multiple search criteria are combined using an AND operation.
1062
+ */
1063
+ searchCriteria?: SearchCriteria;
1064
+ /**
1065
+ * An object containing the request options
1066
+ */
1067
+ options?: PropertyLookupOptions;
1068
+ /**
1069
+ * Metadata describing the entire batch
1070
+ */
1071
+ meta?: ResponseMetadata;
1072
+ }
1073
+ /**
1074
+ * Property search API response
1075
+ * Response structure from POST /api/v1/property/search
1076
+ *
1077
+ * @see https://developer.batchdata.com/docs/batchdata/batchdata-v1/operations/create-a-property-search
1078
+ */
1079
+ export interface PropertySearchResponse {
1080
+ status?: ResponseStatus;
1081
+ results?: PropertySearchResults;
1082
+ }
1083
+ /**
1084
+ * Address verification request item
1085
+ */
1086
+ export interface AddressVerifyRequestItem {
1087
+ street: string;
1088
+ city: string;
1089
+ state: string;
1090
+ zip?: string;
1091
+ requestId?: string | null;
1092
+ }
1093
+ /**
1094
+ * Address verification request options
1095
+ */
1096
+ export interface AddressVerifyOptions {
1097
+ showRequests?: boolean;
1098
+ }
1099
+ /**
1100
+ * Address verification request
1101
+ */
1102
+ export interface AddressVerifyRequest {
1103
+ requests: AddressVerifyRequestItem[];
1104
+ options?: AddressVerifyOptions;
1105
+ }
1106
+ /**
1107
+ * Verified address metadata
1108
+ */
1109
+ export interface VerifiedAddressMeta {
1110
+ error?: boolean;
1111
+ normalized?: boolean;
1112
+ hashed?: boolean;
1113
+ }
1114
+ /**
1115
+ * Verified address result
1116
+ */
1117
+ export interface VerifiedAddress {
1118
+ oldHashes?: string[];
1119
+ street?: string;
1120
+ city?: string;
1121
+ cityAlias?: string | null;
1122
+ state?: string;
1123
+ zip?: string;
1124
+ county?: string;
1125
+ hash?: string;
1126
+ latitude?: number;
1127
+ longitude?: number;
1128
+ geoLocation?: [number, number];
1129
+ requestId?: number | string;
1130
+ formattedStreet?: string;
1131
+ streetNoUnit?: string;
1132
+ meta?: VerifiedAddressMeta;
1133
+ houseNumber?: string;
1134
+ zipPlus4?: string;
1135
+ vacant?: string;
1136
+ countyFipsCode?: string;
1137
+ carrierRoute?: string;
1138
+ congressionalDistrict?: string;
1139
+ timeZone?: string;
1140
+ utcOffset?: number;
1141
+ daylightSavingsTime?: boolean;
1142
+ dpvMatchCode?: string;
1143
+ dpvFootnotes?: string;
1144
+ footnotes?: string;
1145
+ }
1146
+ /**
1147
+ * Address verification results metadata
1148
+ */
1149
+ export interface AddressVerifyResultsMeta {
1150
+ requestCount?: number;
1151
+ normalizedCount?: number;
1152
+ notNormalizedCount?: number;
1153
+ hashedCount?: number;
1154
+ notHashedCount?: number;
1155
+ errorCount?: number;
1156
+ }
1157
+ /**
1158
+ * Address verification response results
1159
+ */
1160
+ export interface AddressVerifyResults {
1161
+ addresses: VerifiedAddress[];
1162
+ meta?: {
1163
+ apiVersion?: string;
1164
+ results?: AddressVerifyResultsMeta;
1165
+ performance?: PerformanceMetrics;
1166
+ requestId?: string;
1167
+ };
1168
+ }
1169
+ /**
1170
+ * Address verification API response
1171
+ */
1172
+ export interface AddressVerifyResponse {
1173
+ status?: ResponseStatus;
1174
+ results?: AddressVerifyResults;
1175
+ }
1176
+ /**
1177
+ * Address autocomplete search criteria
1178
+ */
1179
+ export interface AddressAutocompleteSearchCriteria {
1180
+ query: string;
1181
+ location?: {
1182
+ mode?: string;
1183
+ };
1184
+ }
1185
+ /**
1186
+ * Address autocomplete options
1187
+ */
1188
+ export interface AddressAutocompleteOptions {
1189
+ skip?: number;
1190
+ take?: number;
1191
+ suggestionTypes?: string[];
1192
+ uspsVerifiedAddresses?: boolean;
1193
+ }
1194
+ /**
1195
+ * Address autocomplete request
1196
+ */
1197
+ export interface AddressAutocompleteRequest {
1198
+ searchCriteria: AddressAutocompleteSearchCriteria;
1199
+ options?: AddressAutocompleteOptions;
1200
+ }
1201
+ /**
1202
+ * Address autocomplete suggestion
1203
+ */
1204
+ export interface AddressAutocompleteSuggestion {
1205
+ text?: string;
1206
+ address?: string;
1207
+ city?: string;
1208
+ state?: string;
1209
+ zip?: string;
1210
+ country?: string;
1211
+ }
1212
+ /**
1213
+ * Address autocomplete API response
1214
+ */
1215
+ export interface AddressAutocompleteResponse {
1216
+ status?: ResponseStatus;
1217
+ result?: {
1218
+ suggestions?: AddressAutocompleteSuggestion[];
1219
+ options?: AddressAutocompleteOptions;
1220
+ meta?: {
1221
+ apiVersion?: string;
1222
+ performance?: PerformanceMetrics;
1223
+ results?: ResultsMetadata;
1224
+ requestId?: string;
1225
+ };
1226
+ };
1227
+ }
1228
+ /**
1229
+ * Address geocode request item
1230
+ */
1231
+ export interface AddressGeocodeRequestItem {
1232
+ address: string;
1233
+ requestId?: string;
1234
+ }
1235
+ /**
1236
+ * Address geocode options
1237
+ */
1238
+ export interface AddressGeocodeOptions {
1239
+ showRequests?: boolean;
1240
+ }
1241
+ /**
1242
+ * Address geocode request
1243
+ */
1244
+ export interface AddressGeocodeRequest {
1245
+ requests: AddressGeocodeRequestItem[];
1246
+ options?: AddressGeocodeOptions;
1247
+ }
1248
+ /**
1249
+ * Geocoded address result
1250
+ */
1251
+ export interface GeocodedAddress {
1252
+ latitude?: number;
1253
+ longitude?: number;
1254
+ geoLocation?: [number, number];
1255
+ formattedAddress?: string;
1256
+ street?: string;
1257
+ city?: string;
1258
+ state?: string;
1259
+ zip?: string;
1260
+ country?: string;
1261
+ accuracy?: string;
1262
+ }
1263
+ /**
1264
+ * Address geocode API response
1265
+ */
1266
+ export interface AddressGeocodeResponse {
1267
+ status?: ResponseStatus;
1268
+ result?: {
1269
+ addresses?: GeocodedAddress[];
1270
+ meta?: {
1271
+ apiVersion?: string;
1272
+ performance?: PerformanceMetrics;
1273
+ requestCount?: number;
1274
+ matchCount?: number;
1275
+ errorCount?: number;
1276
+ noMatchCount?: number;
1277
+ requestId?: string;
1278
+ };
1279
+ };
1280
+ }
1281
+ /**
1282
+ * Address reverse geocode request location
1283
+ */
1284
+ export interface AddressReverseGeocodeRequestLocation {
1285
+ latitude: number;
1286
+ longitude: number;
1287
+ }
1288
+ /**
1289
+ * Address reverse geocode options
1290
+ */
1291
+ export interface AddressReverseGeocodeOptions {
1292
+ showPropertyOnly?: boolean;
1293
+ showRequests?: boolean;
1294
+ }
1295
+ /**
1296
+ * Address reverse geocode request
1297
+ */
1298
+ export interface AddressReverseGeocodeRequest {
1299
+ request: AddressReverseGeocodeRequestLocation;
1300
+ options?: AddressReverseGeocodeOptions;
1301
+ }
1302
+ /**
1303
+ * Reverse geocoded address components
1304
+ */
1305
+ export interface ReverseGeocodedComponents {
1306
+ street?: string;
1307
+ city?: string;
1308
+ state?: string;
1309
+ country?: string;
1310
+ postal_code?: string;
1311
+ county?: string;
1312
+ }
1313
+ /**
1314
+ * Reverse geocoded address result
1315
+ */
1316
+ export interface ReverseGeocodedAddress {
1317
+ street?: string;
1318
+ city?: string;
1319
+ state?: string;
1320
+ zip?: string;
1321
+ streetNoUnit?: string;
1322
+ formattedStreet?: string;
1323
+ latitude?: number;
1324
+ longitude?: number;
1325
+ geoLocation?: [number, number];
1326
+ types?: string[];
1327
+ meta?: {
1328
+ error?: boolean;
1329
+ };
1330
+ geoStatus?: string | null;
1331
+ address?: string;
1332
+ components?: ReverseGeocodedComponents;
1333
+ }
1334
+ /**
1335
+ * Address reverse geocode API response
1336
+ */
1337
+ export interface AddressReverseGeocodeResponse {
1338
+ status?: ResponseStatus;
1339
+ result?: {
1340
+ addresses?: ReverseGeocodedAddress[];
1341
+ meta?: {
1342
+ apiVersion?: string;
1343
+ performance?: PerformanceMetrics;
1344
+ requestId?: string;
1345
+ };
1346
+ addressMeta?: {
1347
+ error?: boolean;
1348
+ };
1349
+ request?: AddressReverseGeocodeRequestLocation;
1350
+ };
1351
+ }
1352
+ /**
1353
+ * Property lookup request item address
1354
+ */
1355
+ export interface PropertyLookupRequestAddress {
1356
+ street?: string;
1357
+ city?: string;
1358
+ state?: string;
1359
+ zip?: string;
1360
+ county?: string;
1361
+ }
1362
+ /**
1363
+ * Property lookup request item
1364
+ */
1365
+ export interface PropertyLookupRequestItem {
1366
+ address?: PropertyLookupRequestAddress;
1367
+ propertyId?: string;
1368
+ hash?: string;
1369
+ apn?: string;
1370
+ countyFipsCode?: string;
1371
+ requestId?: string;
1372
+ }
1373
+ /**
1374
+ * Property lookup options (shared with property search)
1375
+ */
1376
+ export interface PropertyLookupOptions {
1377
+ skip?: number;
1378
+ take?: number;
1379
+ showRequests?: boolean;
1380
+ areaPolygon?: boolean;
1381
+ quicklistCounts?: boolean;
1382
+ useDistance?: boolean;
1383
+ useBoundingBox?: boolean;
1384
+ distanceMiles?: number;
1385
+ distanceYards?: number;
1386
+ distanceFeet?: number;
1387
+ distanceKilometers?: number;
1388
+ distanceMeters?: number;
1389
+ useBedrooms?: boolean;
1390
+ minBedrooms?: number;
1391
+ maxBedrooms?: number;
1392
+ boundingBoxNw?: GeoPoint;
1393
+ boundingBoxSe?: GeoPoint;
1394
+ useBathrooms?: boolean;
1395
+ minBathrooms?: number;
1396
+ maxBathrooms?: number;
1397
+ useStories?: boolean;
1398
+ minStories?: number;
1399
+ maxStories?: number;
1400
+ useArea?: boolean;
1401
+ minAreaPercent?: number;
1402
+ maxAreaPercent?: number;
1403
+ useYearBuilt?: boolean;
1404
+ minYearBuilt?: number;
1405
+ maxYearBuilt?: number;
1406
+ useLotSize?: boolean;
1407
+ minLotSizePercent?: number;
1408
+ maxLotSizePercent?: number;
1409
+ webhookUrl?: string;
1410
+ errorWebhookUrl?: string;
1411
+ skipTrace?: boolean;
1412
+ aggregateLoanTypes?: boolean;
1413
+ images?: boolean;
1414
+ dateFormat?: string;
1415
+ sort?: {
1416
+ field?: string;
1417
+ order?: "asc" | "desc" | "random";
1418
+ sessionId?: string;
1419
+ };
1420
+ useSubdivision?: boolean;
1421
+ }
1422
+ /**
1423
+ * Property search request (synchronous)
1424
+ */
1425
+ export interface PropertySearchRequest {
1426
+ searchCriteria: SearchCriteria;
1427
+ options?: PropertyLookupOptions;
1428
+ }
1429
+ /**
1430
+ * Property lookup request
1431
+ */
1432
+ export interface PropertyLookupRequest {
1433
+ requests: PropertyLookupRequestItem[];
1434
+ options?: PropertyLookupOptions;
1435
+ }
1436
+ /**
1437
+ * Property lookup API response (same structure as PropertySearchResponse)
1438
+ */
1439
+ export interface PropertyLookupResponse {
1440
+ status?: ResponseStatus;
1441
+ results?: {
1442
+ properties?: Property[];
1443
+ meta?: ResponseMetadata;
1444
+ };
1445
+ }
1446
+ /**
1447
+ * Property lookup async request
1448
+ */
1449
+ export interface PropertyLookupAsyncRequest {
1450
+ requests: PropertyLookupRequestItem[];
1451
+ options?: PropertyLookupOptions;
1452
+ }
1453
+ /**
1454
+ * Property lookup async API response
1455
+ * Async endpoints return only a status object. Full results are delivered to the webhook URL.
1456
+ */
1457
+ export interface PropertyLookupAsyncResponse {
1458
+ status?: ResponseStatus;
1459
+ }
1460
+ /**
1461
+ * Property lookup async webhook payload
1462
+ * The webhook payload for PropertyLookupAsync matches the synchronous PropertyLookupResponse format.
1463
+ */
1464
+ export type PropertyLookupAsyncWebhookPayload = PropertyLookupResponse;
1465
+ /**
1466
+ * Property search async request
1467
+ */
1468
+ export interface PropertySearchAsyncRequest {
1469
+ searchCriteria: SearchCriteria;
1470
+ options?: PropertyLookupOptions;
1471
+ }
1472
+ /**
1473
+ * Property search async API response
1474
+ * Async endpoints return only a status object. Full results are delivered to the webhook URL.
1475
+ */
1476
+ export interface PropertySearchAsyncResponse {
1477
+ status?: ResponseStatus;
1478
+ }
1479
+ /**
1480
+ * Property search async webhook payload
1481
+ * The webhook payload for PropertySearchAsync matches the synchronous PropertySearchResponse format.
1482
+ */
1483
+ export type PropertySearchAsyncWebhookPayload = PropertySearchResponse;
1484
+ /**
1485
+ * Property skip trace request item
1486
+ */
1487
+ export interface PropertySkipTraceRequestItem {
1488
+ propertyAddress?: PropertyLookupRequestAddress;
1489
+ mailingAddress?: PropertyLookupRequestAddress;
1490
+ name?: {
1491
+ first?: string;
1492
+ last?: string;
1493
+ };
1494
+ apn?: string;
1495
+ countyFipsCode?: string;
1496
+ county?: string;
1497
+ state?: string;
1498
+ requestId?: string;
1499
+ }
1500
+ /**
1501
+ * Property skip trace request
1502
+ */
1503
+ export interface PropertySkipTraceRequest {
1504
+ requests: PropertySkipTraceRequestItem[];
1505
+ options?: {
1506
+ skip?: number;
1507
+ take?: number;
1508
+ showRequests?: boolean;
1509
+ webhookUrl?: string;
1510
+ errorWebhookUrl?: string;
1511
+ };
1512
+ }
1513
+ /**
1514
+ * Property skip trace API response
1515
+ */
1516
+ export interface PropertySkipTraceResponse {
1517
+ status?: ResponseStatus;
1518
+ results?: {
1519
+ properties?: Property[];
1520
+ meta?: ResponseMetadata;
1521
+ };
1522
+ }
1523
+ /**
1524
+ * Property skip trace async request
1525
+ */
1526
+ export interface PropertySkipTraceAsyncRequest {
1527
+ requests: PropertySkipTraceRequestItem[];
1528
+ options?: {
1529
+ skip?: number;
1530
+ take?: number;
1531
+ showRequests?: boolean;
1532
+ webhookUrl?: string;
1533
+ errorWebhookUrl?: string;
1534
+ };
1535
+ }
1536
+ /**
1537
+ * Property skip trace async API response
1538
+ * Async endpoints return only a status object. Full results are delivered to the webhook URL.
1539
+ */
1540
+ export interface PropertySkipTraceAsyncResponse {
1541
+ status?: ResponseStatus;
1542
+ }
1543
+ /**
1544
+ * Property skip trace async webhook payload
1545
+ * The webhook payload for PropertySkipTraceAsync matches the synchronous PropertySkipTraceResponse format.
1546
+ */
1547
+ export type PropertySkipTraceAsyncWebhookPayload = PropertySkipTraceResponse;
1548
+ /**
1549
+ * Phone verification request
1550
+ * The requests array is a list of phone numbers (strings) for which you want verification information.
1551
+ */
1552
+ export interface PhoneVerificationRequest {
1553
+ requests: string[];
1554
+ options?: {
1555
+ showRequests?: boolean;
1556
+ };
1557
+ }
1558
+ /**
1559
+ * Phone verification result
1560
+ */
1561
+ export interface PhoneVerificationResult {
1562
+ phone?: string;
1563
+ isValid?: boolean;
1564
+ phoneType?: string;
1565
+ carrier?: string;
1566
+ lineType?: string;
1567
+ countryCode?: string;
1568
+ areaCode?: string;
1569
+ requestId?: string | number;
1570
+ }
1571
+ /**
1572
+ * Phone verification API response
1573
+ */
1574
+ export interface PhoneVerificationResponse {
1575
+ status?: ResponseStatus;
1576
+ results?: {
1577
+ phoneNumbers?: PhoneVerificationResult[];
1578
+ meta?: {
1579
+ apiVersion?: string;
1580
+ performance?: PerformanceMetrics;
1581
+ requestCount?: number;
1582
+ matchCount?: number;
1583
+ errorCount?: number;
1584
+ requestId?: string;
1585
+ };
1586
+ };
1587
+ }
1588
+ /**
1589
+ * Phone verification async request
1590
+ * The requests array is a list of phone numbers (strings) for which you want verification information.
1591
+ */
1592
+ export interface PhoneVerificationAsyncRequest {
1593
+ requests: string[];
1594
+ options?: {
1595
+ showRequests?: boolean;
1596
+ webhookUrl?: string;
1597
+ errorWebhookUrl?: string;
1598
+ };
1599
+ }
1600
+ /**
1601
+ * Phone verification async API response
1602
+ * Async endpoints return only a status object. Full results are delivered to the webhook URL.
1603
+ */
1604
+ export interface PhoneVerificationAsyncResponse {
1605
+ status?: ResponseStatus;
1606
+ }
1607
+ /**
1608
+ * Phone verification async webhook payload
1609
+ * The webhook payload for PhoneVerificationAsync matches the synchronous PhoneVerificationResponse format.
1610
+ */
1611
+ export type PhoneVerificationAsyncWebhookPayload = PhoneVerificationResponse;
1612
+ /**
1613
+ * Phone DNC (Do Not Call) request
1614
+ * The requests array is a list of phone numbers (strings) for which you want DNC information.
1615
+ */
1616
+ export interface PhoneDNCRequest {
1617
+ requests: string[];
1618
+ options?: {
1619
+ showRequests?: boolean;
1620
+ };
1621
+ }
1622
+ /**
1623
+ * Phone DNC result
1624
+ */
1625
+ export interface PhoneDNCResult {
1626
+ number?: string;
1627
+ dnc?: boolean;
1628
+ meta?: {
1629
+ error?: boolean;
1630
+ matched?: boolean;
1631
+ };
1632
+ }
1633
+ /**
1634
+ * Phone DNC API response
1635
+ */
1636
+ export interface PhoneDNCResponse {
1637
+ status?: ResponseStatus;
1638
+ results?: {
1639
+ phoneNumbers?: PhoneDNCResult[];
1640
+ meta?: {
1641
+ apiVersion?: string;
1642
+ performance?: PerformanceMetrics;
1643
+ requestCount?: number;
1644
+ matchCount?: number;
1645
+ errorCount?: number;
1646
+ requestId?: string;
1647
+ };
1648
+ };
1649
+ }
1650
+ /**
1651
+ * Phone DNC async request
1652
+ * The requests array is a list of phone numbers (strings) for which you want DNC information.
1653
+ */
1654
+ export interface PhoneDNCAsyncRequest {
1655
+ requests: string[];
1656
+ options?: {
1657
+ showRequests?: boolean;
1658
+ webhookUrl?: string;
1659
+ errorWebhookUrl?: string;
1660
+ };
1661
+ }
1662
+ /**
1663
+ * Phone DNC async API response
1664
+ * Async endpoints return only a status object. Full results are delivered to the webhook URL.
1665
+ */
1666
+ export interface PhoneDNCAsyncResponse {
1667
+ status?: ResponseStatus;
1668
+ }
1669
+ /**
1670
+ * Phone DNC async webhook payload
1671
+ * The webhook payload for PhoneDNCAsync matches the synchronous PhoneDNCResponse format.
1672
+ */
1673
+ export type PhoneDNCAsyncWebhookPayload = PhoneDNCResponse;
1674
+ /**
1675
+ * Phone TCPA (Telephone Consumer Protection Act) request
1676
+ * The requests array is a list of phone numbers (strings) for which you want TCPA information.
1677
+ */
1678
+ export interface PhoneTCPARequest {
1679
+ requests: string[];
1680
+ options?: {
1681
+ showRequests?: boolean;
1682
+ };
1683
+ }
1684
+ /**
1685
+ * Phone TCPA result
1686
+ */
1687
+ export interface PhoneTCPAResult {
1688
+ number?: string;
1689
+ tcpa?: boolean;
1690
+ meta?: {
1691
+ error?: boolean;
1692
+ matched?: boolean;
1693
+ };
1694
+ }
1695
+ /**
1696
+ * Phone TCPA API response
1697
+ */
1698
+ export interface PhoneTCPAResponse {
1699
+ status?: ResponseStatus;
1700
+ results?: {
1701
+ phoneNumbers?: PhoneTCPAResult[];
1702
+ meta?: {
1703
+ apiVersion?: string;
1704
+ performance?: PerformanceMetrics;
1705
+ requestCount?: number;
1706
+ matchCount?: number;
1707
+ errorCount?: number;
1708
+ requestId?: string;
1709
+ };
1710
+ };
1711
+ }
1712
+ /**
1713
+ * Phone TCPA async request
1714
+ * The requests array is a list of phone numbers (strings) for which you want TCPA information.
1715
+ */
1716
+ export interface PhoneTCPAAsyncRequest {
1717
+ requests: string[];
1718
+ options?: {
1719
+ showRequests?: boolean;
1720
+ webhookUrl?: string;
1721
+ errorWebhookUrl?: string;
1722
+ };
1723
+ }
1724
+ /**
1725
+ * Phone TCPA async API response
1726
+ */
1727
+ /**
1728
+ * Phone TCPA async API response
1729
+ * Async endpoints return only a status object. Full results are delivered to the webhook URL.
1730
+ */
1731
+ export interface PhoneTCPAAsyncResponse {
1732
+ status?: ResponseStatus;
1733
+ }
1734
+ /**
1735
+ * Phone TCPA async webhook payload
1736
+ * The webhook payload for PhoneTCPAAsync matches the synchronous PhoneTCPAResponse format.
1737
+ */
1738
+ export type PhoneTCPAAsyncWebhookPayload = PhoneTCPAResponse;