@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
@@ -314,6 +314,17 @@ export type OauthConnectionResponse = {
314
314
  createdAt: Date;
315
315
  updatedAt: Date;
316
316
  revokedAt?: Date;
317
+ canPublish: boolean;
318
+ canReadComments: boolean;
319
+ canReply: boolean;
320
+ /**
321
+ * Like and comment counts on a post
322
+ */
323
+ canReadStats: boolean;
324
+ /**
325
+ * The token is dead, or the grant lacks a scope the connect flow asks for — re-running the connect flow is what fixes it
326
+ */
327
+ reconnectRequired: boolean;
317
328
  };
318
329
  export type AttendeeRequest = {
319
330
  role: 'ORGANIZER' | 'MEMBER' | 'OWNER' | 'CLIENT' | 'OTHER';
@@ -415,6 +426,58 @@ export type Percentage = Omit<AddDealRequest, 'type'> & {
415
426
  commission?: number;
416
427
  type: 'PERCENTAGE';
417
428
  };
429
+ export type FocusRequest = {
430
+ x: number;
431
+ y: number;
432
+ };
433
+ export type Photo = {
434
+ photoId: number;
435
+ mode?: 'AUTO' | 'CROP' | 'FIT';
436
+ focus?: FocusRequest;
437
+ };
438
+ export type PublishSocialPostRequest = {
439
+ channel: 'FACEBOOK' | 'INSTAGRAM';
440
+ caption: string;
441
+ /**
442
+ * Instagram only; defaults to LANDSCAPE
443
+ */
444
+ ratio?: 'LANDSCAPE' | 'SQUARE' | 'PORTRAIT';
445
+ /**
446
+ * In post order
447
+ */
448
+ photos: Array<Photo>;
449
+ templateId?: string;
450
+ };
451
+ export type FocusView = {
452
+ x: number;
453
+ y: number;
454
+ };
455
+ export type PhotoView = {
456
+ photoId: number;
457
+ mode: 'AUTO' | 'CROP' | 'FIT';
458
+ focus: FocusView;
459
+ };
460
+ export type SocialPostView = {
461
+ id: string;
462
+ channel: 'FACEBOOK' | 'INSTAGRAM';
463
+ status: 'PUBLISHING' | 'PUBLISHED' | 'FAILED' | 'REMOVED';
464
+ caption: string;
465
+ /**
466
+ * Instagram only
467
+ */
468
+ ratio?: 'LANDSCAPE' | 'SQUARE' | 'PORTRAIT';
469
+ photos: Array<PhotoView>;
470
+ templateId?: string;
471
+ failureReason?: 'RECONNECT_REQUIRED' | 'PERMISSION_MISSING' | 'PAGE_PUBLISHING_AUTHORIZATION' | 'RATE_LIMITED' | 'BAD_MEDIA' | 'UNCONFIRMED' | 'UNKNOWN';
472
+ failureDetail?: string;
473
+ /**
474
+ * The post on Facebook / Instagram, once published
475
+ */
476
+ permalink?: string;
477
+ publishedAt?: Date;
478
+ createdBy: string;
479
+ createdAt: Date;
480
+ };
418
481
  export type CloseListingRequest = {
419
482
  withdrawExternal?: boolean;
420
483
  };
@@ -435,6 +498,10 @@ export type OnboardClientRequest = {
435
498
  export type IdResponseLong = {
436
499
  id: number;
437
500
  };
501
+ export type ExternalListingWithdrawRequest = {
502
+ platform: 'SS' | 'MY_HOME';
503
+ listingId: number;
504
+ };
438
505
  export type ExternalListingPublishRequest = {
439
506
  platform: 'SS' | 'MY_HOME';
440
507
  listingId: number;
@@ -545,17 +612,13 @@ export type CommentView = {
545
612
  authorLastName: string;
546
613
  profilePictureUrl?: string;
547
614
  body: string;
615
+ mentionedMembers: Array<MemberPeekResponse>;
616
+ mentionedContacts: Array<ContactMentionView>;
548
617
  createdAt: Date;
549
618
  editedAt?: Date;
550
619
  };
551
- export type CursorPageCommentView = {
552
- items?: Array<CommentView>;
553
- nextCursor?: string;
554
- hasNext?: boolean;
555
- };
556
- export type ContactLink = {
620
+ export type ContactMentionView = {
557
621
  contactId: number;
558
- primary: boolean;
559
622
  personalDetails: ContactPersonalDetailsRestricted | ContactPersonalDetailsVisible;
560
623
  contactAssignedTo?: string;
561
624
  };
@@ -570,6 +633,25 @@ export type ContactPersonalDetailsVisible = {
570
633
  email?: string;
571
634
  status: 'VISIBLE';
572
635
  };
636
+ export type CursorPageCommentView = {
637
+ items?: Array<CommentView>;
638
+ nextCursor?: string;
639
+ hasNext?: boolean;
640
+ };
641
+ export type MemberPeekResponse = {
642
+ memberId: string;
643
+ firstName: string;
644
+ lastName: string;
645
+ photo?: string;
646
+ phone?: string;
647
+ email: string;
648
+ };
649
+ export type ContactLink = {
650
+ contactId: number;
651
+ primary: boolean;
652
+ personalDetails: ContactPersonalDetailsRestricted | ContactPersonalDetailsVisible;
653
+ contactAssignedTo?: string;
654
+ };
573
655
  export type InterestLink = {
574
656
  interestId: number;
575
657
  contactId: number;
@@ -591,14 +673,6 @@ export type LocationResponse = {
591
673
  id: number;
592
674
  names: Array<LangTextResponse>;
593
675
  };
594
- export type MemberPeekResponse = {
595
- memberId: string;
596
- firstName: string;
597
- lastName: string;
598
- photo?: string;
599
- phone?: string;
600
- email: string;
601
- };
602
676
  export type Participant = {
603
677
  memberId: string;
604
678
  firstName: string;
@@ -669,37 +743,42 @@ export type TodoItem = {
669
743
  completedAt?: Date;
670
744
  completedBy?: string;
671
745
  };
672
- export type ContactTaskResponse = {
746
+ export type ContactTaskCardResponse = {
673
747
  taskId: string;
674
- title: string;
675
- boardId: string;
676
- boardName: string;
677
748
  stageId: string;
678
749
  stageName: string;
679
- outcome?: 'WON' | 'LOST';
750
+ title: string;
751
+ hasDescription: boolean;
752
+ commentCount: number;
753
+ contactCount: number;
754
+ priority: 'LOW' | 'MEDIUM' | 'HIGH' | 'CRITICAL';
680
755
  value?: number;
756
+ commissionType?: 'NOT_SET' | 'FIXED' | 'PERCENTAGE' | 'MONTHS_OF_RENT';
757
+ commissionValue?: number;
758
+ ownerId?: string;
759
+ primaryContactId?: number;
760
+ primaryContact?: ContactPersonalDetailsRestricted | ContactPersonalDetailsVisible;
761
+ contactAssignedTo?: string;
762
+ primaryContent?: TaskContentInterest | TaskContentProperty;
763
+ participants: Array<string>;
764
+ rank: string;
765
+ stageEnteredAt: Date;
766
+ daysInStage: number;
767
+ openTodos: number;
768
+ totalTodos: number;
769
+ hasLeftoverOpenTodos: boolean;
770
+ expectedCloseDate?: Date;
771
+ outcome?: 'WON' | 'LOST';
772
+ lostReason?: 'NOT_WORKING_WITH_AGENTS' | 'NOT_RESPONDING' | 'ALREADY_SOLD' | 'COULD_NOT_NEGOTIATE_PRICE' | 'CHOSE_ANOTHER_AGENCY' | 'CHANGED_PLANS' | 'OUT_OF_BUDGET' | 'SPAM' | 'OTHER';
773
+ closedAt?: Date;
774
+ boardId: string;
775
+ boardName: string;
776
+ stageColor: string;
681
777
  primary: boolean;
682
778
  };
683
- export type BoardCardsResponse = {
684
- boardId: string;
685
- name: string;
686
- kind?: 'OWNER' | 'SEEKER';
779
+ export type ContactTasksResponse = {
687
780
  members: Array<MemberPeekResponse>;
688
- columns: Array<Column>;
689
- };
690
- export type Column = {
691
- stageId: string;
692
- name: string;
693
- color: string;
694
- position: number;
695
- totalTasks: number;
696
- totalValue: number;
697
- cards: CursorPageTaskCardResponse;
698
- };
699
- export type CursorPageTaskCardResponse = {
700
- items?: Array<TaskCardResponse>;
701
- nextCursor?: string;
702
- hasNext?: boolean;
781
+ items: Array<ContactTaskCardResponse>;
703
782
  };
704
783
  export type TaskCardResponse = {
705
784
  taskId: string;
@@ -746,6 +825,27 @@ export type TaskContentProperty = Omit<TaskContent, 'type'> & {
746
825
  title?: string;
747
826
  type: 'PROPERTY';
748
827
  };
828
+ export type BoardCardsResponse = {
829
+ boardId: string;
830
+ name: string;
831
+ kind?: 'OWNER' | 'SEEKER';
832
+ members: Array<MemberPeekResponse>;
833
+ columns: Array<Column>;
834
+ };
835
+ export type Column = {
836
+ stageId: string;
837
+ name: string;
838
+ color: string;
839
+ position: number;
840
+ totalTasks: number;
841
+ totalValue: number;
842
+ cards: CursorPageTaskCardResponse;
843
+ };
844
+ export type CursorPageTaskCardResponse = {
845
+ items?: Array<TaskCardResponse>;
846
+ nextCursor?: string;
847
+ hasNext?: boolean;
848
+ };
749
849
  export type StageCardsResponse = {
750
850
  members: Array<MemberPeekResponse>;
751
851
  data: CursorPageTaskCardResponse;
@@ -1082,10 +1182,11 @@ export type DealResponse = {
1082
1182
  export type PlatformListingResponse = {
1083
1183
  platformId?: number;
1084
1184
  platformType: 'SS' | 'MY_HOME';
1085
- status: 'PENDING' | 'SYNDICATED' | 'FAILED' | 'EXPIRED';
1185
+ status: 'PENDING' | 'SYNDICATED' | 'FAILED' | 'EXPIRED' | 'WITHDRAWING' | 'WITHDRAWN';
1086
1186
  listedAt?: Date;
1087
1187
  expiresAt?: Date;
1088
1188
  renewedAt?: Date;
1189
+ failureReason?: string;
1089
1190
  boost?: BoostResponse;
1090
1191
  coloredListing?: ColoredListingResponse;
1091
1192
  };
@@ -1109,12 +1210,16 @@ export type PropertyListingResponse = {
1109
1210
  marketplaceStatus: 'ACTIVE' | 'PAUSED' | 'EXPIRED';
1110
1211
  crmState: 'OPEN' | 'CLOSED';
1111
1212
  /**
1112
- * 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.
1213
+ * 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.
1113
1214
  */
1114
1215
  isProcessing: boolean;
1115
1216
  price: number;
1116
1217
  deal?: Fixed | MonthsOfRent | Percentage;
1117
1218
  platformListings: Array<PlatformListingResponse>;
1219
+ /**
1220
+ * Facebook / Instagram posts of this listing, newest first
1221
+ */
1222
+ socialPosts: Array<SocialPostResponse>;
1118
1223
  createdAt: Date;
1119
1224
  closedAt?: Date;
1120
1225
  };
@@ -1134,6 +1239,45 @@ export type PropertyPageResponse = {
1134
1239
  updatedAt: Date;
1135
1240
  closeReason?: PropertyCloseReasonResponse;
1136
1241
  };
1242
+ export type SocialPostResponse = {
1243
+ /**
1244
+ * For retrying a failed post, or reading it in full
1245
+ */
1246
+ postId: string;
1247
+ channel: 'FACEBOOK' | 'INSTAGRAM';
1248
+ status: 'PUBLISHING' | 'PUBLISHED' | 'FAILED' | 'REMOVED';
1249
+ /**
1250
+ * Exactly as published
1251
+ */
1252
+ caption: string;
1253
+ /**
1254
+ * The post's first photo, as uploaded to the gallery (not the Instagram crop)
1255
+ */
1256
+ thumbnailUrl?: string;
1257
+ /**
1258
+ * The post on Facebook / Instagram, once published
1259
+ */
1260
+ permalink?: string;
1261
+ publishedAt?: Date;
1262
+ /**
1263
+ * The member who created the post, also after they left the agency
1264
+ */
1265
+ createdBy: MemberPeekResponse;
1266
+ failureReason?: 'RECONNECT_REQUIRED' | 'PERMISSION_MISSING' | 'PAGE_PUBLISHING_AUTHORIZATION' | 'RATE_LIMITED' | 'BAD_MEDIA' | 'UNCONFIRMED' | 'UNKNOWN';
1267
+ /**
1268
+ * The post's public counts as last read from Facebook / Instagram; null until the first read
1269
+ */
1270
+ stats?: SocialPostStats;
1271
+ };
1272
+ export type SocialPostStats = {
1273
+ likes: number;
1274
+ comments: number;
1275
+ shares: number;
1276
+ /**
1277
+ * When the counts were read — show how old they are
1278
+ */
1279
+ fetchedAt: Date;
1280
+ };
1137
1281
  export type ListingOwnerContactResponse = {
1138
1282
  contactId: number;
1139
1283
  personalDetails: ContactPersonalDetailsRestricted | ContactPersonalDetailsVisible;
@@ -1146,9 +1290,18 @@ export type AgentCommented = {
1146
1290
  commentSnippet?: string;
1147
1291
  kind: 'AGENT_COMMENTED';
1148
1292
  };
1293
+ export type ChannelReauthRequired = {
1294
+ connectionId?: ConnectionId;
1295
+ channelType?: 'FACEBOOK' | 'INSTAGRAM' | 'WHATSAPP' | 'TIKTOK';
1296
+ displayName?: string;
1297
+ kind: 'CHANNEL_REAUTH_REQUIRED';
1298
+ };
1149
1299
  export type CommentId = {
1150
1300
  value?: string;
1151
1301
  };
1302
+ export type ConnectionId = {
1303
+ value?: string;
1304
+ };
1152
1305
  export type ContactAssigned = {
1153
1306
  contactId?: ContactId;
1154
1307
  contactName?: string;
@@ -1178,6 +1331,15 @@ export type ListingExpired = {
1178
1331
  export type MemberId = {
1179
1332
  value?: string;
1180
1333
  };
1334
+ export type MemberMentioned = {
1335
+ commentId?: CommentId;
1336
+ contactId?: ContactId;
1337
+ taskId?: TaskId;
1338
+ authorId?: MemberId;
1339
+ author?: string;
1340
+ commentSnippet?: string;
1341
+ kind: 'MEMBER_MENTIONED';
1342
+ };
1181
1343
  export type NewMessage = {
1182
1344
  contactId?: ContactId;
1183
1345
  conversationId?: ConversationId;
@@ -1204,15 +1366,28 @@ export type NotificationFeed = {
1204
1366
  export type NotificationView = {
1205
1367
  id: string;
1206
1368
  seq: number;
1207
- type: 'AGENT_COMMENTED' | 'TASK_COMMENTED' | 'EXTERNAL_LISTING_EXPIRED' | 'LISTING_EXPIRED' | 'NEW_SEEKER_RATING' | 'NEW_MESSAGE' | 'CONTACT_ASSIGNED' | 'SUBSCRIPTION_PAYMENT_FAILED' | 'SUBSCRIPTION_ENDING' | 'SUBSCRIPTION_EXPIRED' | 'SUBSCRIPTION_PAYMENT_REVERSED';
1369
+ type: 'AGENT_COMMENTED' | 'TASK_COMMENTED' | 'MEMBER_MENTIONED' | 'EXTERNAL_LISTING_EXPIRED' | 'LISTING_EXPIRED' | 'NEW_SEEKER_RATING' | 'NEW_MESSAGE' | 'CONTACT_ASSIGNED' | 'SUBSCRIPTION_PAYMENT_FAILED' | 'SUBSCRIPTION_ENDING' | 'SUBSCRIPTION_EXPIRED' | 'SUBSCRIPTION_PAYMENT_REVERSED' | 'CHANNEL_REAUTH_REQUIRED' | 'SOCIAL_POST_FAILED';
1208
1370
  targetId?: string;
1209
- payload: AgentCommented | ContactAssigned | ListingExpired | NewMessage | NewSeekerRating | SubscriptionEnding | SubscriptionExpired | SubscriptionPaymentFailed | SubscriptionPaymentReversed | TaskCommented;
1371
+ payload: AgentCommented | ChannelReauthRequired | ContactAssigned | ListingExpired | MemberMentioned | NewMessage | NewSeekerRating | SocialPostFailed | SubscriptionEnding | SubscriptionExpired | SubscriptionPaymentFailed | SubscriptionPaymentReversed | TaskCommented;
1210
1372
  createdAt: Date;
1211
1373
  read: boolean;
1212
1374
  };
1213
1375
  export type PropertyId = {
1214
1376
  value?: number;
1215
1377
  };
1378
+ export type SocialPostFailed = {
1379
+ postId?: SocialPostId;
1380
+ contactId?: ContactId;
1381
+ propertyId?: PropertyId;
1382
+ listingId?: number;
1383
+ propertyTitle?: string;
1384
+ channel?: 'FACEBOOK' | 'INSTAGRAM';
1385
+ reason?: 'RECONNECT_REQUIRED' | 'PERMISSION_MISSING' | 'PAGE_PUBLISHING_AUTHORIZATION' | 'RATE_LIMITED' | 'BAD_MEDIA' | 'UNCONFIRMED' | 'UNKNOWN';
1386
+ kind: 'SOCIAL_POST_FAILED';
1387
+ };
1388
+ export type SocialPostId = {
1389
+ value?: string;
1390
+ };
1216
1391
  export type SubscriptionEnding = {
1217
1392
  subscriptionId?: SubscriptionId;
1218
1393
  status?: 'PENDING' | 'TRIALING' | 'ACTIVE' | 'PAST_DUE' | 'CANCELLED' | 'EXPIRED' | 'SUPERSEDED';
@@ -1346,6 +1521,10 @@ export type ListingGridResponse = {
1346
1521
  commissionType?: 'NOT_SET' | 'FIXED' | 'PERCENTAGE' | 'MONTHS_OF_RENT';
1347
1522
  commission?: number;
1348
1523
  platforms: Array<PlatformView>;
1524
+ /**
1525
+ * Where the listing is posted on Facebook / Instagram: the latest published post per channel
1526
+ */
1527
+ socialPosts: Array<SocialPostLink>;
1349
1528
  createdAt: Date;
1350
1529
  updatedAt: Date;
1351
1530
  };
@@ -1360,6 +1539,13 @@ export type PlatformView = {
1360
1539
  tier?: 'VIP' | 'VIP_PLUS' | 'SUPER_VIP';
1361
1540
  boostExpiresAt?: Date;
1362
1541
  };
1542
+ export type SocialPostLink = {
1543
+ channel: 'FACEBOOK' | 'INSTAGRAM';
1544
+ /**
1545
+ * Opens the post on Facebook / Instagram
1546
+ */
1547
+ permalink: string;
1548
+ };
1363
1549
  export type GroupCount = {
1364
1550
  groupKey: string;
1365
1551
  label: string;
@@ -1484,6 +1670,57 @@ export type CursorPageMessageView = {
1484
1670
  nextCursor?: string;
1485
1671
  hasNext?: boolean;
1486
1672
  };
1673
+ export type ComposerLimits = {
1674
+ maxPhotos: number;
1675
+ /**
1676
+ * In Unicode code points: an emoji counts once, as [...text].length counts in JavaScript (text.length counts it twice)
1677
+ */
1678
+ maxCaptionLength: number;
1679
+ };
1680
+ export type ComposerPhoto = {
1681
+ /**
1682
+ * What the publish request sends
1683
+ */
1684
+ photoId: number;
1685
+ url: string;
1686
+ /**
1687
+ * As the photo is shown, in pixels
1688
+ */
1689
+ width: number;
1690
+ /**
1691
+ * As the photo is shown, in pixels
1692
+ */
1693
+ height: number;
1694
+ selectedByDefault: boolean;
1695
+ };
1696
+ export type ComposerPreview = {
1697
+ channel: 'FACEBOOK' | 'INSTAGRAM';
1698
+ /**
1699
+ * The built-in Georgian template filled in from the listing; a line with nothing to fill it is left out
1700
+ */
1701
+ caption: string;
1702
+ /**
1703
+ * The template the text came from, sent back on publish; null for the built-in one
1704
+ */
1705
+ templateId?: string;
1706
+ limits: ComposerLimits;
1707
+ /**
1708
+ * The shapes the agent can pick; empty on Facebook, which keeps each photo's own
1709
+ */
1710
+ ratios: Array<'LANDSCAPE' | 'SQUARE' | 'PORTRAIT'>;
1711
+ /**
1712
+ * Instagram only
1713
+ */
1714
+ defaultRatio?: 'LANDSCAPE' | 'SQUARE' | 'PORTRAIT';
1715
+ /**
1716
+ * The whole gallery, in gallery order
1717
+ */
1718
+ photos: Array<ComposerPhoto>;
1719
+ /**
1720
+ * Whether the agency can post to the channel now; publishing refuses anything but ALLOWED
1721
+ */
1722
+ access: 'ALLOWED' | 'NOT_CONNECTED' | 'RECONNECT_REQUIRED';
1723
+ };
1487
1724
  export type ContactGridResponse = {
1488
1725
  id: number;
1489
1726
  createdBy?: string;
@@ -1524,7 +1761,7 @@ export type Client360Response = {
1524
1761
  updatedAt: Date;
1525
1762
  interests: Array<ContactInterestResponse>;
1526
1763
  properties: Array<ContactPropertyResponse>;
1527
- tasks: Array<ContactTaskResponse>;
1764
+ tasks: ContactTasksResponse;
1528
1765
  };
1529
1766
  export type CommunicationPreferenceResponse = {
1530
1767
  preferredContactMethod?: 'WHATSAPP' | 'VIBER' | 'PHONE_CALL';
@@ -3462,6 +3699,41 @@ export type PostContactsByContactIdPropertiesByPropertyIdListingsResponses = {
3462
3699
  201: IdResponseUuid;
3463
3700
  };
3464
3701
  export type PostContactsByContactIdPropertiesByPropertyIdListingsResponse = PostContactsByContactIdPropertiesByPropertyIdListingsResponses[keyof PostContactsByContactIdPropertiesByPropertyIdListingsResponses];
3702
+ export type PostContactsByContactIdPropertiesByPropertyIdListingsByListingIdSocialPostsData = {
3703
+ body: PublishSocialPostRequest;
3704
+ path: {
3705
+ contactId: number;
3706
+ propertyId: number;
3707
+ listingId: number;
3708
+ };
3709
+ query?: never;
3710
+ url: '/contacts/{contactId}/properties/{propertyId}/listings/{listingId}/social-posts';
3711
+ };
3712
+ export type PostContactsByContactIdPropertiesByPropertyIdListingsByListingIdSocialPostsResponses = {
3713
+ /**
3714
+ * Accepted
3715
+ */
3716
+ 202: SocialPostView;
3717
+ };
3718
+ export type PostContactsByContactIdPropertiesByPropertyIdListingsByListingIdSocialPostsResponse = PostContactsByContactIdPropertiesByPropertyIdListingsByListingIdSocialPostsResponses[keyof PostContactsByContactIdPropertiesByPropertyIdListingsByListingIdSocialPostsResponses];
3719
+ export type PostContactsByContactIdPropertiesByPropertyIdListingsByListingIdSocialPostsByPostIdRetryData = {
3720
+ body?: never;
3721
+ path: {
3722
+ contactId: number;
3723
+ propertyId: number;
3724
+ listingId: number;
3725
+ postId: string;
3726
+ };
3727
+ query?: never;
3728
+ url: '/contacts/{contactId}/properties/{propertyId}/listings/{listingId}/social-posts/{postId}/retry';
3729
+ };
3730
+ export type PostContactsByContactIdPropertiesByPropertyIdListingsByListingIdSocialPostsByPostIdRetryResponses = {
3731
+ /**
3732
+ * Accepted
3733
+ */
3734
+ 202: SocialPostView;
3735
+ };
3736
+ export type PostContactsByContactIdPropertiesByPropertyIdListingsByListingIdSocialPostsByPostIdRetryResponse = PostContactsByContactIdPropertiesByPropertyIdListingsByListingIdSocialPostsByPostIdRetryResponses[keyof PostContactsByContactIdPropertiesByPropertyIdListingsByListingIdSocialPostsByPostIdRetryResponses];
3465
3737
  export type PostContactsByContactIdPropertiesByPropertyIdListingsByListingIdResumeData = {
3466
3738
  body?: never;
3467
3739
  path: {
@@ -3712,6 +3984,21 @@ export type PostContactResponses = {
3712
3984
  201: IdResponseLong;
3713
3985
  };
3714
3986
  export type PostContactResponse = PostContactResponses[keyof PostContactResponses];
3987
+ export type PostContactByContactIdPropertyByPropertyIdExternalListingWithdrawData = {
3988
+ body: ExternalListingWithdrawRequest;
3989
+ path: {
3990
+ contactId: number;
3991
+ propertyId: number;
3992
+ };
3993
+ query?: never;
3994
+ url: '/contact/{contactId}/property/{propertyId}/external-listing/withdraw';
3995
+ };
3996
+ export type PostContactByContactIdPropertyByPropertyIdExternalListingWithdrawResponses = {
3997
+ /**
3998
+ * OK
3999
+ */
4000
+ 200: unknown;
4001
+ };
3715
4002
  export type PostContactByContactIdPropertyByPropertyIdExternalListingPublishData = {
3716
4003
  body: ExternalListingPublishRequest;
3717
4004
  path: {
@@ -3895,7 +4182,7 @@ export type GetTaskByContactByContactIdResponses = {
3895
4182
  /**
3896
4183
  * OK
3897
4184
  */
3898
- 200: Array<ContactTaskResponse>;
4185
+ 200: ContactTasksResponse;
3899
4186
  };
3900
4187
  export type GetTaskByContactByContactIdResponse = GetTaskByContactByContactIdResponses[keyof GetTaskByContactByContactIdResponses];
3901
4188
  export type GetTaskBoardByBoardIdData = {
@@ -4472,6 +4759,7 @@ export type GetListingData = {
4472
4759
  platforms?: Array<'SS' | 'MY_HOME'>;
4473
4760
  platformExpiresFrom?: Date;
4474
4761
  platformExpiresTo?: Date;
4762
+ socialChannels?: Array<'FACEBOOK' | 'INSTAGRAM'>;
4475
4763
  boostTiers?: Array<string>;
4476
4764
  boostExpiresFrom?: Date;
4477
4765
  boostExpiresTo?: Date;
@@ -4538,6 +4826,7 @@ export type GetListingGroupsData = {
4538
4826
  platforms?: Array<'SS' | 'MY_HOME'>;
4539
4827
  platformExpiresFrom?: Date;
4540
4828
  platformExpiresTo?: Date;
4829
+ socialChannels?: Array<'FACEBOOK' | 'INSTAGRAM'>;
4541
4830
  boostTiers?: Array<string>;
4542
4831
  boostExpiresFrom?: Date;
4543
4832
  boostExpiresTo?: Date;
@@ -4722,6 +5011,43 @@ export type GetConversationsByConversationIdUpdatesResponses = {
4722
5011
  200: ThreadUpdates;
4723
5012
  };
4724
5013
  export type GetConversationsByConversationIdUpdatesResponse = GetConversationsByConversationIdUpdatesResponses[keyof GetConversationsByConversationIdUpdatesResponses];
5014
+ export type GetContactsByContactIdPropertiesByPropertyIdListingsByListingIdSocialPostsByPostIdData = {
5015
+ body?: never;
5016
+ path: {
5017
+ contactId: number;
5018
+ propertyId: number;
5019
+ listingId: number;
5020
+ postId: string;
5021
+ };
5022
+ query?: never;
5023
+ url: '/contacts/{contactId}/properties/{propertyId}/listings/{listingId}/social-posts/{postId}';
5024
+ };
5025
+ export type GetContactsByContactIdPropertiesByPropertyIdListingsByListingIdSocialPostsByPostIdResponses = {
5026
+ /**
5027
+ * OK
5028
+ */
5029
+ 200: SocialPostView;
5030
+ };
5031
+ export type GetContactsByContactIdPropertiesByPropertyIdListingsByListingIdSocialPostsByPostIdResponse = GetContactsByContactIdPropertiesByPropertyIdListingsByListingIdSocialPostsByPostIdResponses[keyof GetContactsByContactIdPropertiesByPropertyIdListingsByListingIdSocialPostsByPostIdResponses];
5032
+ export type GetContactsByContactIdPropertiesByPropertyIdListingsByListingIdSocialPostsPreviewData = {
5033
+ body?: never;
5034
+ path: {
5035
+ contactId: number;
5036
+ propertyId: number;
5037
+ listingId: number;
5038
+ };
5039
+ query: {
5040
+ channel: 'FACEBOOK' | 'INSTAGRAM';
5041
+ };
5042
+ url: '/contacts/{contactId}/properties/{propertyId}/listings/{listingId}/social-posts/preview';
5043
+ };
5044
+ export type GetContactsByContactIdPropertiesByPropertyIdListingsByListingIdSocialPostsPreviewResponses = {
5045
+ /**
5046
+ * OK
5047
+ */
5048
+ 200: ComposerPreview;
5049
+ };
5050
+ export type GetContactsByContactIdPropertiesByPropertyIdListingsByListingIdSocialPostsPreviewResponse = GetContactsByContactIdPropertiesByPropertyIdListingsByListingIdSocialPostsPreviewResponses[keyof GetContactsByContactIdPropertiesByPropertyIdListingsByListingIdSocialPostsPreviewResponses];
4725
5051
  export type GetContactsByContactIdInterestsByInterestIdRecommendationsDecisionsData = {
4726
5052
  body?: never;
4727
5053
  path: {
@@ -4842,6 +5168,22 @@ export type GetContactGroupsResponses = {
4842
5168
  200: Array<GroupCount>;
4843
5169
  };
4844
5170
  export type GetContactGroupsResponse = GetContactGroupsResponses[keyof GetContactGroupsResponses];
5171
+ export type GetCommentsMentionsData = {
5172
+ body?: never;
5173
+ path?: never;
5174
+ query?: {
5175
+ cursor?: string;
5176
+ limit?: number;
5177
+ };
5178
+ url: '/comments/mentions';
5179
+ };
5180
+ export type GetCommentsMentionsResponses = {
5181
+ /**
5182
+ * OK
5183
+ */
5184
+ 200: CursorPageCommentView;
5185
+ };
5186
+ export type GetCommentsMentionsResponse = GetCommentsMentionsResponses[keyof GetCommentsMentionsResponses];
4845
5187
  export type DeleteBoardByBoardIdData = {
4846
5188
  body?: never;
4847
5189
  path: {