@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
@@ -276,78 +276,12 @@ export type SubscriptionCheckoutResponse = {
276
276
  subscriptionId?: string;
277
277
  status?: 'PENDING' | 'TRIALING' | 'ACTIVE' | 'PAST_DUE' | 'CANCELLED' | 'EXPIRED' | 'SUPERSEDED';
278
278
  };
279
- export type ProblemDetail = {
280
- type?: string;
281
- title?: string;
282
- status?: number;
283
- detail?: string;
284
- instance?: string;
285
- properties?: {
286
- [key: string]: unknown;
287
- };
288
- };
289
- export type AgencyRegistrationConflictResponse = {
290
- type: string;
291
- title: string;
292
- status: number;
293
- detail: string;
294
- instance: string;
295
- /**
296
- * 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.
297
- */
298
- conflicts: Array<'OWNER' | 'NAME' | 'SUBDOMAIN'>;
299
- code: 'AGENCY_REGISTRATION_CONFLICT';
300
- };
301
- export type ConcurrentModificationResponse = {
302
- type: string;
303
- title: string;
304
- status: number;
305
- detail: string;
306
- instance: string;
307
- code: 'CONCURRENT_MODIFICATION';
308
- };
309
- export type DataIntegrityConflictResponse = {
310
- type: string;
311
- title: string;
312
- status: number;
313
- detail: string;
314
- instance: string;
315
- code: 'DATA_INTEGRITY_CONFLICT';
316
- };
317
- export type SubscriptionConflictResponse = ({
318
- code: 'AGENCY_REGISTRATION_CONFLICT';
319
- } & AgencyRegistrationConflictResponse) | ({
320
- code: 'SUBSCRIPTION_STATE_CONFLICT';
321
- } & SubscriptionStateConflictResponse) | ({
322
- code: 'CONCURRENT_MODIFICATION';
323
- } & ConcurrentModificationResponse) | ({
324
- code: 'DATA_INTEGRITY_CONFLICT';
325
- } & DataIntegrityConflictResponse);
326
- export type SubscriptionStateConflictResponse = {
327
- type: string;
328
- title: string;
329
- status: number;
330
- detail: string;
331
- instance: string;
332
- subscriptionId: string;
333
- /**
334
- * Subscription lifecycle status. The standard problem status field remains the HTTP status code.
335
- */
336
- subscriptionStatus: 'PENDING' | 'TRIALING' | 'ACTIVE' | 'PAST_DUE' | 'CANCELLED' | 'EXPIRED' | 'SUPERSEDED';
337
- code: 'SUBSCRIPTION_STATE_CONFLICT';
338
- };
339
279
  export type ChangePlanRequest = {
340
280
  plan: 'STARTER' | 'PRO' | 'ENTERPRISE';
341
281
  billingCycle: 'MONTHLY' | 'ANNUAL';
342
282
  };
343
283
  export type CheckoutRequest = {
344
- /**
345
- * Required only when starting a new subscription
346
- */
347
284
  plan?: 'STARTER' | 'PRO' | 'ENTERPRISE';
348
- /**
349
- * Required only when starting a new subscription
350
- */
351
285
  billingCycle?: 'MONTHLY' | 'ANNUAL';
352
286
  };
