@model-match/api 3.18.0 → 3.19.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,875 +1,6 @@
1
- import { n as createClient, w as client } from "../src-cKUuYWMX.mjs";
1
+ import { n as createClient, w as client } from "../src-CjmGJZ9U.mjs";
2
2
  //#region src/slim/sdk.gen.ts
3
3
  /**
4
- * Search agents with filters
5
- * Search and list individual real-estate agents with filters — one row per agent. Filter by name, location (state, city, zip), brokerage/office, and production metrics (sales volume, transaction units, price range), with sorting and cursor pagination. LOCATION SEMANTICS: the state/city/zip filters match ANY of an agent's location signals — their listed city/state, their office address(es), AND the markets where they actually closed transactions (production) — combined with OR. So an agent matches a searched location if their office OR their production is there. A search for city "Long Beach" can therefore return agents whose office or displayed primary market is in a different city/state, because they transacted in Long Beach. The `state`/`city` returned on each row reflect the agent's primary market and may differ from the searched location. (Use the `office` filter to match by brokerage/office name, and the per-agent city/county/state breakdown endpoints to rank an agent's volume within a specific market.) RANKING BY DEAL SIDE: combine a location filter with `sort` on `buyerVolume`/`buyerUnits` (or `sellerVolume`/`sellerUnits`, `dualVolume`/`dualUnits`) to rank agents by how active they are representing buyers vs. sellers in that market — e.g. sort `buyerVolume` descending for the most active buyer-side agents in a state or city. This is the per-agent record search: use it to find specific real-estate agents or build a filtered agent list. (For a single agent by ID use the agent detail endpoint.) If you only need how many agents match and not the records themselves, send the same request body to `countAgents`.
6
- */
7
- const listAgents = (options) => {
8
- return (options?.client ?? client).post({
9
- security: [{
10
- name: "x-api-key",
11
- type: "apiKey"
12
- }, {
13
- scheme: "bearer",
14
- type: "http"
15
- }],
16
- url: "/agents",
17
- ...options,
18
- headers: {
19
- "Content-Type": "application/json",
20
- ...options?.headers
21
- }
22
- });
23
- };
24
- /**
25
- * Configurable chart (measure × slice) over the agent's sales
26
- */
27
- const agentAnalyticsChart = (options) => {
28
- return (options?.client ?? client).post({
29
- security: [{
30
- name: "x-api-key",
31
- type: "apiKey"
32
- }, {
33
- scheme: "bearer",
34
- type: "http"
35
- }],
36
- url: "/agents/analytics/chart",
37
- ...options,
38
- headers: {
39
- "Content-Type": "application/json",
40
- ...options?.headers
41
- }
42
- });
43
- };
44
- /**
45
- * Production summary with buyer/seller/dual split + previous period
46
- */
47
- const agentAnalyticsSummary = (options) => {
48
- return (options?.client ?? client).post({
49
- security: [{
50
- name: "x-api-key",
51
- type: "apiKey"
52
- }, {
53
- scheme: "bearer",
54
- type: "http"
55
- }],
56
- url: "/agents/analytics/summary",
57
- ...options,
58
- headers: {
59
- "Content-Type": "application/json",
60
- ...options?.headers
61
- }
62
- });
63
- };
64
- /**
65
- * Agent volume/units over time with buyer/seller/dual split
66
- */
67
- const agentAnalyticsTimeSeries = (options) => {
68
- return (options?.client ?? client).post({
69
- security: [{
70
- name: "x-api-key",
71
- type: "apiKey"
72
- }, {
73
- scheme: "bearer",
74
- type: "http"
75
- }],
76
- url: "/agents/analytics/time-series",
77
- ...options,
78
- headers: {
79
- "Content-Type": "application/json",
80
- ...options?.headers
81
- }
82
- });
83
- };
84
- /**
85
- * Submit a bulk-delivery job for agents
86
- * Queues an ECS task that dumps every matching agents document to S3 in the requested format. Returns 202 with a jobId; poll `GET /v1/agents/bulk-delivery/{jobId}` for status + the signed download URL.
87
- *
88
- * **Row limit.** Deliveries of up to 5,000 rows need no entitlement. Above that, the org's `bulk-delivery.agents` entitlement is required and its scope (row ceiling, row filters, allowed fields) governs the delivery; without it the request is rejected with 403 `entitlement_missing`. Pass `limit` at or below the ceiling to deliver a capped subset of a broader query. Email support@modelmatch.com to request a limit increase.
89
- *
90
- * Delivery is billed at 1 credit per row regardless of entitlement.
91
- *
92
- * **Push-target destination.** Pass `destination: { type: "push-target", targetId }` to have the finished rows sent to a configured push target instead of downloaded. The target is checked before anything is queued; a refusal returns the push target's status and `code` (`TARGET_NOT_FOUND` 404, `FORBIDDEN` 403, `PLAN_REQUIRED` 402, `TARGET_DISABLED` 409, `ENTITY_MISMATCH` 400). Limits and billing are the same as a file delivery, except that push-target deliveries from the ModelMatch web app are not billed.
93
- */
94
- const submitAgentsBulkDelivery = (options) => {
95
- return (options?.client ?? client).post({
96
- security: [{
97
- name: "x-api-key",
98
- type: "apiKey"
99
- }, {
100
- scheme: "bearer",
101
- type: "http"
102
- }],
103
- url: "/agents/bulk-delivery",
104
- ...options,
105
- headers: {
106
- "Content-Type": "application/json",
107
- ...options?.headers
108
- }
109
- });
110
- };
111
- /**
112
- * Cancel a bulk-delivery job for agents
113
- * Cancels a queued or running agents delivery job.
114
- *
115
- * The job is marked `cancelled` immediately; the container running it notices on its next page boundary and stops. Because a delivery is billed once, at the end, **a cancelled job is never charged** — no credits are debited and there is nothing to refund. No partial file is written.
116
- *
117
- * Idempotent-ish: cancelling a job that has already finished (or was already cancelled) returns 409 and changes nothing. Poll `GET /v1/agents/bulk-delivery/{jobId}` for the settled state.
118
- */
119
- const cancelAgentsBulkDeliveryJob = (options) => {
120
- return (options.client ?? client).delete({
121
- security: [{
122
- name: "x-api-key",
123
- type: "apiKey"
124
- }, {
125
- scheme: "bearer",
126
- type: "http"
127
- }],
128
- url: "/agents/bulk-delivery/{jobId}",
129
- ...options
130
- });
131
- };
132
- /**
133
- * Get bulk-delivery job status for agents
134
- */
135
- const getAgentsBulkDeliveryJob = (options) => {
136
- return (options.client ?? client).get({
137
- security: [{
138
- name: "x-api-key",
139
- type: "apiKey"
140
- }, {
141
- scheme: "bearer",
142
- type: "http"
143
- }],
144
- url: "/agents/bulk-delivery/{jobId}",
145
- ...options
146
- });
147
- };
148
- /**
149
- * Count agents matching filters
150
- * Return the exact number of agents matching the given filters. Accepts the same request body as `listAgents` (pagination and sort are ignored). Use this when you only need a total; to get the matching agents themselves, send the same request body to `listAgents`.
151
- */
152
- const countAgents = (options) => {
153
- return (options?.client ?? client).post({
154
- security: [{
155
- name: "x-api-key",
156
- type: "apiKey"
157
- }, {
158
- scheme: "bearer",
159
- type: "http"
160
- }],
161
- url: "/agents/count",
162
- ...options,
163
- headers: {
164
- "Content-Type": "application/json",
165
- ...options?.headers
166
- }
167
- });
168
- };
169
- /**
170
- * Get agent by ID
171
- */
172
- const getAgent = (options) => {
173
- return (options.client ?? client).get({
174
- security: [{
175
- name: "x-api-key",
176
- type: "apiKey"
177
- }, {
178
- scheme: "bearer",
179
- type: "http"
180
- }],
181
- url: "/agents/{id}",
182
- ...options
183
- });
184
- };
185
- /**
186
- * City volume breakdown across the agent's sales
187
- */
188
- const agentCities = (options) => {
189
- return (options.client ?? client).post({
190
- security: [{
191
- name: "x-api-key",
192
- type: "apiKey"
193
- }, {
194
- scheme: "bearer",
195
- type: "http"
196
- }],
197
- url: "/agents/{id}/breakdowns/cities",
198
- ...options,
199
- headers: {
200
- "Content-Type": "application/json",
201
- ...options?.headers
202
- }
203
- });
204
- };
205
- /**
206
- * Mortgage companies the agent dealt with (pre-aggregated)
207
- */
208
- const agentCompanies = (options) => {
209
- return (options.client ?? client).post({
210
- security: [{
211
- name: "x-api-key",
212
- type: "apiKey"
213
- }, {
214
- scheme: "bearer",
215
- type: "http"
216
- }],
217
- url: "/agents/{id}/breakdowns/companies",
218
- ...options,
219
- headers: {
220
- "Content-Type": "application/json",
221
- ...options?.headers
222
- }
223
- });
224
- };
225
- /**
226
- * County (FIPS) volume breakdown
227
- */
228
- const agentCounties = (options) => {
229
- return (options.client ?? client).post({
230
- security: [{
231
- name: "x-api-key",
232
- type: "apiKey"
233
- }, {
234
- scheme: "bearer",
235
- type: "http"
236
- }],
237
- url: "/agents/{id}/breakdowns/counties",
238
- ...options,
239
- headers: {
240
- "Content-Type": "application/json",
241
- ...options?.headers
242
- }
243
- });
244
- };
245
- /**
246
- * Raw-name lenders encountered (pre-aggregated)
247
- */
248
- const agentLenders = (options) => {
249
- return (options.client ?? client).post({
250
- security: [{
251
- name: "x-api-key",
252
- type: "apiKey"
253
- }, {
254
- scheme: "bearer",
255
- type: "http"
256
- }],
257
- url: "/agents/{id}/breakdowns/lenders",
258
- ...options,
259
- headers: {
260
- "Content-Type": "application/json",
261
- ...options?.headers
262
- }
263
- });
264
- };
265
- /**
266
- * Listing offices the agent has closed through
267
- */
268
- const agentOffices = (options) => {
269
- return (options.client ?? client).post({
270
- security: [{
271
- name: "x-api-key",
272
- type: "apiKey"
273
- }, {
274
- scheme: "bearer",
275
- type: "http"
276
- }],
277
- url: "/agents/{id}/breakdowns/offices",
278
- ...options,
279
- headers: {
280
- "Content-Type": "application/json",
281
- ...options?.headers
282
- }
283
- });
284
- };
285
- /**
286
- * Loan officers the agent worked with (pre-aggregated)
287
- */
288
- const agentOriginators = (options) => {
289
- return (options.client ?? client).post({
290
- security: [{
291
- name: "x-api-key",
292
- type: "apiKey"
293
- }, {
294
- scheme: "bearer",
295
- type: "http"
296
- }],
297
- url: "/agents/{id}/breakdowns/originators",
298
- ...options,
299
- headers: {
300
- "Content-Type": "application/json",
301
- ...options?.headers
302
- }
303
- });
304
- };
305
- /**
306
- * State volume breakdown
307
- */
308
- const agentStates = (options) => {
309
- return (options.client ?? client).post({
310
- security: [{
311
- name: "x-api-key",
312
- type: "apiKey"
313
- }, {
314
- scheme: "bearer",
315
- type: "http"
316
- }],
317
- url: "/agents/{id}/breakdowns/states",
318
- ...options,
319
- headers: {
320
- "Content-Type": "application/json",
321
- ...options?.headers
322
- }
323
- });
324
- };
325
- /**
326
- * Zip-code volume breakdown
327
- */
328
- const agentZipCodes = (options) => {
329
- return (options.client ?? client).post({
330
- security: [{
331
- name: "x-api-key",
332
- type: "apiKey"
333
- }, {
334
- scheme: "bearer",
335
- type: "http"
336
- }],
337
- url: "/agents/{id}/breakdowns/zip-codes",
338
- ...options,
339
- headers: {
340
- "Content-Type": "application/json",
341
- ...options?.headers
342
- }
343
- });
344
- };
345
- /**
346
- * The ZIP markets this agent works, blended
347
- * Rank the ZIP markets one real-estate agent works, with volume, transaction counts and mean sale price per market, plus a weighted summary across the whole footprint. Optionally narrow to a ZIP list or a date window. REACH, NOT MARKET SHARE: an agent belongs to every market they touch — where their office is AND everywhere they have transacted — so one agent is counted in several markets at once. Per-market agent counts therefore over-sum: they cannot be added together, and dividing one into a total does not produce a market share. The only percentage returned, `shareOfScope`, is each market's share of this agent's volume across the scope requested and sums to 100 over that scope; there is no share-of-whole-book figure, because the transaction records carry no per-agent total to divide by. TWO COUNTS, ON PURPOSE: `transactions` counts transaction records; `units` counts the ones carrying a price, which are the records behind `volume` and `avgSalePrice`. Roughly half of an agent's records are priced, so dividing volume by `transactions` understates the average by about 2×. Figures are computed live from the agent's transaction records — an agent record carries no stored market rollup — and are ranked across their busiest ZIP markets. When a ZIP scope returns no markets, `reach.presentInScope` distinguishes 'works there, nothing closed in the window' from 'not present at all'. The summary also carries a Community Lending mix: what kind of neighborhood these markets are, weighted by the agent's activity in each. These are U.S. Census tract-level aggregates describing whole neighborhoods — never an individual, household or client attribute — and on this surface the basis is always the markets in scope, since an agent record carries no stored neighborhood rollup.
348
- */
349
- const agentMarkets = (options) => {
350
- return (options.client ?? client).post({
351
- security: [{
352
- name: "x-api-key",
353
- type: "apiKey"
354
- }, {
355
- scheme: "bearer",
356
- type: "http"
357
- }],
358
- url: "/agents/{id}/markets",
359
- ...options,
360
- headers: {
361
- "Content-Type": "application/json",
362
- ...options?.headers
363
- }
364
- });
365
- };
366
- /**
367
- * Properties this agent has transacted on
368
- */
369
- const agentProperties = (options) => {
370
- return (options.client ?? client).post({
371
- security: [{
372
- name: "x-api-key",
373
- type: "apiKey"
374
- }, {
375
- scheme: "bearer",
376
- type: "http"
377
- }],
378
- url: "/agents/{id}/properties",
379
- ...options,
380
- headers: {
381
- "Content-Type": "application/json",
382
- ...options?.headers
383
- }
384
- });
385
- };
386
- /**
387
- * Sales transactions where this agent was listing or selling side
388
- */
389
- const agentSales = (options) => {
390
- return (options.client ?? client).post({
391
- security: [{
392
- name: "x-api-key",
393
- type: "apiKey"
394
- }, {
395
- scheme: "bearer",
396
- type: "http"
397
- }],
398
- url: "/agents/{id}/sales",
399
- ...options,
400
- headers: {
401
- "Content-Type": "application/json",
402
- ...options?.headers
403
- }
404
- });
405
- };
406
- /**
407
- * Search originators with filters
408
- * Search and list individual loan originators (LOs — NMLS-registered mortgage loan officers) with filters — one row per originator. Filter by name, NMLS ID, location (state, city), employer/company, and production metrics (loan volume, units, product mix), with sorting and cursor pagination. LOCATION SEMANTICS: the state/city filters match an originator's PRODUCTION GEOGRAPHY — the markets where they actually originated loans in the selected period — not where their office or employer sits. An LO who lends across several markets matches a filter for ANY of those markets, while the `state`/`city` returned on each row reflect only their PRIMARY (highest-volume) market. So a search for city "Long Beach" can return an LO whose displayed location is a different city/state (e.g. their top market is in Arizona) — they still originated loans in Long Beach, it just isn't their #1 market. To rank originators by their volume within a specific market, sort by volume after filtering, or use the per-originator city/county/state breakdown endpoints. This is the per-originator record search: use it to find specific loan officers or build a filtered LO list. (For a single originator by NMLS ID use the originator detail endpoint.) If you only need how many originators match and not the records themselves, send the same request body to `countOriginators`.
409
- */
410
- const listOriginators = (options) => {
411
- return (options?.client ?? client).post({
412
- security: [{
413
- name: "x-api-key",
414
- type: "apiKey"
415
- }, {
416
- scheme: "bearer",
417
- type: "http"
418
- }],
419
- url: "/originators",
420
- ...options,
421
- headers: {
422
- "Content-Type": "application/json",
423
- ...options?.headers
424
- }
425
- });
426
- };
427
- /**
428
- * Configurable chart (measure × slice) over one LO's loans
429
- */
430
- const originatorAnalyticsChart = (options) => {
431
- return (options?.client ?? client).post({
432
- security: [{
433
- name: "x-api-key",
434
- type: "apiKey"
435
- }, {
436
- scheme: "bearer",
437
- type: "http"
438
- }],
439
- url: "/originators/analytics/chart",
440
- ...options,
441
- headers: {
442
- "Content-Type": "application/json",
443
- ...options?.headers
444
- }
445
- });
446
- };
447
- /**
448
- * Production summary with previous-period comparison
449
- */
450
- const originatorAnalyticsSummary = (options) => {
451
- return (options?.client ?? client).post({
452
- security: [{
453
- name: "x-api-key",
454
- type: "apiKey"
455
- }, {
456
- scheme: "bearer",
457
- type: "http"
458
- }],
459
- url: "/originators/analytics/summary",
460
- ...options,
461
- headers: {
462
- "Content-Type": "application/json",
463
- ...options?.headers
464
- }
465
- });
466
- };
467
- /**
468
- * Originator volume / units over time
469
- */
470
- const originatorAnalyticsTimeSeries = (options) => {
471
- return (options?.client ?? client).post({
472
- security: [{
473
- name: "x-api-key",
474
- type: "apiKey"
475
- }, {
476
- scheme: "bearer",
477
- type: "http"
478
- }],
479
- url: "/originators/analytics/time-series",
480
- ...options,
481
- headers: {
482
- "Content-Type": "application/json",
483
- ...options?.headers
484
- }
485
- });
486
- };
487
- /**
488
- * Submit a bulk-delivery job for originators
489
- * Queues an ECS task that dumps every matching originators document to S3 in the requested format. Returns 202 with a jobId; poll `GET /v1/originators/bulk-delivery/{jobId}` for status + the signed download URL.
490
- *
491
- * **Row limit.** Deliveries of up to 5,000 rows need no entitlement. Above that, the org's `bulk-delivery.originators` entitlement is required and its scope (row ceiling, row filters, allowed fields) governs the delivery; without it the request is rejected with 403 `entitlement_missing`. Pass `limit` at or below the ceiling to deliver a capped subset of a broader query. Email support@modelmatch.com to request a limit increase.
492
- *
493
- * Delivery is billed at 1 credit per row regardless of entitlement.
494
- *
495
- * **Push-target destination.** Pass `destination: { type: "push-target", targetId }` to have the finished rows sent to a configured push target instead of downloaded. The target is checked before anything is queued; a refusal returns the push target's status and `code` (`TARGET_NOT_FOUND` 404, `FORBIDDEN` 403, `PLAN_REQUIRED` 402, `TARGET_DISABLED` 409, `ENTITY_MISMATCH` 400). Limits and billing are the same as a file delivery, except that push-target deliveries from the ModelMatch web app are not billed.
496
- */
497
- const submitOriginatorsBulkDelivery = (options) => {
498
- return (options?.client ?? client).post({
499
- security: [{
500
- name: "x-api-key",
501
- type: "apiKey"
502
- }, {
503
- scheme: "bearer",
504
- type: "http"
505
- }],
506
- url: "/originators/bulk-delivery",
507
- ...options,
508
- headers: {
509
- "Content-Type": "application/json",
510
- ...options?.headers
511
- }
512
- });
513
- };
514
- /**
515
- * Cancel a bulk-delivery job for originators
516
- * Cancels a queued or running originators delivery job.
517
- *
518
- * The job is marked `cancelled` immediately; the container running it notices on its next page boundary and stops. Because a delivery is billed once, at the end, **a cancelled job is never charged** — no credits are debited and there is nothing to refund. No partial file is written.
519
- *
520
- * Idempotent-ish: cancelling a job that has already finished (or was already cancelled) returns 409 and changes nothing. Poll `GET /v1/originators/bulk-delivery/{jobId}` for the settled state.
521
- */
522
- const cancelOriginatorsBulkDeliveryJob = (options) => {
523
- return (options.client ?? client).delete({
524
- security: [{
525
- name: "x-api-key",
526
- type: "apiKey"
527
- }, {
528
- scheme: "bearer",
529
- type: "http"
530
- }],
531
- url: "/originators/bulk-delivery/{jobId}",
532
- ...options
533
- });
534
- };
535
- /**
536
- * Get bulk-delivery job status for originators
537
- */
538
- const getOriginatorsBulkDeliveryJob = (options) => {
539
- return (options.client ?? client).get({
540
- security: [{
541
- name: "x-api-key",
542
- type: "apiKey"
543
- }, {
544
- scheme: "bearer",
545
- type: "http"
546
- }],
547
- url: "/originators/bulk-delivery/{jobId}",
548
- ...options
549
- });
550
- };
551
- /**
552
- * Count originators matching filters
553
- * Return the exact number of originators matching the given filters. Accepts the same request body as `listOriginators` (pagination and sort are ignored). Use this when you only need a total; to get the matching originators themselves, send the same request body to `listOriginators`.
554
- */
555
- const countOriginators = (options) => {
556
- return (options?.client ?? client).post({
557
- security: [{
558
- name: "x-api-key",
559
- type: "apiKey"
560
- }, {
561
- scheme: "bearer",
562
- type: "http"
563
- }],
564
- url: "/originators/count",
565
- ...options,
566
- headers: {
567
- "Content-Type": "application/json",
568
- ...options?.headers
569
- }
570
- });
571
- };
572
- /**
573
- * Get originator by NMLS ID
574
- */
575
- const getOriginator = (options) => {
576
- return (options.client ?? client).get({
577
- security: [{
578
- name: "x-api-key",
579
- type: "apiKey"
580
- }, {
581
- scheme: "bearer",
582
- type: "http"
583
- }],
584
- url: "/originators/{nmlsId}",
585
- ...options
586
- });
587
- };
588
- /**
589
- * Real-estate agents this LO co-closed with
590
- * Ranks the real-estate agents on the selling side of this LO's loans, by volume. Buckets whose name is an MLS placeholder for "no selling agent recorded" (`non member`, `non listed agent`, and ~140 board-specific spellings) are excluded rather than ranked as agents — they are not people and cannot be resolved with `GET /v1/agents/{id}`. Percentages are shares of the LO's whole loan population, so they do not sum to 100 across the page.
591
- */
592
- const originatorAgents = (options) => {
593
- return (options.client ?? client).post({
594
- security: [{
595
- name: "x-api-key",
596
- type: "apiKey"
597
- }, {
598
- scheme: "bearer",
599
- type: "http"
600
- }],
601
- url: "/originators/{nmlsId}/breakdowns/agents",
602
- ...options,
603
- headers: {
604
- "Content-Type": "application/json",
605
- ...options?.headers
606
- }
607
- });
608
- };
609
- /**
610
- * Branch (broker) history for this LO
611
- */
612
- const originatorBranches = (options) => {
613
- return (options.client ?? client).post({
614
- security: [{
615
- name: "x-api-key",
616
- type: "apiKey"
617
- }, {
618
- scheme: "bearer",
619
- type: "http"
620
- }],
621
- url: "/originators/{nmlsId}/breakdowns/branches",
622
- ...options,
623
- headers: {
624
- "Content-Type": "application/json",
625
- ...options?.headers
626
- }
627
- });
628
- };
629
- /**
630
- * Broker shops this LO originated loans through (name-resolved)
631
- */
632
- const originatorBrokers = (options) => {
633
- return (options.client ?? client).post({
634
- security: [{
635
- name: "x-api-key",
636
- type: "apiKey"
637
- }, {
638
- scheme: "bearer",
639
- type: "http"
640
- }],
641
- url: "/originators/{nmlsId}/breakdowns/brokers",
642
- ...options,
643
- headers: {
644
- "Content-Type": "application/json",
645
- ...options?.headers
646
- }
647
- });
648
- };
649
- /**
650
- * City volume breakdown across this LO's loans
651
- */
652
- const originatorCitiesBreakdown = (options) => {
653
- return (options.client ?? client).post({
654
- security: [{
655
- name: "x-api-key",
656
- type: "apiKey"
657
- }, {
658
- scheme: "bearer",
659
- type: "http"
660
- }],
661
- url: "/originators/{nmlsId}/breakdowns/cities",
662
- ...options,
663
- headers: {
664
- "Content-Type": "application/json",
665
- ...options?.headers
666
- }
667
- });
668
- };
669
- /**
670
- * Funding companies (employer history) for this LO
671
- */
672
- const originatorCompanies = (options) => {
673
- return (options.client ?? client).post({
674
- security: [{
675
- name: "x-api-key",
676
- type: "apiKey"
677
- }, {
678
- scheme: "bearer",
679
- type: "http"
680
- }],
681
- url: "/originators/{nmlsId}/breakdowns/companies",
682
- ...options,
683
- headers: {
684
- "Content-Type": "application/json",
685
- ...options?.headers
686
- }
687
- });
688
- };
689
- /**
690
- * County (FIPS) volume breakdown across this LO's loans
691
- */
692
- const originatorCountiesBreakdown = (options) => {
693
- return (options.client ?? client).post({
694
- security: [{
695
- name: "x-api-key",
696
- type: "apiKey"
697
- }, {
698
- scheme: "bearer",
699
- type: "http"
700
- }],
701
- url: "/originators/{nmlsId}/breakdowns/counties",
702
- ...options,
703
- headers: {
704
- "Content-Type": "application/json",
705
- ...options?.headers
706
- }
707
- });
708
- };
709
- /**
710
- * Lenders this LO has originated through
711
- */
712
- const originatorLenders = (options) => {
713
- return (options.client ?? client).post({
714
- security: [{
715
- name: "x-api-key",
716
- type: "apiKey"
717
- }, {
718
- scheme: "bearer",
719
- type: "http"
720
- }],
721
- url: "/originators/{nmlsId}/breakdowns/lenders",
722
- ...options,
723
- headers: {
724
- "Content-Type": "application/json",
725
- ...options?.headers
726
- }
727
- });
728
- };
729
- /**
730
- * Real-estate offices this LO closed through (with sponsoring company)
731
- */
732
- const originatorOffices = (options) => {
733
- return (options.client ?? client).post({
734
- security: [{
735
- name: "x-api-key",
736
- type: "apiKey"
737
- }, {
738
- scheme: "bearer",
739
- type: "http"
740
- }],
741
- url: "/originators/{nmlsId}/breakdowns/offices",
742
- ...options,
743
- headers: {
744
- "Content-Type": "application/json",
745
- ...options?.headers
746
- }
747
- });
748
- };
749
- /**
750
- * State volume breakdown across this LO's loans
751
- */
752
- const originatorStatesBreakdown = (options) => {
753
- return (options.client ?? client).post({
754
- security: [{
755
- name: "x-api-key",
756
- type: "apiKey"
757
- }, {
758
- scheme: "bearer",
759
- type: "http"
760
- }],
761
- url: "/originators/{nmlsId}/breakdowns/states",
762
- ...options,
763
- headers: {
764
- "Content-Type": "application/json",
765
- ...options?.headers
766
- }
767
- });
768
- };
769
- /**
770
- * Title companies on this LO's loans (spellings merged)
771
- * Ranks the title companies on this entity's loans (recorded deeds, `recording_date` window — the same population and period axis as every other loans breakdown). Spellings of one company are MERGED: `label` is its most-used spelling, `id` the normalized name every spelling was grouped under (legal-form and filler words such as `inc`, `llc`, `co`, `company`, `title`, `escrow` removed; `natl` → `national`). Placeholder entries meaning "no title company recorded" (`none available` and its misspellings, `unknown`, `n/a`, …) and names shorter than 3 characters are excluded rather than ranked. `attorney` and `accommodation` are kept: they say who closed. `pctUnits` / `pctVolume` are shares of the entity's WHOLE loan population in the window, including loans with no title company, so they do not sum to 100 across the page. Pages of up to 100 via `pagination`.
772
- */
773
- const originatorTitleCompanies = (options) => {
774
- return (options.client ?? client).post({
775
- security: [{
776
- name: "x-api-key",
777
- type: "apiKey"
778
- }, {
779
- scheme: "bearer",
780
- type: "http"
781
- }],
782
- url: "/originators/{nmlsId}/breakdowns/title-companies",
783
- ...options,
784
- headers: {
785
- "Content-Type": "application/json",
786
- ...options?.headers
787
- }
788
- });
789
- };
790
- /**
791
- * Zip-code volume breakdown
792
- */
793
- const originatorZipCodes = (options) => {
794
- return (options.client ?? client).post({
795
- security: [{
796
- name: "x-api-key",
797
- type: "apiKey"
798
- }, {
799
- scheme: "bearer",
800
- type: "http"
801
- }],
802
- url: "/originators/{nmlsId}/breakdowns/zip-codes",
803
- ...options,
804
- headers: {
805
- "Content-Type": "application/json",
806
- ...options?.headers
807
- }
808
- });
809
- };
810
- /**
811
- * Loans originated by this LO
812
- */
813
- const originatorLoans = (options) => {
814
- return (options.client ?? client).post({
815
- security: [{
816
- name: "x-api-key",
817
- type: "apiKey"
818
- }, {
819
- scheme: "bearer",
820
- type: "http"
821
- }],
822
- url: "/originators/{nmlsId}/loans",
823
- ...options,
824
- headers: {
825
- "Content-Type": "application/json",
826
- ...options?.headers
827
- }
828
- });
829
- };
830
- /**
831
- * The markets this LO lends in
832
- * One blended view of a loan officer's lending footprint: the ZIP codes they originated in, city / county / state rollups of the same scope, and the period totals those markets are a share of. AVERAGES ARE VOLUME-WEIGHTED: the summary loan size is Σ volume ÷ Σ units, not an unweighted mean of the per-market averages (on a real footprint the two differ by thousands of dollars). Sending `zipCodes` narrows every grain to those ZIPs; sending a `dateRange` re-cuts the window. Either switches the response from the LO's pre-aggregated footprint to a live aggregation of their loans — `source` and `sourceReasons` say which was used, and bucket `key` forms differ between them (use `name` for display). All shares on this response are 0–100 percentages. A summary can cover less than the whole book: production that could not be attributed to a place is held out and reported in `summary.unresolved` rather than being folded in or silently dropped. The summary also carries a Community Lending mix — what kind of neighborhood this book lands in. These are U.S. Census tract-level aggregates describing whole neighborhoods, never individual, household or applicant attributes. Unscoped it is the LO's own whole-period mix; a ZIP or date scope recomputes it over the markets in scope, and `summary.communityLending.basis` says which you got.
833
- */
834
- const originatorMarkets = (options) => {
835
- return (options.client ?? client).post({
836
- security: [{
837
- name: "x-api-key",
838
- type: "apiKey"
839
- }, {
840
- scheme: "bearer",
841
- type: "http"
842
- }],
843
- url: "/originators/{nmlsId}/markets",
844
- ...options,
845
- headers: {
846
- "Content-Type": "application/json",
847
- ...options?.headers
848
- }
849
- });
850
- };
851
- /**
852
- * Properties this loan officer has touched
853
- * Returns the parcels this loan officer is attributed to in public record — the reverse of the `parties` block on `GET /v1/properties/{id}`. Accepts the same filters, sorts and pagination as the main property search, so a caller can ask 'this LO's parcels in Travis County built after 2015' in one request. Attribution is ALL-TIME: a parcel stays in this LO's set after the loan is paid off, because the question is career reach rather than current book. An LO with no attributed parcels returns an empty page, not a 404 — the LO may be real and simply have nothing in the public record yet.
854
- */
855
- const originatorProperties = (options) => {
856
- return (options.client ?? client).post({
857
- security: [{
858
- name: "x-api-key",
859
- type: "apiKey"
860
- }, {
861
- scheme: "bearer",
862
- type: "http"
863
- }],
864
- url: "/originators/{nmlsId}/properties",
865
- ...options,
866
- headers: {
867
- "Content-Type": "application/json",
868
- ...options?.headers
869
- }
870
- });
871
- };
872
- /**
873
4
  * An LO's sponsorship / registration links (admin)
874
5
  * Diagnostic: the LO's indexed employment union (sponsorships + registrations), split by source with active counts. `indexGaps` lists what the former database diagnostic showed that the index does not carry.
875
6
  */
