@homespot-sdk/core 0.0.357 → 0.0.359

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 +655 -219
  28. package/dist/rem/schemas.gen.d.ts.map +1 -1
  29. package/dist/rem/schemas.gen.js +718 -221
  30. package/dist/rem/schemas.gen.js.map +1 -1
  31. package/dist/rem/sdk.gen.d.ts +14 -12
  32. package/dist/rem/sdk.gen.d.ts.map +1 -1
  33. package/dist/rem/sdk.gen.js +40 -5
  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 +76 -0
  38. package/dist/rem/transformers.gen.js.map +1 -1
  39. package/dist/rem/types.gen.d.ts +361 -126
  40. package/dist/rem/types.gen.d.ts.map +1 -1
  41. package/dist/rem/zod.gen.d.ts +1110 -204
  42. package/dist/rem/zod.gen.d.ts.map +1 -1
  43. package/dist/rem/zod.gen.js +521 -114
  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
@@ -933,16 +933,20 @@ export const SubscribeRequestSchema = {
933
933
  },
934
934
  name: {
935
935
  type: 'string',
936
+ minLength: 1,
936
937
  },
937
938
  email: {
938
939
  type: 'string',
939
940
  format: 'email',
941
+ minLength: 1,
940
942
  },
941
943
  phone: {
942
944
  type: 'string',
945
+ minLength: 1,
943
946
  },
944
947
  subdomain: {
945
948
  type: 'string',
949
+ minLength: 1,
946
950
  },
947
951
  address: {
948
952
  $ref: '#/components/schemas/SubscriptionAddressRequest',
@@ -1018,213 +1022,6 @@ export const SubscriptionCheckoutResponseSchema = {
1018
1022
  },
1019
1023
  },
1020
1024
  };