353
287
  export type IdResponseInteger = {
@@ -380,6 +314,17 @@ export type OauthConnectionResponse = {
380
314
  createdAt: Date;
381
315
  updatedAt: Date;
382
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;
383
328
  };
384
329
  export type AttendeeRequest = {
385
330
  role: 'ORGANIZER' | 'MEMBER' | 'OWNER' | 'CLIENT' | 'OTHER';
@@ -433,6 +378,16 @@ export type AgencyPrincipalDto = {
433
378
  export type SendMessageRequest = {
434
379
  text: string;
435
380
  };
381
+ export type ProblemDetail = {
382
+ type?: string;
383
+ title?: string;
384
+ status?: number;
385
+ detail?: string;
386
+ instance?: string;
387
+ properties?: {
388
+ [key: string]: unknown;
389
+ };
390
+ };
436
391
  export type StartPropertyRegistrationRequest = {
437
392
  propertyType: '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';
438
393
  };
@@ -471,6 +426,58 @@ export type Percentage = Omit<AddDealRequest, 'type'> & {
471
426
  commission?: number;
472
427
  type: 'PERCENTAGE';
473
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
+ };
474
481
  export type CloseListingRequest = {
475
482
  withdrawExternal?: boolean;
476
483
  };
@@ -491,6 +498,10 @@ export type OnboardClientRequest = {
491
498
  export type IdResponseLong = {
492
499
  id: number;
493
500
  };
501
+ export type ExternalListingWithdrawRequest = {
502
+ platform: 'SS' | 'MY_HOME';
503
+ listingId: number;
504
+ };
494
505
  export type ExternalListingPublishRequest = {
495
506
  platform: 'SS' | 'MY_HOME';
496
507
  listingId: number;
@@ -806,6 +817,60 @@ export type StageCardsResponse = {
806
817
  members: Array<MemberPeekResponse>;
807
818
  data: CursorPageTaskCardResponse;
808
819
  };
820
+ export type SubscriptionResponse = {
821
+ subscriptionId: string;
822
+ plan: 'STARTER' | 'PRO' | 'ENTERPRISE';
823
+ billingCycle: 'MONTHLY' | 'ANNUAL';
824
+ /**
825
+ * Per-cycle price in minor units (tetri)
826
+ */
827
+ priceMinorUnits: number;
828
+ currency: string;
829
+ seats: number;
830
+ monthlyContactLimit: number;
831
+ trialDays: number;
832
+ status: 'PENDING' | 'TRIALING' | 'ACTIVE' | 'PAST_DUE' | 'CANCELLED' | 'EXPIRED' | 'SUPERSEDED';
833
+ /**
834
+ * Whether the agency is currently entitled to the workspace
835
+ */
836
+ live: boolean;
837
+ trialEndsAt?: Date;
838
+ paidThroughAt?: Date;
839
+ /**
840
+ * When the current entitlement ends, before grace; null while pending or once expired
841
+ */
842
+ accessEndsAt?: Date;
843
+ pastDueSince?: Date;
844
+ lastChargedAt?: Date;
845
+ createdAt: Date;
846
+ activatedAt?: Date;
847
+ cancelledAt?: Date;
848
+ /**
849
+ * When the most recently issued checkout link stops being payable
850
+ */
851
+ checkoutExpiresAt?: Date;
852
+ };
853
+ export type PaymentResponse = {
854
+ id: string;
855
+ subscriptionId: string;
856
+ flittPaymentId: string;
857
+ flittOrderId: string;
858
+ /**
859
+ * Flitt's verdict: approved / declined / reversed / expired …
860
+ */
861
+ orderStatus: string;
862
+ tranType?: string;
863
+ /**
864
+ * What the platform did with it
865
+ */
866
+ outcome: 'APPLIED' | 'TRIAL_STARTED' | 'DUPLICATE' | 'NOT_APPLIED_CANCELLED' | 'NOT_APPLIED_SUPERSEDED' | 'REJECTED_AMOUNT' | 'REJECTED_CURRENCY' | 'IGNORED_TRANSACTION_TYPE' | 'DECLINED' | 'REVERSED' | 'REVERSAL_IGNORED' | 'RECORDED';
867
+ amountMinorUnits?: number;
868
+ currency?: string;
869
+ responseCode?: string;
870
+ responseDescription?: string;
871
+ orderTime?: Date;
872
+ receivedAt: Date;
873
+ };
809
874
  export type Bucket = {
810
875
  count: number;
811
876
  value: number;
@@ -1084,10 +1149,11 @@ export type DealResponse = {
1084
1149
  export type PlatformListingResponse = {
1085
1150
  platformId?: number;
1086
1151
  platformType: 'SS' | 'MY_HOME';
1087
- status: 'PENDING' | 'SYNDICATED' | 'FAILED' | 'EXPIRED';
1152
+ status: 'PENDING' | 'SYNDICATED' | 'FAILED' | 'EXPIRED' | 'WITHDRAWING' | 'WITHDRAWN';
1088
1153
  listedAt?: Date;
1089
1154
  expiresAt?: Date;
1090
1155
  renewedAt?: Date;
1156
+ failureReason?: string;
1091
1157
  boost?: BoostResponse;
1092
1158
  coloredListing?: ColoredListingResponse;
1093
1159
  };
@@ -1111,12 +1177,16 @@ export type PropertyListingResponse = {
1111
1177
  marketplaceStatus: 'ACTIVE' | 'PAUSED' | 'EXPIRED';
1112
1178
  crmState: 'OPEN' | 'CLOSED';
1113
1179
  /**
1114
- * 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.
1180
+ * 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.
1115
1181
  */
1116
1182
  isProcessing: boolean;
1117
1183
  price: number;
1118
1184
  deal?: Fixed | MonthsOfRent | Percentage;
1119
1185
  platformListings: Array<PlatformListingResponse>;
1186
+ /**
1187
+ * Facebook / Instagram posts of this listing, newest first
1188
+ */
1189
+ socialPosts: Array<SocialPostResponse>;
1120
1190
  createdAt: Date;
1121
1191
  closedAt?: Date;
1122
1192
  };
@@ -1136,6 +1206,45 @@ export type PropertyPageResponse = {
1136
1206
  updatedAt: Date;
1137
1207
  closeReason?: PropertyCloseReasonResponse;
1138
1208
  };
1209
+ export type SocialPostResponse = {
1210
+ /**
1211
+ * For retrying a failed post, or reading it in full
1212
+ */
1213
+ postId: string;
1214
+ channel: 'FACEBOOK' | 'INSTAGRAM';
1215
+ status: 'PUBLISHING' | 'PUBLISHED' | 'FAILED' | 'REMOVED';
1216
+ /**
1217
+ * Exactly as published
1218
+ */
1219
+ caption: string;
1220
+ /**
1221
+ * The post's first photo, as uploaded to the gallery (not the Instagram crop)
1222
+ */
1223
+ thumbnailUrl?: string;
1224
+ /**
1225
+ * The post on Facebook / Instagram, once published
1226
+ */
1227
+ permalink?: string;
1228
+ publishedAt?: Date;
1229
+ /**
1230
+ * The member who created the post, also after they left the agency
1231
+ */
1232
+ createdBy: MemberPeekResponse;
1233
+ failureReason?: 'RECONNECT_REQUIRED' | 'PERMISSION_MISSING' | 'PAGE_PUBLISHING_AUTHORIZATION' | 'RATE_LIMITED' | 'BAD_MEDIA' | 'UNCONFIRMED' | 'UNKNOWN';
1234
+ /**
1235
+ * The post's public counts as last read from Facebook / Instagram; null until the first read
1236
+ */
1237
+ stats?: SocialPostStats;
1238
+ };
1239
+ export type SocialPostStats = {
1240
+ likes: number;
1241
+ comments: number;
1242
+ shares: number;
1243
+ /**
1244
+ * When the counts were read — show how old they are
1245
+ */
1246
+ fetchedAt: Date;
1247
+ };
1139
1248
  export type ListingOwnerContactResponse = {
1140
1249
  contactId: number;
1141
1250
  personalDetails: ContactPersonalDetailsRestricted | ContactPersonalDetailsVisible;
@@ -1148,9 +1257,18 @@ export type AgentCommented = {
1148
1257
  commentSnippet?: string;
1149
1258
  kind: 'AGENT_COMMENTED';
1150
1259
  };
1260
+ export type ChannelReauthRequired = {
1261
+ connectionId?: ConnectionId;
1262
+ channelType?: 'FACEBOOK' | 'INSTAGRAM' | 'WHATSAPP' | 'TIKTOK';
1263
+ displayName?: string;
1264
+ kind: 'CHANNEL_REAUTH_REQUIRED';
1265
+ };
1151
1266
  export type CommentId = {
1152
1267
  value?: string;
1153
1268
  };
1269
+ export type ConnectionId = {
1270
+ value?: string;
1271
+ };
1154
1272
  export type ContactAssigned = {
1155
1273
  contactId?: ContactId;
1156
1274
  contactName?: string;
@@ -1206,15 +1324,28 @@ export type NotificationFeed = {
1206
1324
  export type NotificationView = {
1207
1325
  id: string;
1208
1326
  seq: number;
1209
- 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';
1327
+ 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' | 'CHANNEL_REAUTH_REQUIRED' | 'SOCIAL_POST_FAILED';
1210
1328
  targetId?: string;
1211
- payload: AgentCommented | ContactAssigned | ListingExpired | NewMessage | NewSeekerRating | SubscriptionEnding | SubscriptionExpired | SubscriptionPaymentFailed | SubscriptionPaymentReversed | TaskCommented;
1329
+ payload: AgentCommented | ChannelReauthRequired | ContactAssigned | ListingExpired | NewMessage | NewSeekerRating | SocialPostFailed | SubscriptionEnding | SubscriptionExpired | SubscriptionPaymentFailed | SubscriptionPaymentReversed | TaskCommented;
1212
1330
  createdAt: Date;
1213
1331
  read: boolean;
1214
1332
  };
1215
1333
  export type PropertyId = {
1216
1334
  value?: number;
1217
1335
  };
1336
+ export type SocialPostFailed = {
1337
+ postId?: SocialPostId;
1338
+ contactId?: ContactId;
1339
+ propertyId?: PropertyId;
1340
+ listingId?: number;
1341
+ propertyTitle?: string;
1342
+ channel?: 'FACEBOOK' | 'INSTAGRAM';
1343
+ reason?: 'RECONNECT_REQUIRED' | 'PERMISSION_MISSING' | 'PAGE_PUBLISHING_AUTHORIZATION' | 'RATE_LIMITED' | 'BAD_MEDIA' | 'UNCONFIRMED' | 'UNKNOWN';
1344
+ kind: 'SOCIAL_POST_FAILED';
1345
+ };
1346
+ export type SocialPostId = {
1347
+ value?: string;
1348
+ };
1218
1349
  export type SubscriptionEnding = {
1219
1350
  subscriptionId?: SubscriptionId;
1220
1351
  status?: 'PENDING' | 'TRIALING' | 'ACTIVE' | 'PAST_DUE' | 'CANCELLED' | 'EXPIRED' | 'SUPERSEDED';
@@ -1348,6 +1479,10 @@ export type ListingGridResponse = {
1348
1479
  commissionType?: 'NOT_SET' | 'FIXED' | 'PERCENTAGE' | 'MONTHS_OF_RENT';
1349
1480
  commission?: number;
1350
1481
  platforms: Array<PlatformView>;
1482
+ /**
1483
+ * Where the listing is posted on Facebook / Instagram: the latest published post per channel
1484
+ */
1485
+ socialPosts: Array<SocialPostLink>;
1351
1486
  createdAt: Date;
1352
1487
  updatedAt: Date;
1353
1488
  };
@@ -1362,6 +1497,13 @@ export type PlatformView = {
1362
1497
  tier?: 'VIP' | 'VIP_PLUS' | 'SUPER_VIP';
1363
1498
  boostExpiresAt?: Date;
1364
1499
  };
1500
+ export type SocialPostLink = {
1501
+ channel: 'FACEBOOK' | 'INSTAGRAM';
1502
+ /**
1503
+ * Opens the post on Facebook / Instagram
1504
+ */
1505
+ permalink: string;
1506
+ };
1365
1507
  export type GroupCount = {
1366
1508
  groupKey: string;
1367
1509
  label: string;
@@ -1486,6 +1628,57 @@ export type CursorPageMessageView = {
1486
1628
  nextCursor?: string;
1487
1629
  hasNext?: boolean;
1488
1630
  };
1631
+ export type ComposerLimits = {
1632
+ maxPhotos: number;
1633
+ /**
1634
+ * In Unicode code points: an emoji counts once, as [...text].length counts in JavaScript (text.length counts it twice)
1635
+ */
1636
+ maxCaptionLength: number;
1637
+ };
1638
+ export type ComposerPhoto = {
1639
+ /**
1640
+ * What the publish request sends
1641
+ */
1642
+ photoId: number;
1643
+ url: string;
1644
+ /**
1645
+ * As the photo is shown, in pixels
1646
+ */
1647
+ width: number;
1648
+ /**
1649
+ * As the photo is shown, in pixels
1650
+ */
1651
+ height: number;
1652
+ selectedByDefault: boolean;
1653
+ };
1654
+ export type ComposerPreview = {
1655
+ channel: 'FACEBOOK' | 'INSTAGRAM';
1656
+ /**
1657
+ * The built-in Georgian template filled in from the listing; a line with nothing to fill it is left out
1658
+ */
1659
+ caption: string;
1660
+ /**
1661
+ * The template the text came from, sent back on publish; null for the built-in one
1662
+ */
1663
+ templateId?: string;
1664
+ limits: ComposerLimits;
1665
+ /**
1666
+ * The shapes the agent can pick; empty on Facebook, which keeps each photo's own
1667
+ */
1668
+ ratios: Array<'LANDSCAPE' | 'SQUARE' | 'PORTRAIT'>;
1669
+ /**
1670
+ * Instagram only
1671
+ */
1672
+ defaultRatio?: 'LANDSCAPE' | 'SQUARE' | 'PORTRAIT';
1673
+ /**
1674
+ * The whole gallery, in gallery order
1675
+ */
1676
+ photos: Array<ComposerPhoto>;
1677
+ /**
1678
+ * Whether the agency can post to the channel now; publishing refuses anything but ALLOWED
1679
+ */
1680
+ access: 'ALLOWED' | 'NOT_CONNECTED' | 'RECONNECT_REQUIRED';
1681
+ };
1489
1682
  export type ContactGridResponse = {
1490
1683
  id: number;
1491
1684
  createdBy?: string;
@@ -2873,13 +3066,6 @@ export type DeleteSubscriptionsData = {
2873
3066
  query?: never;
2874
3067
  url: '/subscriptions';
2875
3068
  };
2876
- export type DeleteSubscriptionsErrors = {
2877
- /**
2878
- * Registration conflicts, subscription state, or concurrent changes prevent this operation. Inspect code to select the error type.
2879
- */
2880
- 409: SubscriptionConflictResponse;
2881
- };
2882
- export type DeleteSubscriptionsError = DeleteSubscriptionsErrors[keyof DeleteSubscriptionsErrors];
2883
3069
  export type DeleteSubscriptionsResponses = {
2884
3070
  /**
2885
3071
  * No Content
@@ -2893,43 +3079,24 @@ export type GetSubscriptionsData = {
2893
3079
  query?: never;
2894
3080
  url: '/subscriptions';
2895
3081
  };
2896
- export type GetSubscriptionsErrors = {
3082
+ export type GetSubscriptionsResponses = {
2897
3083
  /**
2898
- * Registration conflicts, subscription state, or concurrent changes prevent this operation. Inspect code to select the error type.
3084
+ * OK
2899
3085
  */
2900
- 409: SubscriptionConflictResponse;
3086
+ 200: SubscriptionResponse;
2901
3087
  };
2902
- export type GetSubscriptionsError = GetSubscriptionsErrors[keyof GetSubscriptionsErrors];
3088
+ export type GetSubscriptionsResponse = GetSubscriptionsResponses[keyof GetSubscriptionsResponses];
2903
3089
  export type PostSubscriptionsData = {
2904
3090
  body: SubscribeRequest;
2905
3091
  path?: never;
2906
3092
  query?: never;
2907
3093
  url: '/subscriptions';
2908
3094
  };
2909
- export type PostSubscriptionsErrors = {
2910
- /**
2911
- * Malformed request or invalid field values
2912
- */
2913
- 400: ProblemDetail;
2914
- /**
2915
- * Registration conflicts, subscription state, or concurrent changes prevent this operation. Inspect code to select the error type.
2916
- */
2917
- 409: SubscriptionConflictResponse;
2918
- /**
2919
- * Payment provider unavailable; retry to recover saved checkout details
2920
- */
2921
- 502: ProblemDetail;
2922
- };
2923
- export type PostSubscriptionsError = PostSubscriptionsErrors[keyof PostSubscriptionsErrors];
2924
3095
  export type PostSubscriptionsResponses = {
2925
3096
  /**
2926
- * Payment already confirmed; checkoutUrl is null
3097
+ * OK
2927
3098
  */
2928
3099
  200: SubscriptionCheckoutResponse;
2929
- /**
2930
- * Checkout available
2931
- */
2932
- 201: SubscriptionCheckoutResponse;
2933
3100
  };
2934
3101
  export type PostSubscriptionsResponse = PostSubscriptionsResponses[keyof PostSubscriptionsResponses];
2935
3102
  export type PostSubscriptionsResumeData = {
@@ -2938,13 +3105,6 @@ export type PostSubscriptionsResumeData = {
2938
3105
  query?: never;
2939
3106
  url: '/subscriptions/resume';
2940
3107
  };
2941
- export type PostSubscriptionsResumeErrors = {
2942
- /**
2943
- * Registration conflicts, subscription state, or concurrent changes prevent this operation. Inspect code to select the error type.
2944
- */
2945
- 409: SubscriptionConflictResponse;
2946
- };
2947
- export type PostSubscriptionsResumeError = PostSubscriptionsResumeErrors[keyof PostSubscriptionsResumeErrors];
2948
3108
  export type PostSubscriptionsResumeResponses = {
2949
3109
  /**
2950
3110
  * No Content
@@ -2958,13 +3118,6 @@ export type PostSubscriptionsPlanData = {
2958
3118
  query?: never;
2959
3119
  url: '/subscriptions/plan';
2960
3120
  };
2961
- export type PostSubscriptionsPlanErrors = {
2962
- /**
2963
- * Registration conflicts, subscription state, or concurrent changes prevent this operation. Inspect code to select the error type.
2964
- */
2965
- 409: SubscriptionConflictResponse;
2966
- };
2967
- export type PostSubscriptionsPlanError = PostSubscriptionsPlanErrors[keyof PostSubscriptionsPlanErrors];
2968
3121
  export type PostSubscriptionsPlanResponses = {
2969
3122
  /**
2970
3123
  * Created
@@ -2978,13 +3131,6 @@ export type PostSubscriptionsCheckoutData = {
2978
3131
  query?: never;
2979
3132
  url: '/subscriptions/checkout';
2980
3133
  };
2981
- export type PostSubscriptionsCheckoutErrors = {
2982
- /**
2983
- * Registration conflicts, subscription state, or concurrent changes prevent this operation. Inspect code to select the error type.
2984
- */
2985
- 409: SubscriptionConflictResponse;
2986
- };
2987
- export type PostSubscriptionsCheckoutError = PostSubscriptionsCheckoutErrors[keyof PostSubscriptionsCheckoutErrors];
2988
3134
  export type PostSubscriptionsCheckoutResponses = {
2989
3135
  /**
2990
3136
  * Created
@@ -3511,6 +3657,41 @@ export type PostContactsByContactIdPropertiesByPropertyIdListingsResponses = {
3511
3657
  201: IdResponseUuid;
3512
3658
  };
3513
3659
  export type PostContactsByContactIdPropertiesByPropertyIdListingsResponse = PostContactsByContactIdPropertiesByPropertyIdListingsResponses[keyof PostContactsByContactIdPropertiesByPropertyIdListingsResponses];
3660
+ export type PostContactsByContactIdPropertiesByPropertyIdListingsByListingIdSocialPostsData = {
3661
+ body: PublishSocialPostRequest;
3662
+ path: {
3663
+ contactId: number;
3664
+ propertyId: number;
3665
+ listingId: number;
3666
+ };
3667
+ query?: never;
3668
+ url: '/contacts/{contactId}/properties/{propertyId}/listings/{listingId}/social-posts';
3669
+ };
3670
+ export type PostContactsByContactIdPropertiesByPropertyIdListingsByListingIdSocialPostsResponses = {
3671
+ /**
3672
+ * Accepted
3673
+ */
3674
+ 202: SocialPostView;
3675
+ };
3676
+ export type PostContactsByContactIdPropertiesByPropertyIdListingsByListingIdSocialPostsResponse = PostContactsByContactIdPropertiesByPropertyIdListingsByListingIdSocialPostsResponses[keyof PostContactsByContactIdPropertiesByPropertyIdListingsByListingIdSocialPostsResponses];
3677
+ export type PostContactsByContactIdPropertiesByPropertyIdListingsByListingIdSocialPostsByPostIdRetryData = {
3678
+ body?: never;
3679
+ path: {
3680
+ contactId: number;
3681
+ propertyId: number;
3682
+ listingId: number;
3683
+ postId: string;
3684
+ };
3685
+ query?: never;
3686
+ url: '/contacts/{contactId}/properties/{propertyId}/listings/{listingId}/social-posts/{postId}/retry';
3687
+ };
3688
+ export type PostContactsByContactIdPropertiesByPropertyIdListingsByListingIdSocialPostsByPostIdRetryResponses = {
3689
+ /**
3690
+ * Accepted
3691
+ */
3692
+ 202: SocialPostView;
3693
+ };
3694
+ export type PostContactsByContactIdPropertiesByPropertyIdListingsByListingIdSocialPostsByPostIdRetryResponse = PostContactsByContactIdPropertiesByPropertyIdListingsByListingIdSocialPostsByPostIdRetryResponses[keyof PostContactsByContactIdPropertiesByPropertyIdListingsByListingIdSocialPostsByPostIdRetryResponses];
3514
3695
  export type PostContactsByContactIdPropertiesByPropertyIdListingsByListingIdResumeData = {
3515
3696
  body?: never;
3516
3697
  path: {
@@ -3761,6 +3942,21 @@ export type PostContactResponses = {
3761
3942
  201: IdResponseLong;
3762
3943
  };
3763
3944
  export type PostContactResponse = PostContactResponses[keyof PostContactResponses];
3945
+ export type PostContactByContactIdPropertyByPropertyIdExternalListingWithdrawData = {
3946
+ body: ExternalListingWithdrawRequest;
3947
+ path: {
3948
+ contactId: number;
3949
+ propertyId: number;
3950
+ };
3951
+ query?: never;
3952
+ url: '/contact/{contactId}/property/{propertyId}/external-listing/withdraw';
3953
+ };
3954
+ export type PostContactByContactIdPropertyByPropertyIdExternalListingWithdrawResponses = {
3955
+ /**
3956
+ * OK
3957
+ */
3958
+ 200: unknown;
3959
+ };
3764
3960
  export type PostContactByContactIdPropertyByPropertyIdExternalListingPublishData = {
3765
3961
  body: ExternalListingPublishRequest;
3766
3962
  path: {
@@ -3996,13 +4192,13 @@ export type GetSubscriptionsPaymentsData = {
3996
4192
  query?: never;
3997
4193
  url: '/subscriptions/payments';
3998
4194
  };
3999
- export type GetSubscriptionsPaymentsErrors = {
4195
+ export type GetSubscriptionsPaymentsResponses = {
4000
4196
  /**
4001
- * Registration conflicts, subscription state, or concurrent changes prevent this operation. Inspect code to select the error type.
4197
+ * OK
4002
4198
  */
4003
- 409: SubscriptionConflictResponse;
4199
+ 200: Array<PaymentResponse>;
4004
4200
  };
4005
- export type GetSubscriptionsPaymentsError = GetSubscriptionsPaymentsErrors[keyof GetSubscriptionsPaymentsErrors];
4201
+ export type GetSubscriptionsPaymentsResponse = GetSubscriptionsPaymentsResponses[keyof GetSubscriptionsPaymentsResponses];
4006
4202
  export type GetStatsPipelineCommissionData = {
4007
4203
  body?: never;
4008
4204
  path?: never;
@@ -4521,6 +4717,7 @@ export type GetListingData = {
4521
4717
  platforms?: Array<'SS' | 'MY_HOME'>;
4522
4718
  platformExpiresFrom?: Date;
4523
4719
  platformExpiresTo?: Date;
4720
+ socialChannels?: Array<'FACEBOOK' | 'INSTAGRAM'>;
4524
4721
  boostTiers?: Array<string>;
4525
4722
  boostExpiresFrom?: Date;
4526
4723
  boostExpiresTo?: Date;
@@ -4587,6 +4784,7 @@ export type GetListingGroupsData = {
4587
4784
  platforms?: Array<'SS' | 'MY_HOME'>;
4588
4785
  platformExpiresFrom?: Date;
4589
4786
  platformExpiresTo?: Date;
4787
+ socialChannels?: Array<'FACEBOOK' | 'INSTAGRAM'>;
4590
4788
  boostTiers?: Array<string>;
4591
4789
  boostExpiresFrom?: Date;
4592
4790
  boostExpiresTo?: Date;
@@ -4771,6 +4969,43 @@ export type GetConversationsByConversationIdUpdatesResponses = {
4771
4969
  200: ThreadUpdates;
4772
4970
  };
4773
4971
  export type GetConversationsByConversationIdUpdatesResponse = GetConversationsByConversationIdUpdatesResponses[keyof GetConversationsByConversationIdUpdatesResponses];
4972
+ export type GetContactsByContactIdPropertiesByPropertyIdListingsByListingIdSocialPostsByPostIdData = {
4973
+ body?: never;
4974
+ path: {
4975
+ contactId: number;
4976
+ propertyId: number;
4977
+ listingId: number;
4978
+ postId: string;
4979
+ };
4980
+ query?: never;
4981
+ url: '/contacts/{contactId}/properties/{propertyId}/listings/{listingId}/social-posts/{postId}';
4982
+ };
4983
+ export type GetContactsByContactIdPropertiesByPropertyIdListingsByListingIdSocialPostsByPostIdResponses = {
4984
+ /**
4985
+ * OK
4986
+ */
4987
+ 200: SocialPostView;
4988
+ };
4989
+ export type GetContactsByContactIdPropertiesByPropertyIdListingsByListingIdSocialPostsByPostIdResponse = GetContactsByContactIdPropertiesByPropertyIdListingsByListingIdSocialPostsByPostIdResponses[keyof GetContactsByContactIdPropertiesByPropertyIdListingsByListingIdSocialPostsByPostIdResponses];
4990
+ export type GetContactsByContactIdPropertiesByPropertyIdListingsByListingIdSocialPostsPreviewData = {
4991
+ body?: never;
4992
+ path: {
4993
+ contactId: number;
4994
+ propertyId: number;
4995
+ listingId: number;
4996
+ };
4997
+ query: {
4998
+ channel: 'FACEBOOK' | 'INSTAGRAM';
4999
+ };
5000
+ url: '/contacts/{contactId}/properties/{propertyId}/listings/{listingId}/social-posts/preview';
5001
+ };
5002
+ export type GetContactsByContactIdPropertiesByPropertyIdListingsByListingIdSocialPostsPreviewResponses = {
5003
+ /**
5004
+ * OK
5005
+ */
5006
+ 200: ComposerPreview;
5007
+ };
5008
+ export type GetContactsByContactIdPropertiesByPropertyIdListingsByListingIdSocialPostsPreviewResponse = GetContactsByContactIdPropertiesByPropertyIdListingsByListingIdSocialPostsPreviewResponses[keyof GetContactsByContactIdPropertiesByPropertyIdListingsByListingIdSocialPostsPreviewResponses];
4774
5009
  export type GetContactsByContactIdInterestsByInterestIdRecommendationsDecisionsData = {
4775
5010
  body?: never;
4776
5011
  path: {