@model-match/api 3.18.0 → 3.20.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-CkGOuklD.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",
@@ -1379,6 +510,7 @@ const getAlertConditions = (options) => {
1379
510
  };
1380
511
  /**
1381
512
  * Update your alert settings
513
+ * Saves your NMLS id, contact identity and tunables. The per-trigger `enabled` flags are deprecated: subscribe to alert recipes or manage subscriptions instead. While still accepted, `enabled[type]: true` turns the trigger on for every watched subject that supports it, and `false` turns it off everywhere.
1382
514
  */
1383
515
  const updateAlertConditions = (options) => {
1384
516
  return (options?.client ?? client).put({
@@ -1499,6 +631,137 @@ const previewAlerts = (options) => {
1499
631
  });
1500
632
  };
1501
633
  /**
634
+ * List alert recipes
635
+ * The alert recipes — named bundles of alert triggers — with the inputs each needs and whether you are subscribed.
636
+ */
637
+ const listAlertRecipes = (options) => {
638
+ return (options?.client ?? client).get({
639
+ security: [{
640
+ name: "x-api-key",
641
+ type: "apiKey"
642
+ }, {
643
+ scheme: "bearer",
644
+ type: "http"
645
+ }],
646
+ url: "/v1/alerts/recipes",
647
+ ...options
648
+ });
649
+ };
650
+ /**
651
+ * Unsubscribe from an alert recipe
652
+ * Turns the recipe's alert triggers off. Saved agents, areas and records stay; remove them with the watch-list endpoints.
653
+ */
654
+ const unsubscribeAlertRecipe = (options) => {
655
+ return (options.client ?? client).delete({
656
+ security: [{
657
+ name: "x-api-key",
658
+ type: "apiKey"
659
+ }, {
660
+ scheme: "bearer",
661
+ type: "http"
662
+ }],
663
+ url: "/v1/alerts/recipes/{id}",
664
+ ...options
665
+ });
666
+ };
667
+ /**
668
+ * Subscribe to an alert recipe
669
+ * Turns on the recipe's alert triggers, saves its inputs (NMLS id, agents, areas or a record), and backfills recent matches. For watch-record, empty rules apply the default for the record type: property — foreclosure status changes, or sale propensity reaches 50; sale — listing status changes; loan — interest rate moves by 0.125 points or more.
670
+ */
671
+ const subscribeAlertRecipe = (options) => {
672
+ return (options.client ?? client).post({
673
+ security: [{
674
+ name: "x-api-key",
675
+ type: "apiKey"
676
+ }, {
677
+ scheme: "bearer",
678
+ type: "http"
679
+ }],
680
+ url: "/v1/alerts/recipes/{id}",
681
+ ...options,
682
+ headers: {
683
+ "Content-Type": "application/json",
684
+ ...options?.headers
685
+ }
686
+ });
687
+ };
688
+ /**
689
+ * Preview an alert recipe
690
+ * Dry-run the recipe over the last 30 days for you, with the given inputs applied on top of your saved ones. Writes nothing.
691
+ */
692
+ const previewAlertRecipe = (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: "/v1/alerts/recipes/{id}/preview",
702
+ ...options,
703
+ headers: {
704
+ "Content-Type": "application/json",
705
+ ...options?.headers
706
+ }
707
+ });
708
+ };
709
+ /**
710
+ * List your alert subscriptions
711
+ * Every subject you watch — agents, areas, your NMLS id, records — with the alert kinds that fire on it and the recipes that turned them on.
712
+ */
713
+ const listAlertSubscriptions = (options) => {
714
+ return (options?.client ?? client).get({
715
+ security: [{
716
+ name: "x-api-key",
717
+ type: "apiKey"
718
+ }, {
719
+ scheme: "bearer",
720
+ type: "http"
721
+ }],
722
+ url: "/v1/alerts/subscriptions",
723
+ ...options
724
+ });
725
+ };
726
+ /**
727
+ * Subscribe to alerts on a subject
728
+ * Watch a subject (an agent, an area, your NMLS id, or a sale / property / loan with rules) for the given alert kinds. Re-posting the same subject replaces the kinds you set directly; kinds a recipe turned on stay. Recent matches are backfilled when kinds are added.
729
+ */
730
+ const createAlertSubscription = (options) => {
731
+ return (options?.client ?? client).post({
732
+ security: [{
733
+ name: "x-api-key",
734
+ type: "apiKey"
735
+ }, {
736
+ scheme: "bearer",
737
+ type: "http"
738
+ }],
739
+ url: "/v1/alerts/subscriptions",
740
+ ...options,
741
+ headers: {
742
+ "Content-Type": "application/json",
743
+ ...options?.headers
744
+ }
745
+ });
746
+ };
747
+ /**
748
+ * Remove an alert subscription
749
+ * Stops watching the subject (idempotent). For a record watch this also forgets its baseline, so watching it again starts fresh.
750
+ */
751
+ const deleteAlertSubscription = (options) => {
752
+ return (options.client ?? client).delete({
753
+ security: [{
754
+ name: "x-api-key",
755
+ type: "apiKey"
756
+ }, {
757
+ scheme: "bearer",
758
+ type: "http"
759
+ }],
760
+ url: "/v1/alerts/subscriptions/{id}",
761
+ ...options
762
+ });
763
+ };
764
+ /**
1502
765
  * Get your unread alert count
1503
766
  */
