@homespot-sdk/core 0.0.358 → 0.0.360

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.
Files changed (63) hide show
  1. package/dist/property/index.d.ts +2 -2
  2. package/dist/property/index.d.ts.map +1 -1
  3. package/dist/property/index.js +1 -1
  4. package/dist/property/index.js.map +1 -1
  5. package/dist/property/schemas.gen.d.ts +92 -0
  6. package/dist/property/schemas.gen.d.ts.map +1 -1
  7. package/dist/property/schemas.gen.js +99 -0
  8. package/dist/property/schemas.gen.js.map +1 -1
  9. package/dist/property/sdk.gen.d.ts +6 -2
  10. package/dist/property/sdk.gen.d.ts.map +1 -1
  11. package/dist/property/sdk.gen.js +34 -2
  12. package/dist/property/sdk.gen.js.map +1 -1
  13. package/dist/property/transformers.gen.d.ts +5 -1
  14. package/dist/property/transformers.gen.d.ts.map +1 -1
  15. package/dist/property/transformers.gen.js +40 -0
  16. package/dist/property/transformers.gen.js.map +1 -1
  17. package/dist/property/types.gen.d.ts +86 -0
  18. package/dist/property/types.gen.d.ts.map +1 -1
  19. package/dist/property/zod.gen.d.ts +271 -6
  20. package/dist/property/zod.gen.d.ts.map +1 -1
  21. package/dist/property/zod.gen.js +98 -0
  22. package/dist/property/zod.gen.js.map +1 -1
  23. package/dist/rem/index.d.ts +2 -2
  24. package/dist/rem/index.d.ts.map +1 -1
  25. package/dist/rem/index.js +1 -1
  26. package/dist/rem/index.js.map +1 -1
  27. package/dist/rem/schemas.gen.d.ts +758 -141
  28. package/dist/rem/schemas.gen.d.ts.map +1 -1
  29. package/dist/rem/schemas.gen.js +829 -127
  30. package/dist/rem/schemas.gen.js.map +1 -1
  31. package/dist/rem/sdk.gen.d.ts +8 -2
  32. package/dist/rem/sdk.gen.d.ts.map +1 -1
  33. package/dist/rem/sdk.gen.js +45 -2
  34. package/dist/rem/sdk.gen.js.map +1 -1
  35. package/dist/rem/transformers.gen.d.ts +6 -1
  36. package/dist/rem/transformers.gen.d.ts.map +1 -1
  37. package/dist/rem/transformers.gen.js +56 -0
  38. package/dist/rem/transformers.gen.js.map +1 -1
  39. package/dist/rem/types.gen.d.ts +387 -45
  40. package/dist/rem/types.gen.d.ts.map +1 -1
  41. package/dist/rem/zod.gen.d.ts +2093 -270
  42. package/dist/rem/zod.gen.d.ts.map +1 -1
  43. package/dist/rem/zod.gen.js +577 -47
  44. package/dist/rem/zod.gen.js.map +1 -1
  45. package/dist/utils/index.d.ts +2 -2
  46. package/dist/utils/index.d.ts.map +1 -1
  47. package/dist/utils/index.js +1 -1
  48. package/dist/utils/index.js.map +1 -1
  49. package/dist/utils/schemas.gen.d.ts +72 -0
  50. package/dist/utils/schemas.gen.d.ts.map +1 -1
  51. package/dist/utils/schemas.gen.js +72 -0
  52. package/dist/utils/schemas.gen.js.map +1 -1
  53. package/dist/utils/sdk.gen.d.ts +10 -1
  54. package/dist/utils/sdk.gen.d.ts.map +1 -1
  55. package/dist/utils/sdk.gen.js +9 -0
  56. package/dist/utils/sdk.gen.js.map +1 -1
  57. package/dist/utils/types.gen.d.ts +73 -0
  58. package/dist/utils/types.gen.d.ts.map +1 -1
  59. package/dist/utils/zod.gen.d.ts +157 -0
  60. package/dist/utils/zod.gen.d.ts.map +1 -1
  61. package/dist/utils/zod.gen.js +122 -0
  62. package/dist/utils/zod.gen.js.map +1 -1
  63. package/package.json +1 -1
@@ -183,7 +183,7 @@ export const CommentBodyRequestSchema = {
183
183
  properties: {
184
184
  body: {
185
185
  type: 'string',
186
- maxLength: 4000,
186
+ maxLength: 6300,
187
187
  minLength: 0,
188
188
  },
189
189
  },
@@ -1157,11 +1157,33 @@ export const OauthConnectionResponseSchema = {
1157
1157
  type: 'string',
1158
1158
  format: 'date-time',
1159
1159
  },
1160
+ canPublish: {
1161
+ type: 'boolean',
1162
+ },
1163
+ canReadComments: {
1164
+ type: 'boolean',
1165
+ },
1166
+ canReply: {
1167
+ type: 'boolean',
1168
+ },
1169
+ canReadStats: {
1170
+ type: 'boolean',
1171
+ description: 'Like and comment counts on a post',
1172
+ },
1173
+ reconnectRequired: {
1174
+ type: 'boolean',
1175
+ description: 'The token is dead, or the grant lacks a scope the connect flow asks for — re-running the connect flow is what fixes it',
1176
+ },
1160
1177
  },
1161
1178
  required: [
1162
1179
  'agencyId',
1180
+ 'canPublish',
1181
+ 'canReadComments',
1182
+ 'canReadStats',
1183
+ 'canReply',
1163
1184
  'createdAt',
1164
1185
  'provider',
1186
+ 'reconnectRequired',
1165
1187
  'status',
1166
1188
  'updatedAt',
1167
1189
  'userId',
@@ -1600,6 +1622,172 @@ export const PercentageSchema = {
1600
1622
  ],
1601
1623
  required: ['rate'],
1602
1624
  };
