@homespot-sdk/core 0.0.361 → 0.0.363

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.
@@ -820,6 +820,49 @@ export const UploadAcknowledgmentResponseSchema = {
820
820
  },
821
821
  required: ['fail', 'success'],
822
822
  };
823
+ export const PlanLimitResponseSchema = {
824
+ type: 'object',
825
+ properties: {
826
+ type: {
827
+ type: 'string',
828
+ format: 'uri',
829
+ },
830
+ title: {
831
+ type: 'string',
832
+ },
833
+ status: {
834
+ type: 'integer',
835
+ format: 'int32',
836
+ },
837
+ detail: {
838
+ type: 'string',
839
+ },
840
+ instance: {
841
+ type: 'string',
842
+ format: 'uri',
843
+ },
844
+ limit: {
845
+ type: 'string',
846
+ enum: [
847
+ 'SEATS',
848
+ 'ACTIVE_LISTINGS',
849
+ 'SOCIAL_POSTS',
850
+ 'AGENCY_BRANDING',
851
+ ],
852
+ },
853
+ used: {
854
+ type: 'integer',
855
+ format: 'int32',
856
+ description: 'How many are in use now; absent for a feature',
857
+ },
858
+ allowed: {
859
+ type: 'integer',
860
+ format: 'int32',
861
+ description: 'How many the plan allows; absent for a feature',
862
+ },
863
+ },
864
+ required: ['limit'],
865
+ };
823
866
  export const ConnectLinkResponseSchema = {
824
867
  type: 'object',
825
868
  properties: {
@@ -925,10 +968,12 @@ export const SubscribeRequestSchema = {
925
968
  properties: {
926
969
  plan: {
927
970
  type: 'string',
928
- enum: ['STARTER', 'PRO', 'ENTERPRISE'],
971
+ description: 'PLUS or PRO to check out right away, FREE to start on Free without the trial; absent to start on the trial only',
972
+ enum: ['FREE', 'PLUS', 'PRO', 'ENTERPRISE'],
929
973
  },
930
974
  billingCycle: {
931
975
  type: 'string',
976
+ description: 'Required with PLUS or PRO',
932
977
  enum: ['MONTHLY', 'ANNUAL'],
933
978
  },
934
979
  name: {
@@ -952,15 +997,7 @@ export const SubscribeRequestSchema = {
952
997
  $ref: '#/components/schemas/SubscriptionAddressRequest',
953
998
  },
954
999
  },
955
- required: [
956
- 'address',
957
- 'billingCycle',
958
- 'email',
959
- 'name',
960
- 'phone',
961
- 'plan',
962
- 'subdomain',
963
- ],
1000
+ required: ['address', 'email', 'name', 'phone', 'subdomain'],
964
1001
  };
965
1002
  export const SubscriptionAddressRequestSchema = {
966
1003
  type: 'object',
@@ -998,7 +1035,7 @@ export const SubscriptionCheckoutResponseSchema = {
998
1035
  properties: {
999
1036
  checkoutUrl: {
1000
1037
  type: 'string',
1001
- description: 'Null when payment is already confirmed; continue onboarding without paying again',
1038
+ description: 'Null when payment is already confirmed, or a signup picked no plan',
1002
1039
  },
1003
1040
  agencyId: {
1004
1041
  type: 'string',
@@ -1007,6 +1044,7 @@ export const SubscriptionCheckoutResponseSchema = {
1007
1044
  subscriptionId: {
1008
1045
  type: 'string',
1009
1046
  format: 'uuid',
1047
+ description: 'Null for a signup that picked no plan: the agency is on its trial',
1010
1048
  },
1011
1049
  status: {
1012
1050
  type: 'string',
@@ -1027,7 +1065,7 @@ export const ChangePlanRequestSchema = {
1027
1065
  properties: {
1028
1066
  plan: {
1029
1067
  type: 'string',
1030
- enum: ['STARTER', 'PRO', 'ENTERPRISE'],
1068
+ enum: ['FREE', 'PLUS', 'PRO', 'ENTERPRISE'],
1031
1069
  },
1032
1070
  billingCycle: {
1033
1071
  type: 'string',
@@ -1041,7 +1079,7 @@ export const CheckoutRequestSchema = {
1041
1079
  properties: {
1042
1080
  plan: {
1043
1081
  type: 'string',
1044
- enum: ['STARTER', 'PRO', 'ENTERPRISE'],
1082
+ enum: ['FREE', 'PLUS', 'PRO', 'ENTERPRISE'],
1045
1083
  },
1046
1084
  billingCycle: {
1047
1085
  type: 'string',
@@ -1836,6 +1874,11 @@ export const SocialCommentResponseSchema = {
1836
1874
  type: 'string',
1837
1875
  format: 'uuid',
1838
1876
  },
1877
+ parentCommentId: {
1878
+ type: 'string',
1879
+ format: 'uuid',
1880
+ 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",
1881
+ },
1839
1882
  author: {
1840
1883
  $ref: '#/components/schemas/SocialCommentAuthor',
1841
1884
  description: "Who wrote it, as far as Facebook / Instagram say; null on the agency's own comments, and when Meta does not say",
@@ -2101,32 +2144,16 @@ export const AddTodoTemplateRequestSchema = {
2101
2144
  },
2102
2145
  required: ['applyToTasksInStage', 'title'],
2103
2146
  };
2104
- export const ProvisionAgencyRequestSchema = {
2147
+ export const AdminCheckoutRequestSchema = {
2105
2148
  type: 'object',
2106
2149
  properties: {
2107
- ownerUserId: {
2108
- type: 'string',
2109
- description: "The customer's existing user account id",
2110
- },
2111
- name: {
2112
- type: 'string',
2113
- },
2114
- email: {
2115
- type: 'string',
2116
- format: 'email',
2117
- },
2118
- phone: {
2119
- type: 'string',
2120
- },
2121
- subdomain: {
2150
+ agencyId: {
2122
2151
  type: 'string',
2123
- },
2124
- address: {
2125
- $ref: '#/components/schemas/SubscriptionAddressRequest',
2152
+ format: 'uuid',
2126
2153
  },
2127
2154
  plan: {
2128
2155
  type: 'string',
2129
- enum: ['STARTER', 'PRO', 'ENTERPRISE'],
2156
+ enum: ['FREE', 'PLUS', 'PRO', 'ENTERPRISE'],
2130
2157
  },
2131
2158
  billingCycle: {
2132
2159
  type: 'string',
@@ -2135,48 +2162,59 @@ export const ProvisionAgencyRequestSchema = {
2135
2162
  priceMinorUnits: {
2136
2163
  type: 'integer',
2137
2164
  format: 'int64',
2138
- description: 'Exact per-cycle charge in minor units (tetri)',
2165
+ description: 'Exact per-cycle net price in minor units (tetri), VAT excluded',
2139
2166
  },
2140
2167
  seats: {
2141
2168
  type: 'integer',
2142
2169
  format: 'int32',
2143
2170
  },
2144
- monthlyContactLimit: {
2171
+ activeListings: {
2145
2172
  type: 'integer',
2146
2173
  format: 'int32',
2147
- description: 'Contacts the agency may create per calendar month',
2174
+ },
2175
+ aiMessages: {
2176
+ type: 'integer',
2177
+ format: 'int32',
2178
+ description: 'AI messages the agency shares each month; 0 means no AI',
2179
+ },
2180
+ features: {
2181
+ type: 'array',
2182
+ items: {
2183
+ type: 'string',
2184
+ enum: ['SOCIAL_POSTS', 'AGENCY_BRANDING'],
2185
+ },
2186
+ uniqueItems: true,
2148
2187
  },
2149
2188
  trialDays: {
2150
2189
  type: 'integer',
2151
2190
  format: 'int32',
2152
2191
  description: 'Free-trial days; 0 charges immediately',
2153
2192
  },
2193
+ discountMonths: {
2194
+ type: 'integer',
2195
+ format: 'int32',
2196
+ description: 'Months the price lasts (monthly billing only; the checkout charges the first). After them Flitt charges nothing more and the owner keeps the plan at its normal price by a plan change. Absent: until the plan changes',
2197
+ minimum: 2,
2198
+ },
2154
2199
  },
2155
2200
  required: [
2156
- 'address',
2201
+ 'activeListings',
2202
+ 'agencyId',
2203
+ 'aiMessages',
2157
2204
  'billingCycle',
2158
- 'email',
2159
- 'monthlyContactLimit',
2160
- 'name',
2161
- 'ownerUserId',
2162
- 'phone',
2205
+ 'features',
2163
2206
  'plan',
2164
2207
  'priceMinorUnits',
2165
2208
  'seats',
2166
- 'subdomain',
2167
2209
  'trialDays',
2168
2210
  ],
2169
2211
  };
2170
- export const AdminProvisionResponseSchema = {
2212
+ export const AdminCheckoutResponseSchema = {
2171
2213
  type: 'object',
2172
2214
  properties: {
2173
2215
  checkoutUrl: {
2174
2216
  type: 'string',
2175
2217
  },
2176
- agencyId: {
2177
- type: 'string',
2178
- format: 'uuid',
2179
- },
2180
2218
  subscriptionId: {
2181
2219
  type: 'string',
2182
2220
  format: 'uuid',
@@ -2268,12 +2306,17 @@ export const OrganizationSummaryViewResponseSchema = {
2268
2306
  isPhoneVerified: {
2269
2307
  type: 'boolean',
2270
2308
  },
2309
+ isSeatLocked: {
2310
+ type: 'boolean',
2311
+ description: "Past the seats the agency's plan has after a downgrade: locked out until the owner upgrades or removes a member",
2312
+ },
2271
2313
  },
2272
2314
  required: [
2273
2315
  'agencyId',
2274
2316
  'agencyName',
2275
2317
  'isOwner',
2276
2318
  'isPhoneVerified',
2319
+ 'isSeatLocked',
2277
2320
  'memberId',
2278
2321
  'permissions',
2279
2322
  'phone',
@@ -3466,7 +3509,7 @@ export const SubscriptionResponseSchema = {
3466
3509
  },
3467
3510
  plan: {
3468
3511
  type: 'string',
3469
- enum: ['STARTER', 'PRO', 'ENTERPRISE'],
3512
+ enum: ['FREE', 'PLUS', 'PRO', 'ENTERPRISE'],
3470
3513
  },
3471
3514
  billingCycle: {
3472
3515
  type: 'string',
@@ -3475,7 +3518,22 @@ export const SubscriptionResponseSchema = {
3475
3518
  priceMinorUnits: {
3476
3519
  type: 'integer',
3477
3520
  format: 'int64',
3478
- description: 'Per-cycle price in minor units (tetri)',
3521
+ description: 'Per-cycle charge in minor units (tetri), VAT included',
3522
+ },
3523
+ netMinorUnits: {
3524
+ type: 'integer',
3525
+ format: 'int64',
3526
+ description: 'The charge without VAT, in minor units',
3527
+ },
3528
+ vatMinorUnits: {
3529
+ type: 'integer',
3530
+ format: 'int64',
3531
+ description: 'The VAT inside the charge, in minor units',
3532
+ },
3533
+ vatPercent: {
3534
+ type: 'integer',
3535
+ format: 'int32',
3536
+ description: 'The VAT rate the subscription was sold at, in percent',
3479
3537
  },
3480
3538
  currency: {
3481
3539
  type: 'string',
@@ -3484,10 +3542,23 @@ export const SubscriptionResponseSchema = {
3484
3542
  type: 'integer',
3485
3543
  format: 'int32',
3486
3544
  },
3487
- monthlyContactLimit: {
3545
+ activeListings: {
3488
3546
  type: 'integer',
3489
3547
  format: 'int32',
3490
3548
  },
3549
+ aiMessages: {
3550
+ type: 'integer',
3551
+ format: 'int32',
3552
+ description: 'AI messages the agency shares each month; 0 means no AI',
3553
+ },
3554
+ features: {
3555
+ type: 'array',
3556
+ items: {
3557
+ type: 'string',
3558
+ enum: ['SOCIAL_POSTS', 'AGENCY_BRANDING'],
3559
+ },
3560
+ uniqueItems: true,
3561
+ },
3491
3562
  trialDays: {
3492
3563
  type: 'integer',
3493
3564
  format: 'int32',
@@ -3546,21 +3617,125 @@ export const SubscriptionResponseSchema = {
3546
3617
  format: 'date-time',
3547
3618
  description: 'When the most recently issued checkout link stops being payable',
3548
3619
  },
3620
+ discountEndsAt: {
3621
+ type: 'string',
3622
+ format: 'date-time',
3623
+ description: 'Until when its discounted price applies; absent for any other price',
3624
+ },
3549
3625
  },
3550
3626
  required: [
3627
+ 'activeListings',
3628
+ 'aiMessages',
3551
3629
  'billingCycle',
3552
3630
  'createdAt',
3553
3631
  'currency',
3632
+ 'features',
3554
3633
  'live',
3555
- 'monthlyContactLimit',
3634
+ 'netMinorUnits',
3556
3635
  'plan',
3557
3636
  'priceMinorUnits',
3558
3637
  'seats',
3559
3638
  'status',
3560
3639
  'subscriptionId',
3561
3640
  'trialDays',
3641
+ 'vatMinorUnits',
3642
+ 'vatPercent',
3643
+ ],
3644
+ };
3645
+ export const AiMessagesSchema = {
3646
+ type: 'object',
3647
+ properties: {
3648
+ used: {
3649
+ type: 'integer',
3650
+ format: 'int64',
3651
+ },
3652
+ limit: {
3653
+ type: 'integer',
3654
+ format: 'int64',
3655
+ description: 'Shared by the whole agency',
3656
+ },
3657
+ resetsAt: {
3658
+ type: 'string',
3659
+ format: 'date-time',
3660
+ description: 'When the allowance renews: the next 1st in Tbilisi; absent during the trial, whose allowance covers all of it',
3661
+ },
3662
+ },
3663
+ required: ['limit', 'used'],
3664
+ };
3665
+ export const PlanResponseSchema = {
3666
+ type: 'object',
3667
+ properties: {
3668
+ plan: {
3669
+ type: 'string',
3670
+ enum: ['FREE', 'PLUS', 'PRO', 'ENTERPRISE'],
3671
+ },
3672
+ canManage: {
3673
+ type: 'boolean',
3674
+ description: 'Whether the caller may change the plan: the owner',
3675
+ },
3676
+ trial: {
3677
+ $ref: '#/components/schemas/Trial',
3678
+ description: 'Present only during the trial every new agency starts with',
3679
+ },
3680
+ subscription: {
3681
+ $ref: '#/components/schemas/SubscriptionResponse',
3682
+ description: 'The subscription access comes from; absent on Free',
3683
+ },
3684
+ seats: {
3685
+ $ref: '#/components/schemas/Usage',
3686
+ },
3687
+ activeListings: {
3688
+ $ref: '#/components/schemas/Usage',
3689
+ },
3690
+ aiMessages: {
3691
+ $ref: '#/components/schemas/AiMessages',
3692
+ },
3693
+ boards: {
3694
+ $ref: '#/components/schemas/Usage',
3695
+ },
3696
+ features: {
3697
+ type: 'array',
3698
+ items: {
3699
+ type: 'string',
3700
+ enum: ['SOCIAL_POSTS', 'AGENCY_BRANDING'],
3701
+ },
3702
+ uniqueItems: true,
3703
+ },
3704
+ },
3705
+ required: [
3706
+ 'activeListings',
3707
+ 'aiMessages',
3708
+ 'boards',
3709
+ 'canManage',
3710
+ 'features',
3711
+ 'plan',
3712
+ 'seats',
3562
3713
  ],
3563
3714
  };
3715
+ export const TrialSchema = {
3716
+ type: 'object',
3717
+ properties: {
3718
+ endsAt: {
3719
+ type: 'string',
3720
+ format: 'date-time',
3721
+ },
3722
+ },
3723
+ required: ['endsAt'],
3724
+ };
3725
+ export const UsageSchema = {
3726
+ type: 'object',
3727
+ properties: {
3728
+ used: {
3729
+ type: 'integer',
3730
+ format: 'int64',
3731
+ },
3732
+ limit: {
3733
+ type: 'integer',
3734
+ format: 'int64',
3735
+ },
3736
+ },
3737
+ required: ['limit', 'used'],
3738
+ };
3564
3739
  export const PaymentResponseSchema = {
3565
3740
  type: 'object',
3566
3741
  properties: {
@@ -3606,6 +3781,22 @@ export const PaymentResponseSchema = {
3606
3781
  amountMinorUnits: {
3607
3782
  type: 'integer',
3608
3783
  format: 'int64',
3784
+ description: 'VAT included',
3785
+ },
3786
+ netMinorUnits: {
3787
+ type: 'integer',
3788
+ format: 'int64',
3789
+ description: "The amount without VAT, at the subscription's rate",
3790
+ },
3791
+ vatMinorUnits: {
3792
+ type: 'integer',
3793
+ format: 'int64',
3794
+ description: 'The VAT inside the amount',
3795
+ },
3796
+ vatPercent: {
3797
+ type: 'integer',
3798
+ format: 'int32',
3799
+ description: "The subscription's VAT rate, in percent",
3609
3800
  },
3610
3801
  currency: {
3611
3802
  type: 'string',
@@ -3633,6 +3824,7 @@ export const PaymentResponseSchema = {
3633
3824
  'outcome',
3634
3825
  'receivedAt',
3635
3826
  'subscriptionId',
3827
+ 'vatPercent',
3636
3828
  ],
3637
3829
  };
3638
3830
  export const BucketSchema = {
@@ -4147,11 +4339,16 @@ export const InterestResponseSchema = {
4147
4339
  boundedBox: {
4148
4340
  $ref: '#/components/schemas/BoundingBox',
4149
4341
  },
4342
+ agencyBranding: {
4343
+ type: 'boolean',
4344
+ description: "Whether client pages show the agency's own logo; HomeSpot's when false",
4345
+ },
4150
4346
  recommendations: {
4151
4347
  $ref: '#/components/schemas/PagedModelRecommendationsCardView',
4152
4348
  },
4153
4349
  },
4154
4350
  required: [
4351
+ 'agencyBranding',
4155
4352
  'createdAt',
4156
4353
  'criteria',
4157
4354
  'id',
@@ -4359,6 +4556,121 @@ export const RecommendationDecisionResponseSchema = {
4359
4556
  },
4360
4557
  required: ['decision', 'externalListingId', 'externalPropertyId'],
4361
4558
  };
4559
+ export const AmountSchema = {
4560
+ type: 'object',
4561
+ properties: {
4562
+ netMinorUnits: {
4563
+ type: 'integer',
4564
+ format: 'int64',
4565
+ },
4566
+ vatMinorUnits: {
4567
+ type: 'integer',
4568
+ format: 'int64',
4569
+ },
4570
+ totalMinorUnits: {
4571
+ type: 'integer',
4572
+ format: 'int64',
4573
+ },
4574
+ },
4575
+ required: ['netMinorUnits', 'totalMinorUnits', 'vatMinorUnits'],
4576
+ };
4577
+ export const CatalogResponseSchema = {
4578
+ type: 'object',
4579
+ properties: {
4580
+ currency: {
4581
+ type: 'string',
4582
+ },
4583
+ vatPercent: {
4584
+ type: 'integer',
4585
+ format: 'int32',
4586
+ },
4587
+ plans: {
4588
+ type: 'array',
4589
+ description: 'Free, Plus and Pro',
4590
+ items: {
4591
+ $ref: '#/components/schemas/PlanOffer',
4592
+ },
4593
+ },
4594
+ enterpriseFromMonthly: {
4595
+ $ref: '#/components/schemas/Amount',
4596
+ description: "Enterprise's lowest monthly price; every deal is priced individually",
4597
+ },
4598
+ trial: {
4599
+ $ref: '#/components/schemas/TrialOffer',
4600
+ },
4601
+ },
4602
+ required: [
4603
+ 'currency',
4604
+ 'enterpriseFromMonthly',
4605
+ 'plans',
4606
+ 'trial',
4607
+ 'vatPercent',
4608
+ ],
4609
+ };
4610
+ export const PlanOfferSchema = {
4611
+ type: 'object',
4612
+ properties: {
4613
+ plan: {
4614
+ type: 'string',
4615
+ enum: ['FREE', 'PLUS', 'PRO', 'ENTERPRISE'],
4616
+ },
4617
+ monthly: {
4618
+ $ref: '#/components/schemas/Amount',
4619
+ },
4620
+ yearly: {
4621
+ $ref: '#/components/schemas/Amount',
4622
+ },
4623
+ seats: {
4624
+ type: 'integer',
4625
+ format: 'int32',
4626
+ },
4627
+ activeListings: {
4628
+ type: 'integer',
4629
+ format: 'int32',
4630
+ },
4631
+ aiMessages: {
4632
+ type: 'integer',
4633
+ format: 'int32',
4634
+ description: "A month's AI messages, shared by the whole agency",
4635
+ },
4636
+ features: {
4637
+ type: 'array',
4638
+ items: {
4639
+ type: 'string',
4640
+ enum: ['SOCIAL_POSTS', 'AGENCY_BRANDING'],
4641
+ },
4642
+ uniqueItems: true,
4643
+ },
4644
+ },
4645
+ required: [
4646
+ 'activeListings',
4647
+ 'aiMessages',
4648
+ 'features',
4649
+ 'monthly',
4650
+ 'plan',
4651
+ 'seats',
4652
+ 'yearly',
4653
+ ],
4654
+ };
4655
+ export const TrialOfferSchema = {
4656
+ type: 'object',
4657
+ properties: {
4658
+ days: {
4659
+ type: 'integer',
4660
+ format: 'int32',
4661
+ },
4662
+ plan: {
4663
+ type: 'string',
4664
+ enum: ['FREE', 'PLUS', 'PRO', 'ENTERPRISE'],
4665
+ },
4666
+ aiMessages: {
4667
+ type: 'integer',
4668
+ format: 'int32',
4669
+ description: 'For the whole trial',
4670
+ },
4671
+ },
4672
+ required: ['aiMessages', 'days', 'plan'],
4673
+ };
4362
4674
  export const GroupedPermissionsResponseSchema = {
4363
4675
  type: 'object',
4364
4676
  properties: {
@@ -5154,6 +5466,40 @@ export const AgentCommentedSchema = {
5154
5466
  },
5155
5467
  required: ['kind'],
5156
5468
  };
5469
+ export const AiMessagesRunningLowSchema = {
5470
+ properties: {
5471
+ used: {
5472
+ type: 'integer',
5473
+ format: 'int64',
5474
+ },
5475
+ allowance: {
5476
+ type: 'integer',
5477
+ format: 'int32',
5478
+ },
5479
+ kind: {
5480
+ type: 'string',
5481
+ enum: ['AI_MESSAGES_RUNNING_LOW'],
5482
+ },
5483
+ },
5484
+ required: ['kind'],
5485
+ };
5486
+ export const AiMessagesUsedUpSchema = {
5487
+ properties: {
5488
+ allowance: {
5489
+ type: 'integer',
5490
+ format: 'int32',
5491
+ },
5492
+ renewsAt: {
5493
+ type: 'string',
5494
+ format: 'date-time',
5495
+ },
5496
+ kind: {
5497
+ type: 'string',
5498
+ enum: ['AI_MESSAGES_USED_UP'],
5499
+ },
5500
+ },
5501
+ required: ['kind'],
5502
+ };
5157
5503
  export const ChannelReauthRequiredSchema = {
5158
5504
  properties: {
5159
5505
  connectionId: {
@@ -5261,6 +5607,22 @@ export const CursorPageNotificationViewSchema = {
5261
5607
  },
5262
5608
  },
5263
5609
  };
5610
+ export const DiscountEndingSchema = {
5611
+ properties: {
5612
+ subscriptionId: {
5613
+ $ref: '#/components/schemas/SubscriptionId',
5614
+ },
5615
+ endsAt: {
5616
+ type: 'string',
5617
+ format: 'date-time',
5618
+ },
5619
+ kind: {
5620
+ type: 'string',
5621
+ enum: ['DISCOUNT_ENDING'],
5622
+ },
5623
+ },
5624
+ required: ['kind'],
5625
+ };
5264
5626
  export const ListingExpiredSchema = {
5265
5627
  properties: {
5266
5628
  contactId: {
@@ -5390,6 +5752,11 @@ export const NotificationContentSchema = {
5390
5752
  SUBSCRIPTION_ENDING: '#/components/schemas/SubscriptionEnding',
5391
5753
  SUBSCRIPTION_EXPIRED: '#/components/schemas/SubscriptionExpired',
5392
5754
  SUBSCRIPTION_PAYMENT_REVERSED: '#/components/schemas/SubscriptionPaymentReversed',
5755
+ TRIAL_ENDING: '#/components/schemas/TrialEnding',
5756
+ TRIAL_ENDED: '#/components/schemas/TrialEnded',
5757
+ DISCOUNT_ENDING: '#/components/schemas/DiscountEnding',
5758
+ AI_MESSAGES_RUNNING_LOW: '#/components/schemas/AiMessagesRunningLow',
5759
+ AI_MESSAGES_USED_UP: '#/components/schemas/AiMessagesUsedUp',
5393
5760
  CHANNEL_REAUTH_REQUIRED: '#/components/schemas/ChannelReauthRequired',
5394
5761
  SOCIAL_POST_FAILED: '#/components/schemas/SocialPostFailed',
5395
5762
  SOCIAL_POST_COMMENTED: '#/components/schemas/SocialPostCommented',
@@ -5436,6 +5803,11 @@ export const NotificationViewSchema = {
5436
5803
  'SUBSCRIPTION_ENDING',
5437
5804
  'SUBSCRIPTION_EXPIRED',
5438
5805
  'SUBSCRIPTION_PAYMENT_REVERSED',
5806
+ 'TRIAL_ENDING',
5807
+ 'TRIAL_ENDED',
5808
+ 'DISCOUNT_ENDING',
5809
+ 'AI_MESSAGES_RUNNING_LOW',
5810
+ 'AI_MESSAGES_USED_UP',
5439
5811
  'CHANNEL_REAUTH_REQUIRED',
5440
5812
  'SOCIAL_POST_FAILED',
5441
5813
  'SOCIAL_POST_COMMENTED',
@@ -5449,12 +5821,21 @@ export const NotificationViewSchema = {
5449
5821
  {
5450
5822
  $ref: '#/components/schemas/AgentCommented',
5451
5823
  },
5824
+ {
5825
+ $ref: '#/components/schemas/AiMessagesRunningLow',
5826
+ },
5827
+ {
5828
+ $ref: '#/components/schemas/AiMessagesUsedUp',
5829
+ },
5452
5830
  {
5453
5831
  $ref: '#/components/schemas/ChannelReauthRequired',
5454
5832
  },
5455
5833
  {
5456
5834
  $ref: '#/components/schemas/ContactAssigned',
5457
5835
  },
5836
+ {
5837
+ $ref: '#/components/schemas/DiscountEnding',
5838
+ },
5458
5839
  {
5459
5840
  $ref: '#/components/schemas/ListingExpired',
5460
5841
  },
@@ -5488,6 +5869,12 @@ export const NotificationViewSchema = {
5488
5869
  {
5489
5870
  $ref: '#/components/schemas/TaskCommented',
5490
5871
  },
5872
+ {
5873
+ $ref: '#/components/schemas/TrialEnded',
5874
+ },
5875
+ {
5876
+ $ref: '#/components/schemas/TrialEnding',
5877
+ },
5491
5878
  ],
5492
5879
  },
5493
5880
  count: {
@@ -5727,6 +6114,28 @@ export const TaskIdSchema = {
5727
6114
  },
5728
6115
  },
5729
6116
  };
6117
+ export const TrialEndedSchema = {
6118
+ properties: {
6119
+ kind: {
6120
+ type: 'string',
6121
+ enum: ['TRIAL_ENDED'],
6122
+ },
6123
+ },
6124
+ required: ['kind'],
6125
+ };
6126
+ export const TrialEndingSchema = {
6127
+ properties: {
6128
+ endsAt: {
6129
+ type: 'string',
6130
+ format: 'date-time',
6131
+ },
6132
+ kind: {
6133
+ type: 'string',
6134
+ enum: ['TRIAL_ENDING'],
6135
+ },
6136
+ },
6137
+ required: ['kind'],
6138
+ };
5730
6139
  export const UnreadCountSchema = {
5731
6140
  type: 'object',
5732
6141
  properties: {
@@ -6135,6 +6544,16 @@ export const ListingGridResponseSchema = {
6135
6544
  type: 'string',
6136
6545
  enum: ['SALE', 'RENT', 'DAILY_RENT', 'PLEDGE'],
6137
6546
  },
6547
+ listingState: {
6548
+ type: 'string',
6549
+ description: 'Whether the agency still works the listing; null for a property without one',
6550
+ enum: ['OPEN', 'CLOSED'],
6551
+ },
6552
+ marketplaceStatus: {
6553
+ type: 'string',
6554
+ description: "The listing on HomeSpot's own marketplace; null for a property without one",
6555
+ enum: ['ACTIVE', 'PAUSED', 'EXPIRED'],
6556
+ },
6138
6557
  price: {
6139
6558
  type: 'number',
6140
6559
  },
@@ -6208,6 +6627,18 @@ export const PlatformViewSchema = {
6208
6627
  type: 'string',
6209
6628
  enum: ['SS', 'MY_HOME'],
6210
6629
  },
6630
+ status: {
6631
+ type: 'string',
6632
+ description: 'PENDING until the portal answers; SYNDICATED while live',
6633
+ enum: [
6634
+ 'PENDING',
6635
+ 'SYNDICATED',
6636
+ 'FAILED',
6637
+ 'EXPIRED',
6638
+ 'WITHDRAWING',
6639
+ 'WITHDRAWN',
6640
+ ],
6641
+ },
6211
6642
  expiresAt: {
6212
6643
  type: 'string',
6213
6644
  format: 'date',
@@ -6221,6 +6652,7 @@ export const PlatformViewSchema = {
6221
6652
  format: 'date',
6222
6653
  },
6223
6654
  },
6655
+ required: ['status'],
6224
6656
  };
6225
6657
  export const SocialPostLinkSchema = {
6226
6658
  type: 'object',
@@ -6380,6 +6812,9 @@ export const InterestGridResponseSchema = {
6380
6812
  bedrooms: {
6381
6813
  $ref: '#/components/schemas/RoomRange',
6382
6814
  },
6815
+ bathrooms: {
6816
+ $ref: '#/components/schemas/RoomRange',
6817
+ },
6383
6818
  totalArea: {
6384
6819
  $ref: '#/components/schemas/AreaRange',
6385
6820
  },
@@ -6389,10 +6824,26 @@ export const InterestGridResponseSchema = {
6389
6824
  address: {
6390
6825
  $ref: '#/components/schemas/AddressView',
6391
6826
  },
6827
+ locationType: {
6828
+ type: 'string',
6829
+ enum: ['REGION', 'DISTRICT', 'SUBDISTRICT', 'STREET'],
6830
+ },
6831
+ locationId: {
6832
+ type: 'integer',
6833
+ format: 'int64',
6834
+ },
6392
6835
  status: {
6393
6836
  type: 'string',
6394
6837
  enum: ['UNPUBLISHED', 'PUBLISHED', 'CLOSED'],
6395
6838
  },
6839
+ shareToken: {
6840
+ type: 'string',
6841
+ format: 'uuid',
6842
+ },
6843
+ recommendationCount: {
6844
+ type: 'integer',
6845
+ format: 'int32',
6846
+ },
6396
6847
  },
6397
6848
  required: [
6398
6849
  'createdBy',
@@ -6400,6 +6851,8 @@ export const InterestGridResponseSchema = {
6400
6851
  'listingType',
6401
6852
  'personalDetails',
6402
6853
  'propertyTypes',
6854
+ 'recommendationCount',
6855
+ 'shareToken',
6403
6856
  'status',
6404
6857
  'title',
6405
6858
  ],
@@ -6832,7 +7285,7 @@ export const SocialCommentThreadResponseSchema = {
6832
7285
  },
6833
7286
  replies: {
6834
7287
  type: 'array',
6835
- description: 'Oldest first, one level deep as Facebook and Instagram show it: a reply to a reply is listed here too',
7288
+ 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)",
6836
7289
  items: {
6837
7290
  $ref: '#/components/schemas/SocialCommentResponse',
6838
7291
  },
@@ -6844,6 +7297,93 @@ export const SocialCommentThreadResponseSchema = {
6844
7297
  },
6845
7298
  required: ['answered', 'comment', 'post', 'replies'],
6846
7299
  };
7300
+ export const ListingMatchSchema = {
7301
+ type: 'object',
7302
+ properties: {
7303
+ externalPropertyId: {
7304
+ type: 'string',
7305
+ format: 'uuid',
7306
+ },
7307
+ externalListingId: {
7308
+ type: 'string',
7309
+ format: 'uuid',
7310
+ },
7311
+ listingType: {
7312
+ type: 'string',
7313
+ enum: ['SALE', 'RENT', 'DAILY_RENT', 'PLEDGE'],
7314
+ },
7315
+ price: {
7316
+ type: 'number',
7317
+ },
7318
+ propertyType: {
7319
+ type: 'string',
7320
+ enum: [
7321
+ 'HOUSE',
7322
+ 'TOWN_HOUSE',
7323
+ 'COUNTRY_HOUSE',
7324
+ 'VILLA',
7325
+ 'COTTAGE',
7326
+ 'APARTMENT',
7327
+ 'DUPLEX',
7328
+ 'TRIPLEX',
7329
+ 'SEMI_BASEMENT',
7330
+ 'ATTIC',
7331
+ 'AGRICULTURAL_LAND',
7332
+ 'RESIDENTIAL_LAND',
7333
+ 'HOTEL_ROOM',
7334
+ 'MOTEL_ROOM',
7335
+ 'CO_LIVING_SPACE',
7336
+ 'OFFICE',
7337
+ 'COMMERCIAL_SPACE',
7338
+ 'CO_WORKING_SPACE',
7339
+ 'WAREHOUSE',
7340
+ 'GARAGE',
7341
+ ],
7342
+ },
7343
+ address: {
7344
+ type: 'string',
7345
+ },
7346
+ lat: {
7347
+ type: 'number',
7348
+ format: 'double',
7349
+ },
7350
+ lng: {
7351
+ type: 'number',
7352
+ format: 'double',
7353
+ },
7354
+ totalArea: {
7355
+ type: 'number',
7356
+ format: 'double',
7357
+ },
7358
+ bedrooms: {
7359
+ type: 'integer',
7360
+ format: 'int32',
7361
+ },
7362
+ bathrooms: {
7363
+ type: 'integer',
7364
+ format: 'int32',
7365
+ },
7366
+ featuredPhotos: {
7367
+ type: 'array',
7368
+ items: {
7369
+ type: 'string',
7370
+ },
7371
+ },
7372
+ },
7373
+ required: [
7374
+ 'bathrooms',
7375
+ 'bedrooms',
7376
+ 'externalListingId',
7377
+ 'externalPropertyId',
7378
+ 'featuredPhotos',
7379
+ 'lat',
7380
+ 'listingType',
7381
+ 'lng',
7382
+ 'price',
7383
+ 'propertyType',
7384
+ 'totalArea',
7385
+ ],
7386
+ };
6847
7387
  export const ContactGridResponseSchema = {
6848
7388
  type: 'object',
6849
7389
  properties: {