@homespot-sdk/core 0.0.360 → 0.0.362

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.
@@ -1170,15 +1170,20 @@ export const OauthConnectionResponseSchema = {
1170
1170
  type: 'boolean',
1171
1171
  description: 'Like and comment counts on a post',
1172
1172
  },
1173
+ canReadInsights: {
1174
+ type: 'boolean',
1175
+ description: 'Views and reach of a post. Facebook reports them only for Pages with 100 or more likes',
1176
+ },
1173
1177
  reconnectRequired: {
1174
1178
  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',
1179
+ description: 'The token is dead, or the grant lacks a scope the connect flow asks for (insights aside: without them canReadInsights is false and nothing else) — re-running the connect flow is what fixes it',
1176
1180
  },
1177
1181
  },
1178
1182
  required: [
1179
1183
  'agencyId',
1180
1184
  'canPublish',
1181
1185
  'canReadComments',
1186
+ 'canReadInsights',
1182
1187
  'canReadStats',
1183
1188
  'canReply',
1184
1189
  'createdAt',
@@ -1788,6 +1793,127 @@ export const SocialPostViewSchema = {
1788
1793
  'status',
1789
1794
  ],
1790
1795
  };
1796
+ export const MemberPeekResponseSchema = {
1797
+ type: 'object',
1798
+ properties: {
1799
+ memberId: {
1800
+ type: 'string',
1801
+ format: 'uuid',
1802
+ },
1803
+ firstName: {
1804
+ type: 'string',
1805
+ },
1806
+ lastName: {
1807
+ type: 'string',
1808
+ },
1809
+ photo: {
1810
+ type: 'string',
1811
+ },
1812
+ phone: {
1813
+ type: 'string',
1814
+ },
1815
+ email: {
1816
+ type: 'string',
1817
+ },
1818
+ },
1819
+ required: ['email', 'firstName', 'lastName', 'memberId'],
1820
+ };
1821
+ export const SocialCommentAuthorSchema = {
1822
+ type: 'object',
1823
+ properties: {
1824
+ name: {
1825
+ type: 'string',
1826
+ },
1827
+ username: {
1828
+ type: 'string',
1829
+ },
1830
+ },
1831
+ };
1832
+ export const SocialCommentResponseSchema = {
1833
+ type: 'object',
1834
+ properties: {
1835
+ commentId: {
1836
+ type: 'string',
1837
+ format: 'uuid',
1838
+ },
1839
+ parentCommentId: {
1840
+ type: 'string',
1841
+ format: 'uuid',
1842
+ description: "The comment it is shown under: the thread's first comment, or on Facebook's third level the second-level reply it sits under — Facebook goes no deeper, and Instagram shows one level of replies. Null on a thread's first comment",
1843
+ },
1844
+ author: {
1845
+ $ref: '#/components/schemas/SocialCommentAuthor',
1846
+ description: "Who wrote it, as far as Facebook / Instagram say; null on the agency's own comments, and when Meta does not say",
1847
+ },
1848
+ text: {
1849
+ type: 'string',
1850
+ description: 'Null on a sticker or a photo on its own, and once the comment is REMOVED',
1851
+ },
1852
+ commentedAt: {
1853
+ type: 'string',
1854
+ format: 'date-time',
1855
+ description: 'When it was written; for a reply sent from HomeSpot, when it was sent',
1856
+ },
1857
+ state: {
1858
+ type: 'string',
1859
+ enum: ['VISIBLE', 'HIDDEN', 'REMOVED'],
1860
+ },
1861
+ edited: {
1862
+ type: 'boolean',
1863
+ description: 'Changed by its author after it was written',
1864
+ },
1865
+ own: {
1866
+ type: 'boolean',
1867
+ description: "Written by the agency: shown as the agency's reply",
1868
+ },
1869
+ sentBy: {
1870
+ $ref: '#/components/schemas/SocialCommentSender',
1871
+ description: 'Own comments only',
1872
+ },
1873
+ delivery: {
1874
+ type: 'string',
1875
+ description: 'Own comments only: PENDING while HomeSpot gets it onto Facebook / Instagram, SENT once there, FAILED if Meta refused it',
1876
+ enum: ['PENDING', 'SENT', 'FAILED'],
1877
+ },
1878
+ failureReason: {
1879
+ type: 'string',
1880
+ description: 'Why it FAILED; retrying sends it again as it is',
1881
+ enum: [
1882
+ 'COMMENT_DELETED',
1883
+ 'RECONNECT_REQUIRED',
1884
+ 'PERMISSION_MISSING',
1885
+ 'RATE_LIMITED',
1886
+ 'UNKNOWN',
1887
+ ],
1888
+ },
1889
+ },
1890
+ required: ['commentId', 'commentedAt', 'edited', 'own', 'state'],
1891
+ };
1892
+ export const SocialCommentSenderSchema = {
1893
+ type: 'object',
1894
+ properties: {
1895
+ type: {
1896
+ type: 'string',
1897
+ enum: ['AGENT', 'AI', 'PAGE'],
1898
+ },
1899
+ member: {
1900
+ $ref: '#/components/schemas/MemberPeekResponse',
1901
+ description: 'AGENT only; also once they have left the agency',
1902
+ },
1903
+ },
1904
+ required: ['type'],
1905
+ };
1906
+ export const ReplyToSocialCommentRequestSchema = {
1907
+ type: 'object',
1908
+ properties: {
1909
+ text: {
1910
+ type: 'string',
1911
+ description: "Posted exactly as written; how long it may be is the channel's rule",
1912
+ minLength: 1,
1913
+ },
1914
+ },
1915
+ required: ['text'],
1916
+ };
1791
1917
  export const CloseListingRequestSchema = {
1792
1918
  type: 'object',
1793
1919
  properties: {
@@ -2353,31 +2479,6 @@ export const CursorPageCommentViewSchema = {
2353
2479
  },
2354
2480
  },
2355
2481
  };
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
2482
  export const ContactLinkSchema = {
2382
2483
  type: 'object',
2383
2484
  properties: {
@@ -4797,6 +4898,11 @@ export const PropertyListingResponseSchema = {
4797
4898
  $ref: '#/components/schemas/SocialPostResponse',
4798
4899
  },
4799
4900
  },
4901
+ unansweredComments: {
4902
+ type: 'integer',
4903
+ format: 'int32',
4904
+ description: "Comment threads waiting for an answer from the agency, across the listing's posts",
4905
+ },
4800
4906
  createdAt: {
4801
4907
  type: 'string',
4802
4908
  format: 'date-time',
@@ -4817,6 +4923,7 @@ export const PropertyListingResponseSchema = {
4817
4923
  'price',
4818
4924
  'publicId',
4819
4925
  'socialPosts',
4926
+ 'unansweredComments',
4820
4927
  ],
4821
4928
  };
4822
4929
  export const PropertyPageResponseSchema = {
@@ -4956,10 +5063,22 @@ export const SocialPostResponseSchema = {
4956
5063
  },
4957
5064
  stats: {
4958
5065
  $ref: '#/components/schemas/SocialPostStats',
4959
- description: "The post's public counts as last read from Facebook / Instagram; null until the first read",
5066
+ description: "The post's numbers as last read from Facebook / Instagram; null until the first read",
5067
+ },
5068
+ unansweredComments: {
5069
+ type: 'integer',
5070
+ format: 'int32',
5071
+ description: 'Comment threads under the post waiting for an answer from the agency; 0 unless PUBLISHED',
4960
5072
  },
4961
5073
  },
4962
- required: ['caption', 'channel', 'createdBy', 'postId', 'status'],
5074
+ required: [
5075
+ 'caption',
5076
+ 'channel',
5077
+ 'createdBy',
5078
+ 'postId',
5079
+ 'status',
5080
+ 'unansweredComments',
5081
+ ],
4963
5082
  };