@@ -945,7 +76,7 @@ const adminGetBulkJob = (options) => {
945
76
  * Search agents with filters
946
77
  * Search and list individual real-estate agents with filters — one row per agent. Filter by name, location (state, city, zip), brokerage/office, and production metrics (sales volume, transaction units, price range), with sorting and cursor pagination. LOCATION SEMANTICS: the state/city/zip filters match ANY of an agent's location signals — their listed city/state, their office address(es), AND the markets where they actually closed transactions (production) — combined with OR. So an agent matches a searched location if their office OR their production is there. A search for city "Long Beach" can therefore return agents whose office or displayed primary market is in a different city/state, because they transacted in Long Beach. The `state`/`city` returned on each row reflect the agent's primary market and may differ from the searched location. (Use the `office` filter to match by brokerage/office name, and the per-agent city/county/state breakdown endpoints to rank an agent's volume within a specific market.) RANKING BY DEAL SIDE: combine a location filter with `sort` on `buyerVolume`/`buyerUnits` (or `sellerVolume`/`sellerUnits`, `dualVolume`/`dualUnits`) to rank agents by how active they are representing buyers vs. sellers in that market — e.g. sort `buyerVolume` descending for the most active buyer-side agents in a state or city. This is the per-agent record search: use it to find specific real-estate agents or build a filtered agent list. (For a single agent by ID use the agent detail endpoint.) If you only need how many agents match and not the records themselves, send the same request body to `countAgents`.
947
78
  */
948
- const listAgents2 = (options) => {
79
+ const listAgents = (options) => {
949
80
  return (options?.client ?? client).post({
950
81
  security: [{
951
82
  name: "x-api-key",
@@ -965,7 +96,7 @@ const listAgents2 = (options) => {
965
96
  /**
966
97
  * Configurable chart (measure × slice) over the agent's sales
967
98
  */
968
- const agentAnalyticsChart2 = (options) => {
99
+ const agentAnalyticsChart = (options) => {
969
100
  return (options?.client ?? client).post({
970
101
  security: [{
971
102
  name: "x-api-key",
@@ -985,7 +116,7 @@ const agentAnalyticsChart2 = (options) => {
985
116
  /**
986
117
  * Production summary with buyer/seller/dual split + previous period
987
118
  */
988
- const agentAnalyticsSummary2 = (options) => {
119
+ const agentAnalyticsSummary = (options) => {
989
120
  return (options?.client ?? client).post({
990
121
  security: [{
991
122
  name: "x-api-key",
@@ -1005,7 +136,7 @@ const agentAnalyticsSummary2 = (options) => {
1005
136
  /**
1006
137
  * Agent volume/units over time with buyer/seller/dual split
1007
138
  */
1008
- const agentAnalyticsTimeSeries2 = (options) => {
139
+ const agentAnalyticsTimeSeries = (options) => {
1009
140
  return (options?.client ?? client).post({
1010
141
  security: [{
1011
142
  name: "x-api-key",
@@ -1032,7 +163,7 @@ const agentAnalyticsTimeSeries2 = (options) => {
1032
163
  *
1033
164
  * **Push-target destination.** Pass `destination: { type: "push-target", targetId }` to have the finished rows sent to a configured push target instead of downloaded. The target is checked before anything is queued; a refusal returns the push target's status and `code` (`TARGET_NOT_FOUND` 404, `FORBIDDEN` 403, `PLAN_REQUIRED` 402, `TARGET_DISABLED` 409, `ENTITY_MISMATCH` 400). Limits and billing are the same as a file delivery, except that push-target deliveries from the ModelMatch web app are not billed.
1034
165
  */
1035
- const submitAgentsBulkDelivery2 = (options) => {
166
+ const submitAgentsBulkDelivery = (options) => {
1036
167
  return (options?.client ?? client).post({
1037
168
  security: [{
1038
169
  name: "x-api-key",
@@ -1057,7 +188,7 @@ const submitAgentsBulkDelivery2 = (options) => {
1057
188
  *
1058
189
  * Idempotent-ish: cancelling a job that has already finished (or was already cancelled) returns 409 and changes nothing. Poll `GET /v1/agents/bulk-delivery/{jobId}` for the settled state.
1059
190
  */
1060
- const cancelAgentsBulkDeliveryJob2 = (options) => {
191
+ const cancelAgentsBulkDeliveryJob = (options) => {
1061
192
  return (options.client ?? client).delete({
1062
193
  security: [{
1063
194
  name: "x-api-key",
@@ -1073,7 +204,7 @@ const cancelAgentsBulkDeliveryJob2 = (options) => {
1073
204
  /**
1074
205
  * Get bulk-delivery job status for agents
1075
206
  */
1076
- const getAgentsBulkDeliveryJob2 = (options) => {
207
+ const getAgentsBulkDeliveryJob = (options) => {
1077
208
  return (options.client ?? client).get({
1078
209
  security: [{
1079
210
  name: "x-api-key",
@@ -1090,7 +221,7 @@ const getAgentsBulkDeliveryJob2 = (options) => {
1090
221
  * Count agents matching filters
1091
222
  * Return the exact number of agents matching the given filters. Accepts the same request body as `listAgents` (pagination and sort are ignored). Use this when you only need a total; to get the matching agents themselves, send the same request body to `listAgents`.
1092
223
  */
1093
- const countAgents2 = (options) => {
224
+ const countAgents = (options) => {
1094
225
  return (options?.client ?? client).post({
1095
226
  security: [{
1096
227
  name: "x-api-key",
@@ -1110,7 +241,7 @@ const countAgents2 = (options) => {
1110
241
  /**
1111
242
  * Get agent by ID
1112
243
  */
1113
- const getAgent2 = (options) => {
244
+ const getAgent = (options) => {
1114
245
  return (options.client ?? client).get({
1115
246
  security: [{
1116
247
  name: "x-api-key",
@@ -1126,7 +257,7 @@ const getAgent2 = (options) => {
1126
257
  /**
1127
258
  * City volume breakdown across the agent's sales
1128
259
  */
1129
- const agentCities2 = (options) => {
260
+ const agentCities = (options) => {
1130
261
  return (options.client ?? client).post({
1131
262
  security: [{
1132
263
  name: "x-api-key",
@@ -1146,7 +277,7 @@ const agentCities2 = (options) => {
1146
277
  /**
1147
278
  * Mortgage companies the agent dealt with (pre-aggregated)
1148
279
  */
1149
- const agentCompanies2 = (options) => {
280
+ const agentCompanies = (options) => {
1150
281
  return (options.client ?? client).post({
1151
282
  security: [{
1152
283
  name: "x-api-key",
@@ -1166,7 +297,7 @@ const agentCompanies2 = (options) => {
1166
297
  /**
1167
298
  * County (FIPS) volume breakdown
1168
299
  */
1169
- const agentCounties2 = (options) => {
300
+ const agentCounties = (options) => {
1170
301
  return (options.client ?? client).post({
1171
302
  security: [{
1172
303
  name: "x-api-key",
@@ -1186,7 +317,7 @@ const agentCounties2 = (options) => {
1186
317
  /**
1187
318
  * Raw-name lenders encountered (pre-aggregated)
1188
319
  */
1189
- const agentLenders2 = (options) => {
320
+ const agentLenders = (options) => {
1190
321
  return (options.client ?? client).post({
1191
322
  security: [{
1192
323
  name: "x-api-key",
@@ -1206,7 +337,7 @@ const agentLenders2 = (options) => {
1206
337
  /**
1207
338
  * Listing offices the agent has closed through
1208
339
  */
1209
- const agentOffices2 = (options) => {
340
+ const agentOffices = (options) => {
1210
341
  return (options.client ?? client).post({
1211
342
  security: [{
1212
343
  name: "x-api-key",
@@ -1226,7 +357,7 @@ const agentOffices2 = (options) => {
1226
357
  /**
1227
358
  * Loan officers the agent worked with (pre-aggregated)
1228
359
  */
1229
- const agentOriginators2 = (options) => {
360
+ const agentOriginators = (options) => {
1230
361
  return (options.client ?? client).post({
1231
362
  security: [{
1232
363
  name: "x-api-key",
@@ -1246,7 +377,7 @@ const agentOriginators2 = (options) => {
1246
377
  /**
1247
378
  * State volume breakdown
1248
379
  */
1249
- const agentStates2 = (options) => {
380
+ const agentStates = (options) => {
1250
381
  return (options.client ?? client).post({
1251
382
  security: [{
1252
383
  name: "x-api-key",
@@ -1266,7 +397,7 @@ const agentStates2 = (options) => {
1266
397
  /**
1267
398
  * Zip-code volume breakdown
1268
399
  */
1269
- const agentZipCodes2 = (options) => {
400
+ const agentZipCodes = (options) => {
1270
401
  return (options.client ?? client).post({
1271
402
  security: [{
1272
403
  name: "x-api-key",
@@ -1287,7 +418,7 @@ const agentZipCodes2 = (options) => {
1287
418
  * The ZIP markets this agent works, blended
1288
419
  * Rank the ZIP markets one real-estate agent works, with volume, transaction counts and mean sale price per market, plus a weighted summary across the whole footprint. Optionally narrow to a ZIP list or a date window. REACH, NOT MARKET SHARE: an agent belongs to every market they touch — where their office is AND everywhere they have transacted — so one agent is counted in several markets at once. Per-market agent counts therefore over-sum: they cannot be added together, and dividing one into a total does not produce a market share. The only percentage returned, `shareOfScope`, is each market's share of this agent's volume across the scope requested and sums to 100 over that scope; there is no share-of-whole-book figure, because the transaction records carry no per-agent total to divide by. TWO COUNTS, ON PURPOSE: `transactions` counts transaction records; `units` counts the ones carrying a price, which are the records behind `volume` and `avgSalePrice`. Roughly half of an agent's records are priced, so dividing volume by `transactions` understates the average by about 2×. Figures are computed live from the agent's transaction records — an agent record carries no stored market rollup — and are ranked across their busiest ZIP markets. When a ZIP scope returns no markets, `reach.presentInScope` distinguishes 'works there, nothing closed in the window' from 'not present at all'. The summary also carries a Community Lending mix: what kind of neighborhood these markets are, weighted by the agent's activity in each. These are U.S. Census tract-level aggregates describing whole neighborhoods — never an individual, household or client attribute — and on this surface the basis is always the markets in scope, since an agent record carries no stored neighborhood rollup.
1289
420
  */
1290
- const agentMarkets2 = (options) => {
421
+ const agentMarkets = (options) => {
1291
422
  return (options.client ?? client).post({
1292
423
  security: [{
1293
424
  name: "x-api-key",
@@ -1307,7 +438,7 @@ const agentMarkets2 = (options) => {
1307
438
  /**
1308
439
  * Properties this agent has transacted on
1309
440
  */
1310
- const agentProperties2 = (options) => {
441
+ const agentProperties = (options) => {
1311
442
  return (options.client ?? client).post({
1312
443
  security: [{
1313
444
  name: "x-api-key",
@@ -1344,7 +475,7 @@ const agentRelated = (options) => {
1344
475
  /**
1345
476
  * Sales transactions where this agent was listing or selling side
1346
477
  */
1347
- const agentSales2 = (options) => {
478
+ const agentSales = (options) => {
1348
479
  return (options.client ?? client).post({
1349
480
  security: [{
1350
481
  name: "x-api-key",
@@ -4956,7 +4087,7 @@ const lenderCounties = (options) => {
4956
4087
  };
4957
4088
  /**
4958
4089
  * Loan officers who send business to this lender
4959
- * Ranks the loan officers whose loans funded through this lender, by volume. Each label is the loan officer's NMLS ID, so it chains straight into `GET /originators/{nmlsId}`. Loans with no identified loan officer are excluded rather than collapsed into one unnavigable bucket.
4090
+ * Ranks the loan officers whose loans funded through this lender, by volume. Each label is the loan officer's NMLS ID, so it chains straight into `GET /v1/originators/{nmlsId}`. Loans with no identified loan officer are excluded rather than collapsed into one unnavigable bucket.
4960
4091
  */
4961
4092
  const lenderOriginators = (options) => {
4962
4093
  return (options.client ?? client).post({
@@ -5647,7 +4778,7 @@ const getOffice = (options) => {
5647
4778
  * Search originators with filters
5648
4779
  * Search and list individual loan originators (LOs — NMLS-registered mortgage loan officers) with filters — one row per originator. Filter by name, NMLS ID, location (state, city), employer/company, and production metrics (loan volume, units, product mix), with sorting and cursor pagination. LOCATION SEMANTICS: the state/city filters match an originator's PRODUCTION GEOGRAPHY — the markets where they actually originated loans in the selected period — not where their office or employer sits. An LO who lends across several markets matches a filter for ANY of those markets, while the `state`/`city` returned on each row reflect only their PRIMARY (highest-volume) market. So a search for city "Long Beach" can return an LO whose displayed location is a different city/state (e.g. their top market is in Arizona) — they still originated loans in Long Beach, it just isn't their #1 market. To rank originators by their volume within a specific market, sort by volume after filtering, or use the per-originator city/county/state breakdown endpoints. This is the per-originator record search: use it to find specific loan officers or build a filtered LO list. (For a single originator by NMLS ID use the originator detail endpoint.) If you only need how many originators match and not the records themselves, send the same request body to `countOriginators`.
5649
4780
  */
5650
- const listOriginators2 = (options) => {
4781
+ const listOriginators = (options) => {
5651
4782
  return (options?.client ?? client).post({
5652
4783
  security: [{
5653
4784
  name: "x-api-key",
@@ -5667,7 +4798,7 @@ const listOriginators2 = (options) => {
5667
4798
  /**
5668
4799
  * Configurable chart (measure × slice) over one LO's loans
5669
4800
  */
5670
- const originatorAnalyticsChart2 = (options) => {
4801
+ const originatorAnalyticsChart = (options) => {
5671
4802
  return (options?.client ?? client).post({
5672
4803
  security: [{
5673
4804
  name: "x-api-key",
@@ -5687,7 +4818,7 @@ const originatorAnalyticsChart2 = (options) => {
5687
4818
  /**
5688
4819
  * Production summary with previous-period comparison
5689
4820
  */
5690
- const originatorAnalyticsSummary2 = (options) => {
4821
+ const originatorAnalyticsSummary = (options) => {
5691
4822
  return (options?.client ?? client).post({
5692
4823
  security: [{
5693
4824
  name: "x-api-key",
@@ -5707,7 +4838,7 @@ const originatorAnalyticsSummary2 = (options) => {
5707
4838
  /**
5708
4839
  * Originator volume / units over time
5709
4840
  */
5710
- const originatorAnalyticsTimeSeries2 = (options) => {
4841
+ const originatorAnalyticsTimeSeries = (options) => {
5711
4842
  return (options?.client ?? client).post({
5712
4843
  security: [{
5713
4844
  name: "x-api-key",
@@ -5734,7 +4865,7 @@ const originatorAnalyticsTimeSeries2 = (options) => {
5734
4865
  *
5735
4866
  * **Push-target destination.** Pass `destination: { type: "push-target", targetId }` to have the finished rows sent to a configured push target instead of downloaded. The target is checked before anything is queued; a refusal returns the push target's status and `code` (`TARGET_NOT_FOUND` 404, `FORBIDDEN` 403, `PLAN_REQUIRED` 402, `TARGET_DISABLED` 409, `ENTITY_MISMATCH` 400). Limits and billing are the same as a file delivery, except that push-target deliveries from the ModelMatch web app are not billed.
5736
4867
  */
5737
- const submitOriginatorsBulkDelivery2 = (options) => {
4868
+ const submitOriginatorsBulkDelivery = (options) => {
5738
4869
  return (options?.client ?? client).post({
5739
4870
  security: [{
5740
4871
  name: "x-api-key",
@@ -5759,7 +4890,7 @@ const submitOriginatorsBulkDelivery2 = (options) => {
5759
4890
  *
5760
4891
  * Idempotent-ish: cancelling a job that has already finished (or was already cancelled) returns 409 and changes nothing. Poll `GET /v1/originators/bulk-delivery/{jobId}` for the settled state.
5761
4892
  */
5762
- const cancelOriginatorsBulkDeliveryJob2 = (options) => {
4893
+ const cancelOriginatorsBulkDeliveryJob = (options) => {
5763
4894
  return (options.client ?? client).delete({
5764
4895
  security: [{
5765
4896
  name: "x-api-key",
@@ -5775,7 +4906,7 @@ const cancelOriginatorsBulkDeliveryJob2 = (options) => {
5775
4906
  /**
5776
4907
  * Get bulk-delivery job status for originators
5777
4908
  */
5778
- const getOriginatorsBulkDeliveryJob2 = (options) => {
4909
+ const getOriginatorsBulkDeliveryJob = (options) => {
5779
4910
  return (options.client ?? client).get({
5780
4911
  security: [{
5781
4912
  name: "x-api-key",
@@ -5792,7 +4923,7 @@ const getOriginatorsBulkDeliveryJob2 = (options) => {
5792
4923
  * Count originators matching filters
5793
4924
  * Return the exact number of originators matching the given filters. Accepts the same request body as `listOriginators` (pagination and sort are ignored). Use this when you only need a total; to get the matching originators themselves, send the same request body to `listOriginators`.
5794
4925
  */
5795
- const countOriginators2 = (options) => {
4926
+ const countOriginators = (options) => {
5796
4927
  return (options?.client ?? client).post({
5797
4928
  security: [{
5798
4929
  name: "x-api-key",
@@ -5829,7 +4960,7 @@ const originatorRelated = (options) => {
5829
4960
  /**
5830
4961
  * Get originator by NMLS ID
5831
4962
  */
5832
- const getOriginator2 = (options) => {
4963
+ const getOriginator = (options) => {
5833
4964
  return (options.client ?? client).get({
5834
4965
  security: [{
5835
4966
  name: "x-api-key",
@@ -5846,7 +4977,7 @@ const getOriginator2 = (options) => {
5846
4977
  * Real-estate agents this LO co-closed with
5847
4978
  * Ranks the real-estate agents on the selling side of this LO's loans, by volume. Buckets whose name is an MLS placeholder for "no selling agent recorded" (`non member`, `non listed agent`, and ~140 board-specific spellings) are excluded rather than ranked as agents — they are not people and cannot be resolved with `GET /v1/agents/{id}`. Percentages are shares of the LO's whole loan population, so they do not sum to 100 across the page.
5848
4979
  */
5849
- const originatorAgents2 = (options) => {
4980
+ const originatorAgents = (options) => {
5850
4981
  return (options.client ?? client).post({
5851
4982
  security: [{
5852
4983
  name: "x-api-key",
@@ -5866,7 +4997,7 @@ const originatorAgents2 = (options) => {
5866
4997
  /**
5867
4998
  * Branch (broker) history for this LO
5868
4999
  */
5869
- const originatorBranches2 = (options) => {
5000
+ const originatorBranches = (options) => {
5870
5001
  return (options.client ?? client).post({
5871
5002
  security: [{
5872
5003
  name: "x-api-key",
@@ -5886,7 +5017,7 @@ const originatorBranches2 = (options) => {
5886
5017
  /**
5887
5018
  * Broker shops this LO originated loans through (name-resolved)
5888
5019
  */
5889
- const originatorBrokers2 = (options) => {
5020
+ const originatorBrokers = (options) => {
5890
5021
  return (options.client ?? client).post({
5891
5022
  security: [{
5892
5023
  name: "x-api-key",
@@ -5906,7 +5037,7 @@ const originatorBrokers2 = (options) => {
5906
5037
  /**
5907
5038
  * City volume breakdown across this LO's loans
5908
5039
  */
5909
- const originatorCitiesBreakdown2 = (options) => {
5040
+ const originatorCitiesBreakdown = (options) => {
5910
5041
  return (options.client ?? client).post({
5911
5042
  security: [{
5912
5043
  name: "x-api-key",
@@ -5926,7 +5057,7 @@ const originatorCitiesBreakdown2 = (options) => {
5926
5057
  /**
5927
5058
  * Funding companies (employer history) for this LO
5928
5059
  */
5929
- const originatorCompanies2 = (options) => {
5060
+ const originatorCompanies = (options) => {
5930
5061
  return (options.client ?? client).post({
5931
5062
  security: [{
5932
5063
  name: "x-api-key",
@@ -5946,7 +5077,7 @@ const originatorCompanies2 = (options) => {
5946
5077
  /**
5947
5078
  * County (FIPS) volume breakdown across this LO's loans
5948
5079
  */
5949
- const originatorCountiesBreakdown2 = (options) => {
5080
+ const originatorCountiesBreakdown = (options) => {
5950
5081
  return (options.client ?? client).post({
5951
5082
  security: [{
5952
5083
  name: "x-api-key",
@@ -5966,7 +5097,7 @@ const originatorCountiesBreakdown2 = (options) => {
5966
5097
  /**
5967
5098
  * Lenders this LO has originated through
5968
5099
  */
5969
- const originatorLenders2 = (options) => {
5100
+ const originatorLenders = (options) => {
5970
5101
  return (options.client ?? client).post({
5971
5102
  security: [{
5972
5103
  name: "x-api-key",
@@ -5986,7 +5117,7 @@ const originatorLenders2 = (options) => {
5986
5117
  /**
5987
5118
  * Real-estate offices this LO closed through (with sponsoring company)
5988
5119
  */
5989
- const originatorOffices2 = (options) => {
5120
+ const originatorOffices = (options) => {
5990
5121
  return (options.client ?? client).post({
5991
5122
  security: [{
5992
5123
  name: "x-api-key",
@@ -6006,7 +5137,7 @@ const originatorOffices2 = (options) => {
6006
5137
  /**
6007
5138
  * State volume breakdown across this LO's loans
6008
5139
  */
6009
- const originatorStatesBreakdown2 = (options) => {
5140
+ const originatorStatesBreakdown = (options) => {
6010
5141
  return (options.client ?? client).post({
6011
5142
  security: [{
6012
5143
  name: "x-api-key",
@@ -6027,7 +5158,7 @@ const originatorStatesBreakdown2 = (options) => {
6027
5158
  * Title companies on this LO's loans (spellings merged)
6028
5159
  * Ranks the title companies on this entity's loans (recorded deeds, `recording_date` window — the same population and period axis as every other loans breakdown). Spellings of one company are MERGED: `label` is its most-used spelling, `id` the normalized name every spelling was grouped under (legal-form and filler words such as `inc`, `llc`, `co`, `company`, `title`, `escrow` removed; `natl` → `national`). Placeholder entries meaning "no title company recorded" (`none available` and its misspellings, `unknown`, `n/a`, …) and names shorter than 3 characters are excluded rather than ranked. `attorney` and `accommodation` are kept: they say who closed. `pctUnits` / `pctVolume` are shares of the entity's WHOLE loan population in the window, including loans with no title company, so they do not sum to 100 across the page. Pages of up to 100 via `pagination`.
6029
5160
  */
6030
- const originatorTitleCompanies2 = (options) => {
5161
+ const originatorTitleCompanies = (options) => {
6031
5162
  return (options.client ?? client).post({
6032
5163
  security: [{
6033
5164
  name: "x-api-key",
@@ -6047,7 +5178,7 @@ const originatorTitleCompanies2 = (options) => {
6047
5178
  /**
6048
5179
  * Zip-code volume breakdown
6049
5180
  */
6050
- const originatorZipCodes2 = (options) => {
5181
+ const originatorZipCodes = (options) => {
6051
5182
  return (options.client ?? client).post({
6052
5183
  security: [{
6053
5184
  name: "x-api-key",
@@ -6067,7 +5198,7 @@ const originatorZipCodes2 = (options) => {
6067
5198
  /**
6068
5199
  * Loans originated by this LO
6069
5200
  */
6070
- const originatorLoans2 = (options) => {
5201
+ const originatorLoans = (options) => {
6071
5202
  return (options.client ?? client).post({
6072
5203
  security: [{
6073
5204
  name: "x-api-key",
@@ -6088,7 +5219,7 @@ const originatorLoans2 = (options) => {
6088
5219
  * The markets this LO lends in
6089
5220
  * One blended view of a loan officer's lending footprint: the ZIP codes they originated in, city / county / state rollups of the same scope, and the period totals those markets are a share of. AVERAGES ARE VOLUME-WEIGHTED: the summary loan size is Σ volume ÷ Σ units, not an unweighted mean of the per-market averages (on a real footprint the two differ by thousands of dollars). Sending `zipCodes` narrows every grain to those ZIPs; sending a `dateRange` re-cuts the window. Either switches the response from the LO's pre-aggregated footprint to a live aggregation of their loans — `source` and `sourceReasons` say which was used, and bucket `key` forms differ between them (use `name` for display). All shares on this response are 0–100 percentages. A summary can cover less than the whole book: production that could not be attributed to a place is held out and reported in `summary.unresolved` rather than being folded in or silently dropped. The summary also carries a Community Lending mix — what kind of neighborhood this book lands in. These are U.S. Census tract-level aggregates describing whole neighborhoods, never individual, household or applicant attributes. Unscoped it is the LO's own whole-period mix; a ZIP or date scope recomputes it over the markets in scope, and `summary.communityLending.basis` says which you got.
6090
5221
  */
6091
- const originatorMarkets2 = (options) => {
5222
+ const originatorMarkets = (options) => {
6092
5223
  return (options.client ?? client).post({
6093
5224
  security: [{
6094
5225
  name: "x-api-key",
@@ -6109,7 +5240,7 @@ const originatorMarkets2 = (options) => {
6109
5240
  * Properties this loan officer has touched
6110
5241
  * Returns the parcels this loan officer is attributed to in public record — the reverse of the `parties` block on `GET /v1/properties/{id}`. Accepts the same filters, sorts and pagination as the main property search, so a caller can ask 'this LO's parcels in Travis County built after 2015' in one request. Attribution is ALL-TIME: a parcel stays in this LO's set after the loan is paid off, because the question is career reach rather than current book. An LO with no attributed parcels returns an empty page, not a 404 — the LO may be real and simply have nothing in the public record yet.
6111
5242
  */
6112
- const originatorProperties2 = (options) => {
5243
+ const originatorProperties = (options) => {
6113
5244
  return (options.client ?? client).post({
6114
5245
  security: [{
6115
5246
  name: "x-api-key",
@@ -6700,4 +5831,4 @@ const getSearchToken = (options) => {
6700
5831
  });
6701
5832
  };
6702
5833
  //#endregion
6703
- export { client as _heyApiClient, actionCrmCallerId, addCrmContactMethod, addCrmListMember, addCrmListMembersBulk, addCrmNote, addCrmRecord, addCrmRecordsBulk, addWatchedAgent, addWatchedArea, addWatchedDocument, adminGetBulkJob, adminGetCadLinks, adminGetCadLoadTask, adminLaunchCadLoad, agentAnalyticsChart, agentAnalyticsChart2, agentAnalyticsSummary, agentAnalyticsSummary2, agentAnalyticsTimeSeries, agentAnalyticsTimeSeries2, agentCities, agentCities2, agentCompanies, agentCompanies2, agentCounties, agentCounties2, agentLenders, agentLenders2, agentMarkets, agentMarkets2, agentOffices, agentOffices2, agentOriginators, agentOriginators2, agentProperties, agentProperties2, agentRelated, agentSales, agentSales2, agentStates, agentStates2, agentZipCodes, agentZipCodes2, analyzeCrmCall, applyCrmEnrichment, applyCrmListTemplate, applyCrmMiUpdates, branchAnalyticsChart, branchAnalyticsSummary, branchAnalyticsTimeSeries, branchCities, branchCounties, branchLenders, branchLoans, branchOriginators, branchRoster, branchStates, branchTitleCompanies, cancelAgentsBulkDeliveryJob, cancelAgentsBulkDeliveryJob2, cancelBranchesBulkDeliveryJob, cancelCompaniesBulkDeliveryJob, cancelEnrichBulkJob, cancelLoansBulkDeliveryJob, cancelOriginatorsBulkDeliveryJob, cancelOriginatorsBulkDeliveryJob2, cancelPropertiesBulkDeliveryJob, companyAgents, companyAnalyticsChart, companyAnalyticsSummary, companyAnalyticsTimeSeries, companyBranches, companyBrokers, companyCities, companyCounties, companyEarlyExits, companyEmployeeStats, companyEmployment, companyHeadcount, companyLenders, companyMarkets, companyOffices, companyOriginators, companyRelated, companySponsoredIndividuals, companySponsorshipMovement, companyStates, companyTalentFlow, companyTitleCompanies, companyZipCodes, countAgents, countAgents2, countBranches, countCompanies, countLenders, countLoans, countOffices, countOriginators, countOriginators2, countProperties, countSales, createClient, createCrmList, createCrmListField, createCrmManualRecord, createCrmMeeting, createCrmObjectField, createCrmRecord, createCrmTask, createCrmTemplate, createSavedFilter, crmLenderChannels, crmLoLoanMix, crmLoMomentum, crmLoSponsorLocation, crmSimilarOriginators, declineCrmMiUpdate, deleteCrmCallerId, deleteCrmList, deleteCrmListField, deleteCrmMeeting, deleteCrmNote, deleteCrmObjectField, deleteCrmRecord, deleteCrmRecords, deleteCrmTask, deleteCrmTemplate, deleteSavedFilter, describeCrmRecordsOnAdd, dismissCrmMiUpdates, editCrmLoggedActivity, editCrmNote, enrichPropertiesBatch, enrichPropertiesBulk, enrichProperty, filterCrmListMembers, findCrmRecordByNmls, generateCrmRecordDescription, getAgent, getAgent2, getAgentsBulkDeliveryJob, getAgentsBulkDeliveryJob2, getAlertConditions, getAlertUnreadCount, getBranch, getBranchesBulkDeliveryJob, getCompaniesBulkDeliveryJob, getCompany, getCrmActiveCall, getCrmActivityReport, getCrmCall, getCrmCallTranscript, getCrmCustomValues, getCrmImportJob, getCrmList, getCrmListMemberIds, getCrmListShares, getCrmMiUpdates, getCrmOutcomesReport, getCrmOverrides, getCrmProductionEnrichJob, getCrmRecordAccess, getCrmRecordAccessRequest, getCrmRecordConnections, getCrmRecordMemberIds, getCrmRecordProfile, getCrmTemplate, getCrmTemplateShares, getEnrichBulkJob, getHubspotPushStatus, getLender, getLoan, getLoansBulkDeliveryJob, getMe, getMeCredits, getMePlan, getOffice, getOriginator, getOriginator2, getOriginatorsBulkDeliveryJob, getOriginatorsBulkDeliveryJob2, getPropertiesBulkDeliveryJob, getProperty, getRealtimeConfig, getSale, getSavedFilter, getSearchToken, grantCrmListAccess, grantCrmRecordAccess, grantCrmRecordAccessRequest, hangupCrmCall, importCrmRecords, instantSearch, lenderCities, lenderCompanies, lenderCounties, lenderOriginators, lenderStates, linkCrmRecord, listAgents, listAgents2, listAlertDigests, listAlertLog, listBranches, listCompanies, listCrmActivity, listCrmCallerIds, listCrmCustomFields, listCrmListAssignees, listCrmListFields, listCrmListMemberships, listCrmListShareableMembers, listCrmLists, listCrmMeetings, listCrmMembers, listCrmOrgMembers, listCrmRecordShareableMembers, listCrmRecordShares, listCrmReferencedActivity, listCrmTasks, listCrmTemplates, listCrmWorkspaceMeetings, listCrmWorkspaceTasks, listEnrichments, listLenders, listLoans, listMarket, listOffices, listOriginators, listOriginators2, listProperties, listSales, listSavedFilters, listWatchedAgents, listWatchedAreas, listWatchedDocuments, loanRelated, loansAnalyticsChart, loansAnalyticsSummary, loansAnalyticsTimeSeries, logCrmActivity, lookupCompanies, markAlertDigestRead, markAlertRead, markAllAlertsRead, marketAnalyticsChart, marketAnalyticsSummary, marketAnalyticsTimeSeries, marketCommunityLending, marketMovementActivity, marketMovementByState, marketMovementCohortPayoff, marketMovementMostGained, marketMovementMostLost, marketMovementMovers, marketMovementRankings, marketMovementStats, marketMovementTransitions, officeAgents, originatorAgents, originatorAgents2, originatorAnalyticsChart, originatorAnalyticsChart2, originatorAnalyticsSummary, originatorAnalyticsSummary2, originatorAnalyticsTimeSeries, originatorAnalyticsTimeSeries2, originatorBranches, originatorBranches2, originatorBrokers, originatorBrokers2, originatorCitiesBreakdown, originatorCitiesBreakdown2, originatorCompanies, originatorCompanies2, originatorCountiesBreakdown, originatorCountiesBreakdown2, originatorLenders, originatorLenders2, originatorLoans, originatorLoans2, originatorMarkets, originatorMarkets2, originatorOffices, originatorOffices2, originatorProperties, originatorProperties2, originatorRelated, originatorStatesBreakdown, originatorStatesBreakdown2, originatorTitleCompanies, originatorTitleCompanies2, originatorZipCodes, originatorZipCodes2, placeCrmCall, previewAlerts, propertiesAnalyticsChart, propertiesAnalyticsSummary, propertyRelated, pushToHubspot, reconcileCrmMeetings, refreshCrmRecordMirror, removeCrmContactMethod, removeCrmListMember, removeWatchedAgent, removeWatchedArea, removeWatchedDocument, requestCrmAccess, requestCrmRecordAccess, retrieveLocation, revokeCrmListAccess, revokeCrmRecordAccess, saleRelated, salesAnalyticsChart, salesAnalyticsSummary, salesAnalyticsTimeSeries, searchCrmEmailRecipients, searchCrmMatchCandidates, searchCrmMentionRecords, searchCrmRecords, searchProperties, sendCrmEmail, setCrmCallAnalysis, setCrmCustomValue, setCrmOverride, setCrmRecordOwner, setDefaultCrmCallerId, shareCrmTemplate, submitAgentsBulkDelivery, submitAgentsBulkDelivery2, submitBranchesBulkDelivery, submitCompaniesBulkDelivery, submitLoansBulkDelivery, submitOriginatorsBulkDelivery, submitOriginatorsBulkDelivery2, submitPropertiesBulkDelivery, suggestLocations, transcribeCrmCall, transferCrmListOwnership, unshareCrmTemplate, updateAlertConditions, updateCrmContactMethod, updateCrmList, updateCrmListField, updateCrmMeeting, updateCrmObjectField, updateCrmTask, updateCrmTemplate, updateMe, updateSavedFilter };
5834
+ export { client as _heyApiClient, actionCrmCallerId, addCrmContactMethod, addCrmListMember, addCrmListMembersBulk, addCrmNote, addCrmRecord, addCrmRecordsBulk, addWatchedAgent, addWatchedArea, addWatchedDocument, adminGetBulkJob, adminGetCadLinks, adminGetCadLoadTask, adminLaunchCadLoad, agentAnalyticsChart, agentAnalyticsSummary, agentAnalyticsTimeSeries, agentCities, agentCompanies, agentCounties, agentLenders, agentMarkets, agentOffices, agentOriginators, agentProperties, agentRelated, agentSales, agentStates, agentZipCodes, analyzeCrmCall, applyCrmEnrichment, applyCrmListTemplate, applyCrmMiUpdates, branchAnalyticsChart, branchAnalyticsSummary, branchAnalyticsTimeSeries, branchCities, branchCounties, branchLenders, branchLoans, branchOriginators, branchRoster, branchStates, branchTitleCompanies, cancelAgentsBulkDeliveryJob, cancelBranchesBulkDeliveryJob, cancelCompaniesBulkDeliveryJob, cancelEnrichBulkJob, cancelLoansBulkDeliveryJob, cancelOriginatorsBulkDeliveryJob, cancelPropertiesBulkDeliveryJob, companyAgents, companyAnalyticsChart, companyAnalyticsSummary, companyAnalyticsTimeSeries, companyBranches, companyBrokers, companyCities, companyCounties, companyEarlyExits, companyEmployeeStats, companyEmployment, companyHeadcount, companyLenders, companyMarkets, companyOffices, companyOriginators, companyRelated, companySponsoredIndividuals, companySponsorshipMovement, companyStates, companyTalentFlow, companyTitleCompanies, companyZipCodes, countAgents, countBranches, countCompanies, countLenders, countLoans, countOffices, countOriginators, countProperties, countSales, createClient, createCrmList, createCrmListField, createCrmManualRecord, createCrmMeeting, createCrmObjectField, createCrmRecord, createCrmTask, createCrmTemplate, createSavedFilter, crmLenderChannels, crmLoLoanMix, crmLoMomentum, crmLoSponsorLocation, crmSimilarOriginators, declineCrmMiUpdate, deleteCrmCallerId, deleteCrmList, deleteCrmListField, deleteCrmMeeting, deleteCrmNote, deleteCrmObjectField, deleteCrmRecord, deleteCrmRecords, deleteCrmTask, deleteCrmTemplate, deleteSavedFilter, describeCrmRecordsOnAdd, dismissCrmMiUpdates, editCrmLoggedActivity, editCrmNote, enrichPropertiesBatch, enrichPropertiesBulk, enrichProperty, filterCrmListMembers, findCrmRecordByNmls, generateCrmRecordDescription, getAgent, getAgentsBulkDeliveryJob, getAlertConditions, getAlertUnreadCount, getBranch, getBranchesBulkDeliveryJob, getCompaniesBulkDeliveryJob, getCompany, getCrmActiveCall, getCrmActivityReport, getCrmCall, getCrmCallTranscript, getCrmCustomValues, getCrmImportJob, getCrmList, getCrmListMemberIds, getCrmListShares, getCrmMiUpdates, getCrmOutcomesReport, getCrmOverrides, getCrmProductionEnrichJob, getCrmRecordAccess, getCrmRecordAccessRequest, getCrmRecordConnections, getCrmRecordMemberIds, getCrmRecordProfile, getCrmTemplate, getCrmTemplateShares, getEnrichBulkJob, getHubspotPushStatus, getLender, getLoan, getLoansBulkDeliveryJob, getMe, getMeCredits, getMePlan, getOffice, getOriginator, getOriginatorsBulkDeliveryJob, getPropertiesBulkDeliveryJob, getProperty, getRealtimeConfig, getSale, getSavedFilter, getSearchToken, grantCrmListAccess, grantCrmRecordAccess, grantCrmRecordAccessRequest, hangupCrmCall, importCrmRecords, instantSearch, lenderCities, lenderCompanies, lenderCounties, lenderOriginators, lenderStates, linkCrmRecord, listAgents, listAlertDigests, listAlertLog, listBranches, listCompanies, listCrmActivity, listCrmCallerIds, listCrmCustomFields, listCrmListAssignees, listCrmListFields, listCrmListMemberships, listCrmListShareableMembers, listCrmLists, listCrmMeetings, listCrmMembers, listCrmOrgMembers, listCrmRecordShareableMembers, listCrmRecordShares, listCrmReferencedActivity, listCrmTasks, listCrmTemplates, listCrmWorkspaceMeetings, listCrmWorkspaceTasks, listEnrichments, listLenders, listLoans, listMarket, listOffices, listOriginators, listProperties, listSales, listSavedFilters, listWatchedAgents, listWatchedAreas, listWatchedDocuments, loanRelated, loansAnalyticsChart, loansAnalyticsSummary, loansAnalyticsTimeSeries, logCrmActivity, lookupCompanies, markAlertDigestRead, markAlertRead, markAllAlertsRead, marketAnalyticsChart, marketAnalyticsSummary, marketAnalyticsTimeSeries, marketCommunityLending, marketMovementActivity, marketMovementByState, marketMovementCohortPayoff, marketMovementMostGained, marketMovementMostLost, marketMovementMovers, marketMovementRankings, marketMovementStats, marketMovementTransitions, officeAgents, originatorAgents, originatorAnalyticsChart, originatorAnalyticsSummary, originatorAnalyticsTimeSeries, originatorBranches, originatorBrokers, originatorCitiesBreakdown, originatorCompanies, originatorCountiesBreakdown, originatorLenders, originatorLoans, originatorMarkets, originatorOffices, originatorProperties, originatorRelated, originatorStatesBreakdown, originatorTitleCompanies, originatorZipCodes, placeCrmCall, previewAlerts, propertiesAnalyticsChart, propertiesAnalyticsSummary, propertyRelated, pushToHubspot, reconcileCrmMeetings, refreshCrmRecordMirror, removeCrmContactMethod, removeCrmListMember, removeWatchedAgent, removeWatchedArea, removeWatchedDocument, requestCrmAccess, requestCrmRecordAccess, retrieveLocation, revokeCrmListAccess, revokeCrmRecordAccess, saleRelated, salesAnalyticsChart, salesAnalyticsSummary, salesAnalyticsTimeSeries, searchCrmEmailRecipients, searchCrmMatchCandidates, searchCrmMentionRecords, searchCrmRecords, searchProperties, sendCrmEmail, setCrmCallAnalysis, setCrmCustomValue, setCrmOverride, setCrmRecordOwner, setDefaultCrmCallerId, shareCrmTemplate, submitAgentsBulkDelivery, submitBranchesBulkDelivery, submitCompaniesBulkDelivery, submitLoansBulkDelivery, submitOriginatorsBulkDelivery, submitPropertiesBulkDelivery, suggestLocations, transcribeCrmCall, transferCrmListOwnership, unshareCrmTemplate, updateAlertConditions, updateCrmContactMethod, updateCrmList, updateCrmListField, updateCrmMeeting, updateCrmObjectField, updateCrmTask, updateCrmTemplate, updateMe, updateSavedFilter };