@homespot-sdk/core 0.0.339 → 0.0.340

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.
@@ -203,6 +203,9 @@ export const RolesRequestSchema = {
203
203
  'MANAGE_CONTACT',
204
204
  'MANAGE_ANY_CONTACT',
205
205
  'ASSIGN_CONTACT',
206
+ 'MANAGE_BOARD',
207
+ 'MANAGE_DEAL',
208
+ 'DELETE_DEAL',
206
209
  ],
207
210
  },
208
211
  },
@@ -287,6 +290,118 @@ export const RescheduleRequestSchema = {
287
290
  },
288
291
  required: ['start'],
289
292
  };
293
+ export const CommentBodyRequestSchema = {
294
+ type: 'object',
295
+ properties: {
296
+ body: {
297
+ type: 'string',
298
+ maxLength: 4000,
299
+ minLength: 0,
300
+ },
301
+ },
302
+ required: ['body'],
303
+ };
304
+ export const SetDealValueRequestSchema = {
305
+ type: 'object',
306
+ properties: {
307
+ value: {
308
+ type: 'number',
309
+ },
310
+ },
311
+ };
312
+ export const TransferDealRequestSchema = {
313
+ type: 'object',
314
+ properties: {
315
+ targetBoardId: {
316
+ type: 'string',
317
+ format: 'uuid',
318
+ },
319
+ targetStageId: {
320
+ type: 'string',
321
+ format: 'uuid',
322
+ },
323
+ },
324
+ required: ['targetBoardId', 'targetStageId'],
325
+ };
326
+ export const RenameDealRequestSchema = {
327
+ type: 'object',
328
+ properties: {
329
+ title: {
330
+ type: 'string',
331
+ },
332
+ },
333
+ required: ['title'],
334
+ };
335
+ export const MoveDealRequestSchema = {
336
+ type: 'object',
337
+ properties: {
338
+ targetStageId: {
339
+ type: 'string',
340
+ format: 'uuid',
341
+ },
342
+ },
343
+ required: ['targetStageId'],
344
+ };
345
+ export const MarkDealLostRequestSchema = {
346
+ type: 'object',
347
+ properties: {
348
+ reason: {
349
+ type: 'string',
350
+ enum: [
351
+ 'NOT_WORKING_WITH_AGENTS',
352
+ 'NOT_RESPONDING',
353
+ 'ALREADY_SOLD',
354
+ 'COULD_NOT_NEGOTIATE_PRICE',
355
+ 'CHOSE_ANOTHER_AGENCY',
356
+ 'CHANGED_PLANS',
357
+ 'OUT_OF_BUDGET',
358
+ 'SPAM',
359
+ 'OTHER',
360
+ ],
361
+ },
362
+ },
363
+ required: ['reason'],
364
+ };
365
+ export const SetExpectedCloseDateRequestSchema = {
366
+ type: 'object',
367
+ properties: {
368
+ expectedCloseDate: {
369
+ type: 'string',
370
+ format: 'date',
371
+ },
372
+ },
373
+ };
374
+ export const DescribeDealRequestSchema = {
375
+ type: 'object',
376
+ properties: {
377
+ description: {
378
+ type: 'string',
379
+ },
380
+ },
381
+ };
382
+ export const SetDealCommissionRequestSchema = {
383
+ type: 'object',
384
+ properties: {
385
+ type: {
386
+ type: 'string',
387
+ enum: ['NOT_SET', 'FIXED', 'PERCENTAGE', 'MONTHS_OF_RENT'],
388
+ },
389
+ value: {
390
+ type: 'number',
391
+ description: 'Amount for FIXED, fraction (0,1] for PERCENTAGE, factor for MONTHS_OF_RENT',
392
+ },
393
+ },
394
+ required: ['type'],
395
+ };
396
+ export const RenameTaskRequestSchema = {
397
+ type: 'object',
398
+ properties: {
399
+ title: {
400
+ type: 'string',
401
+ },
402
+ },
403
+ required: ['title'],
404
+ };
290
405
  export const UpdateListingPriceRequestSchema = {
291
406
  type: 'object',
292
407
  properties: {
@@ -445,17 +560,6 @@ export const RecommendListingRequestSchema = {
445
560
  },
446
561
  required: ['externalListingId', 'externalPropertyId'],
447
562
  };
448
- export const CommentBodyRequestSchema = {
449
- type: 'object',
450
- properties: {
451
- body: {
452
- type: 'string',
453
- maxLength: 4000,
454
- minLength: 0,
455
- },
456
- },
457
- required: ['body'],
458
- };
459
563
  export const PhoneRequestSchema = {
460
564
  type: 'object',
461
565
  properties: {
@@ -519,86 +623,100 @@ export const UpdateContactDetailsRequestSchema = {
519
623
  nullifyFavoriteContactMethod: {
520
624
  type: 'boolean',
521
625
  },
522
- status: {
626
+ },
627
+ };
628
+ export const ReassignMemberRequestSchema = {
629
+ type: 'object',
630
+ properties: {
631
+ memberId: {
523
632
  type: 'string',
524
- enum: [
525
- 'NEW',
526
- 'ON_HOLD',
527
- 'COLD',
528
- 'WARM',
529
- 'HOT',
530
- 'WAITING_PAYMENT',
531
- 'LOST',
532
- 'WON',
533
- ],
633
+ format: 'uuid',
534
634
  },
535
- priority: {
536
- type: 'string',
537
- enum: ['CRITICAL', 'HIGH', 'MEDIUM', 'LOW'],
635
+ },
636
+ required: ['memberId'],
637
+ };
638
+ export const ContactMergeRequestSchema = {
639
+ type: 'object',
640
+ properties: {
641
+ survivorContactId: {
642
+ type: 'integer',
643
+ format: 'int64',
644
+ },
645
+ loserContactId: {
646
+ type: 'integer',
647
+ format: 'int64',
538
648
  },
539
649
  },
650
+ required: ['loserContactId', 'survivorContactId'],
540
651
  };
541
- export const ReopenRequestSchema = {
652
+ export const RenameRequestSchema = {
542
653
  type: 'object',
543
654
  properties: {
544
- status: {
655
+ name: {
545
656
  type: 'string',
546
- enum: [
547
- 'NEW',
548
- 'ON_HOLD',
549
- 'COLD',
550
- 'WARM',
551
- 'HOT',
552
- 'WAITING_PAYMENT',
553
- 'LOST',
554
- 'WON',
555
- ],
556
657
  },
557
658
  },
659
+ required: ['name'],
558
660
  };
559
- export const RecordLostContactRequestSchema = {
661
+ export const ReorderTaskTemplatesRequestSchema = {
560
662
  type: 'object',
561
663
  properties: {
562
- reason: {
664
+ templateIds: {
665
+ type: 'array',
666
+ items: {
667
+ type: 'string',
668
+ format: 'uuid',
669
+ },
670
+ },
671
+ },
672
+ required: ['templateIds'],
673
+ };
674
+ export const RecolorStageRequestSchema = {
675
+ type: 'object',
676
+ properties: {
677
+ color: {
563
678
  type: 'string',
564
- enum: [
565
- 'NOT_WORKING_WITH_AGENTS',
566
- 'NOT_RESPONDING',
567
- 'ALREADY_SOLD',
568
- 'COULD_NOT_NEGOTIATE_PRICE',
569
- 'CHOSE_ANOTHER_AGENCY',
570
- 'CHANGED_PLANS',
571
- 'OUT_OF_BUDGET',
572
- 'SPAM',
573
- 'OTHER',
574
- ],
679
+ example: '#4F46E5',
575
680
  },
576
681
  },
577
- required: ['reason'],
682
+ required: ['color'],
578
683
  };
579
- export const ReassignMemberRequestSchema = {
684
+ export const DeactivateStageRequestSchema = {
580
685
  type: 'object',
581
686
  properties: {
582
- memberId: {
687
+ migrateToStageId: {
583
688
  type: 'string',
584
689
  format: 'uuid',
585
690
  },
586
691
  },
587
- required: ['memberId'],
588
692
  };
589
- export const ContactMergeRequestSchema = {
693
+ export const ReorderStagesRequestSchema = {
590
694
  type: 'object',
591
695
  properties: {
592
- survivorContactId: {
593
- type: 'integer',
594
- format: 'int64',
696
+ stageIds: {
697
+ type: 'array',
698
+ items: {
699
+ type: 'string',
700
+ format: 'uuid',
701
+ },
595
702
  },
596
- loserContactId: {
597
- type: 'integer',
598
- format: 'int64',
703
+ },
704
+ required: ['stageIds'],
705
+ };
706
+ export const SetDealSettingsRequestSchema = {
707
+ type: 'object',
708
+ properties: {
709
+ defaultBoardId: {
710
+ type: 'string',
711
+ format: 'uuid',
712
+ },
713
+ defaultStageId: {
714
+ type: 'string',
715
+ format: 'uuid',
716
+ description: 'Active stage of the default board; null = entry stage at use time',
599
717
  },
600
718
  },
601
- required: ['loserContactId', 'survivorContactId'],
719
+ required: ['defaultBoardId'],
602
720
  };
603
721
  export const AddressRequestSchema = {
604
722
  type: 'object',
@@ -1155,6 +1273,9 @@ export const AgencyPrincipalDtoSchema = {
1155
1273
  'MANAGE_CONTACT',
1156
1274
  'MANAGE_ANY_CONTACT',
1157
1275
  'ASSIGN_CONTACT',
1276
+ 'MANAGE_BOARD',
1277
+ 'MANAGE_DEAL',
1278
+ 'DELETE_DEAL',
1158
1279
  ],
1159
1280
  },
1160
1281
  uniqueItems: true,
@@ -1170,6 +1291,89 @@ export const AgencyPrincipalDtoSchema = {
1170
1291
  },
1171
1292
  },
1172
1293
  };
1294
+ export const IdResponseUUIDSchema = {
1295
+ type: 'object',
1296
+ properties: {
1297
+ id: {
1298
+ type: 'string',
1299
+ format: 'uuid',
1300
+ },
1301
+ },
1302
+ required: ['id'],
1303
+ };
1304
+ export const OpenDealRequestSchema = {
1305
+ type: 'object',
1306
+ properties: {
1307
+ boardId: {
1308
+ type: 'string',
1309
+ format: 'uuid',
1310
+ },
1311
+ stageId: {
1312
+ type: 'string',
1313
+ format: 'uuid',
1314
+ description: "Target stage; defaults to the board's entry stage",
1315
+ },
1316
+ title: {
1317
+ type: 'string',
1318
+ },
1319
+ contactIds: {
1320
+ type: 'array',
1321
+ items: {
1322
+ type: 'integer',
1323
+ format: 'int64',
1324
+ },
1325
+ maxItems: 20,
1326
+ minItems: 0,
1327
+ },
1328
+ ownerId: {
1329
+ type: 'string',
1330
+ format: 'uuid',
1331
+ description: 'Defaults to the acting member',
1332
+ },
1333
+ },
1334
+ required: ['boardId', 'title'],
1335
+ };
1336
+ export const LinkPropertyRequestSchema = {
1337
+ type: 'object',
1338
+ properties: {
1339
+ contactId: {
1340
+ type: 'integer',
1341
+ format: 'int64',
1342
+ },
1343
+ propertyId: {
1344
+ type: 'integer',
1345
+ format: 'int64',
1346
+ },
1347
+ },
1348
+ required: ['contactId', 'propertyId'],
1349
+ };
1350
+ export const LinkInterestRequestSchema = {
1351
+ type: 'object',
1352
+ properties: {
1353
+ contactId: {
1354
+ type: 'integer',
1355
+ format: 'int64',
1356
+ },
1357
+ interestId: {
1358
+ type: 'integer',
1359
+ format: 'int64',
1360
+ },
1361
+ },
1362
+ required: ['contactId', 'interestId'],
1363
+ };
1364
+ export const CreateAdHocTaskRequestSchema = {
1365
+ type: 'object',
1366
+ properties: {
1367
+ dealId: {
1368
+ type: 'string',
1369
+ format: 'uuid',
1370
+ },
1371
+ title: {
1372
+ type: 'string',
1373
+ },
1374
+ },
1375
+ required: ['dealId', 'title'],
1376
+ };
1173
1377
  export const SendMessageRequestSchema = {
1174
1378
  type: 'object',
1175
1379
  properties: {
@@ -1208,16 +1412,6 @@ export const ProblemDetailSchema = {
1208
1412
  },
1209
1413
  },
1210
1414
  };
1211
- export const IdResponseUUIDSchema = {
1212
- type: 'object',
1213
- properties: {
1214
- id: {
1215
- type: 'string',
1216
- format: 'uuid',
1217
- },
1218
- },
1219
- required: ['id'],
1220
- };
1221
1415
  export const AddDealRequestSchema = {
1222
1416
  discriminator: {
1223
1417
  propertyName: 'type',
@@ -1408,10 +1602,6 @@ export const OnboardClientRequestSchema = {
1408
1602
  type: 'string',
1409
1603
  enum: ['WHATSAPP', 'VIBER', 'PHONE_CALL'],
1410
1604
  },
1411
- priority: {
1412
- type: 'string',
1413
- enum: ['CRITICAL', 'HIGH', 'MEDIUM', 'LOW'],
1414
- },
1415
1605
  },
1416
1606
  required: ['contactInfo', 'contactMethods', 'phoneNumber'],
1417
1607
  };
@@ -1474,6 +1664,66 @@ export const OnboardFromSourceRequestSchema = {
1474
1664
  },
1475
1665
  required: ['phone', 'sourceLink'],
1476
1666
  };
1667
+ export const CreateBoardRequestSchema = {
1668
+ type: 'object',
1669
+ properties: {
1670
+ kind: {
1671
+ type: 'string',
1672
+ enum: ['OWNER', 'SEEKER'],
1673
+ },
1674
+ name: {
1675
+ type: 'string',
1676
+ },
1677
+ stages: {
1678
+ type: 'array',
1679
+ items: {
1680
+ $ref: '#/components/schemas/StageSpecRequest',
1681
+ },
1682
+ maxItems: 30,
1683
+ minItems: 0,
1684
+ },
1685
+ },
1686
+ required: ['name'],
1687
+ };
1688
+ export const StageSpecRequestSchema = {
1689
+ type: 'object',
1690
+ properties: {
1691
+ name: {
1692
+ type: 'string',
1693
+ },
1694
+ color: {
1695
+ type: 'string',
1696
+ example: '#4F46E5',
1697
+ },
1698
+ },
1699
+ required: ['color', 'name'],
1700
+ };
1701
+ export const AddStageRequestSchema = {
1702
+ type: 'object',
1703
+ properties: {
1704
+ name: {
1705
+ type: 'string',
1706
+ },
1707
+ color: {
1708
+ type: 'string',
1709
+ example: '#4F46E5',
1710
+ },
1711
+ },
1712
+ required: ['color', 'name'],
1713
+ };
1714
+ export const AddTaskTemplateRequestSchema = {
1715
+ type: 'object',
1716
+ properties: {
1717
+ title: {
1718
+ type: 'string',
1719
+ },
1720
+ applyToDealsInStage: {
1721
+ type: 'boolean',
1722
+ description: 'Also spawn this template onto the open deals currently in the stage',
1723
+ },
1724
+ },
1725
+ required: ['applyToDealsInStage', 'title'],
1726
+ };
1477
1727
  export const ProvisionAgencyRequestSchema = {
1478
1728
  type: 'object',
1479
1729
  properties: {
@@ -1600,6 +1850,9 @@ export const OrganizationSummaryViewResponseSchema = {
1600
1850
  'MANAGE_CONTACT',
1601
1851
  'MANAGE_ANY_CONTACT',
1602
1852
  'ASSIGN_CONTACT',
1853
+ 'MANAGE_BOARD',
1854
+ 'MANAGE_DEAL',
1855
+ 'DELETE_DEAL',
1603
1856
  ],
1604
1857
  },
1605
1858
  },
@@ -1657,6 +1910,99 @@ export const UserSummaryViewResponseSchema = {
1657
1910
  },
1658
1911
  required: ['email', 'firstName', 'lastName'],
1659
1912
  };
1913
+ export const BoardWinRateSchema = {
1914
+ type: 'object',
1915
+ properties: {
1916
+ boardId: {
1917
+ type: 'string',
1918
+ format: 'uuid',
1919
+ },
1920
+ name: {
1921
+ type: 'string',
1922
+ },
1923
+ won: {
1924
+ type: 'integer',
1925
+ format: 'int64',
1926
+ },
1927
+ lost: {
1928
+ type: 'integer',
1929
+ format: 'int64',
1930
+ },
1931
+ winRatePct: {
1932
+ type: 'number',
1933
+ format: 'double',
1934
+ },
1935
+ },
1936
+ required: ['boardId', 'lost', 'name', 'winRatePct', 'won'],
1937
+ };
1938
+ export const MemberWinRateSchema = {
1939
+ type: 'object',
1940
+ properties: {
1941
+ memberId: {
1942
+ type: 'string',
1943
+ format: 'uuid',
1944
+ },
1945
+ won: {
1946
+ type: 'integer',
1947
+ format: 'int64',
1948
+ },
1949
+ lost: {
1950
+ type: 'integer',
1951
+ format: 'int64',
1952
+ },
1953
+ winRatePct: {
1954
+ type: 'number',
1955
+ format: 'double',
1956
+ },
1957
+ },
1958
+ required: ['lost', 'memberId', 'winRatePct', 'won'],
1959
+ };
1960
+ export const StatsEnvelopeWinRateStatsSchema = {
1961
+ type: 'object',
1962
+ properties: {
1963
+ period: {
1964
+ type: 'string',
1965
+ },
1966
+ computedAt: {
1967
+ type: 'string',
1968
+ format: 'date-time',
1969
+ },
1970
+ data: {
1971
+ $ref: '#/components/schemas/WinRateStats',
1972
+ },
1973
+ },
1974
+ required: ['computedAt', 'data', 'period'],
1975
+ };
1976
+ export const WinRateStatsSchema = {
1977
+ type: 'object',
1978
+ properties: {
1979
+ won: {
1980
+ type: 'integer',
1981
+ format: 'int64',
1982
+ },
1983
+ lost: {
1984
+ type: 'integer',
1985
+ format: 'int64',
1986
+ },
1987
+ winRatePct: {
1988
+ type: 'number',
1989
+ format: 'double',
1990
+ },
1991
+ boards: {
1992
+ type: 'array',
1993
+ items: {
1994
+ $ref: '#/components/schemas/BoardWinRate',
1995
+ },
1996
+ },
1997
+ members: {
1998
+ type: 'array',
1999
+ items: {
2000
+ $ref: '#/components/schemas/MemberWinRate',
2001
+ },
2002
+ },
2003
+ },
2004
+ required: ['boards', 'lost', 'members', 'winRatePct', 'won'],
2005
+ };
1660
2006
  export const DealTypePriceSchema = {
1661
2007
  type: 'object',
1662
2008
  properties: {
@@ -1902,14 +2248,6 @@ export const PipelineStatsSchema = {
1902
2248
  type: 'integer',
1903
2249
  format: 'int64',
1904
2250
  },
1905
- won: {
1906
- type: 'integer',
1907
- format: 'int64',
1908
- },
1909
- conversionRatePercent: {
1910
- type: 'number',
1911
- format: 'double',
1912
- },
1913
2251
  unassigned: {
1914
2252
  type: 'integer',
1915
2253
  format: 'int64',
@@ -1920,35 +2258,14 @@ export const PipelineStatsSchema = {
1920
2258
  $ref: '#/components/schemas/TrendPoint',
1921
2259
  },
1922
2260
  },
1923
- status: {
1924
- type: 'array',
1925
- items: {
1926
- $ref: '#/components/schemas/Slice',
1927
- },
1928
- },
1929
2261
  sourceAttribution: {
1930
2262
  type: 'array',
1931
2263
  items: {
1932
2264
  $ref: '#/components/schemas/Slice',
1933
2265
  },
1934
2266
  },
1935
- lostReasons: {
1936
- type: 'array',
1937
- items: {
1938
- $ref: '#/components/schemas/Slice',
1939
- },
1940
- },
1941
2267
  },
1942
- required: [
1943
- 'conversionRatePercent',
1944
- 'lostReasons',
1945
- 'newContactsTrend',
1946
- 'sourceAttribution',
1947
- 'status',
1948
- 'total',
1949
- 'unassigned',
1950
- 'won',
1951
- ],
2268
+ required: ['newContactsTrend', 'sourceAttribution', 'total', 'unassigned'],
1952
2269
  };
1953
2270
  export const StatsEnvelopePipelineStatsSchema = {
1954
2271
  type: 'object',
@@ -2007,17 +2324,16 @@ export const RowSchema = {
2007
2324
  photo: {
2008
2325
  type: 'string',
2009
2326
  },
2010
- contactsAssigned: {
2327
+ dealsWon: {
2011
2328
  type: 'integer',
2012
2329
  format: 'int64',
2013
2330
  },
2014
- converted: {
2015
- type: 'integer',
2016
- format: 'int64',
2331
+ wonValue: {
2332
+ type: 'number',
2017
2333
  },
2018
- conversionRatePct: {
2334
+ commission: {
2019
2335
  type: 'number',
2020
- format: 'double',
2336
+ description: 'Fixed amount, or rate/factor × deal value (null-value deals skipped)',
2021
2337
  },
2022
2338
  recommendationsSent: {
2023
2339
  type: 'integer',
@@ -2033,9 +2349,8 @@ export const RowSchema = {
2033
2349
  },
2034
2350
  },
2035
2351
  required: [
2036
- 'contactsAssigned',
2037
- 'conversionRatePct',
2038
- 'converted',
2352
+ 'commission',
2353
+ 'dealsWon',
2039
2354
  'firstName',
2040
2355
  'lastName',
2041
2356
  'likeRatePct',
@@ -2043,6 +2358,7 @@ export const RowSchema = {
2043
2358
  'photo',
2044
2359
  'recommendationsRated',
2045
2360
  'recommendationsSent',
2361
+ 'wonValue',
2046
2362
  ],
2047
2363
  };
2048
2364
  export const StatsEnvelopeLeaderboardStatsSchema = {
@@ -2238,6 +2554,149 @@ export const StatsEnvelopeDemandStatsSchema = {
2238
2554
  },
2239
2555
  required: ['computedAt', 'data', 'period'],
2240
2556
  };
2557
+ export const DealVelocityStatsSchema = {
2558
+ type: 'object',
2559
+ properties: {
2560
+ stages: {
2561
+ type: 'array',
2562
+ items: {
2563
+ $ref: '#/components/schemas/StageVelocity',
2564
+ },
2565
+ },
2566
+ },
2567
+ required: ['stages'],
2568
+ };
2569
+ export const StageVelocitySchema = {
2570
+ type: 'object',
2571
+ properties: {
2572
+ boardId: {
2573
+ type: 'string',
2574
+ format: 'uuid',
2575
+ },
2576
+ boardName: {
2577
+ type: 'string',
2578
+ },
2579
+ stageId: {
2580
+ type: 'string',
2581
+ format: 'uuid',
2582
+ },
2583
+ stageName: {
2584
+ type: 'string',
2585
+ },
2586
+ position: {
2587
+ type: 'integer',
2588
+ format: 'int32',
2589
+ },
2590
+ avgDaysInStage: {
2591
+ type: 'number',
2592
+ format: 'double',
2593
+ },
2594
+ samples: {
2595
+ type: 'integer',
2596
+ format: 'int64',
2597
+ description: 'Completed stays measured',
2598
+ },
2599
+ },
2600
+ required: [
2601
+ 'avgDaysInStage',
2602
+ 'boardId',
2603
+ 'boardName',
2604
+ 'position',
2605
+ 'samples',
2606
+ 'stageId',
2607
+ 'stageName',
2608
+ ],
2609
+ };
2610
+ export const StatsEnvelopeDealVelocityStatsSchema = {
2611
+ type: 'object',
2612
+ properties: {
2613
+ period: {
2614
+ type: 'string',
2615
+ },
2616
+ computedAt: {
2617
+ type: 'string',
2618
+ format: 'date-time',
2619
+ },
2620
+ data: {
2621
+ $ref: '#/components/schemas/DealVelocityStats',
2622
+ },
2623
+ },
2624
+ required: ['computedAt', 'data', 'period'],
2625
+ };
2626
+ export const BoardFunnelSchema = {
2627
+ type: 'object',
2628
+ properties: {
2629
+ boardId: {
2630
+ type: 'string',
2631
+ format: 'uuid',
2632
+ },
2633
+ name: {
2634
+ type: 'string',
2635
+ },
2636
+ kind: {
2637
+ type: 'string',
2638
+ },
2639
+ stages: {
2640
+ type: 'array',
2641
+ items: {
2642
+ $ref: '#/components/schemas/StageSlice',
2643
+ },
2644
+ },
2645
+ },
2646
+ required: ['boardId', 'name', 'stages'],
2647
+ };
2648
+ export const DealFunnelStatsSchema = {
2649
+ type: 'object',
2650
+ properties: {
2651
+ boards: {
2652
+ type: 'array',
2653
+ items: {
2654
+ $ref: '#/components/schemas/BoardFunnel',
2655
+ },
2656
+ },
2657
+ },
2658
+ required: ['boards'],
2659
+ };
2660
+ export const StageSliceSchema = {
2661
+ type: 'object',
2662
+ properties: {
2663
+ stageId: {
2664
+ type: 'string',
2665
+ format: 'uuid',
2666
+ },
2667
+ name: {
2668
+ type: 'string',
2669
+ },
2670
+ position: {
2671
+ type: 'integer',
2672
+ format: 'int32',
2673
+ },
2674
+ openDeals: {
2675
+ type: 'integer',
2676
+ format: 'int64',
2677
+ },
2678
+ openValue: {
2679
+ type: 'number',
2680
+ },
2681
+ },
2682
+ required: ['name', 'openDeals', 'openValue', 'position', 'stageId'],
2683
+ };
2684
+ export const StatsEnvelopeDealFunnelStatsSchema = {
2685
+ type: 'object',
2686
+ properties: {
2687
+ period: {
2688
+ type: 'string',
2689
+ },
2690
+ computedAt: {
2691
+ type: 'string',
2692
+ format: 'date-time',
2693
+ },
2694
+ data: {
2695
+ $ref: '#/components/schemas/DealFunnelStats',
2696
+ },
2697
+ },
2698
+ required: ['computedAt', 'data', 'period'],
2699
+ };
2241
2700
  export const PageMetadataSchema = {
2242
2701
  type: 'object',
2243
2702
  properties: {
@@ -2306,6 +2765,9 @@ export const RoleResponseSchema = {
2306
2765
  'MANAGE_CONTACT',
2307
2766
  'MANAGE_ANY_CONTACT',
2308
2767
  'ASSIGN_CONTACT',
2768
+ 'MANAGE_BOARD',
2769
+ 'MANAGE_DEAL',
2770
+ 'DELETE_DEAL',
2309
2771
  ],
2310
2772
  },
2311
2773
  },
@@ -2677,7 +3139,7 @@ export const GroupedPermissionsResponseSchema = {
2677
3139
  properties: {
2678
3140
  group: {
2679
3141
  type: 'string',
2680
- enum: ['AGENCY', 'ROLE', 'MEMBER', 'CONTACT'],
3142
+ enum: ['AGENCY', 'ROLE', 'MEMBER', 'CONTACT', 'BOARD', 'DEAL'],
2681
3143
  },
2682
3144
  permissions: {
2683
3145
  type: 'array',
@@ -2703,6 +3165,9 @@ export const PermissionResponseSchema = {
2703
3165
  'MANAGE_CONTACT',
2704
3166
  'MANAGE_ANY_CONTACT',
2705
3167
  'ASSIGN_CONTACT',
3168
+ 'MANAGE_BOARD',
3169
+ 'MANAGE_DEAL',
3170
+ 'DELETE_DEAL',
2706
3171
  ],
2707
3172
  },
2708
3173
  },
@@ -3314,6 +3779,9 @@ export const ContactPersonalDetailsRestrictedSchema = {
3314
3779
  'MANAGE_CONTACT',
3315
3780
  'MANAGE_ANY_CONTACT',
3316
3781
  'ASSIGN_CONTACT',
3782
+ 'MANAGE_BOARD',
3783
+ 'MANAGE_DEAL',
3784
+ 'DELETE_DEAL',
3317
3785
  ],
3318
3786
  },
3319
3787
  uniqueItems: true,
@@ -3465,7 +3933,40 @@ export const CursorPageNotificationViewSchema = {
3465
3933
  },
3466
3934
  },
3467
3935
  };
3468
- export const ListingExpiredSchema = {
3936
+ export const DealCommentedSchema = {
3937
+ properties: {
3938
+ commentId: {
3939
+ $ref: '#/components/schemas/CommentId',
3940
+ },
3941
+ dealId: {
3942
+ $ref: '#/components/schemas/DealId',
3943
+ },
3944
+ authorId: {
3945
+ $ref: '#/components/schemas/MemberId',
3946
+ },
3947
+ author: {
3948
+ type: 'string',
3949
+ },
3950
+ commentSnippet: {
3951
+ type: 'string',
3952
+ },
3953
+ kind: {
3954
+ type: 'string',
3955
+ enum: ['DEAL_COMMENTED'],
3956
+ },
3957
+ },
3958
+ required: ['kind'],
3959
+ };
3960
+ export const DealIdSchema = {
3961
+ type: 'object',
3962
+ properties: {
3963
+ value: {
3964
+ type: 'string',
3965
+ format: 'uuid',
3966
+ },
3967
+ },
3968
+ };
3969
+ export const ListingExpiredSchema = {
3469
3970
  properties: {
3470
3971
  contactId: {
3471
3972
  $ref: '#/components/schemas/ContactId',
@@ -3557,6 +4058,7 @@ export const NotificationContentSchema = {
3557
4058
  propertyName: 'kind',
3558
4059
  mapping: {
3559
4060
  AGENT_COMMENTED: '#/components/schemas/AgentCommented',
4061
+ DEAL_COMMENTED: '#/components/schemas/DealCommented',
3560
4062
  LISTING_EXPIRED: '#/components/schemas/ListingExpired',
3561
4063
  NEW_SEEKER_RATING: '#/components/schemas/NewSeekerRating',
3562
4064
  NEW_MESSAGE: '#/components/schemas/NewMessage',
@@ -3593,6 +4095,7 @@ export const NotificationViewSchema = {
3593
4095
  type: 'string',
3594
4096
  enum: [
3595
4097
  'AGENT_COMMENTED',
4098
+ 'DEAL_COMMENTED',
3596
4099
  'EXTERNAL_LISTING_EXPIRED',
3597
4100
  'LISTING_EXPIRED',
3598
4101
  'NEW_SEEKER_RATING',
@@ -3611,6 +4114,9 @@ export const NotificationViewSchema = {
3611
4114
  {
3612
4115
  $ref: '#/components/schemas/ContactAssigned',
3613
4116
  },
4117
+ {
4118
+ $ref: '#/components/schemas/DealCommented',
4119
+ },
3614
4120
  {
3615
4121
  $ref: '#/components/schemas/ListingExpired',
3616
4122
  },
@@ -4430,164 +4936,21 @@ export const InboxResponseSchema = {
4430
4936
  },
4431
4937
  },
4432
4938
  };
4433
- export const ImageSchema = {
4434
- properties: {
4435
- urls: {
4436
- type: 'array',
4437
- items: {
4438
- type: 'string',
4439
- },
4440
- },
4441
- kind: {
4442
- type: 'string',
4443
- enum: ['IMAGE'],
4444
- },
4445
- },
4446
- required: ['kind'],
4447
- };
4448
- export const MessageContentSchema = {
4449
- discriminator: {
4450
- propertyName: 'kind',
4451
- mapping: {
4452
- TEXT: '#/components/schemas/Text',
4453
- IMAGE: '#/components/schemas/Image',
4454
- UNSUPPORTED: '#/components/schemas/Unsupported',
4455
- },
4456
- },
4457
- oneOf: [
4458
- {
4459
- $ref: '#/components/schemas/Text',
4460
- },
4461
- {
4462
- $ref: '#/components/schemas/Unsupported',
4463
- },
4464
- ],
4465
- required: ['kind'],
4466
- };
4467
- export const MessageViewSchema = {
4939
+ export const CommentViewSchema = {
4468
4940
  type: 'object',
4469
4941
  properties: {
4470
4942
  id: {
4471
4943
  type: 'string',
4472
4944
  format: 'uuid',
4473
4945
  },
4474
- seq: {
4475
- type: 'integer',
4476
- format: 'int64',
4477
- },
4478
- direction: {
4479
- type: 'string',
4480
- enum: ['INBOUND', 'OUTBOUND'],
4481
- },
4482
- content: {
4483
- $ref: '#/components/schemas/MessageContent',
4484
- },
4485
- status: {
4486
- type: 'string',
4487
- enum: ['RECEIVED', 'PENDING', 'SENT', 'FAILED'],
4488
- },
4489
- sentAt: {
4490
- type: 'string',
4491
- format: 'date-time',
4492
- },
4493
- failureReason: {
4494
- type: 'string',
4495
- },
4496
- sentBy: {
4497
- $ref: '#/components/schemas/SentBy',
4498
- },
4499
- },
4500
- required: ['content', 'direction', 'id', 'sentAt', 'seq', 'status'],
4501
- };
4502
- export const SentBySchema = {
4503
- type: 'object',
4504
- properties: {
4505
- memberId: {
4506
- type: 'string',
4507
- format: 'uuid',
4508
- },
4509
- firstName: {
4510
- type: 'string',
4511
- },
4512
- lastName: {
4513
- type: 'string',
4514
- },
4515
- picture: {
4516
- type: 'string',
4517
- },
4518
- },
4519
- };
4520
- export const TextSchema = {
4521
- properties: {
4522
- body: {
4523
- type: 'string',
4524
- },
4525
- kind: {
4526
- type: 'string',
4527
- enum: ['TEXT'],
4528
- },
4529
- },
4530
- required: ['kind'],
4531
- };
4532
- export const ThreadUpdatesSchema = {
4533
- type: 'object',
4534
- properties: {
4535
- customerReadUpTo: {
4536
- type: 'string',
4537
- format: 'date-time',
4538
- },
4539
- messages: {
4540
- type: 'array',
4541
- items: {
4542
- $ref: '#/components/schemas/MessageView',
4543
- },
4544
- },
4545
- nextSeq: {
4946
+ contactId: {
4546
4947
  type: 'integer',
4547
4948
  format: 'int64',
4548
4949
  },
4549
- hasMore: {
4550
- type: 'boolean',
4551
- },
4552
- },
4553
- };
4554
- export const UnsupportedSchema = {
4555
- properties: {
4556
- kind: {
4557
- type: 'string',
4558
- enum: ['UNSUPPORTED'],
4559
- },
4560
- },
4561
- required: ['kind'],
4562
- };
4563
- export const CursorPageMessageViewSchema = {
4564
- type: 'object',
4565
- properties: {
4566
- items: {
4567
- type: 'array',
4568
- items: {
4569
- $ref: '#/components/schemas/MessageView',
4570
- },
4571
- },
4572
- nextCursor: {
4573
- type: 'string',
4574
- },
4575
- hasNext: {
4576
- type: 'boolean',
4577
- },
4578
- },
4579
- };
4580
- export const CommentViewSchema = {
4581
- type: 'object',
4582
- properties: {
4583
- id: {
4950
+ dealId: {
4584
4951
  type: 'string',
4585
4952
  format: 'uuid',
4586
4953
  },
4587
- contactId: {
4588
- type: 'integer',
4589
- format: 'int64',
4590
- },
4591
4954
  authorId: {
4592
4955
  type: 'string',
4593
4956
  format: 'uuid',
@@ -4618,7 +4981,6 @@ export const CommentViewSchema = {
4618
4981
  'authorId',
4619
4982
  'authorLastName',
4620
4983
  'body',
4621
- 'contactId',
4622
4984
  'createdAt',
4623
4985
  'id',
4624
4986
  ],
@@ -4640,39 +5002,15 @@ export const CursorPageCommentViewSchema = {
4640
5002
  },
4641
5003
  },
4642
5004
  };
4643
- export const ContactGridResponseSchema = {
5005
+ export const ContactLinkSchema = {
4644
5006
  type: 'object',
4645
5007
  properties: {
4646
- id: {
5008
+ contactId: {
4647
5009
  type: 'integer',
4648
5010
  format: 'int64',
4649
5011
  },
4650
- createdBy: {
4651
- type: 'string',
4652
- format: 'uuid',
4653
- },
4654
- assignedTo: {
4655
- $ref: '#/components/schemas/AssignedToResponse',
4656
- },
4657
- title: {
4658
- type: 'string',
4659
- },
4660
- status: {
4661
- type: 'string',
4662
- enum: [
4663
- 'NEW',
4664
- 'ON_HOLD',
4665
- 'COLD',
4666
- 'WARM',
4667
- 'HOT',
4668
- 'WAITING_PAYMENT',
4669
- 'LOST',
4670
- 'WON',
4671
- ],
4672
- },
4673
- priority: {
4674
- type: 'string',
4675
- enum: ['CRITICAL', 'HIGH', 'MEDIUM', 'LOW'],
5012
+ primary: {
5013
+ type: 'boolean',
4676
5014
  },
4677
5015
  personalDetails: {
4678
5016
  oneOf: [
@@ -4684,62 +5022,777 @@ export const ContactGridResponseSchema = {
4684
5022
  },
4685
5023
  ],
4686
5024
  },
4687
- gender: {
5025
+ contactAssignedTo: {
4688
5026
  type: 'string',
4689
- enum: ['MALE', 'FEMALE', 'UNKNOWN'],
5027
+ format: 'uuid',
4690
5028
  },
4691
- sourceType: {
5029
+ },
5030
+ required: ['contactId', 'personalDetails', 'primary'],
5031
+ };
5032
+ export const DealDetailResponseSchema = {
5033
+ type: 'object',
5034
+ properties: {
5035
+ dealId: {
4692
5036
  type: 'string',
4693
- enum: [
4694
- 'MY_HOME',
4695
- 'SS',
4696
- 'HOME_SPOT',
4697
- 'AGENCY_MEMBER',
4698
- 'FACEBOOK',
4699
- 'INSTAGRAM',
4700
- 'WHATSAPP',
4701
- 'UNKNOWN',
4702
- ],
5037
+ format: 'uuid',
4703
5038
  },
4704
- sourceLink: {
5039
+ boardId: {
4705
5040
  type: 'string',
5041
+ format: 'uuid',
4706
5042
  },
4707
- isSearching: {
4708
- type: 'boolean',
5043
+ boardName: {
5044
+ type: 'string',
4709
5045
  },
4710
- isListing: {
4711
- type: 'boolean',
5046
+ stageId: {
5047
+ type: 'string',
5048
+ format: 'uuid',
4712
5049
  },
4713
- createdAt: {
5050
+ stageName: {
4714
5051
  type: 'string',
4715
- format: 'date-time',
4716
5052
  },
4717
- updatedAt: {
5053
+ stageColor: {
5054
+ type: 'string',
5055
+ },
5056
+ stageEnteredAt: {
4718
5057
  type: 'string',
4719
5058
  format: 'date-time',
4720
5059
  },
4721
- },
4722
- required: [
4723
- 'createdAt',
4724
- 'id',
4725
- 'isListing',
4726
- 'isSearching',
4727
- 'personalDetails',
4728
- 'status',
4729
- 'updatedAt',
4730
- ],
4731
- };
4732
- export const PagedModelContactGridResponseSchema = {
4733
- type: 'object',
4734
- properties: {
4735
- content: {
4736
- type: 'array',
4737
- items: {
4738
- $ref: '#/components/schemas/ContactGridResponse',
4739
- },
5060
+ title: {
5061
+ type: 'string',
4740
5062
  },
4741
- page: {
4742
- $ref: '#/components/schemas/PageMetadata',
5063
+ description: {
5064
+ type: 'string',
5065
+ },
5066
+ value: {
5067
+ type: 'number',
5068
+ },
5069
+ commissionType: {
5070
+ type: 'string',
5071
+ enum: ['NOT_SET', 'FIXED', 'PERCENTAGE', 'MONTHS_OF_RENT'],
5072
+ },
5073
+ commissionValue: {
5074
+ type: 'number',
5075
+ },
5076
+ expectedCloseDate: {
5077
+ type: 'string',
5078
+ format: 'date',
5079
+ },
5080
+ ownerId: {
5081
+ type: 'string',
5082
+ format: 'uuid',
5083
+ },
5084
+ outcome: {
5085
+ type: 'string',
5086
+ enum: ['WON', 'LOST'],
5087
+ },
5088
+ lostReason: {
5089
+ type: 'string',
5090
+ enum: [
5091
+ 'NOT_WORKING_WITH_AGENTS',
5092
+ 'NOT_RESPONDING',
5093
+ 'ALREADY_SOLD',
5094
+ 'COULD_NOT_NEGOTIATE_PRICE',
5095
+ 'CHOSE_ANOTHER_AGENCY',
5096
+ 'CHANGED_PLANS',
5097
+ 'OUT_OF_BUDGET',
5098
+ 'SPAM',
5099
+ 'OTHER',
5100
+ ],
5101
+ },
5102
+ closedAt: {
5103
+ type: 'string',
5104
+ format: 'date-time',
5105
+ },
5106
+ createdBy: {
5107
+ type: 'string',
5108
+ format: 'uuid',
5109
+ },
5110
+ createdAt: {
5111
+ type: 'string',
5112
+ format: 'date-time',
5113
+ },
5114
+ contacts: {
5115
+ type: 'array',
5116
+ items: {
5117
+ $ref: '#/components/schemas/ContactLink',
5118
+ },
5119
+ },
5120
+ participants: {
5121
+ type: 'array',
5122
+ items: {
5123
+ $ref: '#/components/schemas/Participant',
5124
+ },
5125
+ },
5126
+ interests: {
5127
+ type: 'array',
5128
+ items: {
5129
+ $ref: '#/components/schemas/InterestLink',
5130
+ },
5131
+ },
5132
+ properties: {
5133
+ type: 'array',
5134
+ items: {
5135
+ $ref: '#/components/schemas/PropertyLink',
5136
+ },
5137
+ },
5138
+ taskGroups: {
5139
+ type: 'array',
5140
+ items: {
5141
+ $ref: '#/components/schemas/TaskGroup',
5142
+ },
5143
+ },
5144
+ timeline: {
5145
+ type: 'array',
5146
+ items: {
5147
+ $ref: '#/components/schemas/TimelineEntry',
5148
+ },
5149
+ },
5150
+ },
5151
+ required: [
5152
+ 'boardId',
5153
+ 'boardName',
5154
+ 'commissionType',
5155
+ 'contacts',
5156
+ 'createdAt',
5157
+ 'dealId',
5158
+ 'interests',
5159
+ 'participants',
5160
+ 'properties',
5161
+ 'stageColor',
5162
+ 'stageEnteredAt',
5163
+ 'stageId',
5164
+ 'stageName',
5165
+ 'taskGroups',
5166
+ 'timeline',
5167
+ 'title',
5168
+ ],
5169
+ };
5170
+ export const InterestLinkSchema = {
5171
+ type: 'object',
5172
+ properties: {
5173
+ interestId: {
5174
+ type: 'integer',
5175
+ format: 'int64',
5176
+ },
5177
+ contactId: {
5178
+ type: 'integer',
5179
+ format: 'int64',
5180
+ },
5181
+ title: {
5182
+ type: 'string',
5183
+ },
5184
+ },
5185
+ required: ['contactId', 'interestId'],
5186
+ };
5187
+ export const ParticipantSchema = {
5188
+ type: 'object',
5189
+ properties: {
5190
+ memberId: {
5191
+ type: 'string',
5192
+ format: 'uuid',
5193
+ },
5194
+ firstName: {
5195
+ type: 'string',
5196
+ },
5197
+ lastName: {
5198
+ type: 'string',
5199
+ },
5200
+ photo: {
5201
+ type: 'string',
5202
+ },
5203
+ owner: {
5204
+ type: 'boolean',
5205
+ },
5206
+ },
5207
+ required: ['memberId', 'owner'],
5208
+ };
5209
+ export const PropertyLinkSchema = {
5210
+ type: 'object',
5211
+ properties: {
5212
+ propertyId: {
5213
+ type: 'integer',
5214
+ format: 'int64',
5215
+ },
5216
+ contactId: {
5217
+ type: 'integer',
5218
+ format: 'int64',
5219
+ },
5220
+ title: {
5221
+ type: 'string',
5222
+ },
5223
+ },
5224
+ required: ['contactId', 'propertyId'],
5225
+ };
5226
+ export const TaskGroupSchema = {
5227
+ type: 'object',
5228
+ properties: {
5229
+ kind: {
5230
+ type: 'string',
5231
+ enum: ['CURRENT_STAGE', 'LEFTOVER', 'AD_HOC'],
5232
+ },
5233
+ stageId: {
5234
+ type: 'string',
5235
+ format: 'uuid',
5236
+ },
5237
+ stageName: {
5238
+ type: 'string',
5239
+ },
5240
+ tasks: {
5241
+ type: 'array',
5242
+ items: {
5243
+ $ref: '#/components/schemas/TaskItem',
5244
+ },
5245
+ },
5246
+ },
5247
+ required: ['kind', 'tasks'],
5248
+ };
5249
+ export const TaskItemSchema = {
5250
+ type: 'object',
5251
+ properties: {
5252
+ taskId: {
5253
+ type: 'string',
5254
+ format: 'uuid',
5255
+ },
5256
+ title: {
5257
+ type: 'string',
5258
+ },
5259
+ position: {
5260
+ type: 'integer',
5261
+ format: 'int32',
5262
+ },
5263
+ fromTemplate: {
5264
+ type: 'boolean',
5265
+ },
5266
+ completedAt: {
5267
+ type: 'string',
5268
+ format: 'date-time',
5269
+ },
5270
+ completedBy: {
5271
+ type: 'string',
5272
+ format: 'uuid',
5273
+ },
5274
+ },
5275
+ required: ['fromTemplate', 'position', 'taskId', 'title'],
5276
+ };
5277
+ export const TimelineEntrySchema = {
5278
+ type: 'object',
5279
+ properties: {
5280
+ fromStageId: {
5281
+ type: 'string',
5282
+ format: 'uuid',
5283
+ },
5284
+ fromStageName: {
5285
+ type: 'string',
5286
+ },
5287
+ toStageId: {
5288
+ type: 'string',
5289
+ format: 'uuid',
5290
+ },
5291
+ toStageName: {
5292
+ type: 'string',
5293
+ },
5294
+ boardChanged: {
5295
+ type: 'boolean',
5296
+ },
5297
+ outcome: {
5298
+ type: 'string',
5299
+ enum: ['WON', 'LOST'],
5300
+ },
5301
+ movedBy: {
5302
+ type: 'string',
5303
+ format: 'uuid',
5304
+ },
5305
+ occurredAt: {
5306
+ type: 'string',
5307
+ format: 'date-time',
5308
+ },
5309
+ },
5310
+ required: ['boardChanged', 'occurredAt'],
5311
+ };
5312
+ export const ContactDealResponseSchema = {
5313
+ type: 'object',
5314
+ properties: {
5315
+ dealId: {
5316
+ type: 'string',
5317
+ format: 'uuid',
5318
+ },
5319
+ title: {
5320
+ type: 'string',
5321
+ },
5322
+ boardId: {
5323
+ type: 'string',
5324
+ format: 'uuid',
5325
+ },
5326
+ boardName: {
5327
+ type: 'string',
5328
+ },
5329
+ stageId: {
5330
+ type: 'string',
5331
+ format: 'uuid',
5332
+ },
5333
+ stageName: {
5334
+ type: 'string',
5335
+ },
5336
+ outcome: {
5337
+ type: 'string',
5338
+ enum: ['WON', 'LOST'],
5339
+ },
5340
+ value: {
5341
+ type: 'number',
5342
+ },
5343
+ primary: {
5344
+ type: 'boolean',
5345
+ },
5346
+ },
5347
+ required: [
5348
+ 'boardId',
5349
+ 'boardName',
5350
+ 'dealId',
5351
+ 'primary',
5352
+ 'stageId',
5353
+ 'stageName',
5354
+ 'title',
5355
+ ],
5356
+ };
5357
+ export const BoardGridResponseSchema = {
5358
+ type: 'object',
5359
+ properties: {
5360
+ boardId: {
5361
+ type: 'string',
5362
+ format: 'uuid',
5363
+ },
5364
+ name: {
5365
+ type: 'string',
5366
+ },
5367
+ kind: {
5368
+ type: 'string',
5369
+ enum: ['OWNER', 'SEEKER'],
5370
+ },
5371
+ archived: {
5372
+ type: 'boolean',
5373
+ },
5374
+ columns: {
5375
+ type: 'array',
5376
+ items: {
5377
+ $ref: '#/components/schemas/Column',
5378
+ },
5379
+ },
5380
+ },
5381
+ required: ['archived', 'boardId', 'columns', 'name'],
5382
+ };
5383
+ export const CardSchema = {
5384
+ type: 'object',
5385
+ properties: {
5386
+ dealId: {
5387
+ type: 'string',
5388
+ format: 'uuid',
5389
+ },
5390
+ title: {
5391
+ type: 'string',
5392
+ },
5393
+ value: {
5394
+ type: 'number',
5395
+ },
5396
+ ownerId: {
5397
+ type: 'string',
5398
+ format: 'uuid',
5399
+ },
5400
+ primaryContactId: {
5401
+ type: 'integer',
5402
+ format: 'int64',
5403
+ },
5404
+ primaryContact: {
5405
+ oneOf: [
5406
+ {
5407
+ $ref: '#/components/schemas/ContactPersonalDetailsRestricted',
5408
+ },
5409
+ {
5410
+ $ref: '#/components/schemas/ContactPersonalDetailsVisible',
5411
+ },
5412
+ ],
5413
+ },
5414
+ contactAssignedTo: {
5415
+ type: 'string',
5416
+ format: 'uuid',
5417
+ },
5418
+ stageEnteredAt: {
5419
+ type: 'string',
5420
+ format: 'date-time',
5421
+ },
5422
+ daysInStage: {
5423
+ type: 'integer',
5424
+ format: 'int64',
5425
+ },
5426
+ openTasks: {
5427
+ type: 'integer',
5428
+ format: 'int64',
5429
+ },
5430
+ totalTasks: {
5431
+ type: 'integer',
5432
+ format: 'int64',
5433
+ },
5434
+ hasLeftoverOpenTasks: {
5435
+ type: 'boolean',
5436
+ },
5437
+ },
5438
+ required: [
5439
+ 'daysInStage',
5440
+ 'dealId',
5441
+ 'hasLeftoverOpenTasks',
5442
+ 'openTasks',
5443
+ 'stageEnteredAt',
5444
+ 'title',
5445
+ 'totalTasks',
5446
+ ],
5447
+ };
5448
+ export const ColumnSchema = {
5449
+ type: 'object',
5450
+ properties: {
5451
+ stageId: {
5452
+ type: 'string',
5453
+ format: 'uuid',
5454
+ },
5455
+ name: {
5456
+ type: 'string',
5457
+ },
5458
+ color: {
5459
+ type: 'string',
5460
+ },
5461
+ position: {
5462
+ type: 'integer',
5463
+ format: 'int32',
5464
+ },
5465
+ totalDeals: {
5466
+ type: 'integer',
5467
+ format: 'int64',
5468
+ },
5469
+ totalValue: {
5470
+ type: 'number',
5471
+ },
5472
+ cards: {
5473
+ type: 'array',
5474
+ items: {
5475
+ $ref: '#/components/schemas/Card',
5476
+ },
5477
+ },
5478
+ },
5479
+ required: [
5480
+ 'cards',
5481
+ 'color',
5482
+ 'name',
5483
+ 'position',
5484
+ 'stageId',
5485
+ 'totalDeals',
5486
+ 'totalValue',
5487
+ ],
5488
+ };
5489
+ export const ClosedDealResponseSchema = {
5490
+ type: 'object',
5491
+ properties: {
5492
+ dealId: {
5493
+ type: 'string',
5494
+ format: 'uuid',
5495
+ },
5496
+ title: {
5497
+ type: 'string',
5498
+ },
5499
+ value: {
5500
+ type: 'number',
5501
+ },
5502
+ ownerId: {
5503
+ type: 'string',
5504
+ format: 'uuid',
5505
+ },
5506
+ primaryContactId: {
5507
+ type: 'integer',
5508
+ format: 'int64',
5509
+ },
5510
+ primaryContact: {
5511
+ oneOf: [
5512
+ {
5513
+ $ref: '#/components/schemas/ContactPersonalDetailsRestricted',
5514
+ },
5515
+ {
5516
+ $ref: '#/components/schemas/ContactPersonalDetailsVisible',
5517
+ },
5518
+ ],
5519
+ },
5520
+ contactAssignedTo: {
5521
+ type: 'string',
5522
+ format: 'uuid',
5523
+ },
5524
+ outcome: {
5525
+ type: 'string',
5526
+ enum: ['WON', 'LOST'],
5527
+ },
5528
+ lostReason: {
5529
+ type: 'string',
5530
+ enum: [
5531
+ 'NOT_WORKING_WITH_AGENTS',
5532
+ 'NOT_RESPONDING',
5533
+ 'ALREADY_SOLD',
5534
+ 'COULD_NOT_NEGOTIATE_PRICE',
5535
+ 'CHOSE_ANOTHER_AGENCY',
5536
+ 'CHANGED_PLANS',
5537
+ 'OUT_OF_BUDGET',
5538
+ 'SPAM',
5539
+ 'OTHER',
5540
+ ],
5541
+ },
5542
+ closedAt: {
5543
+ type: 'string',
5544
+ format: 'date-time',
5545
+ },
5546
+ stageName: {
5547
+ type: 'string',
5548
+ description: 'Stage the deal closed from',
5549
+ },
5550
+ },
5551
+ required: ['closedAt', 'dealId', 'outcome', 'stageName', 'title'],
5552
+ };
5553
+ export const PagedModelClosedDealResponseSchema = {
5554
+ type: 'object',
5555
+ properties: {
5556
+ content: {
5557
+ type: 'array',
5558
+ items: {
5559
+ $ref: '#/components/schemas/ClosedDealResponse',
5560
+ },
5561
+ },
5562
+ page: {
5563
+ $ref: '#/components/schemas/PageMetadata',
5564
+ },
5565
+ },
5566
+ };
5567
+ export const ImageSchema = {
5568
+ properties: {
5569
+ urls: {
5570
+ type: 'array',
5571
+ items: {
5572
+ type: 'string',
5573
+ },
5574
+ },
5575
+ kind: {
5576
+ type: 'string',
5577
+ enum: ['IMAGE'],
5578
+ },
5579
+ },
5580
+ required: ['kind'],
5581
+ };
5582
+ export const MessageContentSchema = {
5583
+ discriminator: {
5584
+ propertyName: 'kind',
5585
+ mapping: {
5586
+ TEXT: '#/components/schemas/Text',
5587
+ IMAGE: '#/components/schemas/Image',
5588
+ UNSUPPORTED: '#/components/schemas/Unsupported',
5589
+ },
5590
+ },
5591
+ oneOf: [
5592
+ {
5593
+ $ref: '#/components/schemas/Text',
5594
+ },
5595
+ {
5596
+ $ref: '#/components/schemas/Unsupported',
5597
+ },
5598
+ ],
5599
+ required: ['kind'],
5600
+ };
5601
+ export const MessageViewSchema = {
5602
+ type: 'object',
5603
+ properties: {
5604
+ id: {
5605
+ type: 'string',
5606
+ format: 'uuid',
5607
+ },
5608
+ seq: {
5609
+ type: 'integer',
5610
+ format: 'int64',
5611
+ },
5612
+ direction: {
5613
+ type: 'string',
5614
+ enum: ['INBOUND', 'OUTBOUND'],
5615
+ },
5616
+ content: {
5617
+ $ref: '#/components/schemas/MessageContent',
5618
+ },
5619
+ status: {
5620
+ type: 'string',
5621
+ enum: ['RECEIVED', 'PENDING', 'SENT', 'FAILED'],
5622
+ },
5623
+ sentAt: {
5624
+ type: 'string',
5625
+ format: 'date-time',
5626
+ },
5627
+ failureReason: {
5628
+ type: 'string',
5629
+ },
5630
+ sentBy: {
5631
+ $ref: '#/components/schemas/SentBy',
5632
+ },
5633
+ },
5634
+ required: ['content', 'direction', 'id', 'sentAt', 'seq', 'status'],
5635
+ };
5636
+ export const SentBySchema = {
5637
+ type: 'object',
5638
+ properties: {
5639
+ memberId: {
5640
+ type: 'string',
5641
+ format: 'uuid',
5642
+ },
5643
+ firstName: {
5644
+ type: 'string',
5645
+ },
5646
+ lastName: {
5647
+ type: 'string',
5648
+ },
5649
+ picture: {
5650
+ type: 'string',
5651
+ },
5652
+ },
5653
+ };
5654
+ export const TextSchema = {
5655
+ properties: {
5656
+ body: {
5657
+ type: 'string',
5658
+ },
5659
+ kind: {
5660
+ type: 'string',
5661
+ enum: ['TEXT'],
5662
+ },
5663
+ },
5664
+ required: ['kind'],
5665
+ };
5666
+ export const ThreadUpdatesSchema = {
5667
+ type: 'object',
5668
+ properties: {
5669
+ customerReadUpTo: {
5670
+ type: 'string',
5671
+ format: 'date-time',
5672
+ },
5673
+ messages: {
5674
+ type: 'array',
5675
+ items: {
5676
+ $ref: '#/components/schemas/MessageView',
5677
+ },
5678
+ },
5679
+ nextSeq: {
5680
+ type: 'integer',
5681
+ format: 'int64',
5682
+ },
5683
+ hasMore: {
5684
+ type: 'boolean',
5685
+ },
5686
+ },
5687
+ };
5688
+ export const UnsupportedSchema = {
5689
+ properties: {
5690
+ kind: {
5691
+ type: 'string',
5692
+ enum: ['UNSUPPORTED'],
5693
+ },
5694
+ },
5695
+ required: ['kind'],
5696
+ };
5697
+ export const CursorPageMessageViewSchema = {
5698
+ type: 'object',
5699
+ properties: {
5700
+ items: {
5701
+ type: 'array',
5702
+ items: {
5703
+ $ref: '#/components/schemas/MessageView',
5704
+ },
5705
+ },
5706
+ nextCursor: {
5707
+ type: 'string',
5708
+ },
5709
+ hasNext: {
5710
+ type: 'boolean',
5711
+ },
5712
+ },
5713
+ };
5714
+ export const ContactGridResponseSchema = {
5715
+ type: 'object',
5716
+ properties: {
5717
+ id: {
5718
+ type: 'integer',
5719
+ format: 'int64',
5720
+ },
5721
+ createdBy: {
5722
+ type: 'string',
5723
+ format: 'uuid',
5724
+ },
5725
+ assignedTo: {
5726
+ $ref: '#/components/schemas/AssignedToResponse',
5727
+ },
5728
+ title: {
5729
+ type: 'string',
5730
+ },
5731
+ personalDetails: {
5732
+ oneOf: [
5733
+ {
5734
+ $ref: '#/components/schemas/ContactPersonalDetailsRestricted',
5735
+ },
5736
+ {
5737
+ $ref: '#/components/schemas/ContactPersonalDetailsVisible',
5738
+ },
5739
+ ],
5740
+ },
5741
+ gender: {
5742
+ type: 'string',
5743
+ enum: ['MALE', 'FEMALE', 'UNKNOWN'],
5744
+ },
5745
+ sourceType: {
5746
+ type: 'string',
5747
+ enum: [
5748
+ 'MY_HOME',
5749
+ 'SS',
5750
+ 'HOME_SPOT',
5751
+ 'AGENCY_MEMBER',
5752
+ 'FACEBOOK',
5753
+ 'INSTAGRAM',
5754
+ 'WHATSAPP',
5755
+ 'UNKNOWN',
5756
+ ],
5757
+ },
5758
+ sourceLink: {
5759
+ type: 'string',
5760
+ },
5761
+ isSearching: {
5762
+ type: 'boolean',
5763
+ },
5764
+ isListing: {
5765
+ type: 'boolean',
5766
+ },
5767
+ createdAt: {
5768
+ type: 'string',
5769
+ format: 'date-time',
5770
+ },
5771
+ updatedAt: {
5772
+ type: 'string',
5773
+ format: 'date-time',
5774
+ },
5775
+ },
5776
+ required: [
5777
+ 'createdAt',
5778
+ 'id',
5779
+ 'isListing',
5780
+ 'isSearching',
5781
+ 'personalDetails',
5782
+ 'updatedAt',
5783
+ ],
5784
+ };
5785
+ export const PagedModelContactGridResponseSchema = {
5786
+ type: 'object',
5787
+ properties: {
5788
+ content: {
5789
+ type: 'array',
5790
+ items: {
5791
+ $ref: '#/components/schemas/ContactGridResponse',
5792
+ },
5793
+ },
5794
+ page: {
5795
+ $ref: '#/components/schemas/PageMetadata',
4743
5796
  },
4744
5797
  },
4745
5798
  };
@@ -4808,23 +5861,6 @@ export const Client360ResponseSchema = {
4808
5861
  isListing: {
4809
5862
  type: 'boolean',
4810
5863
  },
4811
- priority: {
4812
- type: 'string',
4813
- enum: ['CRITICAL', 'HIGH', 'MEDIUM', 'LOW'],
4814
- },
4815
- status: {
4816
- type: 'string',
4817
- enum: [
4818
- 'NEW',
4819
- 'ON_HOLD',
4820
- 'COLD',
4821
- 'WARM',
4822
- 'HOT',
4823
- 'WAITING_PAYMENT',
4824
- 'LOST',
4825
- 'WON',
4826
- ],
4827
- },
4828
5864
  createdAt: {
4829
5865
  type: 'string',
4830
5866
  format: 'date-time',
@@ -4845,6 +5881,12 @@ export const Client360ResponseSchema = {
4845
5881
  $ref: '#/components/schemas/ContactPropertyResponse',
4846
5882
  },
4847
5883
  },
5884
+ deals: {
5885
+ type: 'array',
5886
+ items: {
5887
+ $ref: '#/components/schemas/ContactDealResponse',
5888
+ },
5889
+ },
4848
5890
  },
4849
5891
  required: [
4850
5892
  'agencyId',
@@ -4852,13 +5894,12 @@ export const Client360ResponseSchema = {
4852
5894
  'contactInfo',
4853
5895
  'createdAt',
4854
5896
  'createdBy',
5897
+ 'deals',
4855
5898
  'interests',
4856
5899
  'isListing',
4857
5900
  'isSearching',
4858
- 'priority',
4859
5901
  'properties',
4860
5902
  'source',
4861
- 'status',
4862
5903
  'updatedAt',
4863
5904
  ],
4864
5905
  };
@@ -4905,6 +5946,9 @@ export const ContactInfoRestrictedSchema = {
4905
5946
  'MANAGE_CONTACT',
4906
5947
  'MANAGE_ANY_CONTACT',
4907
5948
  'ASSIGN_CONTACT',
5949
+ 'MANAGE_BOARD',
5950
+ 'MANAGE_DEAL',
5951
+ 'DELETE_DEAL',
4908
5952
  ],
4909
5953
  },
4910
5954
  uniqueItems: true,
@@ -5100,9 +6144,6 @@ export const DuplicateContactInfoSchema = {
5100
6144
  type: 'integer',
5101
6145
  format: 'int64',
5102
6146
  },
5103
- isActive: {
5104
- type: 'boolean',
5105
- },
5106
6147
  firstName: {
5107
6148
  type: 'string',
5108
6149
  },
@@ -5135,7 +6176,7 @@ export const DuplicateContactInfoSchema = {
5135
6176
  $ref: '#/components/schemas/AssignedAgent',
5136
6177
  },
5137
6178
  },
5138
- required: ['contactId', 'isActive', 'phone'],
6179
+ required: ['contactId', 'phone'],
5139
6180
  };
5140
6181
  export const PhoneDuplicateCheckResponseSchema = {
5141
6182
  type: 'object',
@@ -5153,284 +6194,101 @@ export const PhoneDuplicateCheckResponseSchema = {
5153
6194
  },
5154
6195
  required: ['matches', 'policy'],
5155
6196
  };
5156
- export const CardSchema = {
6197
+ export const BoardResponseSchema = {
5157
6198
  type: 'object',
5158
6199
  properties: {
5159
- contactId: {
5160
- type: 'integer',
5161
- format: 'int64',
5162
- },
5163
- personalDetails: {
5164
- oneOf: [
5165
- {
5166
- $ref: '#/components/schemas/ContactPersonalDetailsRestricted',
5167
- },
5168
- {
5169
- $ref: '#/components/schemas/ContactPersonalDetailsVisible',
5170
- },
5171
- ],
6200
+ boardId: {
6201
+ type: 'string',
6202
+ format: 'uuid',
5172
6203
  },
5173
- priority: {
6204
+ kind: {
5174
6205
  type: 'string',
5175
- enum: ['CRITICAL', 'HIGH', 'MEDIUM', 'LOW'],
6206
+ enum: ['OWNER', 'SEEKER'],
5176
6207
  },
5177
- status: {
6208
+ name: {
5178
6209
  type: 'string',
5179
- enum: [
5180
- 'NEW',
5181
- 'ON_HOLD',
5182
- 'COLD',
5183
- 'WARM',
5184
- 'HOT',
5185
- 'WAITING_PAYMENT',
5186
- 'LOST',
5187
- 'WON',
5188
- ],
5189
6210
  },
5190
- assignedTo: {
5191
- $ref: '#/components/schemas/AssignedToResponse',
6211
+ archived: {
6212
+ type: 'boolean',
5192
6213
  },
5193
- totalCommission: {
5194
- type: 'number',
6214
+ stages: {
6215
+ type: 'array',
6216
+ items: {
6217
+ $ref: '#/components/schemas/StageResponse',
6218
+ },
5195
6219
  },
5196
- updatedAt: {
6220
+ createdAt: {
5197
6221
  type: 'string',
5198
6222
  format: 'date-time',
5199
6223
  },
5200
- preview: {
5201
- oneOf: [
5202
- {
5203
- $ref: '#/components/schemas/InterestPreview',
5204
- },
5205
- {
5206
- $ref: '#/components/schemas/PropertyPreview',
5207
- },
5208
- ],
5209
- },
5210
6224
  },
5211
- required: [
5212
- 'contactId',
5213
- 'personalDetails',
5214
- 'priority',
5215
- 'status',
5216
- 'totalCommission',
5217
- 'updatedAt',
5218
- ],
6225
+ required: ['archived', 'boardId', 'createdAt', 'name', 'stages'],
5219
6226
  };
5220
- export const ColumnSchema = {
6227
+ export const StageResponseSchema = {
5221
6228
  type: 'object',
5222
6229
  properties: {
5223
- status: {
6230
+ stageId: {
5224
6231
  type: 'string',
5225
- enum: [
5226
- 'NEW',
5227
- 'ON_HOLD',
5228
- 'COLD',
5229
- 'WARM',
5230
- 'HOT',
5231
- 'WAITING_PAYMENT',
5232
- 'LOST',
5233
- 'WON',
5234
- ],
6232
+ format: 'uuid',
5235
6233
  },
5236
- totalCommission: {
5237
- type: 'number',
6234
+ name: {
6235
+ type: 'string',
5238
6236
  },
5239
- totalContacts: {
6237
+ color: {
6238
+ type: 'string',
6239
+ },
6240
+ position: {
5240
6241
  type: 'integer',
5241
- format: 'int64',
6242
+ format: 'int32',
5242
6243
  },
5243
- cards: {
5244
- $ref: '#/components/schemas/CursorPageCard',
6244
+ active: {
6245
+ type: 'boolean',
5245
6246
  },
5246
- },
5247
- required: ['cards', 'status', 'totalCommission', 'totalContacts'],
5248
- };
5249
- export const ContactKanbanResponseSchema = {
5250
- type: 'object',
5251
- properties: {
5252
- columns: {
6247
+ taskTemplates: {
5253
6248
  type: 'array',
5254
6249
  items: {
5255
- $ref: '#/components/schemas/Column',
6250
+ $ref: '#/components/schemas/TaskTemplateResponse',
5256
6251
  },
5257
6252
  },
5258
6253
  },
5259
- required: ['columns'],
6254
+ required: [
6255
+ 'active',
6256
+ 'color',
6257
+ 'name',
6258
+ 'position',
6259
+ 'stageId',
6260
+ 'taskTemplates',
6261
+ ],
5260
6262
  };
5261
- export const CursorPageCardSchema = {
6263
+ export const TaskTemplateResponseSchema = {
5262
6264
  type: 'object',
5263
6265
  properties: {
5264
- items: {
5265
- type: 'array',
5266
- items: {
5267
- $ref: '#/components/schemas/Card',
5268
- },
6266
+ templateId: {
6267
+ type: 'string',
6268
+ format: 'uuid',
5269
6269
  },
5270
- nextCursor: {
6270
+ title: {
5271
6271
  type: 'string',
5272
6272
  },
5273
- hasNext: {
5274
- type: 'boolean',
6273
+ position: {
6274
+ type: 'integer',
6275
+ format: 'int32',
5275
6276
  },
5276
6277
  },
6278
+ required: ['position', 'templateId', 'title'],
5277
6279
  };
5278
- export const InterestPreviewSchema = {
5279
- allOf: [
5280
- {
5281
- $ref: '#/components/schemas/Preview',
5282
- },
5283
- {
5284
- type: 'object',
5285
- properties: {
5286
- interestId: {
5287
- type: 'integer',
5288
- format: 'int64',
5289
- },
5290
- listingType: {
5291
- type: 'string',
5292
- enum: ['SALE', 'RENT', 'DAILY_RENT', 'PLEDGE'],
5293
- },
5294
- propertyTypes: {
5295
- type: 'array',
5296
- items: {
5297
- type: 'string',
5298
- enum: [
5299
- 'HOUSE',
5300
- 'TOWN_HOUSE',
5301
- 'COUNTRY_HOUSE',
5302
- 'VILLA',
5303
- 'COTTAGE',
5304
- 'APARTMENT',
5305
- 'DUPLEX',
5306
- 'TRIPLEX',
5307
- 'SEMI_BASEMENT',
5308
- 'ATTIC',
5309
- 'AGRICULTURAL_LAND',
5310
- 'RESIDENTIAL_LAND',
5311
- 'HOTEL_ROOM',
5312
- 'MOTEL_ROOM',
5313
- 'CO_LIVING_SPACE',
5314
- 'OFFICE',
5315
- 'COMMERCIAL_SPACE',
5316
- 'CO_WORKING_SPACE',
5317
- 'WAREHOUSE',
5318
- 'GARAGE',
5319
- ],
5320
- },
5321
- uniqueItems: true,
5322
- },
5323
- budget: {
5324
- $ref: '#/components/schemas/RangeBigDecimal',
5325
- },
5326
- primaryLocation: {
5327
- $ref: '#/components/schemas/LocationResponse',
5328
- },
5329
- recommendationCount: {
5330
- type: 'integer',
5331
- format: 'int32',
5332
- },
5333
- },
5334
- },
5335
- ],
5336
- required: [
5337
- 'interestId',
5338
- 'listingType',
5339
- 'propertyTypes',
5340
- 'recommendationCount',
5341
- ],
5342
- };
5343
- export const ListingTypePriceSchema = {
6280
+ export const DealSettingsResponseSchema = {
5344
6281
  type: 'object',
5345
6282
  properties: {
5346
- listingType: {
6283
+ defaultBoardId: {
5347
6284
  type: 'string',
5348
- enum: ['SALE', 'RENT', 'DAILY_RENT', 'PLEDGE'],
5349
- },
5350
- price: {
5351
- type: 'number',
5352
- },
5353
- },
5354
- required: ['listingType', 'price'],
5355
- };
5356
- export const PreviewSchema = {
5357
- discriminator: {
5358
- propertyName: 'type',
5359
- mapping: {
5360
- PROPERTY: '#/components/schemas/PropertyPreview',
5361
- INTEREST: '#/components/schemas/InterestPreview',
6285
+ format: 'uuid',
5362
6286
  },
5363
- },
5364
- properties: {
5365
- type: {
6287
+ defaultStageId: {
5366
6288
  type: 'string',
6289
+ format: 'uuid',
5367
6290
  },
5368
6291
  },
5369
- required: ['type'],
5370
- };
5371
- export const PropertyPreviewSchema = {
5372
- allOf: [
5373
- {
5374
- $ref: '#/components/schemas/Preview',
5375
- },
5376
- {
5377
- type: 'object',
5378
- properties: {
5379
- propertyId: {
5380
- type: 'integer',
5381
- format: 'int64',
5382
- },
5383
- propertyType: {
5384
- type: 'string',
5385
- enum: [
5386
- 'HOUSE',
5387
- 'TOWN_HOUSE',
5388
- 'COUNTRY_HOUSE',
5389
- 'VILLA',
5390
- 'COTTAGE',
5391
- 'APARTMENT',
5392
- 'DUPLEX',
5393
- 'TRIPLEX',
5394
- 'SEMI_BASEMENT',
5395
- 'ATTIC',
5396
- 'AGRICULTURAL_LAND',
5397
- 'RESIDENTIAL_LAND',
5398
- 'HOTEL_ROOM',
5399
- 'MOTEL_ROOM',
5400
- 'CO_LIVING_SPACE',
5401
- 'OFFICE',
5402
- 'COMMERCIAL_SPACE',
5403
- 'CO_WORKING_SPACE',
5404
- 'WAREHOUSE',
5405
- 'GARAGE',
5406
- ],
5407
- },
5408
- state: {
5409
- type: 'string',
5410
- enum: [
5411
- 'IN_REGISTRATION',
5412
- 'UNLISTED',
5413
- 'LISTED_INTERNALLY',
5414
- 'LISTED',
5415
- 'CLOSED',
5416
- ],
5417
- },
5418
- title: {
5419
- type: 'string',
5420
- },
5421
- coverUrl: {
5422
- type: 'string',
5423
- },
5424
- listingTypes: {
5425
- type: 'array',
5426
- items: {
5427
- $ref: '#/components/schemas/ListingTypePrice',
5428
- },
5429
- },
5430
- },
5431
- },
5432
- ],
5433
- required: ['listingTypes', 'propertyId', 'propertyType', 'state'],
5434
6292
  };
5435
6293
  export const AddressViewResponseSchema = {
5436
6294
  type: 'object',