4964
5083
  export const SocialPostStatsSchema = {
4965
5084
  type: 'object',
@@ -4967,22 +5086,34 @@ export const SocialPostStatsSchema = {
4967
5086
  likes: {
4968
5087
  type: 'integer',
4969
5088
  format: 'int32',
5089
+ description: 'On Facebook all reactions, as Facebook shows them under the post',
4970
5090
  },
4971
5091
  comments: {
4972
5092
  type: 'integer',
4973
5093
  format: 'int32',
5094
+ description: 'Replies included',
4974
5095
  },
4975
5096
  shares: {
4976
5097
  type: 'integer',
4977
5098
  format: 'int32',
4978
5099
  },
5100
+ views: {
5101
+ type: 'integer',
5102
+ format: 'int32',
5103
+ description: 'How many times the post was seen',
5104
+ },
5105
+ reach: {
5106
+ type: 'integer',
5107
+ format: 'int32',
5108
+ description: 'How many people saw the post',
5109
+ },
4979
5110
  fetchedAt: {
4980
5111
  type: 'string',
4981
5112
  format: 'date-time',
4982
- description: 'When the counts were read — show how old they are',
5113
+ description: "When the numbers were read — show how old they are. Likes and comments are read every 15 minutes on the post's first day, then less often; Meta updates views and reach about once a day",
4983
5114
  },
4984
5115
  },
4985
- required: ['comments', 'fetchedAt', 'likes', 'shares'],
5116
+ required: ['fetchedAt'],
4986
5117
  };
