@homespot-sdk/core 0.0.362 → 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',
@@ -2106,32 +2144,16 @@ export const AddTodoTemplateRequestSchema = {
2106
2144
  },
2107
2145
  required: ['applyToTasksInStage', 'title'],
2108
2146
  };
2109
- export const ProvisionAgencyRequestSchema = {
2147
+ export const AdminCheckoutRequestSchema = {
2110
2148
  type: 'object',
2111
2149
  properties: {
2112
- ownerUserId: {
2113
- type: 'string',
2114
- description: "The customer's existing user account id",
2115
- },
2116
- name: {
2117
- type: 'string',
2118
- },
2119
- email: {
2120
- type: 'string',
2121
- format: 'email',
2122
- },
2123
- phone: {
2124
- type: 'string',
2125
- },
2126
- subdomain: {
2150
+ agencyId: {
2127
2151
  type: 'string',
2128
- },
2129
- address: {
2130
- $ref: '#/components/schemas/SubscriptionAddressRequest',
2152
+ format: 'uuid',
2131
2153
  },
2132
2154
  plan: {
2133
2155
  type: 'string',
2134
- enum: ['STARTER', 'PRO', 'ENTERPRISE'],
2156
+ enum: ['FREE', 'PLUS', 'PRO', 'ENTERPRISE'],
2135
2157
  },
2136
2158
  billingCycle: {
2137
2159
  type: 'string',
@@ -2140,48 +2162,59 @@ export const ProvisionAgencyRequestSchema = {
2140
2162
  priceMinorUnits: {
2141
2163
  type: 'integer',
2142
2164
  format: 'int64',
2143
- description: 'Exact per-cycle charge in minor units (tetri)',
2165
+ description: 'Exact per-cycle net price in minor units (tetri), VAT excluded',
2144
2166
  },
2145
2167
  seats: {
2146
2168
  type: 'integer',
2147
2169
  format: 'int32',
2148
2170
  },
2149
- monthlyContactLimit: {
2171
+ activeListings: {
2172
+ type: 'integer',
2173
+ format: 'int32',
2174
+ },
2175
+ aiMessages: {
2150
2176
  type: 'integer',
2151
2177
  format: 'int32',
2152
- description: 'Contacts the agency may create per calendar month',
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,
2153
2187
  },
2154
2188
  trialDays: {
2155
2189
  type: 'integer',
2156
2190
  format: 'int32',
2157
2191
  description: 'Free-trial days; 0 charges immediately',
2158
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
+ },
2159
2199
  },
2160
2200
  required: [
2161
- 'address',
2201
+ 'activeListings',
2202
+ 'agencyId',
2203
+ 'aiMessages',
2162
2204
  'billingCycle',
2163
- 'email',
2164
- 'monthlyContactLimit',
2165
- 'name',
2166
- 'ownerUserId',
2167
- 'phone',
2205
+ 'features',
2168
2206
  'plan',
2169
2207
  'priceMinorUnits',
2170
2208
  'seats',
2171
- 'subdomain',
2172
2209
  'trialDays',
2173
2210
  ],
2174
2211
  };
2175
- export const AdminProvisionResponseSchema = {
2212
+ export const AdminCheckoutResponseSchema = {
2176
2213
  type: 'object',
2177
2214
  properties: {
2178
2215
  checkoutUrl: {
2179
2216
  type: 'string',
2180
2217
  },
2181
- agencyId: {
2182
- type: 'string',
2183
- format: 'uuid',
2184
- },
2185
2218
  subscriptionId: {
2186
2219
  type: 'string',
2187
2220
  format: 'uuid',
@@ -2273,12 +2306,17 @@ export const OrganizationSummaryViewResponseSchema = {
2273
2306
  isPhoneVerified: {
2274
2307
  type: 'boolean',
2275
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
+ },
2276
2313
  },
2277
2314
  required: [
2278
2315
  'agencyId',
2279
2316
  'agencyName',
2280
2317
  'isOwner',
2281
2318
  'isPhoneVerified',
2319
+ 'isSeatLocked',
2282
2320
  'memberId',
2283
2321
  'permissions',
2284
2322
  'phone',
@@ -3471,7 +3509,7 @@ export const SubscriptionResponseSchema = {
3471
3509
  },
3472
3510
  plan: {
3473
3511
  type: 'string',
3474
- enum: ['STARTER', 'PRO', 'ENTERPRISE'],
3512
+ enum: ['FREE', 'PLUS', 'PRO', 'ENTERPRISE'],
3475
3513
  },
3476
3514
  billingCycle: {
3477
3515
  type: 'string',
@@ -3480,7 +3518,22 @@ export const SubscriptionResponseSchema = {
3480
3518
  priceMinorUnits: {
3481
3519
  type: 'integer',
3482
3520
  format: 'int64',
3483
- 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',
3484
3537
  },
3485
3538
  currency: {
3486
3539
  type: 'string',
@@ -3489,9 +3542,22 @@ export const SubscriptionResponseSchema = {
3489
3542
  type: 'integer',
3490
3543
  format: 'int32',
3491
3544
  },
3492
- monthlyContactLimit: {
3545
+ activeListings: {
3546
+ type: 'integer',
3547
+ format: 'int32',
3548
+ },
3549
+ aiMessages: {
3493
3550
  type: 'integer',
3494
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,
3495
3561
  },
3496
3562
  trialDays: {
3497
3563
  type: 'integer',
@@ -3551,21 +3617,125 @@ export const SubscriptionResponseSchema = {
3551
3617
  format: 'date-time',
3552
3618
  description: 'When the most recently issued checkout link stops being payable',
3553
3619
  },
3620
+ discountEndsAt: {
3621
+ type: 'string',
3622
+ format: 'date-time',
3623
+ description: 'Until when its discounted price applies; absent for any other price',
3624
+ },
3554
3625
  },
3555
3626
  required: [
3627
+ 'activeListings',
3628
+ 'aiMessages',
3556
3629
  'billingCycle',
3557
3630
  'createdAt',
3558
3631
  'currency',
3632
+ 'features',
3559
3633
  'live',
3560
- 'monthlyContactLimit',
3634
+ 'netMinorUnits',
3561
3635
  'plan',
3562
3636
  'priceMinorUnits',
3563
3637
  'seats',
3564
3638
  'status',
3565
3639
  'subscriptionId',
3566
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',
3567
3713
  ],
3568
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
+ };
3569
3739
  export const PaymentResponseSchema = {
3570
3740
  type: 'object',
3571
3741
  properties: {
@@ -3611,6 +3781,22 @@ export const PaymentResponseSchema = {
3611
3781
  amountMinorUnits: {
3612
3782
  type: 'integer',
3613
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",
3614
3800
  },
3615
3801
  currency: {
3616
3802
  type: 'string',
@@ -3638,6 +3824,7 @@ export const PaymentResponseSchema = {
3638
3824
  'outcome',
3639
3825
  'receivedAt',
3640
3826
  'subscriptionId',
3827
+ 'vatPercent',
3641
3828
  ],
3642
3829
  };
3643
3830
  export const BucketSchema = {
@@ -4152,11 +4339,16 @@ export const InterestResponseSchema = {
4152
4339
  boundedBox: {
4153
4340
  $ref: '#/components/schemas/BoundingBox',
4154
4341
  },
4342
+ agencyBranding: {
4343
+ type: 'boolean',
4344
+ description: "Whether client pages show the agency's own logo; HomeSpot's when false",
4345
+ },
4155
4346
  recommendations: {
4156
4347
  $ref: '#/components/schemas/PagedModelRecommendationsCardView',
4157
4348
  },
4158
4349
  },
4159
4350
  required: [
4351
+ 'agencyBranding',
4160
4352
  'createdAt',
4161
4353
  'criteria',
4162
4354
  'id',
@@ -4364,6 +4556,121 @@ export const RecommendationDecisionResponseSchema = {
4364
4556
  },
4365
4557
  required: ['decision', 'externalListingId', 'externalPropertyId'],
4366
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
+ };
4367
4674
  export const GroupedPermissionsResponseSchema = {
4368
4675
  type: 'object',
4369
4676
  properties: {
@@ -5159,6 +5466,40 @@ export const AgentCommentedSchema = {
5159
5466
  },
5160
5467
  required: ['kind'],
5161
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
+ };
5162
5503
  export const ChannelReauthRequiredSchema = {
5163
5504
  properties: {
5164
5505
  connectionId: {
@@ -5266,6 +5607,22 @@ export const CursorPageNotificationViewSchema = {
5266
5607
  },
5267
5608
  },
5268
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
+ };
5269
5626
  export const ListingExpiredSchema = {
5270
5627
  properties: {
5271
5628
  contactId: {
@@ -5395,6 +5752,11 @@ export const NotificationContentSchema = {
5395
5752
  SUBSCRIPTION_ENDING: '#/components/schemas/SubscriptionEnding',
5396
5753
  SUBSCRIPTION_EXPIRED: '#/components/schemas/SubscriptionExpired',
5397
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',
5398
5760
  CHANNEL_REAUTH_REQUIRED: '#/components/schemas/ChannelReauthRequired',
5399
5761
  SOCIAL_POST_FAILED: '#/components/schemas/SocialPostFailed',
5400
5762
  SOCIAL_POST_COMMENTED: '#/components/schemas/SocialPostCommented',
@@ -5441,6 +5803,11 @@ export const NotificationViewSchema = {
5441
5803
  'SUBSCRIPTION_ENDING',
5442
5804
  'SUBSCRIPTION_EXPIRED',
5443
5805
  'SUBSCRIPTION_PAYMENT_REVERSED',
5806
+ 'TRIAL_ENDING',
5807
+ 'TRIAL_ENDED',
5808
+ 'DISCOUNT_ENDING',
5809
+ 'AI_MESSAGES_RUNNING_LOW',
5810
+ 'AI_MESSAGES_USED_UP',
5444
5811
  'CHANNEL_REAUTH_REQUIRED',
5445
5812
  'SOCIAL_POST_FAILED',
5446
5813
  'SOCIAL_POST_COMMENTED',
@@ -5454,12 +5821,21 @@ export const NotificationViewSchema = {
5454
5821
  {
5455
5822
  $ref: '#/components/schemas/AgentCommented',
5456
5823
  },
5824
+ {
5825
+ $ref: '#/components/schemas/AiMessagesRunningLow',
5826
+ },
5827
+ {
5828
+ $ref: '#/components/schemas/AiMessagesUsedUp',
5829
+ },
5457
5830
  {
5458
5831
  $ref: '#/components/schemas/ChannelReauthRequired',
5459
5832
  },
5460
5833
  {
5461
5834
  $ref: '#/components/schemas/ContactAssigned',
5462
5835
  },
5836
+ {
5837
+ $ref: '#/components/schemas/DiscountEnding',
5838
+ },
5463
5839
  {
5464
5840
  $ref: '#/components/schemas/ListingExpired',
5465
5841
  },
@@ -5493,6 +5869,12 @@ export const NotificationViewSchema = {
5493
5869
  {
5494
5870
  $ref: '#/components/schemas/TaskCommented',
5495
5871
  },
5872
+ {
5873
+ $ref: '#/components/schemas/TrialEnded',
5874
+ },
5875
+ {
5876
+ $ref: '#/components/schemas/TrialEnding',
5877
+ },
5496
5878
  ],
5497
5879
  },
5498
5880
  count: {
@@ -5732,6 +6114,28 @@ export const TaskIdSchema = {
5732
6114
  },
5733
6115
  },
5734
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
+ };
5735
6139
  export const UnreadCountSchema = {
5736
6140
  type: 'object',
5737
6141
  properties: {
@@ -6140,6 +6544,16 @@ export const ListingGridResponseSchema = {
6140
6544
  type: 'string',
6141
6545
  enum: ['SALE', 'RENT', 'DAILY_RENT', 'PLEDGE'],
6142
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
+ },
6143
6557
  price: {
6144
6558
  type: 'number',
6145
6559
  },
@@ -6213,6 +6627,18 @@ export const PlatformViewSchema = {
6213
6627
  type: 'string',
6214
6628
  enum: ['SS', 'MY_HOME'],
6215
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
+ },
6216
6642
  expiresAt: {
6217
6643
  type: 'string',
6218
6644
  format: 'date',
@@ -6226,6 +6652,7 @@ export const PlatformViewSchema = {
6226
6652
  format: 'date',
6227
6653
  },
6228
6654
  },
6655
+ required: ['status'],
6229
6656
  };
6230
6657
  export const SocialPostLinkSchema = {
6231
6658
  type: 'object',
@@ -6385,6 +6812,9 @@ export const InterestGridResponseSchema = {
6385
6812
  bedrooms: {
6386
6813
  $ref: '#/components/schemas/RoomRange',
6387
6814
  },
6815
+ bathrooms: {
6816
+ $ref: '#/components/schemas/RoomRange',
6817
+ },
6388
6818
  totalArea: {
6389
6819
  $ref: '#/components/schemas/AreaRange',
6390
6820
  },
@@ -6394,10 +6824,26 @@ export const InterestGridResponseSchema = {
6394
6824
  address: {
6395
6825
  $ref: '#/components/schemas/AddressView',
6396
6826
  },
6827
+ locationType: {
6828
+ type: 'string',
6829
+ enum: ['REGION', 'DISTRICT', 'SUBDISTRICT', 'STREET'],
6830
+ },
6831
+ locationId: {
6832
+ type: 'integer',
6833
+ format: 'int64',
6834
+ },
6397
6835
  status: {
6398
6836
  type: 'string',
6399
6837
  enum: ['UNPUBLISHED', 'PUBLISHED', 'CLOSED'],
6400
6838
  },
6839
+ shareToken: {
6840
+ type: 'string',
6841
+ format: 'uuid',
6842
+ },
6843
+ recommendationCount: {
6844
+ type: 'integer',
6845
+ format: 'int32',
6846
+ },
6401
6847
  },
6402
6848
  required: [
6403
6849
  'createdBy',
@@ -6405,6 +6851,8 @@ export const InterestGridResponseSchema = {
6405
6851
  'listingType',
6406
6852
  'personalDetails',
6407
6853
  'propertyTypes',
6854
+ 'recommendationCount',
6855
+ 'shareToken',
6408
6856
  'status',
6409
6857
  'title',
6410
6858
  ],
@@ -6849,6 +7297,93 @@ export const SocialCommentThreadResponseSchema = {
6849
7297
  },
6850
7298
  required: ['answered', 'comment', 'post', 'replies'],
6851
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
+ };
6852
7387
  export const ContactGridResponseSchema = {
6853
7388
  type: 'object',
6854
7389
  properties: {