1021
- export const ProblemDetailSchema = {
1022
- type: 'object',
1023
- properties: {
1024
- type: {
1025
- type: 'string',
1026
- format: 'uri',
1027
- },
1028
- title: {
1029
- type: 'string',
1030
- },
1031
- status: {
1032
- type: 'integer',
1033
- format: 'int32',
1034
- },
1035
- detail: {
1036
- type: 'string',
1037
- },
1038
- instance: {
1039
- type: 'string',
1040
- format: 'uri',
1041
- },
1042
- properties: {
1043
- type: 'object',
1044
- additionalProperties: {},
1045
- },
1046
- },
1047
- };
1048
- export const AgencyRegistrationConflictResponseSchema = {
1049
- type: 'object',
1050
- properties: {
1051
- type: {
1052
- type: 'string',
1053
- format: 'uri',
1054
- },
1055
- title: {
1056
- type: 'string',
1057
- },
1058
- status: {
1059
- type: 'integer',
1060
- format: 'int32',
1061
- },
1062
- detail: {
1063
- type: 'string',
1064
- },
1065
- instance: {
1066
- type: 'string',
1067
- format: 'uri',
1068
- },
1069
- conflicts: {
1070
- type: 'array',
1071
- description: "All detected conflicts: NAME is taken, SUBDOMAIN is taken, or OWNER already owns an agency. A retry of the owner's NEW agency is allowed.",
1072
- items: {
1073
- type: 'string',
1074
- enum: ['OWNER', 'NAME', 'SUBDOMAIN'],
1075
- },
1076
- uniqueItems: true,
1077
- },
1078
- code: {
1079
- type: 'string',
1080
- enum: ['AGENCY_REGISTRATION_CONFLICT'],
1081
- },
1082
- },
1083
- required: [
1084
- 'code',
1085
- 'conflicts',
1086
- 'detail',
1087
- 'instance',
1088
- 'status',
1089
- 'title',
1090
- 'type',
1091
- ],
1092
- };
1093
- export const ConcurrentModificationResponseSchema = {
1094
- type: 'object',
1095
- properties: {
1096
- type: {
1097
- type: 'string',
1098
- format: 'uri',
1099
- },
1100
- title: {
1101
- type: 'string',
1102
- },
1103
- status: {
1104
- type: 'integer',
1105
- format: 'int32',
1106
- },
1107
- detail: {
1108
- type: 'string',
1109
- },
1110
- instance: {
1111
- type: 'string',
1112
- format: 'uri',
1113
- },
1114
- code: {
1115
- type: 'string',
1116
- enum: ['CONCURRENT_MODIFICATION'],
1117
- },
1118
- },
1119
- required: ['code', 'detail', 'instance', 'status', 'title', 'type'],
1120
- };
1121
- export const DataIntegrityConflictResponseSchema = {
1122
- type: 'object',
1123
- properties: {
1124
- type: {
1125
- type: 'string',
1126
- format: 'uri',
1127
- },
1128
- title: {
1129
- type: 'string',
1130
- },
1131
- status: {
1132
- type: 'integer',
1133
- format: 'int32',
1134
- },
1135
- detail: {
1136
- type: 'string',
1137
- },
1138
- instance: {
1139
- type: 'string',
1140
- format: 'uri',
1141
- },
1142
- code: {
1143
- type: 'string',
1144
- enum: ['DATA_INTEGRITY_CONFLICT'],
1145
- },
1146
- },
1147
- required: ['code', 'detail', 'instance', 'status', 'title', 'type'],
1148
- };
1149
- export const SubscriptionConflictResponseSchema = {
1150
- discriminator: {
1151
- propertyName: 'code',
1152
- mapping: {
1153
- AGENCY_REGISTRATION_CONFLICT: '#/components/schemas/AgencyRegistrationConflictResponse',
1154
- SUBSCRIPTION_STATE_CONFLICT: '#/components/schemas/SubscriptionStateConflictResponse',
1155
- CONCURRENT_MODIFICATION: '#/components/schemas/ConcurrentModificationResponse',
1156
- DATA_INTEGRITY_CONFLICT: '#/components/schemas/DataIntegrityConflictResponse',
1157
- },
1158
- },
1159
- oneOf: [
1160
- {
1161
- $ref: '#/components/schemas/AgencyRegistrationConflictResponse',
1162
- },
1163
- {
1164
- $ref: '#/components/schemas/SubscriptionStateConflictResponse',
1165
- },
1166
- {
1167
- $ref: '#/components/schemas/ConcurrentModificationResponse',
1168
- },
1169
- {
1170
- $ref: '#/components/schemas/DataIntegrityConflictResponse',
1171
- },
1172
- ],
1173
- };
1174
- export const SubscriptionStateConflictResponseSchema = {
1175
- type: 'object',
1176
- properties: {
1177
- type: {
1178
- type: 'string',
1179
- format: 'uri',
1180
- },
1181
- title: {
1182
- type: 'string',
1183
- },
1184
- status: {
1185
- type: 'integer',
1186
- format: 'int32',
1187
- },
1188
- detail: {
1189
- type: 'string',
1190
- },
1191
- instance: {
1192
- type: 'string',
1193
- format: 'uri',
1194
- },
1195
- subscriptionId: {
1196
- type: 'string',
1197
- format: 'uuid',
1198
- },
1199
- subscriptionStatus: {
1200
- type: 'string',
1201
- description: 'Subscription lifecycle status. The standard problem status field remains the HTTP status code.',
1202
- enum: [
1203
- 'PENDING',
1204
- 'TRIALING',
1205
- 'ACTIVE',
1206
- 'PAST_DUE',
1207
- 'CANCELLED',
1208
- 'EXPIRED',
1209
- 'SUPERSEDED',
1210
- ],
1211
- },
1212
- code: {
1213
- type: 'string',
1214
- enum: ['SUBSCRIPTION_STATE_CONFLICT'],
1215
- },
1216
- },
1217
- required: [
1218
- 'code',
1219
- 'detail',
1220
- 'instance',
1221
- 'status',
1222
- 'subscriptionId',
1223
- 'subscriptionStatus',
1224
- 'title',
1225
- 'type',
1226
- ],
1227
- };
1228
1025
  export const ChangePlanRequestSchema = {
1229
1026
  type: 'object',
1230
1027
  properties: {
@@ -1244,12 +1041,10 @@ export const CheckoutRequestSchema = {
1244
1041
  properties: {
1245
1042
  plan: {
1246
1043
  type: 'string',
1247
- description: 'Required only when starting a new subscription',
1248
1044
  enum: ['STARTER', 'PRO', 'ENTERPRISE'],
1249
1045
  },
1250
1046
  billingCycle: {
1251
1047
  type: 'string',
1252
- description: 'Required only when starting a new subscription',
1253
1048
  enum: ['MONTHLY', 'ANNUAL'],
1254
1049
  },
1255
1050
  },
@@ -1362,11 +1157,33 @@ export const OauthConnectionResponseSchema = {
1362
1157
  type: 'string',
1363
1158
  format: 'date-time',
1364
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
+ },
1365
1177
  },
1366
1178
  required: [
1367
1179
  'agencyId',
1180
+ 'canPublish',
1181
+ 'canReadComments',
1182
+ 'canReadStats',
1183
+ 'canReply',
1368
1184
  'createdAt',
1369
1185
  'provider',
1186
+ 'reconnectRequired',
1370
1187
  'status',
1371
1188
  'updatedAt',
1372
1189
  'userId',
@@ -1583,6 +1400,33 @@ export const SendMessageRequestSchema = {
1583
1400
  },
1584
1401
  required: ['text'],
1585
1402
  };
1403
+ export const ProblemDetailSchema = {
1404
+ type: 'object',
1405
+ properties: {
1406
+ type: {
1407
+ type: 'string',
1408
+ format: 'uri',
1409
+ },
1410
+ title: {
1411
+ type: 'string',
1412
+ },
1413
+ status: {
1414
+ type: 'integer',
1415
+ format: 'int32',
1416
+ },
1417
+ detail: {
1418
+ type: 'string',
1419
+ },
1420
+ instance: {
1421
+ type: 'string',
1422
+ format: 'uri',
1423
+ },
1424
+ properties: {
1425
+ type: 'object',
1426
+ additionalProperties: {},
1427
+ },
1428
+ },
1429
+ };
1586
1430
  export const StartPropertyRegistrationRequestSchema = {
1587
1431
  type: 'object',
1588
1432
  properties: {
@@ -1778,6 +1622,172 @@ export const PercentageSchema = {
1778
1622
  ],
1779
1623
  required: ['rate'],
1780
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
+ };
1781
1791
  export const CloseListingRequestSchema = {
1782
1792
  type: 'object',
1783
1793
  properties: {
@@ -1847,6 +1857,20 @@ export const IdResponseLongSchema = {
1847
1857
  },
1848
1858
  required: ['id'],
1849
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
+ };
1850
1874
  export const ExternalListingPublishRequestSchema = {
1851
1875
  type: 'object',
1852
1876
  properties: {
@@ -3144,22 +3168,200 @@ export const TaskContentPropertySchema = {
3144
3168
  },
3145
3169
  },
3146
3170
  ],
3147
- required: ['id', 'type'],
3171
+ required: ['id', 'type'],
3172
+ };
3173
+ export const StageCardsResponseSchema = {
3174
+ type: 'object',
3175
+ properties: {
3176
+ members: {
3177
+ type: 'array',
3178
+ items: {
3179
+ $ref: '#/components/schemas/MemberPeekResponse',
3180
+ },
3181
+ },
3182
+ data: {
3183
+ $ref: '#/components/schemas/CursorPageTaskCardResponse',
3184
+ },
3185
+ },
3186
+ required: ['data', 'members'],
3187
+ };
3188
+ export const SubscriptionResponseSchema = {
3189
+ type: 'object',
3190
+ properties: {
3191
+ subscriptionId: {
3192
+ type: 'string',
3193
+ format: 'uuid',
3194
+ },
3195
+ plan: {
3196
+ type: 'string',
3197
+ enum: ['STARTER', 'PRO', 'ENTERPRISE'],
3198
+ },
3199
+ billingCycle: {
3200
+ type: 'string',
3201
+ enum: ['MONTHLY', 'ANNUAL'],
3202
+ },
3203
+ priceMinorUnits: {
3204
+ type: 'integer',
3205
+ format: 'int64',
3206
+ description: 'Per-cycle price in minor units (tetri)',
3207
+ },
3208
+ currency: {
3209
+ type: 'string',
3210
+ },
3211
+ seats: {
3212
+ type: 'integer',
3213
+ format: 'int32',
3214
+ },
3215
+ monthlyContactLimit: {
3216
+ type: 'integer',
3217
+ format: 'int32',
3218
+ },
3219
+ trialDays: {
3220
+ type: 'integer',
3221
+ format: 'int32',
3222
+ },
3223
+ status: {
3224
+ type: 'string',
3225
+ enum: [
3226
+ 'PENDING',
3227
+ 'TRIALING',
3228
+ 'ACTIVE',
3229
+ 'PAST_DUE',
3230
+ 'CANCELLED',
3231
+ 'EXPIRED',
3232
+ 'SUPERSEDED',
3233
+ ],
3234
+ },
3235
+ live: {
3236
+ type: 'boolean',
3237
+ description: 'Whether the agency is currently entitled to the workspace',
3238
+ },
3239
+ trialEndsAt: {
3240
+ type: 'string',
3241
+ format: 'date-time',
3242
+ },
3243
+ paidThroughAt: {
3244
+ type: 'string',
3245
+ format: 'date-time',
3246
+ },
3247
+ accessEndsAt: {
3248
+ type: 'string',
3249
+ format: 'date-time',
3250
+ description: 'When the current entitlement ends, before grace; null while pending or once expired',
3251
+ },
3252
+ pastDueSince: {
3253
+ type: 'string',
3254
+ format: 'date-time',
3255
+ },
3256
+ lastChargedAt: {
3257
+ type: 'string',
3258
+ format: 'date-time',
3259
+ },
3260
+ createdAt: {
3261
+ type: 'string',
3262
+ format: 'date-time',
3263
+ },
3264
+ activatedAt: {
3265
+ type: 'string',
3266
+ format: 'date-time',
3267
+ },
3268
+ cancelledAt: {
3269
+ type: 'string',
3270
+ format: 'date-time',
3271
+ },
3272
+ checkoutExpiresAt: {
3273
+ type: 'string',
3274
+ format: 'date-time',
3275
+ description: 'When the most recently issued checkout link stops being payable',
3276
+ },
3277
+ },
3278
+ required: [
3279
+ 'billingCycle',
3280
+ 'createdAt',
3281
+ 'currency',
3282
+ 'live',
3283
+ 'monthlyContactLimit',
3284
+ 'plan',
3285
+ 'priceMinorUnits',
3286
+ 'seats',
3287
+ 'status',
3288
+ 'subscriptionId',
3289
+ 'trialDays',
3290
+ ],
3148
3291
  };
3149
- export const StageCardsResponseSchema = {
3292
+ export const PaymentResponseSchema = {
3150
3293
  type: 'object',
3151
3294
  properties: {
3152
- members: {
3153
- type: 'array',
3154
- items: {
3155
- $ref: '#/components/schemas/MemberPeekResponse',
3156
- },
3295
+ id: {
3296
+ type: 'string',
3297
+ format: 'uuid',
3157
3298
  },
3158
- data: {
3159
- $ref: '#/components/schemas/CursorPageTaskCardResponse',
3299
+ subscriptionId: {
3300
+ type: 'string',
3301
+ format: 'uuid',
3302
+ },
3303
+ flittPaymentId: {
3304
+ type: 'string',
3305
+ },
3306
+ flittOrderId: {
3307
+ type: 'string',
3308
+ },
3309
+ orderStatus: {
3310
+ type: 'string',
3311
+ description: "Flitt's verdict: approved / declined / reversed / expired …",
3312
+ },
3313
+ tranType: {
3314
+ type: 'string',
3315
+ },
3316
+ outcome: {
3317
+ type: 'string',
3318
+ description: 'What the platform did with it',
3319
+ enum: [
3320
+ 'APPLIED',
3321
+ 'TRIAL_STARTED',
3322
+ 'DUPLICATE',
3323
+ 'NOT_APPLIED_CANCELLED',
3324
+ 'NOT_APPLIED_SUPERSEDED',
3325
+ 'REJECTED_AMOUNT',
3326
+ 'REJECTED_CURRENCY',
3327
+ 'IGNORED_TRANSACTION_TYPE',
3328
+ 'DECLINED',
3329
+ 'REVERSED',
3330
+ 'REVERSAL_IGNORED',
3331
+ 'RECORDED',
3332
+ ],
3333
+ },
3334
+ amountMinorUnits: {
3335
+ type: 'integer',
3336
+ format: 'int64',
3337
+ },
3338
+ currency: {
3339
+ type: 'string',
3340
+ },
3341
+ responseCode: {
3342
+ type: 'string',
3343
+ },
3344
+ responseDescription: {
3345
+ type: 'string',
3346
+ },
3347
+ orderTime: {
3348
+ type: 'string',
3349
+ format: 'date-time',
3350
+ },
3351
+ receivedAt: {
3352
+ type: 'string',
3353
+ format: 'date-time',
3160
3354
  },
3161
3355
  },
3162
- required: ['data', 'members'],
3356
+ required: [
3357
+ 'flittOrderId',
3358
+ 'flittPaymentId',
3359
+ 'id',
3360
+ 'orderStatus',
3361
+ 'outcome',
3362
+ 'receivedAt',
3363
+ 'subscriptionId',
3364
+ ],
3163
3365
  };
3164
3366
  export const BucketSchema = {
3165
3367
  type: 'object',
@@ -4285,7 +4487,14 @@ export const PlatformListingResponseSchema = {
4285
4487
  },
4286
4488
  status: {
4287
4489
  type: 'string',
4288
- enum: ['PENDING', 'SYNDICATED', 'FAILED', 'EXPIRED'],
4490
+ enum: [
4491
+ 'PENDING',
4492
+ 'SYNDICATED',
4493
+ 'FAILED',
4494
+ 'EXPIRED',
4495
+ 'WITHDRAWING',
4496
+ 'WITHDRAWN',
4497
+ ],
4289
4498
  },
4290
4499
  listedAt: {
4291
4500
  type: 'string',
@@ -4299,6 +4508,9 @@ export const PlatformListingResponseSchema = {
4299
4508
  type: 'string',
4300
4509
  format: 'date',
4301
4510
  },
4511
+ failureReason: {
4512
+ type: 'string',
4513
+ },
4302
4514
  boost: {
4303
4515
  $ref: '#/components/schemas/BoostResponse',
4304
4516
  },
@@ -4378,7 +4590,7 @@ export const PropertyListingResponseSchema = {
4378
4590
  },
4379
4591
  isProcessing: {
4380
4592
  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.',
4593
+ 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
4594
  },
4383
4595
  price: {
4384
4596
  type: 'number',
@@ -4402,6 +4614,13 @@ export const PropertyListingResponseSchema = {
4402
4614
  $ref: '#/components/schemas/PlatformListingResponse',
4403
4615
  },
4404
4616
  },
4617
+ socialPosts: {
4618
+ type: 'array',
4619
+ description: 'Facebook / Instagram posts of this listing, newest first',
4620
+ items: {
4621
+ $ref: '#/components/schemas/SocialPostResponse',
4622
+ },
4623
+ },
4405
4624
  createdAt: {
4406
4625
  type: 'string',
4407
4626
  format: 'date-time',
@@ -4421,6 +4640,7 @@ export const PropertyListingResponseSchema = {
4421
4640
  'platformListings',
4422
4641
  'price',
4423
4642
  'publicId',
4643
+ 'socialPosts',
4424
4644
  ],
4425
4645
  };
4426
4646
  export const PropertyPageResponseSchema = {
@@ -4510,6 +4730,84 @@ export const PropertyPageResponseSchema = {
4510
4730
  'updatedAt',
4511
4731
  ],
4512
4732
  };
4733
+ export const SocialPostResponseSchema = {
4734
+ type: 'object',
4735
+ properties: {
4736
+ postId: {
4737
+ type: 'string',
4738
+ format: 'uuid',
4739
+ description: 'For retrying a failed post, or reading it in full',
4740
+ },
4741
+ channel: {
4742
+ type: 'string',
4743
+ enum: ['FACEBOOK', 'INSTAGRAM'],
4744
+ },
4745
+ status: {
4746
+ type: 'string',
4747
+ enum: ['PUBLISHING', 'PUBLISHED', 'FAILED', 'REMOVED'],
4748
+ },
4749
+ caption: {
4750
+ type: 'string',
4751
+ description: 'Exactly as published',
4752
+ },
4753
+ thumbnailUrl: {
4754
+ type: 'string',
4755
+ description: "The post's first photo, as uploaded to the gallery (not the Instagram crop)",
4756
+ },
4757
+ permalink: {
4758
+ type: 'string',
4759
+ description: 'The post on Facebook / Instagram, once published',
4760
+ },
4761
+ publishedAt: {
4762
+ type: 'string',
4763
+ format: 'date-time',
4764
+ },
4765
+ createdBy: {
4766
+ $ref: '#/components/schemas/MemberPeekResponse',
4767
+ description: 'The member who created the post, also after they left the agency',
4768
+ },
4769
+ failureReason: {
4770
+ type: 'string',
4771
+ enum: [
4772
+ 'RECONNECT_REQUIRED',
4773
+ 'PERMISSION_MISSING',
4774
+ 'PAGE_PUBLISHING_AUTHORIZATION',
4775
+ 'RATE_LIMITED',
4776
+ 'BAD_MEDIA',
4777
+ 'UNCONFIRMED',
4778
+ 'UNKNOWN',
4779
+ ],
4780
+ },
4781
+ stats: {
4782
+ $ref: '#/components/schemas/SocialPostStats',
4783
+ description: "The post's public counts as last read from Facebook / Instagram; null until the first read",
4784
+ },
4785
+ },
4786
+ required: ['caption', 'channel', 'createdBy', 'postId', 'status'],
4787
+ };
4788
+ export const SocialPostStatsSchema = {
4789
+ type: 'object',
4790
+ properties: {
4791
+ likes: {
4792
+ type: 'integer',
4793
+ format: 'int32',
4794
+ },
4795
+ comments: {
4796
+ type: 'integer',
4797
+ format: 'int32',
4798
+ },
4799
+ shares: {
4800
+ type: 'integer',
4801
+ format: 'int32',
4802
+ },
4803
+ fetchedAt: {
4804
+ type: 'string',
4805
+ format: 'date-time',
4806
+ description: 'When the counts were read — show how old they are',
4807
+ },
4808
+ },
4809
+ required: ['comments', 'fetchedAt', 'likes', 'shares'],
4810
+ };
4513
4811
  export const ListingOwnerContactResponseSchema = {
4514
4812
  type: 'object',
4515
4813
  properties: {
@@ -4554,6 +4852,25 @@ export const AgentCommentedSchema = {
4554
4852
  },
4555
4853
  required: ['kind'],
4556
4854
  };
4855
+ export const ChannelReauthRequiredSchema = {
4856
+ properties: {
4857
+ connectionId: {
4858
+ $ref: '#/components/schemas/ConnectionId',
4859
+ },
4860
+ channelType: {
4861
+ type: 'string',
4862
+ enum: ['FACEBOOK', 'INSTAGRAM', 'WHATSAPP', 'TIKTOK'],
4863
+ },
4864
+ displayName: {
4865
+ type: 'string',
4866
+ },
4867
+ kind: {
4868
+ type: 'string',
4869
+ enum: ['CHANNEL_REAUTH_REQUIRED'],
4870
+ },
4871
+ },
4872
+ required: ['kind'],
4873
+ };
4557
4874
  export const CommentIdSchema = {
4558
4875
  type: 'object',
4559
4876
  properties: {
@@ -4563,6 +4880,15 @@ export const CommentIdSchema = {
4563
4880
  },
4564
4881
  },
4565
4882
  };
4883
+ export const ConnectionIdSchema = {
4884
+ type: 'object',
4885
+ properties: {
4886
+ value: {
4887
+ type: 'string',
4888
+ format: 'uuid',
4889
+ },
4890
+ },
4891
+ };
4566
4892
  export const ContactAssignedSchema = {
4567
4893
  properties: {
4568
4894
  contactId: {
@@ -4734,6 +5060,8 @@ export const NotificationContentSchema = {
4734
5060
  SUBSCRIPTION_ENDING: '#/components/schemas/SubscriptionEnding',
4735
5061
  SUBSCRIPTION_EXPIRED: '#/components/schemas/SubscriptionExpired',
4736
5062
  SUBSCRIPTION_PAYMENT_REVERSED: '#/components/schemas/SubscriptionPaymentReversed',
5063
+ CHANNEL_REAUTH_REQUIRED: '#/components/schemas/ChannelReauthRequired',
5064
+ SOCIAL_POST_FAILED: '#/components/schemas/SocialPostFailed',
4737
5065
  },
4738
5066
  },
4739
5067
  required: ['kind'],
@@ -4776,6 +5104,8 @@ export const NotificationViewSchema = {
4776
5104
  'SUBSCRIPTION_ENDING',
4777
5105
  'SUBSCRIPTION_EXPIRED',
4778
5106
  'SUBSCRIPTION_PAYMENT_REVERSED',
5107
+ 'CHANNEL_REAUTH_REQUIRED',
5108
+ 'SOCIAL_POST_FAILED',
4779
5109
  ],
4780
5110
  },
4781
5111
  targetId: {
@@ -4786,6 +5116,9 @@ export const NotificationViewSchema = {
4786
5116
  {
4787
5117
  $ref: '#/components/schemas/AgentCommented',
4788
5118
  },
5119
+ {
5120
+ $ref: '#/components/schemas/ChannelReauthRequired',
5121
+ },
4789
5122
  {
4790
5123
  $ref: '#/components/schemas/ContactAssigned',
4791
5124
  },
@@ -4798,6 +5131,9 @@ export const NotificationViewSchema = {
4798
5131
  {
4799
5132
  $ref: '#/components/schemas/NewSeekerRating',
4800
5133
  },
5134
+ {
5135
+ $ref: '#/components/schemas/SocialPostFailed',
5136
+ },
4801
5137
  {
4802
5138
  $ref: '#/components/schemas/SubscriptionEnding',
4803
5139
  },
@@ -4834,6 +5170,56 @@ export const PropertyIdSchema = {
4834
5170
  },
4835
5171
  },
4836
5172
  };
5173
+ export const SocialPostFailedSchema = {
5174
+ properties: {
5175
+ postId: {
5176
+ $ref: '#/components/schemas/SocialPostId',
5177
+ },
5178
+ contactId: {
5179
+ $ref: '#/components/schemas/ContactId',
5180
+ },
5181
+ propertyId: {
5182
+ $ref: '#/components/schemas/PropertyId',
5183
+ },
5184
+ listingId: {
5185
+ type: 'integer',
5186
+ format: 'int64',
5187
+ },
5188
+ propertyTitle: {
5189
+ type: 'string',
5190
+ },
5191
+ channel: {
5192
+ type: 'string',
5193
+ enum: ['FACEBOOK', 'INSTAGRAM'],
5194
+ },
5195
+ reason: {
5196
+ type: 'string',
5197
+ enum: [
5198
+ 'RECONNECT_REQUIRED',
5199
+ 'PERMISSION_MISSING',
5200
+ 'PAGE_PUBLISHING_AUTHORIZATION',
5201
+ 'RATE_LIMITED',
5202
+ 'BAD_MEDIA',
5203
+ 'UNCONFIRMED',
5204
+ 'UNKNOWN',
5205
+ ],
5206
+ },
5207
+ kind: {
5208
+ type: 'string',
5209
+ enum: ['SOCIAL_POST_FAILED'],
5210
+ },
5211
+ },
5212
+ required: ['kind'],
5213
+ };
5214
+ export const SocialPostIdSchema = {
5215
+ type: 'object',
5216
+ properties: {
5217
+ value: {
5218
+ type: 'string',
5219
+ format: 'uuid',
5220
+ },
5221
+ },
5222
+ };
4837
5223
  export const SubscriptionEndingSchema = {
4838
5224
  properties: {
4839
5225
  subscriptionId: {
@@ -5374,6 +5760,13 @@ export const ListingGridResponseSchema = {
5374
5760
  $ref: '#/components/schemas/PlatformView',
5375
5761
  },
5376
5762
  },
5763
+ socialPosts: {
5764
+ type: 'array',
5765
+ description: 'Where the listing is posted on Facebook / Instagram: the latest published post per channel',
5766
+ items: {
5767
+ $ref: '#/components/schemas/SocialPostLink',
5768
+ },
5769
+ },
5377
5770
  createdAt: {
5378
5771
  type: 'string',
5379
5772
  format: 'date-time',
@@ -5394,6 +5787,7 @@ export const ListingGridResponseSchema = {
5394
5787
  'propertyId',
5395
5788
  'propertyState',
5396
5789
  'propertyType',
5790
+ 'socialPosts',
5397
5791
  'title',
5398
5792
  'updatedAt',
5399
5793
  ],
@@ -5437,6 +5831,20 @@ export const PlatformViewSchema = {
5437
5831
  },
5438
5832
  },
5439
5833
  };
5834
+ export const SocialPostLinkSchema = {
5835
+ type: 'object',
5836
+ properties: {
5837
+ channel: {
5838
+ type: 'string',
5839
+ enum: ['FACEBOOK', 'INSTAGRAM'],
5840
+ },
5841
+ permalink: {
5842
+ type: 'string',
5843
+ description: 'Opens the post on Facebook / Instagram',
5844
+ },
5845
+ },
5846
+ required: ['channel', 'permalink'],
5847
+ };
5440
5848
  export const GroupCountSchema = {
5441
5849
  type: 'object',
5442
5850
  properties: {
@@ -5888,6 +6296,95 @@ export const CursorPageMessageViewSchema = {
5888
6296
  },
5889
6297
  },
5890
6298
  };
6299
+ export const ComposerLimitsSchema = {
6300
+ type: 'object',
6301
+ properties: {
6302
+ maxPhotos: {
6303
+ type: 'integer',
6304
+ format: 'int32',
6305
+ },
6306
+ maxCaptionLength: {
6307
+ type: 'integer',
6308
+ format: 'int32',
6309
+ description: 'In Unicode code points: an emoji counts once, as [...text].length counts in JavaScript (text.length counts it twice)',
6310
+ },
6311
+ },
6312
+ required: ['maxCaptionLength', 'maxPhotos'],
6313
+ };
6314
+ export const ComposerPhotoSchema = {
6315
+ type: 'object',
6316
+ properties: {
6317
+ photoId: {
6318
+ type: 'integer',
6319
+ format: 'int64',
6320
+ description: 'What the publish request sends',
6321
+ },
6322
+ url: {
6323
+ type: 'string',
6324
+ },
6325
+ width: {
6326
+ type: 'integer',
6327
+ format: 'int32',
6328
+ description: 'As the photo is shown, in pixels',
6329
+ },
6330
+ height: {
6331
+ type: 'integer',
6332
+ format: 'int32',
6333
+ description: 'As the photo is shown, in pixels',
6334
+ },
6335
+ selectedByDefault: {
6336
+ type: 'boolean',
6337
+ },
6338
+ },
6339
+ required: ['height', 'photoId', 'selectedByDefault', 'url', 'width'],
6340
+ };
6341
+ export const ComposerPreviewSchema = {
6342
+ type: 'object',
6343
+ properties: {
6344
+ channel: {
6345
+ type: 'string',
6346
+ enum: ['FACEBOOK', 'INSTAGRAM'],
6347
+ },
6348
+ caption: {
6349
+ type: 'string',
6350
+ description: 'The built-in Georgian template filled in from the listing; a line with nothing to fill it is left out',
6351
+ },
6352
+ templateId: {
6353
+ type: 'string',
6354
+ format: 'uuid',
6355
+ description: 'The template the text came from, sent back on publish; null for the built-in one',
6356
+ },
6357
+ limits: {
6358
+ $ref: '#/components/schemas/ComposerLimits',
6359
+ },
6360
+ ratios: {
6361
+ type: 'array',
6362
+ description: "The shapes the agent can pick; empty on Facebook, which keeps each photo's own",
6363
+ items: {
6364
+ type: 'string',
6365
+ enum: ['LANDSCAPE', 'SQUARE', 'PORTRAIT'],
6366
+ },
6367
+ },
6368
+ defaultRatio: {
6369
+ type: 'string',
6370
+ description: 'Instagram only',
6371
+ enum: ['LANDSCAPE', 'SQUARE', 'PORTRAIT'],
6372
+ },
6373
+ photos: {
6374
+ type: 'array',
6375
+ description: 'The whole gallery, in gallery order',
6376
+ items: {
6377
+ $ref: '#/components/schemas/ComposerPhoto',
6378
+ },
6379
+ },
6380
+ access: {
6381
+ type: 'string',
6382
+ description: 'Whether the agency can post to the channel now; publishing refuses anything but ALLOWED',
6383
+ enum: ['ALLOWED', 'NOT_CONNECTED', 'RECONNECT_REQUIRED'],
6384
+ },
6385
+ },
6386
+ required: ['access', 'caption', 'channel', 'limits', 'photos', 'ratios'],
6387
+ };
5891
6388
  export const ContactGridResponseSchema = {
5892
6389
  type: 'object',
5893
6390
  properties: {