4987
5118
  export const ListingOwnerContactResponseSchema = {
4988
5119
  type: 'object',
@@ -5266,6 +5397,7 @@ export const NotificationContentSchema = {
5266
5397
  SUBSCRIPTION_PAYMENT_REVERSED: '#/components/schemas/SubscriptionPaymentReversed',
5267
5398
  CHANNEL_REAUTH_REQUIRED: '#/components/schemas/ChannelReauthRequired',
5268
5399
  SOCIAL_POST_FAILED: '#/components/schemas/SocialPostFailed',
5400
+ SOCIAL_POST_COMMENTED: '#/components/schemas/SocialPostCommented',
5269
5401
  },
5270
5402
  },
5271
5403
  required: ['kind'],
@@ -5311,6 +5443,7 @@ export const NotificationViewSchema = {
5311
5443
  'SUBSCRIPTION_PAYMENT_REVERSED',
5312
5444
  'CHANNEL_REAUTH_REQUIRED',
5313
5445
  'SOCIAL_POST_FAILED',
5446
+ 'SOCIAL_POST_COMMENTED',
5314
5447
  ],
5315
5448
  },
5316
5449
  targetId: {
@@ -5339,6 +5472,9 @@ export const NotificationViewSchema = {
5339
5472
  {
5340
5473
  $ref: '#/components/schemas/NewSeekerRating',
5341
5474
  },
5475
+ {
5476
+ $ref: '#/components/schemas/SocialPostCommented',
5477
+ },
5342
5478
  {
5343
5479
  $ref: '#/components/schemas/SocialPostFailed',
5344
5480
  },
@@ -5359,6 +5495,11 @@ export const NotificationViewSchema = {
5359
5495
  },
5360
5496
  ],
5361
5497
  },
5498
+ count: {
5499
+ type: 'integer',
5500
+ format: 'int32',
5501
+ description: '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',
5502
+ },
5362
5503
  createdAt: {
5363
5504
  type: 'string',
5364
5505
  format: 'date-time',
@@ -5367,7 +5508,7 @@ export const NotificationViewSchema = {
5367
5508
  type: 'boolean',
5368
5509
  },
5369
5510
  },
5370
- required: ['createdAt', 'id', 'payload', 'read', 'seq', 'type'],
5511
+ required: ['count', 'createdAt', 'id', 'payload', 'read', 'seq', 'type'],
5371
5512
  };
5372
5513
  export const PropertyIdSchema = {
5373
5514
  type: 'object',
@@ -5378,6 +5519,53 @@ export const PropertyIdSchema = {
5378
5519
  },
5379
5520
  },
5380
5521
  };
