@homespot-sdk/core 0.0.366 → 0.0.368

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.
@@ -581,13 +581,17 @@ export type PublishSocialPostRequest = {
581
581
  channel: 'FACEBOOK' | 'INSTAGRAM';
582
582
  caption: string;
583
583
  /**
584
- * Instagram only; defaults to LANDSCAPE
584
+ * PHOTOS (the default) or VIDEO: the property's video, which takes no photos and no ratio
585
+ */
586
+ media?: 'PHOTOS' | 'VIDEO';
587
+ /**
588
+ * Instagram photo posts only; defaults to LANDSCAPE
585
589
  */
586
590
  ratio?: 'LANDSCAPE' | 'SQUARE' | 'PORTRAIT';
587
591
  /**
588
- * In post order
592
+ * In post order; none for a video post
589
593
  */
590
- photos: Array<Photo>;
594
+ photos?: Array<Photo>;
591
595
  };
592
596
  export type FocusView = {
593
597
  x: number;
@@ -602,11 +606,15 @@ export type SocialPostView = {
602
606
  id: string;
603
607
  channel: 'FACEBOOK' | 'INSTAGRAM';
604
608
  status: 'PUBLISHING' | 'PUBLISHED' | 'FAILED' | 'REMOVED';
609
+ media: 'PHOTOS' | 'VIDEO';
605
610
  caption: string;
606
611
  /**
607
- * Instagram only
612
+ * Instagram photo posts only
608
613
  */
609
614
  ratio?: 'LANDSCAPE' | 'SQUARE' | 'PORTRAIT';
615
+ /**
616
+ * Empty for a video post
617
+ */
610
618
  photos: Array<PhotoView>;
611
619
  failureReason?: 'RECONNECT_REQUIRED' | 'PERMISSION_MISSING' | 'PAGE_PUBLISHING_AUTHORIZATION' | 'RATE_LIMITED' | 'BAD_MEDIA' | 'UNCONFIRMED' | 'UNKNOWN';
612
620
  failureDetail?: string;
@@ -751,7 +759,7 @@ export type AdminCheckoutRequest = {
751
759
  * AI messages the agency shares each month; 0 means no AI
752
760
  */
753
761
  aiMessages: number;
754
- features: Array<'SOCIAL_POSTS' | 'AGENCY_BRANDING'>;
762
+ features: Array<'SOCIAL_POSTS' | 'AGENCY_BRANDING' | 'UNBRANDED_POSTS'>;
755
763
  /**
756
764
  * Free-trial days; 0 charges immediately
757
765
  */
@@ -788,7 +796,7 @@ export type OrganizationSummaryViewResponse = {
788
796
  profilePictureUrl?: string;
789
797
  roleName: string;
790
798
  permissions: Array<'MANAGE_AGENCY' | 'MANAGE_ROLE' | 'MANAGE_MEMBER' | 'CREATE_DELETE_MEMBER' | 'CREATE_CONTACT' | 'DELETE_CONTACT' | 'MANAGE_CONTACT' | 'MANAGE_ANY_CONTACT' | 'ASSIGN_CONTACT' | 'MANAGE_BOARD' | 'MANAGE_DEAL' | 'DELETE_DEAL'>;
791
- status: 'NEW' | 'ACTIVE' | 'PAYMENT_FAILED' | 'INACTIVE' | 'SUSPENDED';
799
+ status: 'NEW' | 'ACTIVE' | 'SUSPENDED';
792
800
  phone: string;
793
801
  isPhoneVerified: boolean;
794
802
  /**
@@ -1071,7 +1079,7 @@ export type SubscriptionResponse = {
1071
1079
  * AI messages the agency shares each month; 0 means no AI
1072
1080
  */
1073
1081
  aiMessages: number;
1074
- features: Array<'SOCIAL_POSTS' | 'AGENCY_BRANDING'>;
1082
+ features: Array<'SOCIAL_POSTS' | 'AGENCY_BRANDING' | 'UNBRANDED_POSTS'>;
1075
1083
  trialDays: number;
1076
1084
  status: 'PENDING' | 'TRIALING' | 'ACTIVE' | 'PAST_DUE' | 'CANCELLED' | 'EXPIRED' | 'SUPERSEDED';
1077
1085
  /**
@@ -1127,7 +1135,7 @@ export type PlanResponse = {
1127
1135
  activeListings: Usage;
1128
1136
  aiMessages: AiMessages;
1129
1137
  boards: Usage;
1130
- features: Array<'SOCIAL_POSTS' | 'AGENCY_BRANDING'>;
1138
+ features: Array<'SOCIAL_POSTS' | 'AGENCY_BRANDING' | 'UNBRANDED_POSTS'>;
1131
1139
  };
1132
1140
  export type Trial = {
1133
1141
  endsAt: Date;
@@ -1462,7 +1470,7 @@ export type PlanOffer = {
1462
1470
  * A month's AI messages, shared by the whole agency
1463
1471
  */
1464
1472
  aiMessages: number;
1465
- features: Array<'SOCIAL_POSTS' | 'AGENCY_BRANDING'>;
1473
+ features: Array<'SOCIAL_POSTS' | 'AGENCY_BRANDING' | 'UNBRANDED_POSTS'>;
1466
1474
  };
1467
1475
  export type TrialOffer = {
1468
1476
  days: number;
@@ -1502,7 +1510,7 @@ export type AgencySummaryResponse = {
1502
1510
  subdomain: string;
1503
1511
  phone: string;
1504
1512
  establishedYear?: number;
1505
- status: 'NEW' | 'ACTIVE' | 'PAYMENT_FAILED' | 'INACTIVE' | 'SUSPENDED';
1513
+ status: 'NEW' | 'ACTIVE' | 'SUSPENDED';
1506
1514
  logo?: string;
1507
1515
  theme?: number;
1508
1516
  };
@@ -1636,12 +1644,35 @@ export type PropertyPageResponse = {
1636
1644
  type: 'HOUSE' | 'TOWN_HOUSE' | 'COUNTRY_HOUSE' | 'VILLA' | 'COTTAGE' | 'APARTMENT' | 'DUPLEX' | 'TRIPLEX' | 'SEMI_BASEMENT' | 'ATTIC' | 'AGRICULTURAL_LAND' | 'RESIDENTIAL_LAND' | 'HOTEL_ROOM' | 'MOTEL_ROOM' | 'CO_LIVING_SPACE' | 'OFFICE' | 'COMMERCIAL_SPACE' | 'CO_WORKING_SPACE' | 'WAREHOUSE' | 'GARAGE';
1637
1645
  state: 'IN_REGISTRATION' | 'UNLISTED' | 'LISTED_INTERNALLY' | 'LISTED' | 'CLOSED';
1638
1646
  details?: PropertyDetailsResponse;
1647
+ /**
1648
+ * The property's video; null when it has none
1649
+ */
1650
+ video?: PropertyVideoResponse;
1639
1651
  agreement: AgreementResponse;
1640
1652
  listings: Array<PropertyListingResponse>;
1641
1653
  createdAt: Date;
1642
1654
  updatedAt: Date;
1643
1655
  closeReason?: PropertyCloseReasonResponse;
1644
1656
  };
1657
+ export type PropertyVideoResponse = {
1658
+ /**
1659
+ * An MP4 with its index first: a player can start before it has the file
1660
+ */
1661
+ url: string;
1662
+ /**
1663
+ * A JPEG frame from the video, to show before it plays
1664
+ */
1665
+ posterUrl: string;
1666
+ durationMs: number;
1667
+ /**
1668
+ * As the video is shown, after the phone's rotation
1669
+ */
1670
+ width: number;
1671
+ /**
1672
+ * As the video is shown, after the phone's rotation
1673
+ */
1674
+ height: number;
1675
+ };
1645
1676
  export type SocialPostResponse = {
1646
1677
  /**
1647
1678
  * For retrying a failed post, or reading it in full
@@ -1649,12 +1680,13 @@ export type SocialPostResponse = {
1649
1680
  postId: string;
1650
1681
  channel: 'FACEBOOK' | 'INSTAGRAM';
1651
1682
  status: 'PUBLISHING' | 'PUBLISHED' | 'FAILED' | 'REMOVED';
1683
+ media: 'PHOTOS' | 'VIDEO';
1652
1684
  /**
1653
1685
  * Exactly as published
1654
1686
  */
1655
1687
  caption: string;
1656
1688
  /**
1657
- * The post's first photo, as uploaded to the gallery (not the Instagram crop)
1689
+ * The post's first photo, as uploaded to the gallery (not the Instagram crop), or the poster of its video
1658
1690
  */
1659
1691
  thumbnailUrl?: string;
1660
1692
  /**
@@ -1727,6 +1759,12 @@ export type ChannelReauthRequired = {
1727
1759
  displayName?: string;
1728
1760
  kind: 'CHANNEL_REAUTH_REQUIRED';
1729
1761
  };
1762
+ export type ChannelTakenOver = {
1763
+ connectionId?: ConnectionId;
1764
+ channelType?: 'FACEBOOK' | 'INSTAGRAM' | 'WHATSAPP' | 'TIKTOK';
1765
+ displayName?: string;
1766
+ kind: 'CHANNEL_TAKEN_OVER';
1767
+ };
1730
1768
  export type CommentId = {
1731
1769
  value?: string;
1732
1770
  };
@@ -1802,9 +1840,9 @@ export type NotificationFeed = {
1802
1840
  export type NotificationView = {
1803
1841
  id: string;
1804
1842
  seq: number;
1805
- 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' | 'TRIAL_ENDING' | 'TRIAL_ENDED' | 'DISCOUNT_ENDING' | 'AI_MESSAGES_RUNNING_LOW' | 'AI_MESSAGES_USED_UP' | 'CHANNEL_REAUTH_REQUIRED' | 'SOCIAL_POST_FAILED' | 'SOCIAL_POST_COMMENTED';
1843
+ 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' | 'TRIAL_ENDING' | 'TRIAL_ENDED' | 'DISCOUNT_ENDING' | 'AI_MESSAGES_RUNNING_LOW' | 'AI_MESSAGES_USED_UP' | 'CHANNEL_REAUTH_REQUIRED' | 'CHANNEL_TAKEN_OVER' | 'SOCIAL_POST_FAILED' | 'SOCIAL_POST_COMMENTED';
1806
1844
  targetId?: string;
1807
- payload: AgentCommented | AiMessagesRunningLow | AiMessagesUsedUp | ChannelReauthRequired | ContactAssigned | DiscountEnding | ListingExpired | MemberMentioned | NewMessage | NewSeekerRating | SocialPostCommented | SocialPostFailed | SubscriptionEnding | SubscriptionExpired | SubscriptionPaymentFailed | SubscriptionPaymentReversed | TaskCommented | TrialEnded | TrialEnding;
1845
+ payload: AgentCommented | AiMessagesRunningLow | AiMessagesUsedUp | ChannelReauthRequired | ChannelTakenOver | ContactAssigned | DiscountEnding | ListingExpired | MemberMentioned | NewMessage | NewSeekerRating | SocialPostCommented | SocialPostFailed | SubscriptionEnding | SubscriptionExpired | SubscriptionPaymentFailed | SubscriptionPaymentReversed | TaskCommented | TrialEnded | TrialEnding;
1808
1846
  /**
1809
1847
  * How many times this came while unread; the payload is the latest. For SOCIAL_POST_COMMENTED: the new comments on the post since its notification was last read. Starts again at 1 once read
1810
1848
  */
@@ -2138,7 +2176,7 @@ export type CursorPageMessageView = {
2138
2176
  export type ComposerLimits = {
2139
2177
  maxPhotos: number;
2140
2178
  /**
2141
- * In Unicode code points: an emoji counts once, as [...text].length counts in JavaScript (text.length counts it twice)
2179
+ * Of the agent's text, with room left for the credit when there is one. In Unicode code points: an emoji counts once, as [...text].length counts in JavaScript (text.length counts it twice)
2142
2180
  */
2143
2181
  maxCaptionLength: number;
2144
2182
  /**
@@ -2172,6 +2210,10 @@ export type ComposerPreview = {
2172
2210
  * The agency's text for the property's group (HomeSpot's until it writes one), filled in from the listing; a line with a fact the listing lacks is left out
2173
2211
  */
2174
2212
  caption: string;
2213
+ /**
2214
+ * HomeSpot's line, which publishing adds under the text on a plan without UNBRANDED_POSTS (Free and Plus): show it under the text box, where the agent can't edit it, and don't send it with the caption. Null on a plan that can take it out (Pro): there it is in the caption, as text
2215
+ */
2216
+ credit?: string;
2175
2217
  /**
2176
2218
  * The property group whose template the caption came from: the one an Edit template opens
2177
2219
  */
@@ -2193,11 +2235,35 @@ export type ComposerPreview = {
2193
2235
  * The whole gallery, in gallery order
2194
2236
  */
2195
2237
  photos: Array<ComposerPhoto>;
2238
+ /**
2239
+ * The property's video, which a post may show instead of photos; null when it has none
2240
+ */
2241
+ video?: ComposerVideo;
2196
2242
  /**
2197
2243
  * Whether the agency can post to the channel now; publishing refuses anything but ALLOWED
2198
2244
  */
2199
2245
  access: 'ALLOWED' | 'NOT_CONNECTED' | 'RECONNECT_REQUIRED';
2200
2246
  };
2247
+ export type ComposerVideo = {
2248
+ url: string;
2249
+ /**
2250
+ * A frame of the video: Instagram's cover for the Reel
2251
+ */
2252
+ posterUrl: string;
2253
+ durationMs: number;
2254
+ /**
2255
+ * As the video is shown, in pixels
2256
+ */
2257
+ width: number;
2258
+ /**
2259
+ * As the video is shown, in pixels
2260
+ */
2261
+ height: number;
2262
+ /**
2263
+ * A copy that Instagram takes is being made to replace a 4K, slow-motion or very high-bitrate video, for a few minutes after the upload. Until it is done the video cannot be posted (409 video-processing); ask for the preview again to see when it is
2264
+ */
2265
+ transcoding: boolean;
2266
+ };
2201
2267
  export type LeftOutFact = {
2202
2268
  /**
2203
2269
  * As the template writes it, e.g. property.bedrooms
@@ -5279,7 +5345,7 @@ export type GetPublicAgencyData = {
5279
5345
  body?: never;
5280
5346
  path?: never;
5281
5347
  query?: {
5282
- status?: 'NEW' | 'ACTIVE' | 'PAYMENT_FAILED' | 'INACTIVE' | 'SUSPENDED';
5348
+ status?: 'NEW' | 'ACTIVE' | 'SUSPENDED';
5283
5349
  /**
5284
5350
  * Zero-based page index (0..N)
5285
5351
  */