1625
+ export const FocusRequestSchema = {
1626
+ type: 'object',
1627
+ properties: {
1628
+ x: {
1629
+ type: 'number',
1630
+ format: 'double',
1631
+ },
1632
+ y: {
1633
+ type: 'number',
1634
+ format: 'double',
1635
+ },
1636
+ },
1637
+ required: ['x', 'y'],
1638
+ };
1639
+ export const PhotoSchema = {
1640
+ type: 'object',
1641
+ properties: {
1642
+ photoId: {
1643
+ type: 'integer',
1644
+ format: 'int64',
1645
+ },
1646
+ mode: {
1647
+ type: 'string',
1648
+ enum: ['AUTO', 'CROP', 'FIT'],
1649
+ },
1650
+ focus: {
1651
+ $ref: '#/components/schemas/FocusRequest',
1652
+ },
1653
+ },
1654
+ required: ['photoId'],
1655
+ };
1656
+ export const PublishSocialPostRequestSchema = {
1657
+ type: 'object',
1658
+ properties: {
1659
+ channel: {
1660
+ type: 'string',
1661
+ enum: ['FACEBOOK', 'INSTAGRAM'],
1662
+ },
1663
+ caption: {
1664
+ type: 'string',
1665
+ },
1666
+ ratio: {
1667
+ type: 'string',
1668
+ description: 'Instagram only; defaults to LANDSCAPE',
1669
+ enum: ['LANDSCAPE', 'SQUARE', 'PORTRAIT'],
1670
+ },
1671
+ photos: {
1672
+ type: 'array',
1673
+ description: 'In post order',
1674
+ items: {
1675
+ $ref: '#/components/schemas/Photo',
1676
+ },
1677
+ },
1678
+ templateId: {
1679
+ type: 'string',
1680
+ format: 'uuid',
1681
+ },
1682
+ },
1683
+ required: ['caption', 'channel', 'photos'],
1684
+ };
1685
+ export const FocusViewSchema = {
1686
+ type: 'object',
1687
+ properties: {
1688
+ x: {
1689
+ type: 'number',
1690
+ format: 'double',
1691
+ },
1692
+ y: {
1693
+ type: 'number',
1694
+ format: 'double',
1695
+ },
1696
+ },
1697
+ required: ['x', 'y'],
1698
+ };
1699
+ export const PhotoViewSchema = {
1700
+ type: 'object',
1701
+ properties: {
1702
+ photoId: {
1703
+ type: 'integer',
1704
+ format: 'int64',
1705
+ },
1706
+ mode: {
1707
+ type: 'string',
1708
+ enum: ['AUTO', 'CROP', 'FIT'],
1709
+ },
1710
+ focus: {
1711
+ $ref: '#/components/schemas/FocusView',
1712
+ },
1713
+ },
1714
+ required: ['focus', 'mode', 'photoId'],
1715
+ };
1716
+ export const SocialPostViewSchema = {
1717
+ type: 'object',
1718
+ properties: {
1719
+ id: {
1720
+ type: 'string',
1721
+ format: 'uuid',
1722
+ },
1723
+ channel: {
1724
+ type: 'string',
1725
+ enum: ['FACEBOOK', 'INSTAGRAM'],
1726
+ },
1727
+ status: {
1728
+ type: 'string',
1729
+ enum: ['PUBLISHING', 'PUBLISHED', 'FAILED', 'REMOVED'],
1730
+ },
1731
+ caption: {
1732
+ type: 'string',
1733
+ },
1734
+ ratio: {
1735
+ type: 'string',
1736
+ description: 'Instagram only',
1737
+ enum: ['LANDSCAPE', 'SQUARE', 'PORTRAIT'],
1738
+ },
1739
+ photos: {
1740
+ type: 'array',
1741
+ items: {
1742
+ $ref: '#/components/schemas/PhotoView',
1743
+ },
1744
+ },
1745
+ templateId: {
1746
+ type: 'string',
1747
+ format: 'uuid',
1748
+ },
1749
+ failureReason: {
1750
+ type: 'string',
1751
+ enum: [
1752
+ 'RECONNECT_REQUIRED',
1753
+ 'PERMISSION_MISSING',
1754
+ 'PAGE_PUBLISHING_AUTHORIZATION',
1755
+ 'RATE_LIMITED',
1756
+ 'BAD_MEDIA',
1757
+ 'UNCONFIRMED',
1758
+ 'UNKNOWN',
1759
+ ],
1760
+ },
1761
+ failureDetail: {
1762
+ type: 'string',
1763
+ },
1764
+ permalink: {
1765
+ type: 'string',
1766
+ description: 'The post on Facebook / Instagram, once published',
1767
+ },
1768
+ publishedAt: {
1769
+ type: 'string',
1770
+ format: 'date-time',
1771
+ },
1772
+ createdBy: {
1773
+ type: 'string',
1774
+ format: 'uuid',
1775
+ },
1776
+ createdAt: {
1777
+ type: 'string',
1778
+ format: 'date-time',
1779
+ },
1780
+ },
1781
+ required: [
1782
+ 'caption',
1783
+ 'channel',
1784
+ 'createdAt',
1785
+ 'createdBy',
1786
+ 'id',
1787
+ 'photos',
1788
+ 'status',
1789
+ ],
1790
+ };
1603
1791
  export const CloseListingRequestSchema = {
1604
1792
  type: 'object',
1605
1793
  properties: {
@@ -1669,6 +1857,20 @@ export const IdResponseLongSchema = {
1669
1857
  },
1670
1858
  required: ['id'],
1671
1859
  };
1860
+ export const ExternalListingWithdrawRequestSchema = {
1861
+ type: 'object',
1862
+ properties: {
1863
+ platform: {
1864
+ type: 'string',
1865
+ enum: ['SS', 'MY_HOME'],
1866
+ },
1867
+ listingId: {
1868
+ type: 'integer',
1869
+ format: 'int64',
1870
+ },
1871
+ },
1872
+ required: ['listingId', 'platform'],
1873
+ };
1672
1874
  export const ExternalListingPublishRequestSchema = {
1673
1875
  type: 'object',
1674
1876
  properties: {
@@ -2020,6 +2222,18 @@ export const CommentViewSchema = {
2020
2222
  body: {
2021
2223
  type: 'string',
2022
2224
  },
2225
+ mentionedMembers: {
2226
+ type: 'array',
2227
+ items: {
2228
+ $ref: '#/components/schemas/MemberPeekResponse',
2229
+ },
2230
+ },
2231
+ mentionedContacts: {
2232
+ type: 'array',
2233
+ items: {
2234
+ $ref: '#/components/schemas/ContactMentionView',
2235
+ },
2236
+ },
2023
2237
  createdAt: {
2024
2238
  type: 'string',
2025
2239
  format: 'date-time',
@@ -2036,35 +2250,17 @@ export const CommentViewSchema = {
2036
2250
  'body',
2037
2251
  'createdAt',
2038
2252
  'id',
2253
+ 'mentionedContacts',
2254
+ 'mentionedMembers',
2039
2255
  ],
2040
2256
  };
2041
- export const CursorPageCommentViewSchema = {
2042
- type: 'object',
2043
- properties: {
2044
- items: {
2045
- type: 'array',
2046
- items: {
2047
- $ref: '#/components/schemas/CommentView',
2048
- },
2049
- },
2050
- nextCursor: {
2051
- type: 'string',
2052
- },
2053
- hasNext: {
2054
- type: 'boolean',
2055
- },
2056
- },
2057
- };
2058
- export const ContactLinkSchema = {
2257
+ export const ContactMentionViewSchema = {
2059
2258
  type: 'object',
2060
2259
  properties: {
2061
2260
  contactId: {
2062
2261
  type: 'integer',
2063
2262
  format: 'int64',
2064
2263
  },
2065
- primary: {
2066
- type: 'boolean',
2067
- },
2068
2264
  personalDetails: {
2069
2265
  oneOf: [
2070
2266
  {
@@ -2080,7 +2276,7 @@ export const ContactLinkSchema = {
2080
2276
  format: 'uuid',
2081
2277
  },
2082
2278
  },
2083
- required: ['contactId', 'personalDetails', 'primary'],
2279
+ required: ['contactId', 'personalDetails'],
2084
2280
  };
2085
2281
  export const ContactPersonalDetailsSchema = {
2086
2282
  discriminator: {
@@ -2140,6 +2336,75 @@ export const ContactPersonalDetailsVisibleSchema = {
2140
2336
  },
2141
2337
  required: ['status'],
2142
2338
  };
2339
+ export const CursorPageCommentViewSchema = {
2340
+ type: 'object',
2341
+ properties: {
2342
+ items: {
2343
+ type: 'array',
2344
+ items: {
2345
+ $ref: '#/components/schemas/CommentView',
2346
+ },
2347
+ },
2348
+ nextCursor: {
2349
+ type: 'string',
2350
+ },
2351
+ hasNext: {
2352
+ type: 'boolean',
2353
+ },
2354
+ },
2355
+ };
2356
+ export const MemberPeekResponseSchema = {
2357
+ type: 'object',
2358
+ properties: {
2359
+ memberId: {
2360
+ type: 'string',
2361
+ format: 'uuid',
2362
+ },
2363
+ firstName: {
2364
+ type: 'string',
2365
+ },
2366
+ lastName: {
2367
+ type: 'string',
2368
+ },
2369
+ photo: {
2370
+ type: 'string',
2371
+ },
2372
+ phone: {
2373
+ type: 'string',
2374
+ },
2375
+ email: {
2376
+ type: 'string',
2377
+ },
2378
+ },
2379
+ required: ['email', 'firstName', 'lastName', 'memberId'],
2380
+ };
2381
+ export const ContactLinkSchema = {
2382
+ type: 'object',
2383
+ properties: {
2384
+ contactId: {
2385
+ type: 'integer',
2386
+ format: 'int64',
2387
+ },
2388
+ primary: {
2389
+ type: 'boolean',
2390
+ },
2391
+ personalDetails: {
2392
+ oneOf: [
2393
+ {
2394
+ $ref: '#/components/schemas/ContactPersonalDetailsRestricted',
2395
+ },
2396
+ {
2397
+ $ref: '#/components/schemas/ContactPersonalDetailsVisible',
2398
+ },
2399
+ ],
2400
+ },
2401
+ contactAssignedTo: {
2402
+ type: 'string',
2403
+ format: 'uuid',
2404
+ },
2405
+ },
2406
+ required: ['contactId', 'personalDetails', 'primary'],
2407
+ };
2143
2408
  export const InterestLinkSchema = {
2144
2409
  type: 'object',
2145
2410
  properties: {
@@ -2237,31 +2502,6 @@ export const LocationResponseSchema = {
2237
2502
  },
2238
2503
  required: ['id', 'names'],
2239
2504
  };
2240
- export const MemberPeekResponseSchema = {
2241
- type: 'object',
2242
- properties: {
2243
- memberId: {
2244
- type: 'string',
2245
- format: 'uuid',
2246
- },
2247
- firstName: {
2248
- type: 'string',
2249
- },
2250
- lastName: {
2251
- type: 'string',
2252
- },
2253
- photo: {
2254
- type: 'string',
2255
- },
2256
- phone: {
2257
- type: 'string',
2258
- },
2259
- email: {
2260
- type: 'string',
2261
- },
2262
- },
2263
- required: ['email', 'firstName', 'lastName', 'memberId'],
2264
- };
2265
2505
  export const ParticipantSchema = {
2266
2506
  type: 'object',
2267
2507
  properties: {
@@ -2576,134 +2816,188 @@ export const TodoItemSchema = {
2576
2816
  },
2577
2817
  required: ['fromTemplate', 'position', 'title', 'todoId'],
2578
2818
  };
2579
- export const ContactTaskResponseSchema = {
2819
+ export const ContactTaskCardResponseSchema = {
2580
2820
  type: 'object',
2581
2821
  properties: {
2582
2822
  taskId: {
2583
2823
  type: 'string',
2584
2824
  format: 'uuid',
2585
2825
  },
2586
- title: {
2587
- type: 'string',
2588
- },
2589
- boardId: {
2826
+ stageId: {
2590
2827
  type: 'string',
2591
2828
  format: 'uuid',
2592
2829
  },
2593
- boardName: {
2830
+ stageName: {
2594
2831
  type: 'string',
2595
2832
  },
2596
- stageId: {
2833
+ title: {
2597
2834
  type: 'string',
2598
- format: 'uuid',
2599
2835
  },
2600
- stageName: {
2601
- type: 'string',
2836
+ hasDescription: {
2837
+ type: 'boolean',
2602
2838
  },
2603
- outcome: {
2839
+ commentCount: {
2840
+ type: 'integer',
2841
+ format: 'int32',
2842
+ },
2843
+ contactCount: {
2844
+ type: 'integer',
2845
+ format: 'int32',
2846
+ },
2847
+ priority: {
2604
2848
  type: 'string',
2605
- enum: ['WON', 'LOST'],
2849
+ enum: ['LOW', 'MEDIUM', 'HIGH', 'CRITICAL'],
2606
2850
  },
2607
2851
  value: {
2608
2852
  type: 'number',
2609
2853
  },
2610
- primary: {
2611
- type: 'boolean',
2854
+ commissionType: {
2855
+ type: 'string',
2856
+ enum: ['NOT_SET', 'FIXED', 'PERCENTAGE', 'MONTHS_OF_RENT'],
2612
2857
  },
2613
- },
2614
- required: [
2615
- 'boardId',
2616
- 'boardName',
2617
- 'primary',
2618
- 'stageId',
2619
- 'stageName',
2620
- 'taskId',
2621
- 'title',
2622
- ],
2623
- };
2624
- export const BoardCardsResponseSchema = {
2625
- type: 'object',
2626
- properties: {
2627
- boardId: {
2858
+ commissionValue: {
2859
+ type: 'number',
2860
+ },
2861
+ ownerId: {
2628
2862
  type: 'string',
2629
2863
  format: 'uuid',
2630
2864
  },
2631
- name: {
2632
- type: 'string',
2865
+ primaryContactId: {
2866
+ type: 'integer',
2867
+ format: 'int64',
2633
2868
  },
2634
- kind: {
2869
+ primaryContact: {
2870
+ oneOf: [
2871
+ {
2872
+ $ref: '#/components/schemas/ContactPersonalDetailsRestricted',
2873
+ },
2874
+ {
2875
+ $ref: '#/components/schemas/ContactPersonalDetailsVisible',
2876
+ },
2877
+ ],
2878
+ },
2879
+ contactAssignedTo: {
2635
2880
  type: 'string',
2636
- enum: ['OWNER', 'SEEKER'],
2881
+ format: 'uuid',
2637
2882
  },
2638
- members: {
2639
- type: 'array',
2640
- items: {
2641
- $ref: '#/components/schemas/MemberPeekResponse',
2642
- },
2883
+ primaryContent: {
2884
+ oneOf: [
2885
+ {
2886
+ $ref: '#/components/schemas/TaskContentInterest',
2887
+ },
2888
+ {
2889
+ $ref: '#/components/schemas/TaskContentProperty',
2890
+ },
2891
+ ],
2643
2892
  },
2644
- columns: {
2893
+ participants: {
2645
2894
  type: 'array',
2646
2895
  items: {
2647
- $ref: '#/components/schemas/Column',
2896
+ type: 'string',
2897
+ format: 'uuid',
2648
2898
  },
2649
2899
  },
2650
- },
2651
- required: ['boardId', 'columns', 'members', 'name'],
2652
- };
2653
- export const ColumnSchema = {
2654
- type: 'object',
2655
- properties: {
2656
- stageId: {
2900
+ rank: {
2657
2901
  type: 'string',
2658
- format: 'uuid',
2659
2902
  },
2660
- name: {
2903
+ stageEnteredAt: {
2661
2904
  type: 'string',
2905
+ format: 'date-time',
2662
2906
  },
2663
- color: {
2664
- type: 'string',
2907
+ daysInStage: {
2908
+ type: 'integer',
2909
+ format: 'int64',
2665
2910
  },
2666
- position: {
2911
+ openTodos: {
2667
2912
  type: 'integer',
2668
- format: 'int32',
2913
+ format: 'int64',
2669
2914
  },
2670
- totalTasks: {
2915
+ totalTodos: {
2671
2916
  type: 'integer',
2672
2917
  format: 'int64',
2673
2918
  },
2674
- totalValue: {
2675
- type: 'number',
2919
+ hasLeftoverOpenTodos: {
2920
+ type: 'boolean',
2676
2921
  },
2677
- cards: {
2678
- $ref: '#/components/schemas/CursorPageTaskCardResponse',
2922
+ expectedCloseDate: {
2923
+ type: 'string',
2924
+ format: 'date',
2925
+ },
2926
+ outcome: {
2927
+ type: 'string',
2928
+ enum: ['WON', 'LOST'],
2929
+ },
2930
+ lostReason: {
2931
+ type: 'string',
2932
+ enum: [
2933
+ 'NOT_WORKING_WITH_AGENTS',
2934
+ 'NOT_RESPONDING',
2935
+ 'ALREADY_SOLD',
2936
+ 'COULD_NOT_NEGOTIATE_PRICE',
2937
+ 'CHOSE_ANOTHER_AGENCY',
2938
+ 'CHANGED_PLANS',
2939
+ 'OUT_OF_BUDGET',
2940
+ 'SPAM',
2941
+ 'OTHER',
2942
+ ],
2943
+ },
2944
+ closedAt: {
2945
+ type: 'string',
2946
+ format: 'date-time',
2947
+ },
2948
+ boardId: {
2949
+ type: 'string',
2950
+ format: 'uuid',
2951
+ },
2952
+ boardName: {
2953
+ type: 'string',
2954
+ },
2955
+ stageColor: {
2956
+ type: 'string',
2957
+ },
2958
+ primary: {
2959
+ type: 'boolean',
2679
2960
  },
2680
2961
  },
2681
2962
  required: [
2682
- 'cards',
2683
- 'color',
2684
- 'name',
2685
- 'position',
2963
+ 'boardId',
2964
+ 'boardName',
2965
+ 'commentCount',
2966
+ 'contactCount',
2967
+ 'daysInStage',
2968
+ 'hasDescription',
2969
+ 'hasLeftoverOpenTodos',
2970
+ 'openTodos',
2971
+ 'participants',
2972
+ 'primary',
2973
+ 'priority',
2974
+ 'rank',
2975
+ 'stageColor',
2976
+ 'stageEnteredAt',
2686
2977
  'stageId',
2687
- 'totalTasks',
2688
- 'totalValue',
2978
+ 'stageName',
2979
+ 'taskId',
2980
+ 'title',
2981
+ 'totalTodos',
2689
2982
  ],
2690
2983
  };
2691
- export const CursorPageTaskCardResponseSchema = {
2984
+ export const ContactTasksResponseSchema = {
2692
2985
  type: 'object',
2693
2986
  properties: {
2694
- items: {
2987
+ members: {
2695
2988
  type: 'array',
2696
2989
  items: {
2697
- $ref: '#/components/schemas/TaskCardResponse',
2990
+ $ref: '#/components/schemas/MemberPeekResponse',
2698
2991
  },
2699
2992
  },
2700
- nextCursor: {
2701
- type: 'string',
2702
- },
2703
- hasNext: {
2704
- type: 'boolean',
2993
+ items: {
2994
+ type: 'array',
2995
+ items: {
2996
+ $ref: '#/components/schemas/ContactTaskCardResponse',
2997
+ },
2705
2998
  },
2706
2999
  },
3000
+ required: ['items', 'members'],
2707
3001
  };
2708
3002
  export const TaskCardResponseSchema = {
2709
3003
  type: 'object',
@@ -2966,7 +3260,91 @@ export const TaskContentPropertySchema = {
2966
3260
  },
2967
3261
  },
2968
3262
  ],
2969
- required: ['id', 'type'],
3263
+ required: ['id', 'type'],
3264
+ };
3265
+ export const BoardCardsResponseSchema = {
3266
+ type: 'object',
3267
+ properties: {
3268
+ boardId: {
3269
+ type: 'string',
3270
+ format: 'uuid',
3271
+ },
3272
+ name: {
3273
+ type: 'string',
3274
+ },
3275
+ kind: {
3276
+ type: 'string',
3277
+ enum: ['OWNER', 'SEEKER'],
3278
+ },
3279
+ members: {
3280
+ type: 'array',
3281
+ items: {
3282
+ $ref: '#/components/schemas/MemberPeekResponse',
3283
+ },
3284
+ },
3285
+ columns: {
3286
+ type: 'array',
3287
+ items: {
3288
+ $ref: '#/components/schemas/Column',
3289
+ },
3290
+ },
3291
+ },
3292
+ required: ['boardId', 'columns', 'members', 'name'],
3293
+ };
3294
+ export const ColumnSchema = {
3295
+ type: 'object',
3296
+ properties: {
3297
+ stageId: {
3298
+ type: 'string',
3299
+ format: 'uuid',
3300
+ },
3301
+ name: {
3302
+ type: 'string',
3303
+ },
3304
+ color: {
3305
+ type: 'string',
3306
+ },
3307
+ position: {
3308
+ type: 'integer',
3309
+ format: 'int32',
3310
+ },
3311
+ totalTasks: {
3312
+ type: 'integer',
3313
+ format: 'int64',
3314
+ },
3315
+ totalValue: {
3316
+ type: 'number',
3317
+ },
3318
+ cards: {
3319
+ $ref: '#/components/schemas/CursorPageTaskCardResponse',
3320
+ },
3321
+ },
3322
+ required: [
3323
+ 'cards',
3324
+ 'color',
3325
+ 'name',
3326
+ 'position',
3327
+ 'stageId',
3328
+ 'totalTasks',
3329
+ 'totalValue',
3330
+ ],
3331
+ };
3332
+ export const CursorPageTaskCardResponseSchema = {
3333
+ type: 'object',
3334
+ properties: {
3335
+ items: {
3336
+ type: 'array',
3337
+ items: {
3338
+ $ref: '#/components/schemas/TaskCardResponse',
3339
+ },
3340
+ },
3341
+ nextCursor: {
3342
+ type: 'string',
3343
+ },
3344
+ hasNext: {
3345
+ type: 'boolean',
3346
+ },
3347
+ },
2970
3348
  };
2971
3349
  export const StageCardsResponseSchema = {
2972
3350
  type: 'object',
@@ -4285,7 +4663,14 @@ export const PlatformListingResponseSchema = {
4285
4663
  },
4286
4664
  status: {
4287
4665
  type: 'string',
4288
- enum: ['PENDING', 'SYNDICATED', 'FAILED', 'EXPIRED'],
4666
+ enum: [
4667
+ 'PENDING',
4668
+ 'SYNDICATED',
4669
+ 'FAILED',
4670
+ 'EXPIRED',
4671
+ 'WITHDRAWING',
4672
+ 'WITHDRAWN',
4673
+ ],
4289
4674
  },
4290
4675
  listedAt: {
4291
4676
  type: 'string',
@@ -4299,6 +4684,9 @@ export const PlatformListingResponseSchema = {
4299
4684
  type: 'string',
4300
4685
  format: 'date',
4301
4686
  },
4687
+ failureReason: {
4688
+ type: 'string',
4689
+ },
4302
4690
  boost: {
4303
4691
  $ref: '#/components/schemas/BoostResponse',
4304
4692
  },
@@ -4378,7 +4766,7 @@ export const PropertyListingResponseSchema = {
4378
4766
  },
4379
4767
  isProcessing: {
4380
4768
  type: 'boolean',
4381
- description: 'True while an external-portal placement or boost is in flight — poll the property page until false. Creating the Homespot listing itself is synchronous, so it never sets this.',
4769
+ description: 'True while an external-portal placement, a boost or a social post is in flight — poll the property page until false. Creating the Homespot listing itself is synchronous, so it never sets this.',
4382
4770
  },
4383
4771
  price: {
4384
4772
  type: 'number',
@@ -4402,6 +4790,13 @@ export const PropertyListingResponseSchema = {
4402
4790
  $ref: '#/components/schemas/PlatformListingResponse',
4403
4791
  },
4404
4792
  },
4793
+ socialPosts: {
4794
+ type: 'array',
4795
+ description: 'Facebook / Instagram posts of this listing, newest first',
4796
+ items: {
4797
+ $ref: '#/components/schemas/SocialPostResponse',
4798
+ },
4799
+ },
4405
4800
  createdAt: {
4406
4801
  type: 'string',
4407
4802
  format: 'date-time',
@@ -4421,6 +4816,7 @@ export const PropertyListingResponseSchema = {
4421
4816
  'platformListings',
4422
4817
  'price',
4423
4818
  'publicId',
4819
+ 'socialPosts',
4424
4820
  ],
4425
4821
  };
4426
4822
  export const PropertyPageResponseSchema = {
@@ -4510,6 +4906,84 @@ export const PropertyPageResponseSchema = {
4510
4906
  'updatedAt',
4511
4907
  ],
4512
4908
  };
4909
+ export const SocialPostResponseSchema = {
4910
+ type: 'object',
4911
+ properties: {
4912
+ postId: {
4913
+ type: 'string',
4914
+ format: 'uuid',
4915
+ description: 'For retrying a failed post, or reading it in full',
4916
+ },
4917
+ channel: {
4918
+ type: 'string',
4919
+ enum: ['FACEBOOK', 'INSTAGRAM'],
4920
+ },
4921
+ status: {
4922
+ type: 'string',
4923
+ enum: ['PUBLISHING', 'PUBLISHED', 'FAILED', 'REMOVED'],
4924
+ },
4925
+ caption: {
4926
+ type: 'string',
4927
+ description: 'Exactly as published',
4928
+ },
4929
+ thumbnailUrl: {
4930
+ type: 'string',
4931
+ description: "The post's first photo, as uploaded to the gallery (not the Instagram crop)",
4932
+ },
4933
+ permalink: {
4934
+ type: 'string',
4935
+ description: 'The post on Facebook / Instagram, once published',
4936
+ },
4937
+ publishedAt: {
4938
+ type: 'string',
4939
+ format: 'date-time',
4940
+ },
4941
+ createdBy: {
4942
+ $ref: '#/components/schemas/MemberPeekResponse',
4943
+ description: 'The member who created the post, also after they left the agency',
4944
+ },
4945
+ failureReason: {
4946
+ type: 'string',
4947
+ enum: [
4948
+ 'RECONNECT_REQUIRED',
4949
+ 'PERMISSION_MISSING',
4950
+ 'PAGE_PUBLISHING_AUTHORIZATION',
4951
+ 'RATE_LIMITED',
4952
+ 'BAD_MEDIA',
4953
+ 'UNCONFIRMED',
4954
+ 'UNKNOWN',
4955
+ ],
4956
+ },
4957
+ stats: {
4958
+ $ref: '#/components/schemas/SocialPostStats',
4959
+ description: "The post's public counts as last read from Facebook / Instagram; null until the first read",
4960
+ },
4961
+ },
4962
+ required: ['caption', 'channel', 'createdBy', 'postId', 'status'],
4963
+ };
4964
+ export const SocialPostStatsSchema = {
4965
+ type: 'object',
4966
+ properties: {
4967
+ likes: {
4968
+ type: 'integer',
4969
+ format: 'int32',
4970
+ },
4971
+ comments: {
4972
+ type: 'integer',
4973
+ format: 'int32',
4974
+ },
4975
+ shares: {
4976
+ type: 'integer',
4977
+ format: 'int32',
4978
+ },
4979
+ fetchedAt: {
4980
+ type: 'string',
4981
+ format: 'date-time',
4982
+ description: 'When the counts were read — show how old they are',
4983
+ },
4984
+ },
4985
+ required: ['comments', 'fetchedAt', 'likes', 'shares'],
4986
+ };
4513
4987
  export const ListingOwnerContactResponseSchema = {
4514
4988
  type: 'object',
4515
4989
  properties: {
@@ -4554,6 +5028,25 @@ export const AgentCommentedSchema = {
4554
5028
  },
4555
5029
  required: ['kind'],
4556
5030
  };
5031
+ export const ChannelReauthRequiredSchema = {
5032
+ properties: {
5033
+ connectionId: {
5034
+ $ref: '#/components/schemas/ConnectionId',
5035
+ },
5036
+ channelType: {
5037
+ type: 'string',
5038
+ enum: ['FACEBOOK', 'INSTAGRAM', 'WHATSAPP', 'TIKTOK'],
5039
+ },
5040
+ displayName: {
5041
+ type: 'string',
5042
+ },
5043
+ kind: {
5044
+ type: 'string',
5045
+ enum: ['CHANNEL_REAUTH_REQUIRED'],
5046
+ },
5047
+ },
5048
+ required: ['kind'],
5049
+ };
4557
5050
  export const CommentIdSchema = {
4558
5051
  type: 'object',
4559
5052
  properties: {
@@ -4563,6 +5056,15 @@ export const CommentIdSchema = {
4563
5056
  },
4564
5057
  },
4565
5058
  };
5059
+ export const ConnectionIdSchema = {
5060
+ type: 'object',
5061
+ properties: {
5062
+ value: {
5063
+ type: 'string',
5064
+ format: 'uuid',
5065
+ },
5066
+ },
5067
+ };
4566
5068
  export const ContactAssignedSchema = {
4567
5069
  properties: {
4568
5070
  contactId: {
@@ -4664,6 +5166,33 @@ export const MemberIdSchema = {
4664
5166
  },
4665
5167
  },
4666
5168
  };
5169
+ export const MemberMentionedSchema = {
5170
+ properties: {
5171
+ commentId: {
5172
+ $ref: '#/components/schemas/CommentId',
5173
+ },
5174
+ contactId: {
5175
+ $ref: '#/components/schemas/ContactId',
5176
+ },
5177
+ taskId: {
5178
+ $ref: '#/components/schemas/TaskId',
5179
+ },
5180
+ authorId: {
5181
+ $ref: '#/components/schemas/MemberId',
5182
+ },
5183
+ author: {
5184
+ type: 'string',
5185
+ },
5186
+ commentSnippet: {
5187
+ type: 'string',
5188
+ },
5189
+ kind: {
5190
+ type: 'string',
5191
+ enum: ['MEMBER_MENTIONED'],
5192
+ },
5193
+ },
5194
+ required: ['kind'],
5195
+ };
4667
5196
  export const NewMessageSchema = {
4668
5197
  properties: {
4669
5198
  contactId: {
@@ -4726,6 +5255,7 @@ export const NotificationContentSchema = {
4726
5255
  mapping: {
4727
5256
  AGENT_COMMENTED: '#/components/schemas/AgentCommented',
4728
5257
  TASK_COMMENTED: '#/components/schemas/TaskCommented',
5258
+ MEMBER_MENTIONED: '#/components/schemas/MemberMentioned',
4729
5259
  LISTING_EXPIRED: '#/components/schemas/ListingExpired',
4730
5260
  NEW_SEEKER_RATING: '#/components/schemas/NewSeekerRating',
4731
5261
  NEW_MESSAGE: '#/components/schemas/NewMessage',
@@ -4734,6 +5264,8 @@ export const NotificationContentSchema = {
4734
5264
  SUBSCRIPTION_ENDING: '#/components/schemas/SubscriptionEnding',
4735
5265
  SUBSCRIPTION_EXPIRED: '#/components/schemas/SubscriptionExpired',
4736
5266
  SUBSCRIPTION_PAYMENT_REVERSED: '#/components/schemas/SubscriptionPaymentReversed',
5267
+ CHANNEL_REAUTH_REQUIRED: '#/components/schemas/ChannelReauthRequired',
5268
+ SOCIAL_POST_FAILED: '#/components/schemas/SocialPostFailed',
4737
5269
  },
4738
5270
  },
4739
5271
  required: ['kind'],
@@ -4767,6 +5299,7 @@ export const NotificationViewSchema = {
4767
5299
  enum: [
4768
5300
  'AGENT_COMMENTED',
4769
5301
  'TASK_COMMENTED',
5302
+ 'MEMBER_MENTIONED',
4770
5303
  'EXTERNAL_LISTING_EXPIRED',
4771
5304
  'LISTING_EXPIRED',
4772
5305
  'NEW_SEEKER_RATING',
@@ -4776,6 +5309,8 @@ export const NotificationViewSchema = {
4776
5309
  'SUBSCRIPTION_ENDING',
4777
5310
  'SUBSCRIPTION_EXPIRED',
4778
5311
  'SUBSCRIPTION_PAYMENT_REVERSED',
5312
+ 'CHANNEL_REAUTH_REQUIRED',
5313
+ 'SOCIAL_POST_FAILED',
4779
5314
  ],
4780
5315
  },
4781
5316
  targetId: {
@@ -4786,18 +5321,27 @@ export const NotificationViewSchema = {
4786
5321
  {
4787
5322
  $ref: '#/components/schemas/AgentCommented',
4788
5323
  },
5324
+ {
5325
+ $ref: '#/components/schemas/ChannelReauthRequired',
5326
+ },
4789
5327
  {
4790
5328
  $ref: '#/components/schemas/ContactAssigned',
4791
5329
  },
4792
5330
  {
4793
5331
  $ref: '#/components/schemas/ListingExpired',
4794
5332
  },
5333
+ {
5334
+ $ref: '#/components/schemas/MemberMentioned',
5335
+ },
4795
5336
  {
4796
5337
  $ref: '#/components/schemas/NewMessage',
4797
5338
  },
4798
5339
  {
4799
5340
  $ref: '#/components/schemas/NewSeekerRating',
4800
5341
  },
5342
+ {
5343
+ $ref: '#/components/schemas/SocialPostFailed',
5344
+ },
4801
5345
  {
4802
5346
  $ref: '#/components/schemas/SubscriptionEnding',
4803
5347
  },
@@ -4834,6 +5378,56 @@ export const PropertyIdSchema = {
4834
5378
  },
4835
5379
  },
4836
5380
  };
5381
+ export const SocialPostFailedSchema = {
5382
+ properties: {
5383
+ postId: {
5384
+ $ref: '#/components/schemas/SocialPostId',
5385
+ },
5386
+ contactId: {
5387
+ $ref: '#/components/schemas/ContactId',
5388
+ },
5389
+ propertyId: {
5390
+ $ref: '#/components/schemas/PropertyId',
5391
+ },
5392
+ listingId: {
5393
+ type: 'integer',
5394
+ format: 'int64',
5395
+ },
5396
+ propertyTitle: {
5397
+ type: 'string',
5398
+ },
5399
+ channel: {
5400
+ type: 'string',
5401
+ enum: ['FACEBOOK', 'INSTAGRAM'],
5402
+ },
5403
+ reason: {
5404
+ type: 'string',
5405
+ enum: [
5406
+ 'RECONNECT_REQUIRED',
5407
+ 'PERMISSION_MISSING',
5408
+ 'PAGE_PUBLISHING_AUTHORIZATION',
5409
+ 'RATE_LIMITED',
5410
+ 'BAD_MEDIA',
5411
+ 'UNCONFIRMED',
5412
+ 'UNKNOWN',
5413
+ ],
5414
+ },
5415
+ kind: {
5416
+ type: 'string',
5417
+ enum: ['SOCIAL_POST_FAILED'],
5418
+ },
5419
+ },
5420
+ required: ['kind'],
5421
+ };
5422
+ export const SocialPostIdSchema = {
5423
+ type: 'object',
5424
+ properties: {
5425
+ value: {
5426
+ type: 'string',
5427
+ format: 'uuid',
5428
+ },
5429
+ },
5430
+ };
4837
5431
  export const SubscriptionEndingSchema = {
4838
5432
  properties: {
4839
5433
  subscriptionId: {
@@ -5374,6 +5968,13 @@ export const ListingGridResponseSchema = {
5374
5968
  $ref: '#/components/schemas/PlatformView',
5375
5969
  },
5376
5970
  },
5971
+ socialPosts: {
5972
+ type: 'array',
5973
+ description: 'Where the listing is posted on Facebook / Instagram: the latest published post per channel',
5974
+ items: {
5975
+ $ref: '#/components/schemas/SocialPostLink',
5976
+ },
5977
+ },
5377
5978
  createdAt: {
5378
5979
  type: 'string',
5379
5980
  format: 'date-time',
@@ -5394,6 +5995,7 @@ export const ListingGridResponseSchema = {
5394
5995
  'propertyId',
5395
5996
  'propertyState',
5396
5997
  'propertyType',
5998
+ 'socialPosts',
5397
5999
  'title',
5398
6000
  'updatedAt',
5399
6001
  ],
@@ -5437,6 +6039,20 @@ export const PlatformViewSchema = {
5437
6039
  },
5438
6040
  },
5439
6041
  };
6042
+ export const SocialPostLinkSchema = {
6043
+ type: 'object',
6044
+ properties: {
6045
+ channel: {
6046
+ type: 'string',
6047
+ enum: ['FACEBOOK', 'INSTAGRAM'],
6048
+ },
6049
+ permalink: {
6050
+ type: 'string',
6051
+ description: 'Opens the post on Facebook / Instagram',
6052
+ },
6053
+ },
6054
+ required: ['channel', 'permalink'],
6055
+ };
5440
6056
  export const GroupCountSchema = {
5441
6057
  type: 'object',
5442
6058
  properties: {
@@ -5888,6 +6504,95 @@ export const CursorPageMessageViewSchema = {
5888
6504
  },
5889
6505
  },
5890
6506
  };
6507
+ export const ComposerLimitsSchema = {
6508
+ type: 'object',
6509
+ properties: {
6510
+ maxPhotos: {
6511
+ type: 'integer',
6512
+ format: 'int32',
6513
+ },
6514
+ maxCaptionLength: {
6515
+ type: 'integer',
6516
+ format: 'int32',
6517
+ description: 'In Unicode code points: an emoji counts once, as [...text].length counts in JavaScript (text.length counts it twice)',
6518
+ },
6519
+ },
6520
+ required: ['maxCaptionLength', 'maxPhotos'],
6521
+ };
6522
+ export const ComposerPhotoSchema = {
6523
+ type: 'object',
6524
+ properties: {
6525
+ photoId: {
6526
+ type: 'integer',
6527
+ format: 'int64',
6528
+ description: 'What the publish request sends',
6529
+ },
6530
+ url: {
6531
+ type: 'string',
6532
+ },
6533
+ width: {
6534
+ type: 'integer',
6535
+ format: 'int32',
6536
+ description: 'As the photo is shown, in pixels',
6537
+ },
6538
+ height: {
6539
+ type: 'integer',
6540
+ format: 'int32',
6541
+ description: 'As the photo is shown, in pixels',
6542
+ },
6543
+ selectedByDefault: {
6544
+ type: 'boolean',
6545
+ },
6546
+ },
6547
+ required: ['height', 'photoId', 'selectedByDefault', 'url', 'width'],
6548
+ };
6549
+ export const ComposerPreviewSchema = {
6550
+ type: 'object',
6551
+ properties: {
6552
+ channel: {
6553
+ type: 'string',
6554
+ enum: ['FACEBOOK', 'INSTAGRAM'],
6555
+ },
6556
+ caption: {
6557
+ type: 'string',
6558
+ description: 'The built-in Georgian template filled in from the listing; a line with nothing to fill it is left out',
6559
+ },
6560
+ templateId: {
6561
+ type: 'string',
6562
+ format: 'uuid',
6563
+ description: 'The template the text came from, sent back on publish; null for the built-in one',
6564
+ },
6565
+ limits: {
6566
+ $ref: '#/components/schemas/ComposerLimits',
6567
+ },
6568
+ ratios: {
6569
+ type: 'array',
6570
+ description: "The shapes the agent can pick; empty on Facebook, which keeps each photo's own",
6571
+ items: {
6572
+ type: 'string',
6573
+ enum: ['LANDSCAPE', 'SQUARE', 'PORTRAIT'],
6574
+ },
6575
+ },
6576
+ defaultRatio: {
6577
+ type: 'string',
6578
+ description: 'Instagram only',
6579
+ enum: ['LANDSCAPE', 'SQUARE', 'PORTRAIT'],
6580
+ },
6581
+ photos: {
6582
+ type: 'array',
6583
+ description: 'The whole gallery, in gallery order',
6584
+ items: {
6585
+ $ref: '#/components/schemas/ComposerPhoto',
6586
+ },
6587
+ },
6588
+ access: {
6589
+ type: 'string',
6590
+ description: 'Whether the agency can post to the channel now; publishing refuses anything but ALLOWED',
6591
+ enum: ['ALLOWED', 'NOT_CONNECTED', 'RECONNECT_REQUIRED'],
6592
+ },
6593
+ },
6594
+ required: ['access', 'caption', 'channel', 'limits', 'photos', 'ratios'],
6595
+ };
5891
6596
  export const ContactGridResponseSchema = {
5892
6597
  type: 'object',
5893
6598
  properties: {
@@ -6060,10 +6765,7 @@ export const Client360ResponseSchema = {
6060
6765
  },
6061
6766
  },
6062
6767
  tasks: {
6063
- type: 'array',
6064
- items: {
6065
- $ref: '#/components/schemas/ContactTaskResponse',
6066
- },
6768
+ $ref: '#/components/schemas/ContactTasksResponse',
6067
6769
  },
6068
6770
  },
6069
6771
  required: [