1504
767
  const getAlertUnreadCount = (options) => {
@@ -4956,7 +4219,7 @@ const lenderCounties = (options) => {
4956
4219
  };
4957
4220
  /**
4958
4221
  * 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.
4222
+ * 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
4223
  */
4961
4224
  const lenderOriginators = (options) => {
4962
4225
  return (options.client ?? client).post({
@@ -5647,7 +4910,7 @@ const getOffice = (options) => {
5647
4910
  * Search originators with filters
5648
4911
  * 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
4912
  */
5650
- const listOriginators2 = (options) => {
4913
+ const listOriginators = (options) => {
5651
4914
  return (options?.client ?? client).post({
5652
4915
  security: [{
5653
4916
  name: "x-api-key",
@@ -5667,7 +4930,7 @@ const listOriginators2 = (options) => {
5667
4930
  /**
5668
4931
  * Configurable chart (measure × slice) over one LO's loans
5669
4932
  */
5670
- const originatorAnalyticsChart2 = (options) => {
4933
+ const originatorAnalyticsChart = (options) => {
5671
4934
  return (options?.client ?? client).post({
5672
4935
  security: [{
5673
4936
  name: "x-api-key",
@@ -5687,7 +4950,7 @@ const originatorAnalyticsChart2 = (options) => {
5687
4950
  /**
5688
4951
  * Production summary with previous-period comparison
5689
4952
  */
5690
- const originatorAnalyticsSummary2 = (options) => {
4953
+ const originatorAnalyticsSummary = (options) => {
5691
4954
  return (options?.client ?? client).post({
5692
4955
  security: [{
5693
4956
  name: "x-api-key",
@@ -5707,7 +4970,7 @@ const originatorAnalyticsSummary2 = (options) => {
5707
4970
  /**
5708
4971
  * Originator volume / units over time
5709
4972
  */
5710
- const originatorAnalyticsTimeSeries2 = (options) => {
4973
+ const originatorAnalyticsTimeSeries = (options) => {
5711
4974
  return (options?.client ?? client).post({
5712
4975
  security: [{
5713
4976
  name: "x-api-key",
@@ -5734,7 +4997,7 @@ const originatorAnalyticsTimeSeries2 = (options) => {
5734
4997
  *
5735
4998
  * **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
4999
  */
5737
- const submitOriginatorsBulkDelivery2 = (options) => {
5000
+ const submitOriginatorsBulkDelivery = (options) => {
5738
5001
  return (options?.client ?? client).post({
5739
5002
  security: [{
5740
5003
  name: "x-api-key",
@@ -5759,7 +5022,7 @@ const submitOriginatorsBulkDelivery2 = (options) => {
5759
5022
  *
5760
5023
  * 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
5024
  */
5762
- const cancelOriginatorsBulkDeliveryJob2 = (options) => {
5025
+ const cancelOriginatorsBulkDeliveryJob = (options) => {
5763
5026
  return (options.client ?? client).delete({
5764
5027
  security: [{
5765
5028
  name: "x-api-key",
@@ -5775,7 +5038,7 @@ const cancelOriginatorsBulkDeliveryJob2 = (options) => {
5775
5038
  /**
5776
5039
  * Get bulk-delivery job status for originators
5777
5040
  */
5778
- const getOriginatorsBulkDeliveryJob2 = (options) => {
5041
+ const getOriginatorsBulkDeliveryJob = (options) => {
5779
5042
  return (options.client ?? client).get({
5780
5043
  security: [{
5781
5044
  name: "x-api-key",
@@ -5792,7 +5055,7 @@ const getOriginatorsBulkDeliveryJob2 = (options) => {
5792
5055
  * Count originators matching filters
5793
5056
  * 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
5057
  */
5795
- const countOriginators2 = (options) => {
5058
+ const countOriginators = (options) => {
5796
5059
  return (options?.client ?? client).post({
5797
5060
  security: [{
5798
5061
  name: "x-api-key",
@@ -5829,7 +5092,7 @@ const originatorRelated = (options) => {
5829
5092
  /**
5830
5093
  * Get originator by NMLS ID
5831
5094
  */
5832
- const getOriginator2 = (options) => {
5095
+ const getOriginator = (options) => {
5833
5096
  return (options.client ?? client).get({
5834
5097
  security: [{
5835
5098
  name: "x-api-key",
@@ -5846,7 +5109,7 @@ const getOriginator2 = (options) => {
5846
5109
  * Real-estate agents this LO co-closed with
5847
5110
  * 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
5111
  */
5849
- const originatorAgents2 = (options) => {
5112
+ const originatorAgents = (options) => {
5850
5113
  return (options.client ?? client).post({
5851
5114
  security: [{
5852
5115
  name: "x-api-key",
@@ -5866,7 +5129,7 @@ const originatorAgents2 = (options) => {
5866
5129
  /**
5867
5130
  * Branch (broker) history for this LO
5868
5131
  */
5869
- const originatorBranches2 = (options) => {
5132
+ const originatorBranches = (options) => {
5870
5133
  return (options.client ?? client).post({
5871
5134
  security: [{
5872
5135
  name: "x-api-key",
@@ -5886,7 +5149,7 @@ const originatorBranches2 = (options) => {
5886
5149
  /**
5887
5150
  * Broker shops this LO originated loans through (name-resolved)
5888
5151
  */
5889
- const originatorBrokers2 = (options) => {
5152
+ const originatorBrokers = (options) => {
5890
5153
  return (options.client ?? client).post({
5891
5154
  security: [{
5892
5155
  name: "x-api-key",
@@ -5906,7 +5169,7 @@ const originatorBrokers2 = (options) => {
5906
5169
  /**
5907
5170
  * City volume breakdown across this LO's loans
5908
5171
  */
5909
- const originatorCitiesBreakdown2 = (options) => {
5172
+ const originatorCitiesBreakdown = (options) => {
5910
5173
  return (options.client ?? client).post({
5911
5174
  security: [{
5912
5175
  name: "x-api-key",
@@ -5926,7 +5189,7 @@ const originatorCitiesBreakdown2 = (options) => {
5926
5189
  /**
5927
5190
  * Funding companies (employer history) for this LO
5928
5191
  */
5929
- const originatorCompanies2 = (options) => {
5192
+ const originatorCompanies = (options) => {
5930
5193
  return (options.client ?? client).post({
5931
5194
  security: [{
5932
5195
  name: "x-api-key",
@@ -5946,7 +5209,7 @@ const originatorCompanies2 = (options) => {
5946
5209
  /**
5947
5210
  * County (FIPS) volume breakdown across this LO's loans
5948
5211
  */
5949
- const originatorCountiesBreakdown2 = (options) => {
5212
+ const originatorCountiesBreakdown = (options) => {
5950
5213
  return (options.client ?? client).post({
5951
5214
  security: [{
5952
5215
  name: "x-api-key",
@@ -5966,7 +5229,7 @@ const originatorCountiesBreakdown2 = (options) => {
5966
5229
  /**
5967
5230
  * Lenders this LO has originated through
5968
5231
  */
5969
- const originatorLenders2 = (options) => {
5232
+ const originatorLenders = (options) => {
5970
5233
  return (options.client ?? client).post({
5971
5234
  security: [{
5972
5235
  name: "x-api-key",
@@ -5986,7 +5249,7 @@ const originatorLenders2 = (options) => {
5986
5249
  /**
5987
5250
  * Real-estate offices this LO closed through (with sponsoring company)
5988
5251
  */
5989
- const originatorOffices2 = (options) => {
5252
+ const originatorOffices = (options) => {
5990
5253
  return (options.client ?? client).post({
5991
5254
  security: [{
5992
5255
  name: "x-api-key",
@@ -6006,7 +5269,7 @@ const originatorOffices2 = (options) => {
6006
5269
  /**
6007
5270
  * State volume breakdown across this LO's loans
6008
5271
  */
6009
- const originatorStatesBreakdown2 = (options) => {
5272
+ const originatorStatesBreakdown = (options) => {
6010
5273
  return (options.client ?? client).post({
6011
5274
  security: [{
6012
5275
  name: "x-api-key",
@@ -6027,7 +5290,7 @@ const originatorStatesBreakdown2 = (options) => {
6027
5290
  * Title companies on this LO's loans (spellings merged)
6028
5291
  * 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
5292
  */
6030
- const originatorTitleCompanies2 = (options) => {
5293
+ const originatorTitleCompanies = (options) => {
6031
5294
  return (options.client ?? client).post({
6032
5295
  security: [{
6033
5296
  name: "x-api-key",
@@ -6047,7 +5310,7 @@ const originatorTitleCompanies2 = (options) => {
6047
5310
  /**
6048
5311
  * Zip-code volume breakdown
6049
5312
  */
6050
- const originatorZipCodes2 = (options) => {
5313
+ const originatorZipCodes = (options) => {
6051
5314
  return (options.client ?? client).post({
6052
5315
  security: [{
6053
5316
  name: "x-api-key",
@@ -6067,7 +5330,7 @@ const originatorZipCodes2 = (options) => {
6067
5330
  /**
6068
5331
  * Loans originated by this LO
6069
5332
  */
6070
- const originatorLoans2 = (options) => {
5333
+ const originatorLoans = (options) => {
6071
5334
  return (options.client ?? client).post({
6072
5335
  security: [{
6073
5336
  name: "x-api-key",
@@ -6088,7 +5351,7 @@ const originatorLoans2 = (options) => {
6088
5351
  * The markets this LO lends in
6089
5352
  * 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
5353
  */
6091
- const originatorMarkets2 = (options) => {
5354
+ const originatorMarkets = (options) => {
6092
5355
  return (options.client ?? client).post({
6093
5356
  security: [{
6094
5357
  name: "x-api-key",
@@ -6109,7 +5372,7 @@ const originatorMarkets2 = (options) => {
6109
5372
  * Properties this loan officer has touched
6110
5373
  * 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
5374
  */
6112
- const originatorProperties2 = (options) => {
5375
+ const originatorProperties = (options) => {
6113
5376
  return (options.client ?? client).post({
6114
5377
  security: [{
6115
5378
  name: "x-api-key",
@@ -6700,4 +5963,4 @@ const getSearchToken = (options) => {
6700
5963
  });
6701
5964
  };
6702
5965
  //#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 };
5966
+ 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, createAlertSubscription, createClient, createCrmList, createCrmListField, createCrmManualRecord, createCrmMeeting, createCrmObjectField, createCrmRecord, createCrmTask, createCrmTemplate, createSavedFilter, crmLenderChannels, crmLoLoanMix, crmLoMomentum, crmLoSponsorLocation, crmSimilarOriginators, declineCrmMiUpdate, deleteAlertSubscription, 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, listAlertRecipes, listAlertSubscriptions, 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, previewAlertRecipe, 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, subscribeAlertRecipe, suggestLocations, transcribeCrmCall, transferCrmListOwnership, unshareCrmTemplate, unsubscribeAlertRecipe, updateAlertConditions, updateCrmContactMethod, updateCrmList, updateCrmListField, updateCrmMeeting, updateCrmObjectField, updateCrmTask, updateCrmTemplate, updateMe, updateSavedFilter };