5522
+ export const SocialCommentIdSchema = {
5523
+ type: 'object',
5524
+ properties: {
5525
+ value: {
5526
+ type: 'string',
5527
+ format: 'uuid',
5528
+ },
5529
+ },
5530
+ };
5531
+ export const SocialPostCommentedSchema = {
5532
+ properties: {
5533
+ postId: {
5534
+ $ref: '#/components/schemas/SocialPostId',
5535
+ },
5536
+ commentId: {
5537
+ $ref: '#/components/schemas/SocialCommentId',
5538
+ },
5539
+ contactId: {
5540
+ $ref: '#/components/schemas/ContactId',
5541
+ },
5542
+ propertyId: {
5543
+ $ref: '#/components/schemas/PropertyId',
5544
+ },
5545
+ listingId: {
5546
+ type: 'integer',
5547
+ format: 'int64',
5548
+ },
5549
+ propertyTitle: {
5550
+ type: 'string',
5551
+ },
5552
+ channel: {
5553
+ type: 'string',
5554
+ enum: ['FACEBOOK', 'INSTAGRAM'],
5555
+ },
5556
+ author: {
5557
+ type: 'string',
5558
+ },
5559
+ commentSnippet: {
5560
+ type: 'string',
5561
+ },
5562
+ kind: {
5563
+ type: 'string',
5564
+ enum: ['SOCIAL_POST_COMMENTED'],
5565
+ },
5566
+ },
5567
+ required: ['kind'],
5568
+ };
5381
5569
  export const SocialPostFailedSchema = {
5382
5570
  properties: {
5383
5571
  postId: {
@@ -6593,6 +6781,74 @@ export const ComposerPreviewSchema = {
6593
6781
  },
6594
6782
  required: ['access', 'caption', 'channel', 'limits', 'photos', 'ratios'],
6595
6783
  };
6784
+ export const CursorPageSocialCommentThreadResponseSchema = {
6785
+ type: 'object',
6786
+ properties: {
6787
+ items: {
6788
+ type: 'array',
6789
+ items: {
6790
+ $ref: '#/components/schemas/SocialCommentThreadResponse',
6791
+ },
6792
+ },
6793
+ nextCursor: {
6794
+ type: 'string',
6795
+ },
6796
+ hasNext: {
6797
+ type: 'boolean',
6798
+ },
6799
+ },
6800
+ };
6801
+ export const SocialCommentPostSchema = {
6802
+ type: 'object',
6803
+ properties: {
6804
+ postId: {
6805
+ type: 'string',
6806
+ format: 'uuid',
6807
+ },
6808
+ channel: {
6809
+ type: 'string',
6810
+ enum: ['FACEBOOK', 'INSTAGRAM'],
6811
+ },
6812
+ status: {
6813
+ type: 'string',
6814
+ description: 'PUBLISHED, or REMOVED once gone from Facebook / Instagram: its comments stay, and can no longer be answered',
6815
+ enum: ['PUBLISHING', 'PUBLISHED', 'FAILED', 'REMOVED'],
6816
+ },
6817
+ permalink: {
6818
+ type: 'string',
6819
+ },
6820
+ publishedAt: {
6821
+ type: 'string',
6822
+ format: 'date-time',
6823
+ },
6824
+ },
6825
+ required: ['channel', 'permalink', 'postId', 'publishedAt', 'status'],
6826
+ };
6827
+ export const SocialCommentThreadResponseSchema = {
6828
+ type: 'object',
6829
+ properties: {
6830
+ post: {
6831
+ $ref: '#/components/schemas/SocialCommentPost',
6832
+ description: 'The post the thread is under',
6833
+ },
6834
+ comment: {
6835
+ $ref: '#/components/schemas/SocialCommentResponse',
6836
+ description: 'The comment that started the thread',
6837
+ },
6838
+ replies: {
6839
+ type: 'array',
6840
+ description: "All of the thread's replies, oldest first; each one's parentCommentId says which comment it is shown under (Facebook shows two levels of replies, Instagram one)",
6841
+ items: {
6842
+ $ref: '#/components/schemas/SocialCommentResponse',
6843
+ },
6844
+ },
6845
+ answered: {
6846
+ type: 'boolean',
6847
+ description: "False while the thread's latest comment from someone else has no reply from the agency after it. Hidden and removed comments need no answer, and a FAILED reply is none",
6848
+ },
6849
+ },
6850
+ required: ['answered', 'comment', 'post', 'replies'],
6851
+ };
6596
6852
  export const ContactGridResponseSchema = {
6597
6853
  type: 'object',
6598
6854
  properties: {