@savvycal/appointments-core 0.1.0 → 0.3.0

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.
package/dist/index.d.ts CHANGED
@@ -142,6 +142,26 @@ interface paths {
142
142
  patch?: never;
143
143
  trace?: never;
144
144
  };
145
+ "/v1/users/{user_id}": {
146
+ parameters: {
147
+ query?: never;
148
+ header?: never;
149
+ path?: never;
150
+ cookie?: never;
151
+ };
152
+ get?: never;
153
+ put?: never;
154
+ post?: never;
155
+ delete?: never;
156
+ options?: never;
157
+ head?: never;
158
+ /**
159
+ * Update account user
160
+ * @description Update a user's settings in the specified account.
161
+ */
162
+ patch: operations["updateAccountUser"];
163
+ trace?: never;
164
+ };
145
165
  "/v1/clients/{client_id}": {
146
166
  parameters: {
147
167
  query?: never;
@@ -1257,7 +1277,34 @@ interface components {
1257
1277
  */
1258
1278
  object: "block";
1259
1279
  /** @description The recurrence rule for the block (or null if there is no recurrence). */
1260
- recurrence_rule: components["schemas"]["RecurrenceRule"] | null;
1280
+ recurrence_rule: {
1281
+ /**
1282
+ * @description The days of the week on which the recurrence occurs.
1283
+ * @example [
1284
+ * "mo",
1285
+ * "we",
1286
+ * "fr"
1287
+ * ]
1288
+ */
1289
+ byday?: string[];
1290
+ /** @description Number of occurrences at which to end the recurrence. */
1291
+ count?: number | null;
1292
+ /**
1293
+ * @description The frequency of the recurrence.
1294
+ * @enum {string}
1295
+ */
1296
+ freq: "daily" | "weekly";
1297
+ /**
1298
+ * @description How often the recurrence rule repeats.
1299
+ * @example 2
1300
+ */
1301
+ interval?: number;
1302
+ /**
1303
+ * @description Date at which to end the recurrence (in ISO-8601 format).
1304
+ * @example 2024-01-02
1305
+ */
1306
+ until?: Record<string, never> | null;
1307
+ } | null;
1261
1308
  /** @description The ID of the service for the block. Required when `attachment_type` is `service_provider`. */
1262
1309
  service_id: string | null;
1263
1310
  /**
@@ -1391,6 +1438,9 @@ interface components {
1391
1438
  * "first_name": "John",
1392
1439
  * "id": "prov_d025a96ac0c6",
1393
1440
  * "last_name": "Smith",
1441
+ * "metadata": {
1442
+ * "external_id": "123"
1443
+ * },
1394
1444
  * "object": "provider",
1395
1445
  * "updated_at": "2017-09-13T10:11:12Z"
1396
1446
  * },
@@ -1623,6 +1673,9 @@ interface components {
1623
1673
  * "first_name": "John",
1624
1674
  * "id": "prov_d025a96ac0c6",
1625
1675
  * "last_name": "Smith",
1676
+ * "metadata": {
1677
+ * "external_id": "123"
1678
+ * },
1626
1679
  * "object": "provider",
1627
1680
  * "updated_at": "2017-09-13T10:11:12Z"
1628
1681
  * },
@@ -2080,6 +2133,9 @@ interface components {
2080
2133
  * "first_name": "John",
2081
2134
  * "id": "prov_d025a96ac0c6",
2082
2135
  * "last_name": "Smith",
2136
+ * "metadata": {
2137
+ * "external_id": "123"
2138
+ * },
2083
2139
  * "object": "provider",
2084
2140
  * "updated_at": "2017-09-13T10:11:12Z"
2085
2141
  * }
@@ -2098,6 +2154,8 @@ interface components {
2098
2154
  id: string;
2099
2155
  /** @description The provider's last name. */
2100
2156
  last_name: string;
2157
+ /** @description Set of key-value pairs attached to this provider. Maximum size is 16 KB. */
2158
+ metadata?: Record<string, never>;
2101
2159
  /**
2102
2160
  * @description String representing the object's type.
2103
2161
  * @enum {string}
@@ -2736,6 +2794,9 @@ interface components {
2736
2794
  * "first_name": "John",
2737
2795
  * "id": "prov_d025a96ac0c6",
2738
2796
  * "last_name": "Smith",
2797
+ * "metadata": {
2798
+ * "external_id": "123"
2799
+ * },
2739
2800
  * "object": "provider",
2740
2801
  * "updated_at": "2017-09-13T10:11:12Z"
2741
2802
  * },
@@ -2798,6 +2859,9 @@ interface components {
2798
2859
  * "first_name": "John",
2799
2860
  * "id": "prov_d025a96ac0c6",
2800
2861
  * "last_name": "Smith",
2862
+ * "metadata": {
2863
+ * "external_id": "123"
2864
+ * },
2801
2865
  * "object": "provider",
2802
2866
  * "updated_at": "2017-09-13T10:11:12Z"
2803
2867
  * },
@@ -2850,6 +2914,7 @@ interface components {
2850
2914
  * @description This is an object representing a user in an account.
2851
2915
  * @example {
2852
2916
  * "object": "account_user",
2917
+ * "passive": false,
2853
2918
  * "roles": [
2854
2919
  * {
2855
2920
  * "id": "role_123456789012",
@@ -2875,6 +2940,8 @@ interface components {
2875
2940
  * @enum {string}
2876
2941
  */
2877
2942
  object: "account_user";
2943
+ /** @description Whether this user is passive. Passive users do not receive direct email notifications (e.g., OAuth reconnection notices). */
2944
+ passive: boolean;
2878
2945
  /** @description The roles assigned to the user in this account. */
2879
2946
  roles: components["schemas"]["Role"][];
2880
2947
  user: components["schemas"]["User"];
@@ -2927,7 +2994,34 @@ interface components {
2927
2994
  /** @description The exception dates for the block. */
2928
2995
  exception_dates?: string[];
2929
2996
  /** @description The recurrence rule for the block (or null if there is no recurrence). */
2930
- recurrence_rule?: components["schemas"]["RecurrenceRule"] | null;
2997
+ recurrence_rule?: {
2998
+ /**
2999
+ * @description The days of the week on which the recurrence occurs.
3000
+ * @example [
3001
+ * "mo",
3002
+ * "we",
3003
+ * "fr"
3004
+ * ]
3005
+ */
3006
+ byday?: string[];
3007
+ /** @description Number of occurrences at which to end the recurrence. */
3008
+ count?: number | null;
3009
+ /**
3010
+ * @description The frequency of the recurrence.
3011
+ * @enum {string}
3012
+ */
3013
+ freq: "daily" | "weekly";
3014
+ /**
3015
+ * @description How often the recurrence rule repeats.
3016
+ * @example 2
3017
+ */
3018
+ interval?: number;
3019
+ /**
3020
+ * @description Date at which to end the recurrence (in ISO-8601 format).
3021
+ * @example 2024-01-02
3022
+ */
3023
+ until?: Record<string, never> | null;
3024
+ } | null;
2931
3025
  /** @description The ID of the service for the block. Required when `attachment_type` is `service_provider`. */
2932
3026
  service_id?: string | null;
2933
3027
  /**
@@ -3027,6 +3121,9 @@ interface components {
3027
3121
  * "first_name": "John",
3028
3122
  * "id": "prov_d025a96ac0c6",
3029
3123
  * "last_name": "Smith",
3124
+ * "metadata": {
3125
+ * "external_id": "123"
3126
+ * },
3030
3127
  * "object": "provider",
3031
3128
  * "updated_at": "2017-09-13T10:11:12Z"
3032
3129
  * },
@@ -3048,6 +3145,9 @@ interface components {
3048
3145
  * "email": "john.smith@tendermedical.com",
3049
3146
  * "first_name": "John",
3050
3147
  * "last_name": "Smith",
3148
+ * "metadata": {
3149
+ * "external_id": "123"
3150
+ * },
3051
3151
  * "notify": false,
3052
3152
  * "role_ids": [
3053
3153
  * "role_123456789012"
@@ -3068,6 +3168,8 @@ interface components {
3068
3168
  first_name: string;
3069
3169
  /** @description The provider's last name. */
3070
3170
  last_name: string;
3171
+ /** @description Set of key-value pairs to attach to this provider. Maximum size is 16 KB. */
3172
+ metadata?: Record<string, never>;
3071
3173
  /**
3072
3174
  * @description Whether to send an email notification to the user (if `add_user` is true). If they don't already have an account, they will receive an email with instructions to set their password when this property is true.
3073
3175
  * @default false
@@ -3089,6 +3191,9 @@ interface components {
3089
3191
  * "first_name": "John",
3090
3192
  * "id": "prov_d025a96ac0c6",
3091
3193
  * "last_name": "Smith",
3194
+ * "metadata": {
3195
+ * "external_id": "123"
3196
+ * },
3092
3197
  * "object": "provider",
3093
3198
  * "updated_at": "2017-09-13T10:11:12Z"
3094
3199
  * },
@@ -3424,10 +3529,13 @@ interface components {
3424
3529
  * CreateAccountUserRequest
3425
3530
  * @description Request schema for creating a user in an account
3426
3531
  * @example {
3532
+ * "add_provider": false,
3533
+ * "display_name": "Dr. John Doe",
3427
3534
  * "email": "john.doe@example.com",
3428
3535
  * "first_name": "John",
3429
3536
  * "last_name": "Doe",
3430
3537
  * "notify": false,
3538
+ * "passive": false,
3431
3539
  * "role_ids": [
3432
3540
  * "role_123456789012"
3433
3541
  * ],
@@ -3435,6 +3543,13 @@ interface components {
3435
3543
  * }
3436
3544
  */
3437
3545
  CreateAccountUserRequest: {
3546
+ /**
3547
+ * @description Whether to create a staff member (provider) for this user. If a provider with the same email already exists, it will be affiliated with this user instead of creating a new one.
3548
+ * @default false
3549
+ */
3550
+ add_provider: boolean;
3551
+ /** @description The display name for the staff member. Only used when `add_provider` is true. Defaults to 'FirstName LastName' if not provided. */
3552
+ display_name?: string;
3438
3553
  /**
3439
3554
  * Format: email
3440
3555
  * @description The user's email address.
@@ -3449,11 +3564,102 @@ interface components {
3449
3564
  * @default false
3450
3565
  */
3451
3566
  notify: boolean;
3567
+ /**
3568
+ * @description Whether this user is passive. Passive users do not receive direct email notifications (e.g., OAuth reconnection notices). Use this for platform/headless scenarios where the platform handles user communication.
3569
+ * @default false
3570
+ */
3571
+ passive: boolean;
3452
3572
  /** @description List of role IDs to assign to the user. */
3453
3573
  role_ids?: string[];
3454
3574
  /** @description The user's time zone. */
3455
3575
  time_zone?: string;
3456
3576
  };
3577
+ /**
3578
+ * ConnectedAccountDeletedEventData
3579
+ * @description This is an object representing data for the connected account deleted event.
3580
+ * @example {
3581
+ * "object": {
3582
+ * "connection_scope": "user",
3583
+ * "created_at": "2025-03-12T12:34:55Z",
3584
+ * "display_name": "John Doe",
3585
+ * "email": "user@example.com",
3586
+ * "external_subject": "123456789",
3587
+ * "id": "cact_d025a96ac0c6",
3588
+ * "object": "connected_account",
3589
+ * "provider": "google",
3590
+ * "status": "active",
3591
+ * "updated_at": "2025-03-13T10:11:12Z",
3592
+ * "user_id": "user_d025a96ac0c6"
3593
+ * },
3594
+ * "type": "connected_account.deleted"
3595
+ * }
3596
+ */
3597
+ ConnectedAccountDeletedEventData: {
3598
+ /**
3599
+ * ConnectedAccount
3600
+ * @description This is an object representing a connected calendar account (e.g., a Google Calendar integration).
3601
+ * @example {
3602
+ * "connection_scope": "user",
3603
+ * "created_at": "2025-03-12T12:34:55Z",
3604
+ * "display_name": "John Doe",
3605
+ * "email": "user@example.com",
3606
+ * "external_subject": "123456789",
3607
+ * "id": "cact_d025a96ac0c6",
3608
+ * "object": "connected_account",
3609
+ * "provider": "google",
3610
+ * "status": "active",
3611
+ * "updated_at": "2025-03-13T10:11:12Z",
3612
+ * "user_id": "user_d025a96ac0c6"
3613
+ * }
3614
+ */
3615
+ object: {
3616
+ /**
3617
+ * @description The scope of this connection. 'user' means owned by a specific user, 'account' means shared across the account.
3618
+ * @enum {string}
3619
+ */
3620
+ connection_scope: "user" | "account";
3621
+ /**
3622
+ * Format: date-time
3623
+ * @description Time at which the object was created.
3624
+ */
3625
+ created_at: string;
3626
+ /** @description The display name from the provider. */
3627
+ display_name: string | null;
3628
+ /** @description The email address associated with this connected account. */
3629
+ email: string;
3630
+ /** @description The unique identifier for this account at the provider. */
3631
+ external_subject: string;
3632
+ /** @description Unique identifier for the object. */
3633
+ id: string;
3634
+ /**
3635
+ * @description String representing the object's type.
3636
+ * @enum {string}
3637
+ */
3638
+ object: "connected_account";
3639
+ /**
3640
+ * @description The calendar provider for this connected account.
3641
+ * @enum {string}
3642
+ */
3643
+ provider: "google";
3644
+ /**
3645
+ * @description The current status of the connection. 'active' means the connection is working, 'reconnect_required' means the OAuth token has failed and needs reauthorization.
3646
+ * @enum {string}
3647
+ */
3648
+ status: "active" | "reconnect_required";
3649
+ /**
3650
+ * Format: date-time
3651
+ * @description Time at which the object was last updated.
3652
+ */
3653
+ updated_at: string;
3654
+ /** @description The ID of the user who owns this connected account. */
3655
+ user_id: string | null;
3656
+ };
3657
+ /**
3658
+ * @description The event type. (enum property replaced by openapi-typescript)
3659
+ * @enum {string}
3660
+ */
3661
+ type: "connected_account.deleted";
3662
+ };
3457
3663
  /**
3458
3664
  * RolesResponse
3459
3665
  * @description Response schema for multiple roles
@@ -3587,7 +3793,10 @@ interface components {
3587
3793
  * @example {
3588
3794
  * "display_name": "John Smith",
3589
3795
  * "first_name": "John",
3590
- * "last_name": "Smith"
3796
+ * "last_name": "Smith",
3797
+ * "metadata": {
3798
+ * "external_id": "123"
3799
+ * }
3591
3800
  * }
3592
3801
  */
3593
3802
  UpdateProviderRequest: {
@@ -3597,6 +3806,8 @@ interface components {
3597
3806
  first_name?: string;
3598
3807
  /** @description Provider's last name */
3599
3808
  last_name?: string;
3809
+ /** @description Set of key-value pairs to attach to this provider. Maximum size is 16 KB. */
3810
+ metadata?: Record<string, never>;
3600
3811
  };
3601
3812
  /**
3602
3813
  * PublicCancellationReason
@@ -3622,105 +3833,260 @@ interface components {
3622
3833
  sort_order: number;
3623
3834
  };
3624
3835
  /**
3625
- * ReschedulePublicAppointmentRequest
3626
- * @description Request schema for rescheduling a public appointment
3627
- * @example {
3628
- * "end_at": "2025-03-01T11:00:00",
3629
- * "provider_id": "prv_1234567890",
3630
- * "start_at": "2025-03-01T10:00:00",
3631
- * "time_zone": "America/New_York"
3632
- * }
3633
- */
3634
- ReschedulePublicAppointmentRequest: {
3635
- /**
3636
- * @description The new end time of the appointment in local time (in naive ISO-8601 format, without time zone information). The time zone for the appointment is specified in the `time_zone` field.
3637
- * @example 2025-03-01T11:00:00
3638
- */
3639
- end_at: string;
3640
- /** @description The ID of the provider to assign to the appointment. If not provided, the provider assigned to the original appointment will be used. */
3641
- provider_id?: string | null;
3642
- /**
3643
- * @description The new start time of the appointment in local time (in naive ISO-8601 format, without time zone information). The time zone for the appointment is specified in the `time_zone` field.
3644
- * @example 2025-03-01T10:00:00
3645
- */
3646
- start_at: string;
3647
- /**
3648
- * @description The local time zone for the appointment (IANA format).
3649
- * @example America/New_York
3650
- */
3651
- time_zone: string;
3652
- };
3653
- /**
3654
- * CancellationReason
3655
- * @description This is an object representing a cancellation reason.
3656
- * @example {
3657
- * "id": "cr_a1b2c3d4e5f6",
3658
- * "name": "Distance too far",
3659
- * "object": "cancellation_reason",
3660
- * "sort_order": 1
3661
- * }
3662
- */
3663
- CancellationReason: {
3664
- /** @description Unique identifier for the object. */
3665
- id: string;
3666
- /** @description The name of the cancellation reason. */
3667
- name: string;
3668
- /**
3669
- * @description String representing the object's type.
3670
- * @enum {string}
3671
- */
3672
- object: "cancellation_reason";
3673
- /** @description The sort order of the cancellation reason. */
3674
- sort_order: number;
3675
- } | null;
3676
- /**
3677
- * SlotRule
3678
- * @description A slot rule defines the recurring time slots available for a service.
3679
- * Slot rules are described by a list of start times and a [recurrence rule](/api/schemas/recurrencerule).
3836
+ * BlockUpdatedEventData
3837
+ * @description This is an object representing data for the block updated event.
3680
3838
  * @example {
3681
- * "recurrence_rule": {
3682
- * "byday": [
3683
- * "mo",
3684
- * "we",
3685
- * "fr"
3839
+ * "object": {
3840
+ * "all_day": false,
3841
+ * "attachment_type": "provider",
3842
+ * "attachments": [
3843
+ * "prov_d025a96ac0c6"
3686
3844
  * ],
3687
- * "freq": "weekly"
3845
+ * "created_at": "2017-09-12T12:34:55Z",
3846
+ * "end_date": "2025-10-27",
3847
+ * "end_time": "17:00",
3848
+ * "exception_dates": [
3849
+ * "2025-10-27T09:00:00"
3850
+ * ],
3851
+ * "id": "blk_d025a96ac0c6",
3852
+ * "object": "block",
3853
+ * "recurrence_rule": {
3854
+ * "byday": [
3855
+ * "mo",
3856
+ * "we",
3857
+ * "fr"
3858
+ * ],
3859
+ * "freq": "weekly"
3860
+ * },
3861
+ * "service_id": null,
3862
+ * "start_date": "2025-10-27",
3863
+ * "start_time": "09:00",
3864
+ * "time_zone": "America/New_York",
3865
+ * "title": "Team Meeting",
3866
+ * "updated_at": "2017-09-13T10:11:12Z"
3688
3867
  * },
3689
- * "start_times": [
3690
- * "09:00",
3691
- * "10:00"
3692
- * ]
3868
+ * "type": "block.updated"
3693
3869
  * }
3694
3870
  */
3695
- SlotRule: {
3871
+ BlockUpdatedEventData: {
3696
3872
  /**
3697
- * RecurrenceRule
3698
- * @description A recurrence rule describes a repeating pattern of times. Recurrences rules in SavvyCal are modeled
3699
- * after the conventions of [iCalendar](https://en.wikipedia.org/wiki/ICalendar) recurrence rules (RRULE),
3700
- * but are a subset of the full specification.
3873
+ * Block
3874
+ * @description This is an object representing a range of blocked time for a provider, service, service provider, or location.
3701
3875
  * @example {
3702
- * "byday": [
3703
- * "mo",
3704
- * "we",
3705
- * "fr"
3876
+ * "all_day": false,
3877
+ * "attachment_type": "provider",
3878
+ * "attachments": [
3879
+ * "prov_d025a96ac0c6"
3706
3880
  * ],
3707
- * "freq": "weekly"
3881
+ * "created_at": "2017-09-12T12:34:55Z",
3882
+ * "end_date": "2025-10-27",
3883
+ * "end_time": "17:00",
3884
+ * "exception_dates": [
3885
+ * "2025-10-27T09:00:00"
3886
+ * ],
3887
+ * "id": "blk_d025a96ac0c6",
3888
+ * "object": "block",
3889
+ * "recurrence_rule": {
3890
+ * "byday": [
3891
+ * "mo",
3892
+ * "we",
3893
+ * "fr"
3894
+ * ],
3895
+ * "freq": "weekly"
3896
+ * },
3897
+ * "service_id": null,
3898
+ * "start_date": "2025-10-27",
3899
+ * "start_time": "09:00",
3900
+ * "time_zone": "America/New_York",
3901
+ * "title": "Team Meeting",
3902
+ * "updated_at": "2017-09-13T10:11:12Z"
3708
3903
  * }
3709
3904
  */
3710
- recurrence_rule: {
3711
- /**
3712
- * @description The days of the week on which the recurrence occurs.
3713
- * @example [
3714
- * "mo",
3715
- * "we",
3716
- * "fr"
3717
- * ]
3718
- */
3719
- byday?: string[];
3720
- /** @description Number of occurrences at which to end the recurrence. */
3721
- count?: number | null;
3905
+ object: {
3906
+ /** @description Whether the block is all day. */
3907
+ all_day: boolean;
3722
3908
  /**
3723
- * @description The frequency of the recurrence.
3909
+ * @description The type of attachment for the block.
3910
+ * @enum {string}
3911
+ */
3912
+ attachment_type: "location" | "service" | "provider" | "service_provider";
3913
+ /** @description The resources to which this block is attached. These can be service IDs (to block availabilty for all providers on a service), provider IDs (to block availability for a specific provider), or location IDs (to block availability for a specific location). */
3914
+ attachments: string[];
3915
+ /**
3916
+ * Format: date-time
3917
+ * @description Time at which the object was created.
3918
+ */
3919
+ created_at: string;
3920
+ /**
3921
+ * Format: date
3922
+ * @description The end date of the block.
3923
+ */
3924
+ end_date: string;
3925
+ /** @description The end time of the block. */
3926
+ end_time: string | null;
3927
+ /** @description The exception dates for the block. */
3928
+ exception_dates: string[];
3929
+ /** @description Unique identifier for the object. */
3930
+ id: string;
3931
+ /**
3932
+ * @description String representing the object's type.
3933
+ * @enum {string}
3934
+ */
3935
+ object: "block";
3936
+ /** @description The recurrence rule for the block (or null if there is no recurrence). */
3937
+ recurrence_rule: {
3938
+ /**
3939
+ * @description The days of the week on which the recurrence occurs.
3940
+ * @example [
3941
+ * "mo",
3942
+ * "we",
3943
+ * "fr"
3944
+ * ]
3945
+ */
3946
+ byday?: string[];
3947
+ /** @description Number of occurrences at which to end the recurrence. */
3948
+ count?: number | null;
3949
+ /**
3950
+ * @description The frequency of the recurrence.
3951
+ * @enum {string}
3952
+ */
3953
+ freq: "daily" | "weekly";
3954
+ /**
3955
+ * @description How often the recurrence rule repeats.
3956
+ * @example 2
3957
+ */
3958
+ interval?: number;
3959
+ /**
3960
+ * @description Date at which to end the recurrence (in ISO-8601 format).
3961
+ * @example 2024-01-02
3962
+ */
3963
+ until?: Record<string, never> | null;
3964
+ } | null;
3965
+ /** @description The ID of the service for the block. Required when `attachment_type` is `service_provider`. */
3966
+ service_id: string | null;
3967
+ /**
3968
+ * Format: date
3969
+ * @description The start date of the block.
3970
+ */
3971
+ start_date: string;
3972
+ /** @description The start time of the block. */
3973
+ start_time: string | null;
3974
+ /** @description The time zone of the block. */
3975
+ time_zone: string | null;
3976
+ /** @description The title of the block. */
3977
+ title: string | null;
3978
+ /**
3979
+ * Format: date-time
3980
+ * @description Time at which the object was last updated.
3981
+ */
3982
+ updated_at: string;
3983
+ };
3984
+ /**
3985
+ * @description The event type. (enum property replaced by openapi-typescript)
3986
+ * @enum {string}
3987
+ */
3988
+ type: "block.updated";
3989
+ };
3990
+ /**
3991
+ * ReschedulePublicAppointmentRequest
3992
+ * @description Request schema for rescheduling a public appointment
3993
+ * @example {
3994
+ * "end_at": "2025-03-01T11:00:00",
3995
+ * "provider_id": "prv_1234567890",
3996
+ * "start_at": "2025-03-01T10:00:00",
3997
+ * "time_zone": "America/New_York"
3998
+ * }
3999
+ */
4000
+ ReschedulePublicAppointmentRequest: {
4001
+ /**
4002
+ * @description The new end time of the appointment in local time (in naive ISO-8601 format, without time zone information). The time zone for the appointment is specified in the `time_zone` field.
4003
+ * @example 2025-03-01T11:00:00
4004
+ */
4005
+ end_at: string;
4006
+ /** @description The ID of the provider to assign to the appointment. If not provided, the provider assigned to the original appointment will be used. */
4007
+ provider_id?: string | null;
4008
+ /**
4009
+ * @description The new start time of the appointment in local time (in naive ISO-8601 format, without time zone information). The time zone for the appointment is specified in the `time_zone` field.
4010
+ * @example 2025-03-01T10:00:00
4011
+ */
4012
+ start_at: string;
4013
+ /**
4014
+ * @description The local time zone for the appointment (IANA format).
4015
+ * @example America/New_York
4016
+ */
4017
+ time_zone: string;
4018
+ };
4019
+ /**
4020
+ * CancellationReason
4021
+ * @description This is an object representing a cancellation reason.
4022
+ * @example {
4023
+ * "id": "cr_a1b2c3d4e5f6",
4024
+ * "name": "Distance too far",
4025
+ * "object": "cancellation_reason",
4026
+ * "sort_order": 1
4027
+ * }
4028
+ */
4029
+ CancellationReason: {
4030
+ /** @description Unique identifier for the object. */
4031
+ id: string;
4032
+ /** @description The name of the cancellation reason. */
4033
+ name: string;
4034
+ /**
4035
+ * @description String representing the object's type.
4036
+ * @enum {string}
4037
+ */
4038
+ object: "cancellation_reason";
4039
+ /** @description The sort order of the cancellation reason. */
4040
+ sort_order: number;
4041
+ } | null;
4042
+ /**
4043
+ * SlotRule
4044
+ * @description A slot rule defines the recurring time slots available for a service.
4045
+ * Slot rules are described by a list of start times and a [recurrence rule](/api/schemas/recurrencerule).
4046
+ * @example {
4047
+ * "recurrence_rule": {
4048
+ * "byday": [
4049
+ * "mo",
4050
+ * "we",
4051
+ * "fr"
4052
+ * ],
4053
+ * "freq": "weekly"
4054
+ * },
4055
+ * "start_times": [
4056
+ * "09:00",
4057
+ * "10:00"
4058
+ * ]
4059
+ * }
4060
+ */
4061
+ SlotRule: {
4062
+ /**
4063
+ * RecurrenceRule
4064
+ * @description A recurrence rule describes a repeating pattern of times. Recurrences rules in SavvyCal are modeled
4065
+ * after the conventions of [iCalendar](https://en.wikipedia.org/wiki/ICalendar) recurrence rules (RRULE),
4066
+ * but are a subset of the full specification.
4067
+ * @example {
4068
+ * "byday": [
4069
+ * "mo",
4070
+ * "we",
4071
+ * "fr"
4072
+ * ],
4073
+ * "freq": "weekly"
4074
+ * }
4075
+ */
4076
+ recurrence_rule: {
4077
+ /**
4078
+ * @description The days of the week on which the recurrence occurs.
4079
+ * @example [
4080
+ * "mo",
4081
+ * "we",
4082
+ * "fr"
4083
+ * ]
4084
+ */
4085
+ byday?: string[];
4086
+ /** @description Number of occurrences at which to end the recurrence. */
4087
+ count?: number | null;
4088
+ /**
4089
+ * @description The frequency of the recurrence.
3724
4090
  * @enum {string}
3725
4091
  */
3726
4092
  freq: "daily" | "weekly";
@@ -3738,6 +4104,92 @@ interface components {
3738
4104
  /** @description Array of start times for slots. */
3739
4105
  start_times: string[];
3740
4106
  };
4107
+ /**
4108
+ * ConnectedAccountReconnectedEventData
4109
+ * @description This is an object representing data for the connected account reconnected event. This event is triggered when a previously failed connection is successfully reauthenticated.
4110
+ * @example {
4111
+ * "object": {
4112
+ * "connection_scope": "user",
4113
+ * "created_at": "2025-03-12T12:34:55Z",
4114
+ * "display_name": "John Doe",
4115
+ * "email": "user@example.com",
4116
+ * "external_subject": "123456789",
4117
+ * "id": "cact_d025a96ac0c6",
4118
+ * "object": "connected_account",
4119
+ * "provider": "google",
4120
+ * "status": "active",
4121
+ * "updated_at": "2025-03-13T10:11:12Z",
4122
+ * "user_id": "user_d025a96ac0c6"
4123
+ * },
4124
+ * "type": "connected_account.reconnected"
4125
+ * }
4126
+ */
4127
+ ConnectedAccountReconnectedEventData: {
4128
+ /**
4129
+ * ConnectedAccount
4130
+ * @description This is an object representing a connected calendar account (e.g., a Google Calendar integration).
4131
+ * @example {
4132
+ * "connection_scope": "user",
4133
+ * "created_at": "2025-03-12T12:34:55Z",
4134
+ * "display_name": "John Doe",
4135
+ * "email": "user@example.com",
4136
+ * "external_subject": "123456789",
4137
+ * "id": "cact_d025a96ac0c6",
4138
+ * "object": "connected_account",
4139
+ * "provider": "google",
4140
+ * "status": "active",
4141
+ * "updated_at": "2025-03-13T10:11:12Z",
4142
+ * "user_id": "user_d025a96ac0c6"
4143
+ * }
4144
+ */
4145
+ object: {
4146
+ /**
4147
+ * @description The scope of this connection. 'user' means owned by a specific user, 'account' means shared across the account.
4148
+ * @enum {string}
4149
+ */
4150
+ connection_scope: "user" | "account";
4151
+ /**
4152
+ * Format: date-time
4153
+ * @description Time at which the object was created.
4154
+ */
4155
+ created_at: string;
4156
+ /** @description The display name from the provider. */
4157
+ display_name: string | null;
4158
+ /** @description The email address associated with this connected account. */
4159
+ email: string;
4160
+ /** @description The unique identifier for this account at the provider. */
4161
+ external_subject: string;
4162
+ /** @description Unique identifier for the object. */
4163
+ id: string;
4164
+ /**
4165
+ * @description String representing the object's type.
4166
+ * @enum {string}
4167
+ */
4168
+ object: "connected_account";
4169
+ /**
4170
+ * @description The calendar provider for this connected account.
4171
+ * @enum {string}
4172
+ */
4173
+ provider: "google";
4174
+ /**
4175
+ * @description The current status of the connection. 'active' means the connection is working, 'reconnect_required' means the OAuth token has failed and needs reauthorization.
4176
+ * @enum {string}
4177
+ */
4178
+ status: "active" | "reconnect_required";
4179
+ /**
4180
+ * Format: date-time
4181
+ * @description Time at which the object was last updated.
4182
+ */
4183
+ updated_at: string;
4184
+ /** @description The ID of the user who owns this connected account. */
4185
+ user_id: string | null;
4186
+ };
4187
+ /**
4188
+ * @description The event type. (enum property replaced by openapi-typescript)
4189
+ * @enum {string}
4190
+ */
4191
+ type: "connected_account.reconnected";
4192
+ };
3741
4193
  /**
3742
4194
  * Client
3743
4195
  * @description This is an object representing a client.
@@ -3893,6 +4345,7 @@ interface components {
3893
4345
  * @description Response schema for a single account user
3894
4346
  * @example {
3895
4347
  * "object": "account_user",
4348
+ * "passive": false,
3896
4349
  * "roles": [
3897
4350
  * {
3898
4351
  * "id": "role_123456789012",
@@ -3918,6 +4371,8 @@ interface components {
3918
4371
  * @enum {string}
3919
4372
  */
3920
4373
  object: "account_user";
4374
+ /** @description Whether this user is passive. Passive users do not receive direct email notifications (e.g., OAuth reconnection notices). */
4375
+ passive: boolean;
3921
4376
  /** @description The roles assigned to the user in this account. */
3922
4377
  roles: components["schemas"]["Role"][];
3923
4378
  user: components["schemas"]["User"];
@@ -4015,6 +4470,9 @@ interface components {
4015
4470
  * "first_name": "John",
4016
4471
  * "id": "prov_d025a96ac0c6",
4017
4472
  * "last_name": "Smith",
4473
+ * "metadata": {
4474
+ * "external_id": "123"
4475
+ * },
4018
4476
  * "object": "provider",
4019
4477
  * "updated_at": "2017-09-13T10:11:12Z"
4020
4478
  * },
@@ -4231,6 +4689,9 @@ interface components {
4231
4689
  * "first_name": "John",
4232
4690
  * "id": "prov_d025a96ac0c6",
4233
4691
  * "last_name": "Smith",
4692
+ * "metadata": {
4693
+ * "external_id": "123"
4694
+ * },
4234
4695
  * "object": "provider",
4235
4696
  * "updated_at": "2017-09-13T10:11:12Z"
4236
4697
  * },
@@ -4688,6 +5149,9 @@ interface components {
4688
5149
  * "first_name": "John",
4689
5150
  * "id": "prov_d025a96ac0c6",
4690
5151
  * "last_name": "Smith",
5152
+ * "metadata": {
5153
+ * "external_id": "123"
5154
+ * },
4691
5155
  * "object": "provider",
4692
5156
  * "updated_at": "2017-09-13T10:11:12Z"
4693
5157
  * }
@@ -4706,6 +5170,8 @@ interface components {
4706
5170
  id: string;
4707
5171
  /** @description The provider's last name. */
4708
5172
  last_name: string;
5173
+ /** @description Set of key-value pairs attached to this provider. Maximum size is 16 KB. */
5174
+ metadata?: Record<string, never>;
4709
5175
  /**
4710
5176
  * @description String representing the object's type.
4711
5177
  * @enum {string}
@@ -5287,38 +5753,124 @@ interface components {
5287
5753
  time_zone: string;
5288
5754
  };
5289
5755
  /**
5290
- * AccountEvent
5291
- * @description This is an object representing an account event in the app.
5756
+ * ConnectedAccountRefreshFailedEventData
5757
+ * @description This is an object representing data for the connected account refresh failed event. This event is triggered when an OAuth token refresh permanently fails, indicating the integration needs to be reauthorized.
5292
5758
  * @example {
5293
- * "created_at": "2025-03-12T12:34:55Z",
5294
- * "data": {
5295
- * "object": {
5296
- * "appointment_type": "in_person",
5297
- * "cancellation_events": [
5298
- * {
5299
- * "actor": null,
5300
- * "cancellation_reason": {
5301
- * "id": "cr_a1b2c3d4e5f6",
5302
- * "name": "Distance too far",
5303
- * "object": "cancellation_reason",
5304
- * "sort_order": 1
5305
- * },
5306
- * "custom_reason_text": "I'm sick",
5307
- * "initiated_by": "client",
5308
- * "object": "cancellation_event",
5309
- * "occurred_at": "2023-01-01T03:00:00Z",
5310
- * "source": "client_ui"
5311
- * }
5312
- * ],
5313
- * "client": {
5314
- * "created_at": "2025-01-15T14:30:00Z",
5315
- * "email": "jane.smith@example.com",
5316
- * "first_name": "Jane",
5317
- * "id": "clnt_a1b2c3d4e5f6",
5318
- * "last_name": "Smith",
5319
- * "locale": "en-US",
5320
- * "object": "client",
5321
- * "phone": "+15551234567",
5759
+ * "object": {
5760
+ * "connection_scope": "user",
5761
+ * "created_at": "2025-03-12T12:34:55Z",
5762
+ * "display_name": "John Doe",
5763
+ * "email": "user@example.com",
5764
+ * "external_subject": "123456789",
5765
+ * "id": "cact_d025a96ac0c6",
5766
+ * "object": "connected_account",
5767
+ * "provider": "google",
5768
+ * "status": "active",
5769
+ * "updated_at": "2025-03-13T10:11:12Z",
5770
+ * "user_id": "user_d025a96ac0c6"
5771
+ * },
5772
+ * "type": "connected_account.refresh_failed"
5773
+ * }
5774
+ */
5775
+ ConnectedAccountRefreshFailedEventData: {
5776
+ /**
5777
+ * ConnectedAccount
5778
+ * @description This is an object representing a connected calendar account (e.g., a Google Calendar integration).
5779
+ * @example {
5780
+ * "connection_scope": "user",
5781
+ * "created_at": "2025-03-12T12:34:55Z",
5782
+ * "display_name": "John Doe",
5783
+ * "email": "user@example.com",
5784
+ * "external_subject": "123456789",
5785
+ * "id": "cact_d025a96ac0c6",
5786
+ * "object": "connected_account",
5787
+ * "provider": "google",
5788
+ * "status": "active",
5789
+ * "updated_at": "2025-03-13T10:11:12Z",
5790
+ * "user_id": "user_d025a96ac0c6"
5791
+ * }
5792
+ */
5793
+ object: {
5794
+ /**
5795
+ * @description The scope of this connection. 'user' means owned by a specific user, 'account' means shared across the account.
5796
+ * @enum {string}
5797
+ */
5798
+ connection_scope: "user" | "account";
5799
+ /**
5800
+ * Format: date-time
5801
+ * @description Time at which the object was created.
5802
+ */
5803
+ created_at: string;
5804
+ /** @description The display name from the provider. */
5805
+ display_name: string | null;
5806
+ /** @description The email address associated with this connected account. */
5807
+ email: string;
5808
+ /** @description The unique identifier for this account at the provider. */
5809
+ external_subject: string;
5810
+ /** @description Unique identifier for the object. */
5811
+ id: string;
5812
+ /**
5813
+ * @description String representing the object's type.
5814
+ * @enum {string}
5815
+ */
5816
+ object: "connected_account";
5817
+ /**
5818
+ * @description The calendar provider for this connected account.
5819
+ * @enum {string}
5820
+ */
5821
+ provider: "google";
5822
+ /**
5823
+ * @description The current status of the connection. 'active' means the connection is working, 'reconnect_required' means the OAuth token has failed and needs reauthorization.
5824
+ * @enum {string}
5825
+ */
5826
+ status: "active" | "reconnect_required";
5827
+ /**
5828
+ * Format: date-time
5829
+ * @description Time at which the object was last updated.
5830
+ */
5831
+ updated_at: string;
5832
+ /** @description The ID of the user who owns this connected account. */
5833
+ user_id: string | null;
5834
+ };
5835
+ /**
5836
+ * @description The event type. (enum property replaced by openapi-typescript)
5837
+ * @enum {string}
5838
+ */
5839
+ type: "connected_account.refresh_failed";
5840
+ };
5841
+ /**
5842
+ * AccountEvent
5843
+ * @description This is an object representing an account event in the app.
5844
+ * @example {
5845
+ * "created_at": "2025-03-12T12:34:55Z",
5846
+ * "data": {
5847
+ * "object": {
5848
+ * "appointment_type": "in_person",
5849
+ * "cancellation_events": [
5850
+ * {
5851
+ * "actor": null,
5852
+ * "cancellation_reason": {
5853
+ * "id": "cr_a1b2c3d4e5f6",
5854
+ * "name": "Distance too far",
5855
+ * "object": "cancellation_reason",
5856
+ * "sort_order": 1
5857
+ * },
5858
+ * "custom_reason_text": "I'm sick",
5859
+ * "initiated_by": "client",
5860
+ * "object": "cancellation_event",
5861
+ * "occurred_at": "2023-01-01T03:00:00Z",
5862
+ * "source": "client_ui"
5863
+ * }
5864
+ * ],
5865
+ * "client": {
5866
+ * "created_at": "2025-01-15T14:30:00Z",
5867
+ * "email": "jane.smith@example.com",
5868
+ * "first_name": "Jane",
5869
+ * "id": "clnt_a1b2c3d4e5f6",
5870
+ * "last_name": "Smith",
5871
+ * "locale": "en-US",
5872
+ * "object": "client",
5873
+ * "phone": "+15551234567",
5322
5874
  * "reference_id": "ext_12345",
5323
5875
  * "time_zone": "America/Chicago",
5324
5876
  * "updated_at": "2025-03-10T09:45:00Z"
@@ -5381,6 +5933,9 @@ interface components {
5381
5933
  * "first_name": "John",
5382
5934
  * "id": "prov_d025a96ac0c6",
5383
5935
  * "last_name": "Smith",
5936
+ * "metadata": {
5937
+ * "external_id": "123"
5938
+ * },
5384
5939
  * "object": "provider",
5385
5940
  * "updated_at": "2017-09-13T10:11:12Z"
5386
5941
  * },
@@ -5608,6 +6163,9 @@ interface components {
5608
6163
  * "first_name": "John",
5609
6164
  * "id": "prov_d025a96ac0c6",
5610
6165
  * "last_name": "Smith",
6166
+ * "metadata": {
6167
+ * "external_id": "123"
6168
+ * },
5611
6169
  * "object": "provider",
5612
6170
  * "updated_at": "2017-09-13T10:11:12Z"
5613
6171
  * },
@@ -6065,6 +6623,9 @@ interface components {
6065
6623
  * "first_name": "John",
6066
6624
  * "id": "prov_d025a96ac0c6",
6067
6625
  * "last_name": "Smith",
6626
+ * "metadata": {
6627
+ * "external_id": "123"
6628
+ * },
6068
6629
  * "object": "provider",
6069
6630
  * "updated_at": "2017-09-13T10:11:12Z"
6070
6631
  * }
@@ -6083,6 +6644,8 @@ interface components {
6083
6644
  id: string;
6084
6645
  /** @description The provider's last name. */
6085
6646
  last_name: string;
6647
+ /** @description Set of key-value pairs attached to this provider. Maximum size is 16 KB. */
6648
+ metadata?: Record<string, never>;
6086
6649
  /**
6087
6650
  * @description String representing the object's type.
6088
6651
  * @enum {string}
@@ -6678,6 +7241,9 @@ interface components {
6678
7241
  * "first_name": "John",
6679
7242
  * "id": "prov_d025a96ac0c6",
6680
7243
  * "last_name": "Smith",
7244
+ * "metadata": {
7245
+ * "external_id": "123"
7246
+ * },
6681
7247
  * "object": "provider",
6682
7248
  * "updated_at": "2017-09-13T10:11:12Z"
6683
7249
  * },
@@ -7135,6 +7701,9 @@ interface components {
7135
7701
  * "first_name": "John",
7136
7702
  * "id": "prov_d025a96ac0c6",
7137
7703
  * "last_name": "Smith",
7704
+ * "metadata": {
7705
+ * "external_id": "123"
7706
+ * },
7138
7707
  * "object": "provider",
7139
7708
  * "updated_at": "2017-09-13T10:11:12Z"
7140
7709
  * }
@@ -7153,6 +7722,8 @@ interface components {
7153
7722
  id: string;
7154
7723
  /** @description The provider's last name. */
7155
7724
  last_name: string;
7725
+ /** @description Set of key-value pairs attached to this provider. Maximum size is 16 KB. */
7726
+ metadata?: Record<string, never>;
7156
7727
  /**
7157
7728
  * @description String representing the object's type.
7158
7729
  * @enum {string}
@@ -7828,6 +8399,9 @@ interface components {
7828
8399
  * "first_name": "John",
7829
8400
  * "id": "prov_d025a96ac0c6",
7830
8401
  * "last_name": "Smith",
8402
+ * "metadata": {
8403
+ * "external_id": "123"
8404
+ * },
7831
8405
  * "object": "provider",
7832
8406
  * "updated_at": "2017-09-13T10:11:12Z"
7833
8407
  * },
@@ -8285,6 +8859,9 @@ interface components {
8285
8859
  * "first_name": "John",
8286
8860
  * "id": "prov_d025a96ac0c6",
8287
8861
  * "last_name": "Smith",
8862
+ * "metadata": {
8863
+ * "external_id": "123"
8864
+ * },
8288
8865
  * "object": "provider",
8289
8866
  * "updated_at": "2017-09-13T10:11:12Z"
8290
8867
  * }
@@ -8303,6 +8880,8 @@ interface components {
8303
8880
  id: string;
8304
8881
  /** @description The provider's last name. */
8305
8882
  last_name: string;
8883
+ /** @description Set of key-value pairs attached to this provider. Maximum size is 16 KB. */
8884
+ metadata?: Record<string, never>;
8306
8885
  /**
8307
8886
  * @description String representing the object's type.
8308
8887
  * @enum {string}
@@ -8898,6 +9477,9 @@ interface components {
8898
9477
  * "first_name": "John",
8899
9478
  * "id": "prov_d025a96ac0c6",
8900
9479
  * "last_name": "Smith",
9480
+ * "metadata": {
9481
+ * "external_id": "123"
9482
+ * },
8901
9483
  * "object": "provider",
8902
9484
  * "updated_at": "2017-09-13T10:11:12Z"
8903
9485
  * },
@@ -9355,6 +9937,9 @@ interface components {
9355
9937
  * "first_name": "John",
9356
9938
  * "id": "prov_d025a96ac0c6",
9357
9939
  * "last_name": "Smith",
9940
+ * "metadata": {
9941
+ * "external_id": "123"
9942
+ * },
9358
9943
  * "object": "provider",
9359
9944
  * "updated_at": "2017-09-13T10:11:12Z"
9360
9945
  * }
@@ -9373,6 +9958,8 @@ interface components {
9373
9958
  id: string;
9374
9959
  /** @description The provider's last name. */
9375
9960
  last_name: string;
9961
+ /** @description Set of key-value pairs attached to this provider. Maximum size is 16 KB. */
9962
+ metadata?: Record<string, never>;
9376
9963
  /**
9377
9964
  * @description String representing the object's type.
9378
9965
  * @enum {string}
@@ -9968,6 +10555,9 @@ interface components {
9968
10555
  * "first_name": "John",
9969
10556
  * "id": "prov_d025a96ac0c6",
9970
10557
  * "last_name": "Smith",
10558
+ * "metadata": {
10559
+ * "external_id": "123"
10560
+ * },
9971
10561
  * "object": "provider",
9972
10562
  * "updated_at": "2017-09-13T10:11:12Z"
9973
10563
  * },
@@ -10425,6 +11015,9 @@ interface components {
10425
11015
  * "first_name": "John",
10426
11016
  * "id": "prov_d025a96ac0c6",
10427
11017
  * "last_name": "Smith",
11018
+ * "metadata": {
11019
+ * "external_id": "123"
11020
+ * },
10428
11021
  * "object": "provider",
10429
11022
  * "updated_at": "2017-09-13T10:11:12Z"
10430
11023
  * }
@@ -10443,6 +11036,8 @@ interface components {
10443
11036
  id: string;
10444
11037
  /** @description The provider's last name. */
10445
11038
  last_name: string;
11039
+ /** @description Set of key-value pairs attached to this provider. Maximum size is 16 KB. */
11040
+ metadata?: Record<string, never>;
10446
11041
  /**
10447
11042
  * @description String representing the object's type.
10448
11043
  * @enum {string}
@@ -10945,177 +11540,794 @@ interface components {
10945
11540
  * @enum {string}
10946
11541
  */
10947
11542
  type: "appointment.deleted";
10948
- };
10949
- /** @description Unique identifier for the object. */
10950
- id: string;
10951
- /**
10952
- * @description String representing the object's type.
10953
- * @enum {string}
10954
- */
10955
- object?: "account_event";
10956
- /** @description The event version. */
10957
- version: string;
10958
- };
10959
- /**
10960
- * AppointmentsResponse
10961
- * @description Response schema for multiple appointments
10962
- * @example {
10963
- * "data": [
10964
- * {
10965
- * "appointment_type": "in_person",
10966
- * "cancellation_events": [
10967
- * {
10968
- * "actor": null,
10969
- * "cancellation_reason": {
10970
- * "id": "cr_a1b2c3d4e5f6",
10971
- * "name": "Distance too far",
10972
- * "object": "cancellation_reason",
10973
- * "sort_order": 1
10974
- * },
10975
- * "custom_reason_text": "I'm sick",
10976
- * "initiated_by": "client",
10977
- * "object": "cancellation_event",
10978
- * "occurred_at": "2023-01-01T03:00:00Z",
10979
- * "source": "client_ui"
10980
- * }
10981
- * ],
10982
- * "client": {
10983
- * "created_at": "2025-01-15T14:30:00Z",
10984
- * "email": "jane.smith@example.com",
10985
- * "first_name": "Jane",
10986
- * "id": "clnt_a1b2c3d4e5f6",
10987
- * "last_name": "Smith",
10988
- * "locale": "en-US",
10989
- * "object": "client",
10990
- * "phone": "+15551234567",
10991
- * "reference_id": "ext_12345",
10992
- * "time_zone": "America/Chicago",
10993
- * "updated_at": "2025-03-10T09:45:00Z"
10994
- * },
10995
- * "client_data": {
10996
- * "email": "jane.smith@example.com",
10997
- * "first_name": "Jane",
10998
- * "last_name": "Smith",
10999
- * "locale": "en-US",
11000
- * "phone": "+15551234567",
11001
- * "reference_id": "ext_12345",
11002
- * "time_zone": "America/Chicago"
11003
- * },
11004
- * "client_locale": "en-US",
11005
- * "client_reference_id": "ext_12345",
11006
- * "client_time_zone": "America/Chicago",
11007
- * "confirmation_events": [
11008
- * {
11009
- * "actor": null,
11010
- * "end_at": {
11011
- * "local": "2023-01-01T01:00:00",
11012
- * "object": "zoned_date_time",
11013
- * "time_zone": "America/New_York",
11014
- * "unix_ts": 1736464800,
11015
- * "utc": "2023-01-01T04:00:00Z"
11016
- * },
11017
- * "initiated_by": "client",
11018
- * "object": "confirmation_event",
11019
- * "occurred_at": "2023-01-01T03:00:00Z",
11020
- * "source": "client_ui",
11021
- * "start_at": {
11022
- * "local": "2023-01-01T00:00:00",
11023
- * "object": "zoned_date_time",
11024
- * "time_zone": "America/New_York",
11025
- * "unix_ts": 1736461200,
11026
- * "utc": "2023-01-01T03:00:00Z"
11027
- * }
11028
- * }
11029
- * ],
11030
- * "confirmed_at": "2025-03-10T15:30:00Z",
11031
- * "created_at": "2025-03-10T14:30:00Z",
11032
- * "end_at": {
11033
- * "local": "2025-03-01T11:00:00",
11034
- * "object": "zoned_date_time",
11035
- * "time_zone": "America/New_York",
11036
- * "unix_ts": 1736464800,
11037
- * "utc": "2025-03-01T04:00:00Z"
11038
- * },
11039
- * "fields": {
11040
- * "email": "jane.smith@example.com",
11041
- * "first_name": "Jane",
11042
- * "last_name": "Smith",
11043
- * "phone": "+15551234567"
11044
- * },
11045
- * "id": "appt_a1b2c3d4e5f6",
11046
- * "object": "appointment",
11047
- * "provider": {
11048
- * "created_at": "2017-09-12T12:34:55Z",
11049
- * "display_name": "John Smith",
11050
- * "first_name": "John",
11051
- * "id": "prov_d025a96ac0c6",
11052
- * "last_name": "Smith",
11053
- * "object": "provider",
11054
- * "updated_at": "2017-09-13T10:11:12Z"
11055
- * },
11056
- * "reschedule_events": [
11057
- * {
11058
- * "actor": null,
11059
- * "initiated_by": "client",
11060
- * "new_end_at": {
11061
- * "local": "2023-01-01T01:00:00",
11062
- * "object": "zoned_date_time",
11063
- * "time_zone": "America/New_York",
11064
- * "unix_ts": 1736464800,
11065
- * "utc": "2023-01-01T04:00:00Z"
11066
- * },
11067
- * "new_start_at": {
11068
- * "local": "2023-01-01T00:00:00",
11069
- * "object": "zoned_date_time",
11070
- * "time_zone": "America/New_York",
11071
- * "unix_ts": 1736461200,
11072
- * "utc": "2023-01-01T03:00:00Z"
11073
- * },
11074
- * "object": "reschedule_event",
11075
- * "occurred_at": "2023-01-01T03:00:00Z",
11076
- * "previous_end_at": {
11077
- * "local": "2023-01-01T01:00:00",
11078
- * "object": "zoned_date_time",
11079
- * "time_zone": "America/New_York",
11080
- * "unix_ts": 1736464800,
11081
- * "utc": "2023-01-01T04:00:00Z"
11082
- * },
11083
- * "previous_start_at": {
11084
- * "local": "2023-01-01T00:00:00",
11085
- * "object": "zoned_date_time",
11086
- * "time_zone": "America/New_York",
11087
- * "unix_ts": 1736461200,
11088
- * "utc": "2023-01-01T03:00:00Z"
11089
- * },
11090
- * "source": "client_ui"
11091
- * }
11092
- * ],
11093
- * "service": {
11094
- * "appointment_type": "in_person",
11095
- * "booking_policy": {
11096
- * "advance_notice": {
11097
- * "enabled": true,
11098
- * "minimum_duration": "PT1H"
11099
- * },
11100
- * "allow_booking": true,
11101
- * "disabled_message": "Booking is disabled for this service.",
11102
- * "maximize_utilization": {
11103
- * "enabled": true
11104
- * }
11105
- * },
11106
- * "cancellation_policy": {
11107
- * "advance_notice": {
11108
- * "enabled": true,
11109
- * "minimum_duration": "PT1H"
11110
- * },
11111
- * "allow_cancellation": true,
11112
- * "disabled_message": "Cancellation is disabled for this service."
11113
- * },
11114
- * "change_policy_text": "Appointments within 48 hours cannot be canceled or rescheduled online. Please call our office.",
11115
- * "created_at": "2025-02-17T17:49:19Z",
11116
- * "duration": "PT1H30M",
11117
- * "id": "srv_d025a96ac0c6",
11118
- * "name": "Initial Consult",
11543
+ } | {
11544
+ /**
11545
+ * Block
11546
+ * @description This is an object representing a range of blocked time for a provider, service, service provider, or location.
11547
+ * @example {
11548
+ * "all_day": false,
11549
+ * "attachment_type": "provider",
11550
+ * "attachments": [
11551
+ * "prov_d025a96ac0c6"
11552
+ * ],
11553
+ * "created_at": "2017-09-12T12:34:55Z",
11554
+ * "end_date": "2025-10-27",
11555
+ * "end_time": "17:00",
11556
+ * "exception_dates": [
11557
+ * "2025-10-27T09:00:00"
11558
+ * ],
11559
+ * "id": "blk_d025a96ac0c6",
11560
+ * "object": "block",
11561
+ * "recurrence_rule": {
11562
+ * "byday": [
11563
+ * "mo",
11564
+ * "we",
11565
+ * "fr"
11566
+ * ],
11567
+ * "freq": "weekly"
11568
+ * },
11569
+ * "service_id": null,
11570
+ * "start_date": "2025-10-27",
11571
+ * "start_time": "09:00",
11572
+ * "time_zone": "America/New_York",
11573
+ * "title": "Team Meeting",
11574
+ * "updated_at": "2017-09-13T10:11:12Z"
11575
+ * }
11576
+ */
11577
+ object: {
11578
+ /** @description Whether the block is all day. */
11579
+ all_day: boolean;
11580
+ /**
11581
+ * @description The type of attachment for the block.
11582
+ * @enum {string}
11583
+ */
11584
+ attachment_type: "location" | "service" | "provider" | "service_provider";
11585
+ /** @description The resources to which this block is attached. These can be service IDs (to block availabilty for all providers on a service), provider IDs (to block availability for a specific provider), or location IDs (to block availability for a specific location). */
11586
+ attachments: string[];
11587
+ /**
11588
+ * Format: date-time
11589
+ * @description Time at which the object was created.
11590
+ */
11591
+ created_at: string;
11592
+ /**
11593
+ * Format: date
11594
+ * @description The end date of the block.
11595
+ */
11596
+ end_date: string;
11597
+ /** @description The end time of the block. */
11598
+ end_time: string | null;
11599
+ /** @description The exception dates for the block. */
11600
+ exception_dates: string[];
11601
+ /** @description Unique identifier for the object. */
11602
+ id: string;
11603
+ /**
11604
+ * @description String representing the object's type.
11605
+ * @enum {string}
11606
+ */
11607
+ object: "block";
11608
+ /** @description The recurrence rule for the block (or null if there is no recurrence). */
11609
+ recurrence_rule: {
11610
+ /**
11611
+ * @description The days of the week on which the recurrence occurs.
11612
+ * @example [
11613
+ * "mo",
11614
+ * "we",
11615
+ * "fr"
11616
+ * ]
11617
+ */
11618
+ byday?: string[];
11619
+ /** @description Number of occurrences at which to end the recurrence. */
11620
+ count?: number | null;
11621
+ /**
11622
+ * @description The frequency of the recurrence.
11623
+ * @enum {string}
11624
+ */
11625
+ freq: "daily" | "weekly";
11626
+ /**
11627
+ * @description How often the recurrence rule repeats.
11628
+ * @example 2
11629
+ */
11630
+ interval?: number;
11631
+ /**
11632
+ * @description Date at which to end the recurrence (in ISO-8601 format).
11633
+ * @example 2024-01-02
11634
+ */
11635
+ until?: Record<string, never> | null;
11636
+ } | null;
11637
+ /** @description The ID of the service for the block. Required when `attachment_type` is `service_provider`. */
11638
+ service_id: string | null;
11639
+ /**
11640
+ * Format: date
11641
+ * @description The start date of the block.
11642
+ */
11643
+ start_date: string;
11644
+ /** @description The start time of the block. */
11645
+ start_time: string | null;
11646
+ /** @description The time zone of the block. */
11647
+ time_zone: string | null;
11648
+ /** @description The title of the block. */
11649
+ title: string | null;
11650
+ /**
11651
+ * Format: date-time
11652
+ * @description Time at which the object was last updated.
11653
+ */
11654
+ updated_at: string;
11655
+ };
11656
+ /**
11657
+ * @description The event type.
11658
+ * @enum {string}
11659
+ */
11660
+ type: "block.created";
11661
+ } | {
11662
+ /**
11663
+ * Block
11664
+ * @description This is an object representing a range of blocked time for a provider, service, service provider, or location.
11665
+ * @example {
11666
+ * "all_day": false,
11667
+ * "attachment_type": "provider",
11668
+ * "attachments": [
11669
+ * "prov_d025a96ac0c6"
11670
+ * ],
11671
+ * "created_at": "2017-09-12T12:34:55Z",
11672
+ * "end_date": "2025-10-27",
11673
+ * "end_time": "17:00",
11674
+ * "exception_dates": [
11675
+ * "2025-10-27T09:00:00"
11676
+ * ],
11677
+ * "id": "blk_d025a96ac0c6",
11678
+ * "object": "block",
11679
+ * "recurrence_rule": {
11680
+ * "byday": [
11681
+ * "mo",
11682
+ * "we",
11683
+ * "fr"
11684
+ * ],
11685
+ * "freq": "weekly"
11686
+ * },
11687
+ * "service_id": null,
11688
+ * "start_date": "2025-10-27",
11689
+ * "start_time": "09:00",
11690
+ * "time_zone": "America/New_York",
11691
+ * "title": "Team Meeting",
11692
+ * "updated_at": "2017-09-13T10:11:12Z"
11693
+ * }
11694
+ */
11695
+ object: {
11696
+ /** @description Whether the block is all day. */
11697
+ all_day: boolean;
11698
+ /**
11699
+ * @description The type of attachment for the block.
11700
+ * @enum {string}
11701
+ */
11702
+ attachment_type: "location" | "service" | "provider" | "service_provider";
11703
+ /** @description The resources to which this block is attached. These can be service IDs (to block availabilty for all providers on a service), provider IDs (to block availability for a specific provider), or location IDs (to block availability for a specific location). */
11704
+ attachments: string[];
11705
+ /**
11706
+ * Format: date-time
11707
+ * @description Time at which the object was created.
11708
+ */
11709
+ created_at: string;
11710
+ /**
11711
+ * Format: date
11712
+ * @description The end date of the block.
11713
+ */
11714
+ end_date: string;
11715
+ /** @description The end time of the block. */
11716
+ end_time: string | null;
11717
+ /** @description The exception dates for the block. */
11718
+ exception_dates: string[];
11719
+ /** @description Unique identifier for the object. */
11720
+ id: string;
11721
+ /**
11722
+ * @description String representing the object's type.
11723
+ * @enum {string}
11724
+ */
11725
+ object: "block";
11726
+ /** @description The recurrence rule for the block (or null if there is no recurrence). */
11727
+ recurrence_rule: {
11728
+ /**
11729
+ * @description The days of the week on which the recurrence occurs.
11730
+ * @example [
11731
+ * "mo",
11732
+ * "we",
11733
+ * "fr"
11734
+ * ]
11735
+ */
11736
+ byday?: string[];
11737
+ /** @description Number of occurrences at which to end the recurrence. */
11738
+ count?: number | null;
11739
+ /**
11740
+ * @description The frequency of the recurrence.
11741
+ * @enum {string}
11742
+ */
11743
+ freq: "daily" | "weekly";
11744
+ /**
11745
+ * @description How often the recurrence rule repeats.
11746
+ * @example 2
11747
+ */
11748
+ interval?: number;
11749
+ /**
11750
+ * @description Date at which to end the recurrence (in ISO-8601 format).
11751
+ * @example 2024-01-02
11752
+ */
11753
+ until?: Record<string, never> | null;
11754
+ } | null;
11755
+ /** @description The ID of the service for the block. Required when `attachment_type` is `service_provider`. */
11756
+ service_id: string | null;
11757
+ /**
11758
+ * Format: date
11759
+ * @description The start date of the block.
11760
+ */
11761
+ start_date: string;
11762
+ /** @description The start time of the block. */
11763
+ start_time: string | null;
11764
+ /** @description The time zone of the block. */
11765
+ time_zone: string | null;
11766
+ /** @description The title of the block. */
11767
+ title: string | null;
11768
+ /**
11769
+ * Format: date-time
11770
+ * @description Time at which the object was last updated.
11771
+ */
11772
+ updated_at: string;
11773
+ };
11774
+ /**
11775
+ * @description The event type.
11776
+ * @enum {string}
11777
+ */
11778
+ type: "block.updated";
11779
+ } | {
11780
+ /**
11781
+ * Block
11782
+ * @description This is an object representing a range of blocked time for a provider, service, service provider, or location.
11783
+ * @example {
11784
+ * "all_day": false,
11785
+ * "attachment_type": "provider",
11786
+ * "attachments": [
11787
+ * "prov_d025a96ac0c6"
11788
+ * ],
11789
+ * "created_at": "2017-09-12T12:34:55Z",
11790
+ * "end_date": "2025-10-27",
11791
+ * "end_time": "17:00",
11792
+ * "exception_dates": [
11793
+ * "2025-10-27T09:00:00"
11794
+ * ],
11795
+ * "id": "blk_d025a96ac0c6",
11796
+ * "object": "block",
11797
+ * "recurrence_rule": {
11798
+ * "byday": [
11799
+ * "mo",
11800
+ * "we",
11801
+ * "fr"
11802
+ * ],
11803
+ * "freq": "weekly"
11804
+ * },
11805
+ * "service_id": null,
11806
+ * "start_date": "2025-10-27",
11807
+ * "start_time": "09:00",
11808
+ * "time_zone": "America/New_York",
11809
+ * "title": "Team Meeting",
11810
+ * "updated_at": "2017-09-13T10:11:12Z"
11811
+ * }
11812
+ */
11813
+ object: {
11814
+ /** @description Whether the block is all day. */
11815
+ all_day: boolean;
11816
+ /**
11817
+ * @description The type of attachment for the block.
11818
+ * @enum {string}
11819
+ */
11820
+ attachment_type: "location" | "service" | "provider" | "service_provider";
11821
+ /** @description The resources to which this block is attached. These can be service IDs (to block availabilty for all providers on a service), provider IDs (to block availability for a specific provider), or location IDs (to block availability for a specific location). */
11822
+ attachments: string[];
11823
+ /**
11824
+ * Format: date-time
11825
+ * @description Time at which the object was created.
11826
+ */
11827
+ created_at: string;
11828
+ /**
11829
+ * Format: date
11830
+ * @description The end date of the block.
11831
+ */
11832
+ end_date: string;
11833
+ /** @description The end time of the block. */
11834
+ end_time: string | null;
11835
+ /** @description The exception dates for the block. */
11836
+ exception_dates: string[];
11837
+ /** @description Unique identifier for the object. */
11838
+ id: string;
11839
+ /**
11840
+ * @description String representing the object's type.
11841
+ * @enum {string}
11842
+ */
11843
+ object: "block";
11844
+ /** @description The recurrence rule for the block (or null if there is no recurrence). */
11845
+ recurrence_rule: {
11846
+ /**
11847
+ * @description The days of the week on which the recurrence occurs.
11848
+ * @example [
11849
+ * "mo",
11850
+ * "we",
11851
+ * "fr"
11852
+ * ]
11853
+ */
11854
+ byday?: string[];
11855
+ /** @description Number of occurrences at which to end the recurrence. */
11856
+ count?: number | null;
11857
+ /**
11858
+ * @description The frequency of the recurrence.
11859
+ * @enum {string}
11860
+ */
11861
+ freq: "daily" | "weekly";
11862
+ /**
11863
+ * @description How often the recurrence rule repeats.
11864
+ * @example 2
11865
+ */
11866
+ interval?: number;
11867
+ /**
11868
+ * @description Date at which to end the recurrence (in ISO-8601 format).
11869
+ * @example 2024-01-02
11870
+ */
11871
+ until?: Record<string, never> | null;
11872
+ } | null;
11873
+ /** @description The ID of the service for the block. Required when `attachment_type` is `service_provider`. */
11874
+ service_id: string | null;
11875
+ /**
11876
+ * Format: date
11877
+ * @description The start date of the block.
11878
+ */
11879
+ start_date: string;
11880
+ /** @description The start time of the block. */
11881
+ start_time: string | null;
11882
+ /** @description The time zone of the block. */
11883
+ time_zone: string | null;
11884
+ /** @description The title of the block. */
11885
+ title: string | null;
11886
+ /**
11887
+ * Format: date-time
11888
+ * @description Time at which the object was last updated.
11889
+ */
11890
+ updated_at: string;
11891
+ };
11892
+ /**
11893
+ * @description The event type.
11894
+ * @enum {string}
11895
+ */
11896
+ type: "block.deleted";
11897
+ } | {
11898
+ /**
11899
+ * ConnectedAccount
11900
+ * @description This is an object representing a connected calendar account (e.g., a Google Calendar integration).
11901
+ * @example {
11902
+ * "connection_scope": "user",
11903
+ * "created_at": "2025-03-12T12:34:55Z",
11904
+ * "display_name": "John Doe",
11905
+ * "email": "user@example.com",
11906
+ * "external_subject": "123456789",
11907
+ * "id": "cact_d025a96ac0c6",
11908
+ * "object": "connected_account",
11909
+ * "provider": "google",
11910
+ * "status": "active",
11911
+ * "updated_at": "2025-03-13T10:11:12Z",
11912
+ * "user_id": "user_d025a96ac0c6"
11913
+ * }
11914
+ */
11915
+ object: {
11916
+ /**
11917
+ * @description The scope of this connection. 'user' means owned by a specific user, 'account' means shared across the account.
11918
+ * @enum {string}
11919
+ */
11920
+ connection_scope: "user" | "account";
11921
+ /**
11922
+ * Format: date-time
11923
+ * @description Time at which the object was created.
11924
+ */
11925
+ created_at: string;
11926
+ /** @description The display name from the provider. */
11927
+ display_name: string | null;
11928
+ /** @description The email address associated with this connected account. */
11929
+ email: string;
11930
+ /** @description The unique identifier for this account at the provider. */
11931
+ external_subject: string;
11932
+ /** @description Unique identifier for the object. */
11933
+ id: string;
11934
+ /**
11935
+ * @description String representing the object's type.
11936
+ * @enum {string}
11937
+ */
11938
+ object: "connected_account";
11939
+ /**
11940
+ * @description The calendar provider for this connected account.
11941
+ * @enum {string}
11942
+ */
11943
+ provider: "google";
11944
+ /**
11945
+ * @description The current status of the connection. 'active' means the connection is working, 'reconnect_required' means the OAuth token has failed and needs reauthorization.
11946
+ * @enum {string}
11947
+ */
11948
+ status: "active" | "reconnect_required";
11949
+ /**
11950
+ * Format: date-time
11951
+ * @description Time at which the object was last updated.
11952
+ */
11953
+ updated_at: string;
11954
+ /** @description The ID of the user who owns this connected account. */
11955
+ user_id: string | null;
11956
+ };
11957
+ /**
11958
+ * @description The event type.
11959
+ * @enum {string}
11960
+ */
11961
+ type: "connected_account.created";
11962
+ } | {
11963
+ /**
11964
+ * ConnectedAccount
11965
+ * @description This is an object representing a connected calendar account (e.g., a Google Calendar integration).
11966
+ * @example {
11967
+ * "connection_scope": "user",
11968
+ * "created_at": "2025-03-12T12:34:55Z",
11969
+ * "display_name": "John Doe",
11970
+ * "email": "user@example.com",
11971
+ * "external_subject": "123456789",
11972
+ * "id": "cact_d025a96ac0c6",
11973
+ * "object": "connected_account",
11974
+ * "provider": "google",
11975
+ * "status": "active",
11976
+ * "updated_at": "2025-03-13T10:11:12Z",
11977
+ * "user_id": "user_d025a96ac0c6"
11978
+ * }
11979
+ */
11980
+ object: {
11981
+ /**
11982
+ * @description The scope of this connection. 'user' means owned by a specific user, 'account' means shared across the account.
11983
+ * @enum {string}
11984
+ */
11985
+ connection_scope: "user" | "account";
11986
+ /**
11987
+ * Format: date-time
11988
+ * @description Time at which the object was created.
11989
+ */
11990
+ created_at: string;
11991
+ /** @description The display name from the provider. */
11992
+ display_name: string | null;
11993
+ /** @description The email address associated with this connected account. */
11994
+ email: string;
11995
+ /** @description The unique identifier for this account at the provider. */
11996
+ external_subject: string;
11997
+ /** @description Unique identifier for the object. */
11998
+ id: string;
11999
+ /**
12000
+ * @description String representing the object's type.
12001
+ * @enum {string}
12002
+ */
12003
+ object: "connected_account";
12004
+ /**
12005
+ * @description The calendar provider for this connected account.
12006
+ * @enum {string}
12007
+ */
12008
+ provider: "google";
12009
+ /**
12010
+ * @description The current status of the connection. 'active' means the connection is working, 'reconnect_required' means the OAuth token has failed and needs reauthorization.
12011
+ * @enum {string}
12012
+ */
12013
+ status: "active" | "reconnect_required";
12014
+ /**
12015
+ * Format: date-time
12016
+ * @description Time at which the object was last updated.
12017
+ */
12018
+ updated_at: string;
12019
+ /** @description The ID of the user who owns this connected account. */
12020
+ user_id: string | null;
12021
+ };
12022
+ /**
12023
+ * @description The event type.
12024
+ * @enum {string}
12025
+ */
12026
+ type: "connected_account.deleted";
12027
+ } | {
12028
+ /**
12029
+ * ConnectedAccount
12030
+ * @description This is an object representing a connected calendar account (e.g., a Google Calendar integration).
12031
+ * @example {
12032
+ * "connection_scope": "user",
12033
+ * "created_at": "2025-03-12T12:34:55Z",
12034
+ * "display_name": "John Doe",
12035
+ * "email": "user@example.com",
12036
+ * "external_subject": "123456789",
12037
+ * "id": "cact_d025a96ac0c6",
12038
+ * "object": "connected_account",
12039
+ * "provider": "google",
12040
+ * "status": "active",
12041
+ * "updated_at": "2025-03-13T10:11:12Z",
12042
+ * "user_id": "user_d025a96ac0c6"
12043
+ * }
12044
+ */
12045
+ object: {
12046
+ /**
12047
+ * @description The scope of this connection. 'user' means owned by a specific user, 'account' means shared across the account.
12048
+ * @enum {string}
12049
+ */
12050
+ connection_scope: "user" | "account";
12051
+ /**
12052
+ * Format: date-time
12053
+ * @description Time at which the object was created.
12054
+ */
12055
+ created_at: string;
12056
+ /** @description The display name from the provider. */
12057
+ display_name: string | null;
12058
+ /** @description The email address associated with this connected account. */
12059
+ email: string;
12060
+ /** @description The unique identifier for this account at the provider. */
12061
+ external_subject: string;
12062
+ /** @description Unique identifier for the object. */
12063
+ id: string;
12064
+ /**
12065
+ * @description String representing the object's type.
12066
+ * @enum {string}
12067
+ */
12068
+ object: "connected_account";
12069
+ /**
12070
+ * @description The calendar provider for this connected account.
12071
+ * @enum {string}
12072
+ */
12073
+ provider: "google";
12074
+ /**
12075
+ * @description The current status of the connection. 'active' means the connection is working, 'reconnect_required' means the OAuth token has failed and needs reauthorization.
12076
+ * @enum {string}
12077
+ */
12078
+ status: "active" | "reconnect_required";
12079
+ /**
12080
+ * Format: date-time
12081
+ * @description Time at which the object was last updated.
12082
+ */
12083
+ updated_at: string;
12084
+ /** @description The ID of the user who owns this connected account. */
12085
+ user_id: string | null;
12086
+ };
12087
+ /**
12088
+ * @description The event type.
12089
+ * @enum {string}
12090
+ */
12091
+ type: "connected_account.refresh_failed";
12092
+ } | {
12093
+ /**
12094
+ * ConnectedAccount
12095
+ * @description This is an object representing a connected calendar account (e.g., a Google Calendar integration).
12096
+ * @example {
12097
+ * "connection_scope": "user",
12098
+ * "created_at": "2025-03-12T12:34:55Z",
12099
+ * "display_name": "John Doe",
12100
+ * "email": "user@example.com",
12101
+ * "external_subject": "123456789",
12102
+ * "id": "cact_d025a96ac0c6",
12103
+ * "object": "connected_account",
12104
+ * "provider": "google",
12105
+ * "status": "active",
12106
+ * "updated_at": "2025-03-13T10:11:12Z",
12107
+ * "user_id": "user_d025a96ac0c6"
12108
+ * }
12109
+ */
12110
+ object: {
12111
+ /**
12112
+ * @description The scope of this connection. 'user' means owned by a specific user, 'account' means shared across the account.
12113
+ * @enum {string}
12114
+ */
12115
+ connection_scope: "user" | "account";
12116
+ /**
12117
+ * Format: date-time
12118
+ * @description Time at which the object was created.
12119
+ */
12120
+ created_at: string;
12121
+ /** @description The display name from the provider. */
12122
+ display_name: string | null;
12123
+ /** @description The email address associated with this connected account. */
12124
+ email: string;
12125
+ /** @description The unique identifier for this account at the provider. */
12126
+ external_subject: string;
12127
+ /** @description Unique identifier for the object. */
12128
+ id: string;
12129
+ /**
12130
+ * @description String representing the object's type.
12131
+ * @enum {string}
12132
+ */
12133
+ object: "connected_account";
12134
+ /**
12135
+ * @description The calendar provider for this connected account.
12136
+ * @enum {string}
12137
+ */
12138
+ provider: "google";
12139
+ /**
12140
+ * @description The current status of the connection. 'active' means the connection is working, 'reconnect_required' means the OAuth token has failed and needs reauthorization.
12141
+ * @enum {string}
12142
+ */
12143
+ status: "active" | "reconnect_required";
12144
+ /**
12145
+ * Format: date-time
12146
+ * @description Time at which the object was last updated.
12147
+ */
12148
+ updated_at: string;
12149
+ /** @description The ID of the user who owns this connected account. */
12150
+ user_id: string | null;
12151
+ };
12152
+ /**
12153
+ * @description The event type.
12154
+ * @enum {string}
12155
+ */
12156
+ type: "connected_account.reconnected";
12157
+ };
12158
+ /** @description Unique identifier for the object. */
12159
+ id: string;
12160
+ /**
12161
+ * @description String representing the object's type.
12162
+ * @enum {string}
12163
+ */
12164
+ object?: "account_event";
12165
+ /** @description The event version. */
12166
+ version: string;
12167
+ };
12168
+ /**
12169
+ * AppointmentsResponse
12170
+ * @description Response schema for multiple appointments
12171
+ * @example {
12172
+ * "data": [
12173
+ * {
12174
+ * "appointment_type": "in_person",
12175
+ * "cancellation_events": [
12176
+ * {
12177
+ * "actor": null,
12178
+ * "cancellation_reason": {
12179
+ * "id": "cr_a1b2c3d4e5f6",
12180
+ * "name": "Distance too far",
12181
+ * "object": "cancellation_reason",
12182
+ * "sort_order": 1
12183
+ * },
12184
+ * "custom_reason_text": "I'm sick",
12185
+ * "initiated_by": "client",
12186
+ * "object": "cancellation_event",
12187
+ * "occurred_at": "2023-01-01T03:00:00Z",
12188
+ * "source": "client_ui"
12189
+ * }
12190
+ * ],
12191
+ * "client": {
12192
+ * "created_at": "2025-01-15T14:30:00Z",
12193
+ * "email": "jane.smith@example.com",
12194
+ * "first_name": "Jane",
12195
+ * "id": "clnt_a1b2c3d4e5f6",
12196
+ * "last_name": "Smith",
12197
+ * "locale": "en-US",
12198
+ * "object": "client",
12199
+ * "phone": "+15551234567",
12200
+ * "reference_id": "ext_12345",
12201
+ * "time_zone": "America/Chicago",
12202
+ * "updated_at": "2025-03-10T09:45:00Z"
12203
+ * },
12204
+ * "client_data": {
12205
+ * "email": "jane.smith@example.com",
12206
+ * "first_name": "Jane",
12207
+ * "last_name": "Smith",
12208
+ * "locale": "en-US",
12209
+ * "phone": "+15551234567",
12210
+ * "reference_id": "ext_12345",
12211
+ * "time_zone": "America/Chicago"
12212
+ * },
12213
+ * "client_locale": "en-US",
12214
+ * "client_reference_id": "ext_12345",
12215
+ * "client_time_zone": "America/Chicago",
12216
+ * "confirmation_events": [
12217
+ * {
12218
+ * "actor": null,
12219
+ * "end_at": {
12220
+ * "local": "2023-01-01T01:00:00",
12221
+ * "object": "zoned_date_time",
12222
+ * "time_zone": "America/New_York",
12223
+ * "unix_ts": 1736464800,
12224
+ * "utc": "2023-01-01T04:00:00Z"
12225
+ * },
12226
+ * "initiated_by": "client",
12227
+ * "object": "confirmation_event",
12228
+ * "occurred_at": "2023-01-01T03:00:00Z",
12229
+ * "source": "client_ui",
12230
+ * "start_at": {
12231
+ * "local": "2023-01-01T00:00:00",
12232
+ * "object": "zoned_date_time",
12233
+ * "time_zone": "America/New_York",
12234
+ * "unix_ts": 1736461200,
12235
+ * "utc": "2023-01-01T03:00:00Z"
12236
+ * }
12237
+ * }
12238
+ * ],
12239
+ * "confirmed_at": "2025-03-10T15:30:00Z",
12240
+ * "created_at": "2025-03-10T14:30:00Z",
12241
+ * "end_at": {
12242
+ * "local": "2025-03-01T11:00:00",
12243
+ * "object": "zoned_date_time",
12244
+ * "time_zone": "America/New_York",
12245
+ * "unix_ts": 1736464800,
12246
+ * "utc": "2025-03-01T04:00:00Z"
12247
+ * },
12248
+ * "fields": {
12249
+ * "email": "jane.smith@example.com",
12250
+ * "first_name": "Jane",
12251
+ * "last_name": "Smith",
12252
+ * "phone": "+15551234567"
12253
+ * },
12254
+ * "id": "appt_a1b2c3d4e5f6",
12255
+ * "object": "appointment",
12256
+ * "provider": {
12257
+ * "created_at": "2017-09-12T12:34:55Z",
12258
+ * "display_name": "John Smith",
12259
+ * "first_name": "John",
12260
+ * "id": "prov_d025a96ac0c6",
12261
+ * "last_name": "Smith",
12262
+ * "metadata": {
12263
+ * "external_id": "123"
12264
+ * },
12265
+ * "object": "provider",
12266
+ * "updated_at": "2017-09-13T10:11:12Z"
12267
+ * },
12268
+ * "reschedule_events": [
12269
+ * {
12270
+ * "actor": null,
12271
+ * "initiated_by": "client",
12272
+ * "new_end_at": {
12273
+ * "local": "2023-01-01T01:00:00",
12274
+ * "object": "zoned_date_time",
12275
+ * "time_zone": "America/New_York",
12276
+ * "unix_ts": 1736464800,
12277
+ * "utc": "2023-01-01T04:00:00Z"
12278
+ * },
12279
+ * "new_start_at": {
12280
+ * "local": "2023-01-01T00:00:00",
12281
+ * "object": "zoned_date_time",
12282
+ * "time_zone": "America/New_York",
12283
+ * "unix_ts": 1736461200,
12284
+ * "utc": "2023-01-01T03:00:00Z"
12285
+ * },
12286
+ * "object": "reschedule_event",
12287
+ * "occurred_at": "2023-01-01T03:00:00Z",
12288
+ * "previous_end_at": {
12289
+ * "local": "2023-01-01T01:00:00",
12290
+ * "object": "zoned_date_time",
12291
+ * "time_zone": "America/New_York",
12292
+ * "unix_ts": 1736464800,
12293
+ * "utc": "2023-01-01T04:00:00Z"
12294
+ * },
12295
+ * "previous_start_at": {
12296
+ * "local": "2023-01-01T00:00:00",
12297
+ * "object": "zoned_date_time",
12298
+ * "time_zone": "America/New_York",
12299
+ * "unix_ts": 1736461200,
12300
+ * "utc": "2023-01-01T03:00:00Z"
12301
+ * },
12302
+ * "source": "client_ui"
12303
+ * }
12304
+ * ],
12305
+ * "service": {
12306
+ * "appointment_type": "in_person",
12307
+ * "booking_policy": {
12308
+ * "advance_notice": {
12309
+ * "enabled": true,
12310
+ * "minimum_duration": "PT1H"
12311
+ * },
12312
+ * "allow_booking": true,
12313
+ * "disabled_message": "Booking is disabled for this service.",
12314
+ * "maximize_utilization": {
12315
+ * "enabled": true
12316
+ * }
12317
+ * },
12318
+ * "cancellation_policy": {
12319
+ * "advance_notice": {
12320
+ * "enabled": true,
12321
+ * "minimum_duration": "PT1H"
12322
+ * },
12323
+ * "allow_cancellation": true,
12324
+ * "disabled_message": "Cancellation is disabled for this service."
12325
+ * },
12326
+ * "change_policy_text": "Appointments within 48 hours cannot be canceled or rescheduled online. Please call our office.",
12327
+ * "created_at": "2025-02-17T17:49:19Z",
12328
+ * "duration": "PT1H30M",
12329
+ * "id": "srv_d025a96ac0c6",
12330
+ * "name": "Initial Consult",
11119
12331
  * "object": "service",
11120
12332
  * "rescheduling_policy": {
11121
12333
  * "advance_notice": {
@@ -11528,7 +12740,34 @@ interface components {
11528
12740
  /** @description Exceptions for recurring block instances (in naive date time format). */
11529
12741
  exception_dates?: string[];
11530
12742
  /** @description The recurrence rule for the block (or null if there is no recurrence). */
11531
- recurrence_rule?: components["schemas"]["RecurrenceRule"] | null;
12743
+ recurrence_rule?: {
12744
+ /**
12745
+ * @description The days of the week on which the recurrence occurs.
12746
+ * @example [
12747
+ * "mo",
12748
+ * "we",
12749
+ * "fr"
12750
+ * ]
12751
+ */
12752
+ byday?: string[];
12753
+ /** @description Number of occurrences at which to end the recurrence. */
12754
+ count?: number | null;
12755
+ /**
12756
+ * @description The frequency of the recurrence.
12757
+ * @enum {string}
12758
+ */
12759
+ freq: "daily" | "weekly";
12760
+ /**
12761
+ * @description How often the recurrence rule repeats.
12762
+ * @example 2
12763
+ */
12764
+ interval?: number;
12765
+ /**
12766
+ * @description Date at which to end the recurrence (in ISO-8601 format).
12767
+ * @example 2024-01-02
12768
+ */
12769
+ until?: Record<string, never> | null;
12770
+ } | null;
11532
12771
  /** @description The ID of the service for the block. Required when `attachment_type` is `service_provider`. */
11533
12772
  service_id?: string | null;
11534
12773
  /**
@@ -11636,6 +12875,9 @@ interface components {
11636
12875
  * "first_name": "John",
11637
12876
  * "id": "prov_d025a96ac0c6",
11638
12877
  * "last_name": "Smith",
12878
+ * "metadata": {
12879
+ * "external_id": "123"
12880
+ * },
11639
12881
  * "object": "provider",
11640
12882
  * "updated_at": "2017-09-13T10:11:12Z"
11641
12883
  * },
@@ -11797,6 +13039,9 @@ interface components {
11797
13039
  * "first_name": "John",
11798
13040
  * "id": "prov_d025a96ac0c6",
11799
13041
  * "last_name": "Smith",
13042
+ * "metadata": {
13043
+ * "external_id": "123"
13044
+ * },
11800
13045
  * "object": "provider",
11801
13046
  * "updated_at": "2017-09-13T10:11:12Z"
11802
13047
  * },
@@ -11836,6 +13081,9 @@ interface components {
11836
13081
  * "first_name": "John",
11837
13082
  * "id": "prov_d025a96ac0c6",
11838
13083
  * "last_name": "Smith",
13084
+ * "metadata": {
13085
+ * "external_id": "123"
13086
+ * },
11839
13087
  * "object": "provider",
11840
13088
  * "updated_at": "2017-09-13T10:11:12Z"
11841
13089
  * }
@@ -11853,6 +13101,161 @@ interface components {
11853
13101
  data: components["schemas"]["Provider"][];
11854
13102
  meta: components["schemas"]["PaginationMeta"];
11855
13103
  };
13104
+ /**
13105
+ * BlockDeletedEventData
13106
+ * @description This is an object representing data for the block deleted event.
13107
+ * @example {
13108
+ * "object": {
13109
+ * "all_day": false,
13110
+ * "attachment_type": "provider",
13111
+ * "attachments": [
13112
+ * "prov_d025a96ac0c6"
13113
+ * ],
13114
+ * "created_at": "2017-09-12T12:34:55Z",
13115
+ * "end_date": "2025-10-27",
13116
+ * "end_time": "17:00",
13117
+ * "exception_dates": [
13118
+ * "2025-10-27T09:00:00"
13119
+ * ],
13120
+ * "id": "blk_d025a96ac0c6",
13121
+ * "object": "block",
13122
+ * "recurrence_rule": {
13123
+ * "byday": [
13124
+ * "mo",
13125
+ * "we",
13126
+ * "fr"
13127
+ * ],
13128
+ * "freq": "weekly"
13129
+ * },
13130
+ * "service_id": null,
13131
+ * "start_date": "2025-10-27",
13132
+ * "start_time": "09:00",
13133
+ * "time_zone": "America/New_York",
13134
+ * "title": "Team Meeting",
13135
+ * "updated_at": "2017-09-13T10:11:12Z"
13136
+ * },
13137
+ * "type": "block.deleted"
13138
+ * }
13139
+ */
13140
+ BlockDeletedEventData: {
13141
+ /**
13142
+ * Block
13143
+ * @description This is an object representing a range of blocked time for a provider, service, service provider, or location.
13144
+ * @example {
13145
+ * "all_day": false,
13146
+ * "attachment_type": "provider",
13147
+ * "attachments": [
13148
+ * "prov_d025a96ac0c6"
13149
+ * ],
13150
+ * "created_at": "2017-09-12T12:34:55Z",
13151
+ * "end_date": "2025-10-27",
13152
+ * "end_time": "17:00",
13153
+ * "exception_dates": [
13154
+ * "2025-10-27T09:00:00"
13155
+ * ],
13156
+ * "id": "blk_d025a96ac0c6",
13157
+ * "object": "block",
13158
+ * "recurrence_rule": {
13159
+ * "byday": [
13160
+ * "mo",
13161
+ * "we",
13162
+ * "fr"
13163
+ * ],
13164
+ * "freq": "weekly"
13165
+ * },
13166
+ * "service_id": null,
13167
+ * "start_date": "2025-10-27",
13168
+ * "start_time": "09:00",
13169
+ * "time_zone": "America/New_York",
13170
+ * "title": "Team Meeting",
13171
+ * "updated_at": "2017-09-13T10:11:12Z"
13172
+ * }
13173
+ */
13174
+ object: {
13175
+ /** @description Whether the block is all day. */
13176
+ all_day: boolean;
13177
+ /**
13178
+ * @description The type of attachment for the block.
13179
+ * @enum {string}
13180
+ */
13181
+ attachment_type: "location" | "service" | "provider" | "service_provider";
13182
+ /** @description The resources to which this block is attached. These can be service IDs (to block availabilty for all providers on a service), provider IDs (to block availability for a specific provider), or location IDs (to block availability for a specific location). */
13183
+ attachments: string[];
13184
+ /**
13185
+ * Format: date-time
13186
+ * @description Time at which the object was created.
13187
+ */
13188
+ created_at: string;
13189
+ /**
13190
+ * Format: date
13191
+ * @description The end date of the block.
13192
+ */
13193
+ end_date: string;
13194
+ /** @description The end time of the block. */
13195
+ end_time: string | null;
13196
+ /** @description The exception dates for the block. */
13197
+ exception_dates: string[];
13198
+ /** @description Unique identifier for the object. */
13199
+ id: string;
13200
+ /**
13201
+ * @description String representing the object's type.
13202
+ * @enum {string}
13203
+ */
13204
+ object: "block";
13205
+ /** @description The recurrence rule for the block (or null if there is no recurrence). */
13206
+ recurrence_rule: {
13207
+ /**
13208
+ * @description The days of the week on which the recurrence occurs.
13209
+ * @example [
13210
+ * "mo",
13211
+ * "we",
13212
+ * "fr"
13213
+ * ]
13214
+ */
13215
+ byday?: string[];
13216
+ /** @description Number of occurrences at which to end the recurrence. */
13217
+ count?: number | null;
13218
+ /**
13219
+ * @description The frequency of the recurrence.
13220
+ * @enum {string}
13221
+ */
13222
+ freq: "daily" | "weekly";
13223
+ /**
13224
+ * @description How often the recurrence rule repeats.
13225
+ * @example 2
13226
+ */
13227
+ interval?: number;
13228
+ /**
13229
+ * @description Date at which to end the recurrence (in ISO-8601 format).
13230
+ * @example 2024-01-02
13231
+ */
13232
+ until?: Record<string, never> | null;
13233
+ } | null;
13234
+ /** @description The ID of the service for the block. Required when `attachment_type` is `service_provider`. */
13235
+ service_id: string | null;
13236
+ /**
13237
+ * Format: date
13238
+ * @description The start date of the block.
13239
+ */
13240
+ start_date: string;
13241
+ /** @description The start time of the block. */
13242
+ start_time: string | null;
13243
+ /** @description The time zone of the block. */
13244
+ time_zone: string | null;
13245
+ /** @description The title of the block. */
13246
+ title: string | null;
13247
+ /**
13248
+ * Format: date-time
13249
+ * @description Time at which the object was last updated.
13250
+ */
13251
+ updated_at: string;
13252
+ };
13253
+ /**
13254
+ * @description The event type. (enum property replaced by openapi-typescript)
13255
+ * @enum {string}
13256
+ */
13257
+ type: "block.deleted";
13258
+ };
11856
13259
  /**
11857
13260
  * BookingPolicy
11858
13261
  * @description A booking policy defines the rules for booking a service from public booking interfaces.
@@ -12160,6 +13563,9 @@ interface components {
12160
13563
  * "first_name": "John",
12161
13564
  * "id": "prov_d025a96ac0c6",
12162
13565
  * "last_name": "Smith",
13566
+ * "metadata": {
13567
+ * "external_id": "123"
13568
+ * },
12163
13569
  * "object": "provider",
12164
13570
  * "updated_at": "2017-09-13T10:11:12Z"
12165
13571
  * }
@@ -12400,33 +13806,274 @@ interface components {
12400
13806
  /** @description The user's last name. */
12401
13807
  last_name: string;
12402
13808
  /**
12403
- * @description String representing the object's type.
13809
+ * @description String representing the object's type.
13810
+ * @enum {string}
13811
+ */
13812
+ object: "user";
13813
+ /**
13814
+ * Format: date-time
13815
+ * @description Time at which the object was last updated.
13816
+ */
13817
+ updated_at: string;
13818
+ };
13819
+ /**
13820
+ * ConnectedAccountCreatedEventData
13821
+ * @description This is an object representing data for the connected account created event.
13822
+ * @example {
13823
+ * "object": {
13824
+ * "connection_scope": "user",
13825
+ * "created_at": "2025-03-12T12:34:55Z",
13826
+ * "display_name": "John Doe",
13827
+ * "email": "user@example.com",
13828
+ * "external_subject": "123456789",
13829
+ * "id": "cact_d025a96ac0c6",
13830
+ * "object": "connected_account",
13831
+ * "provider": "google",
13832
+ * "status": "active",
13833
+ * "updated_at": "2025-03-13T10:11:12Z",
13834
+ * "user_id": "user_d025a96ac0c6"
13835
+ * },
13836
+ * "type": "connected_account.created"
13837
+ * }
13838
+ */
13839
+ ConnectedAccountCreatedEventData: {
13840
+ /**
13841
+ * ConnectedAccount
13842
+ * @description This is an object representing a connected calendar account (e.g., a Google Calendar integration).
13843
+ * @example {
13844
+ * "connection_scope": "user",
13845
+ * "created_at": "2025-03-12T12:34:55Z",
13846
+ * "display_name": "John Doe",
13847
+ * "email": "user@example.com",
13848
+ * "external_subject": "123456789",
13849
+ * "id": "cact_d025a96ac0c6",
13850
+ * "object": "connected_account",
13851
+ * "provider": "google",
13852
+ * "status": "active",
13853
+ * "updated_at": "2025-03-13T10:11:12Z",
13854
+ * "user_id": "user_d025a96ac0c6"
13855
+ * }
13856
+ */
13857
+ object: {
13858
+ /**
13859
+ * @description The scope of this connection. 'user' means owned by a specific user, 'account' means shared across the account.
13860
+ * @enum {string}
13861
+ */
13862
+ connection_scope: "user" | "account";
13863
+ /**
13864
+ * Format: date-time
13865
+ * @description Time at which the object was created.
13866
+ */
13867
+ created_at: string;
13868
+ /** @description The display name from the provider. */
13869
+ display_name: string | null;
13870
+ /** @description The email address associated with this connected account. */
13871
+ email: string;
13872
+ /** @description The unique identifier for this account at the provider. */
13873
+ external_subject: string;
13874
+ /** @description Unique identifier for the object. */
13875
+ id: string;
13876
+ /**
13877
+ * @description String representing the object's type.
13878
+ * @enum {string}
13879
+ */
13880
+ object: "connected_account";
13881
+ /**
13882
+ * @description The calendar provider for this connected account.
13883
+ * @enum {string}
13884
+ */
13885
+ provider: "google";
13886
+ /**
13887
+ * @description The current status of the connection. 'active' means the connection is working, 'reconnect_required' means the OAuth token has failed and needs reauthorization.
13888
+ * @enum {string}
13889
+ */
13890
+ status: "active" | "reconnect_required";
13891
+ /**
13892
+ * Format: date-time
13893
+ * @description Time at which the object was last updated.
13894
+ */
13895
+ updated_at: string;
13896
+ /** @description The ID of the user who owns this connected account. */
13897
+ user_id: string | null;
13898
+ };
13899
+ /**
13900
+ * @description The event type. (enum property replaced by openapi-typescript)
13901
+ * @enum {string}
13902
+ */
13903
+ type: "connected_account.created";
13904
+ };
13905
+ /**
13906
+ * CancellationReasonsResponse
13907
+ * @description Response schema for multiple cancellation reasons
13908
+ * @example {
13909
+ * "data": [
13910
+ * {
13911
+ * "id": "cr_a1b2c3d4e5f6",
13912
+ * "name": "Distance too far",
13913
+ * "object": "cancellation_reason",
13914
+ * "sort_order": 1
13915
+ * }
13916
+ * ]
13917
+ * }
13918
+ */
13919
+ CancellationReasonsResponse: {
13920
+ /** @description The cancellation reasons details */
13921
+ data: components["schemas"]["CancellationReason"][];
13922
+ };
13923
+ /**
13924
+ * BlockCreatedEventData
13925
+ * @description This is an object representing data for the block created event.
13926
+ * @example {
13927
+ * "object": {
13928
+ * "all_day": false,
13929
+ * "attachment_type": "provider",
13930
+ * "attachments": [
13931
+ * "prov_d025a96ac0c6"
13932
+ * ],
13933
+ * "created_at": "2017-09-12T12:34:55Z",
13934
+ * "end_date": "2025-10-27",
13935
+ * "end_time": "17:00",
13936
+ * "exception_dates": [
13937
+ * "2025-10-27T09:00:00"
13938
+ * ],
13939
+ * "id": "blk_d025a96ac0c6",
13940
+ * "object": "block",
13941
+ * "recurrence_rule": {
13942
+ * "byday": [
13943
+ * "mo",
13944
+ * "we",
13945
+ * "fr"
13946
+ * ],
13947
+ * "freq": "weekly"
13948
+ * },
13949
+ * "service_id": null,
13950
+ * "start_date": "2025-10-27",
13951
+ * "start_time": "09:00",
13952
+ * "time_zone": "America/New_York",
13953
+ * "title": "Team Meeting",
13954
+ * "updated_at": "2017-09-13T10:11:12Z"
13955
+ * },
13956
+ * "type": "block.created"
13957
+ * }
13958
+ */
13959
+ BlockCreatedEventData: {
13960
+ /**
13961
+ * Block
13962
+ * @description This is an object representing a range of blocked time for a provider, service, service provider, or location.
13963
+ * @example {
13964
+ * "all_day": false,
13965
+ * "attachment_type": "provider",
13966
+ * "attachments": [
13967
+ * "prov_d025a96ac0c6"
13968
+ * ],
13969
+ * "created_at": "2017-09-12T12:34:55Z",
13970
+ * "end_date": "2025-10-27",
13971
+ * "end_time": "17:00",
13972
+ * "exception_dates": [
13973
+ * "2025-10-27T09:00:00"
13974
+ * ],
13975
+ * "id": "blk_d025a96ac0c6",
13976
+ * "object": "block",
13977
+ * "recurrence_rule": {
13978
+ * "byday": [
13979
+ * "mo",
13980
+ * "we",
13981
+ * "fr"
13982
+ * ],
13983
+ * "freq": "weekly"
13984
+ * },
13985
+ * "service_id": null,
13986
+ * "start_date": "2025-10-27",
13987
+ * "start_time": "09:00",
13988
+ * "time_zone": "America/New_York",
13989
+ * "title": "Team Meeting",
13990
+ * "updated_at": "2017-09-13T10:11:12Z"
13991
+ * }
13992
+ */
13993
+ object: {
13994
+ /** @description Whether the block is all day. */
13995
+ all_day: boolean;
13996
+ /**
13997
+ * @description The type of attachment for the block.
13998
+ * @enum {string}
13999
+ */
14000
+ attachment_type: "location" | "service" | "provider" | "service_provider";
14001
+ /** @description The resources to which this block is attached. These can be service IDs (to block availabilty for all providers on a service), provider IDs (to block availability for a specific provider), or location IDs (to block availability for a specific location). */
14002
+ attachments: string[];
14003
+ /**
14004
+ * Format: date-time
14005
+ * @description Time at which the object was created.
14006
+ */
14007
+ created_at: string;
14008
+ /**
14009
+ * Format: date
14010
+ * @description The end date of the block.
14011
+ */
14012
+ end_date: string;
14013
+ /** @description The end time of the block. */
14014
+ end_time: string | null;
14015
+ /** @description The exception dates for the block. */
14016
+ exception_dates: string[];
14017
+ /** @description Unique identifier for the object. */
14018
+ id: string;
14019
+ /**
14020
+ * @description String representing the object's type.
14021
+ * @enum {string}
14022
+ */
14023
+ object: "block";
14024
+ /** @description The recurrence rule for the block (or null if there is no recurrence). */
14025
+ recurrence_rule: {
14026
+ /**
14027
+ * @description The days of the week on which the recurrence occurs.
14028
+ * @example [
14029
+ * "mo",
14030
+ * "we",
14031
+ * "fr"
14032
+ * ]
14033
+ */
14034
+ byday?: string[];
14035
+ /** @description Number of occurrences at which to end the recurrence. */
14036
+ count?: number | null;
14037
+ /**
14038
+ * @description The frequency of the recurrence.
14039
+ * @enum {string}
14040
+ */
14041
+ freq: "daily" | "weekly";
14042
+ /**
14043
+ * @description How often the recurrence rule repeats.
14044
+ * @example 2
14045
+ */
14046
+ interval?: number;
14047
+ /**
14048
+ * @description Date at which to end the recurrence (in ISO-8601 format).
14049
+ * @example 2024-01-02
14050
+ */
14051
+ until?: Record<string, never> | null;
14052
+ } | null;
14053
+ /** @description The ID of the service for the block. Required when `attachment_type` is `service_provider`. */
14054
+ service_id: string | null;
14055
+ /**
14056
+ * Format: date
14057
+ * @description The start date of the block.
14058
+ */
14059
+ start_date: string;
14060
+ /** @description The start time of the block. */
14061
+ start_time: string | null;
14062
+ /** @description The time zone of the block. */
14063
+ time_zone: string | null;
14064
+ /** @description The title of the block. */
14065
+ title: string | null;
14066
+ /**
14067
+ * Format: date-time
14068
+ * @description Time at which the object was last updated.
14069
+ */
14070
+ updated_at: string;
14071
+ };
14072
+ /**
14073
+ * @description The event type. (enum property replaced by openapi-typescript)
12404
14074
  * @enum {string}
12405
14075
  */
12406
- object: "user";
12407
- /**
12408
- * Format: date-time
12409
- * @description Time at which the object was last updated.
12410
- */
12411
- updated_at: string;
12412
- };
12413
- /**
12414
- * CancellationReasonsResponse
12415
- * @description Response schema for multiple cancellation reasons
12416
- * @example {
12417
- * "data": [
12418
- * {
12419
- * "id": "cr_a1b2c3d4e5f6",
12420
- * "name": "Distance too far",
12421
- * "object": "cancellation_reason",
12422
- * "sort_order": 1
12423
- * }
12424
- * ]
12425
- * }
12426
- */
12427
- CancellationReasonsResponse: {
12428
- /** @description The cancellation reasons details */
12429
- data: components["schemas"]["CancellationReason"][];
14076
+ type: "block.created";
12430
14077
  };
12431
14078
  /**
12432
14079
  * ServicesResponse
@@ -12578,6 +14225,17 @@ interface components {
12578
14225
  ProviderScheduleResponse: {
12579
14226
  data: components["schemas"]["ProviderSchedule"];
12580
14227
  };
14228
+ /**
14229
+ * UpdateAccountUserRequest
14230
+ * @description Request schema for updating a user in an account
14231
+ * @example {
14232
+ * "passive": true
14233
+ * }
14234
+ */
14235
+ UpdateAccountUserRequest: {
14236
+ /** @description Whether this user is passive. Passive users do not receive direct email notifications (e.g., OAuth reconnection notices). Use this for platform/headless scenarios where the platform handles user communication. */
14237
+ passive?: boolean;
14238
+ };
12581
14239
  /**
12582
14240
  * AdvanceNoticePolicy
12583
14241
  * @description A policy for requiring minimum advance notice.
@@ -12685,6 +14343,9 @@ interface components {
12685
14343
  * "first_name": "John",
12686
14344
  * "id": "prov_d025a96ac0c6",
12687
14345
  * "last_name": "Smith",
14346
+ * "metadata": {
14347
+ * "external_id": "123"
14348
+ * },
12688
14349
  * "object": "provider",
12689
14350
  * "updated_at": "2017-09-13T10:11:12Z"
12690
14351
  * },
@@ -12901,6 +14562,9 @@ interface components {
12901
14562
  * "first_name": "John",
12902
14563
  * "id": "prov_d025a96ac0c6",
12903
14564
  * "last_name": "Smith",
14565
+ * "metadata": {
14566
+ * "external_id": "123"
14567
+ * },
12904
14568
  * "object": "provider",
12905
14569
  * "updated_at": "2017-09-13T10:11:12Z"
12906
14570
  * },
@@ -13358,6 +15022,9 @@ interface components {
13358
15022
  * "first_name": "John",
13359
15023
  * "id": "prov_d025a96ac0c6",
13360
15024
  * "last_name": "Smith",
15025
+ * "metadata": {
15026
+ * "external_id": "123"
15027
+ * },
13361
15028
  * "object": "provider",
13362
15029
  * "updated_at": "2017-09-13T10:11:12Z"
13363
15030
  * }
@@ -13376,6 +15043,8 @@ interface components {
13376
15043
  id: string;
13377
15044
  /** @description The provider's last name. */
13378
15045
  last_name: string;
15046
+ /** @description Set of key-value pairs attached to this provider. Maximum size is 16 KB. */
15047
+ metadata?: Record<string, never>;
13379
15048
  /**
13380
15049
  * @description String representing the object's type.
13381
15050
  * @enum {string}
@@ -13906,6 +15575,9 @@ interface components {
13906
15575
  * "first_name": "John",
13907
15576
  * "id": "prov_d025a96ac0c6",
13908
15577
  * "last_name": "Smith",
15578
+ * "metadata": {
15579
+ * "external_id": "123"
15580
+ * },
13909
15581
  * "object": "provider",
13910
15582
  * "updated_at": "2017-09-13T10:11:12Z"
13911
15583
  * }
@@ -13924,6 +15596,8 @@ interface components {
13924
15596
  id: string;
13925
15597
  /** @description The provider's last name. */
13926
15598
  last_name: string;
15599
+ /** @description Set of key-value pairs attached to this provider. Maximum size is 16 KB. */
15600
+ metadata?: Record<string, never>;
13927
15601
  /**
13928
15602
  * @description String representing the object's type.
13929
15603
  * @enum {string}
@@ -14097,7 +15771,34 @@ interface components {
14097
15771
  */
14098
15772
  object: "block";
14099
15773
  /** @description The recurrence rule for the block (or null if there is no recurrence). */
14100
- recurrence_rule: components["schemas"]["RecurrenceRule"] | null;
15774
+ recurrence_rule: {
15775
+ /**
15776
+ * @description The days of the week on which the recurrence occurs.
15777
+ * @example [
15778
+ * "mo",
15779
+ * "we",
15780
+ * "fr"
15781
+ * ]
15782
+ */
15783
+ byday?: string[];
15784
+ /** @description Number of occurrences at which to end the recurrence. */
15785
+ count?: number | null;
15786
+ /**
15787
+ * @description The frequency of the recurrence.
15788
+ * @enum {string}
15789
+ */
15790
+ freq: "daily" | "weekly";
15791
+ /**
15792
+ * @description How often the recurrence rule repeats.
15793
+ * @example 2
15794
+ */
15795
+ interval?: number;
15796
+ /**
15797
+ * @description Date at which to end the recurrence (in ISO-8601 format).
15798
+ * @example 2024-01-02
15799
+ */
15800
+ until?: Record<string, never> | null;
15801
+ } | null;
14101
15802
  /** @description The ID of the service for the block. Required when `attachment_type` is `service_provider`. */
14102
15803
  service_id: string | null;
14103
15804
  /**
@@ -14503,6 +16204,9 @@ interface components {
14503
16204
  * "first_name": "John",
14504
16205
  * "id": "prov_d025a96ac0c6",
14505
16206
  * "last_name": "Smith",
16207
+ * "metadata": {
16208
+ * "external_id": "123"
16209
+ * },
14506
16210
  * "object": "provider",
14507
16211
  * "updated_at": "2017-09-13T10:11:12Z"
14508
16212
  * },
@@ -14719,6 +16423,9 @@ interface components {
14719
16423
  * "first_name": "John",
14720
16424
  * "id": "prov_d025a96ac0c6",
14721
16425
  * "last_name": "Smith",
16426
+ * "metadata": {
16427
+ * "external_id": "123"
16428
+ * },
14722
16429
  * "object": "provider",
14723
16430
  * "updated_at": "2017-09-13T10:11:12Z"
14724
16431
  * },
@@ -15176,6 +16883,9 @@ interface components {
15176
16883
  * "first_name": "John",
15177
16884
  * "id": "prov_d025a96ac0c6",
15178
16885
  * "last_name": "Smith",
16886
+ * "metadata": {
16887
+ * "external_id": "123"
16888
+ * },
15179
16889
  * "object": "provider",
15180
16890
  * "updated_at": "2017-09-13T10:11:12Z"
15181
16891
  * }
@@ -15194,6 +16904,8 @@ interface components {
15194
16904
  id: string;
15195
16905
  /** @description The provider's last name. */
15196
16906
  last_name: string;
16907
+ /** @description Set of key-value pairs attached to this provider. Maximum size is 16 KB. */
16908
+ metadata?: Record<string, never>;
15197
16909
  /**
15198
16910
  * @description String representing the object's type.
15199
16911
  * @enum {string}
@@ -15951,6 +17663,9 @@ interface components {
15951
17663
  * "first_name": "John",
15952
17664
  * "id": "prov_d025a96ac0c6",
15953
17665
  * "last_name": "Smith",
17666
+ * "metadata": {
17667
+ * "external_id": "123"
17668
+ * },
15954
17669
  * "object": "provider",
15955
17670
  * "updated_at": "2017-09-13T10:11:12Z"
15956
17671
  * },
@@ -16408,6 +18123,9 @@ interface components {
16408
18123
  * "first_name": "John",
16409
18124
  * "id": "prov_d025a96ac0c6",
16410
18125
  * "last_name": "Smith",
18126
+ * "metadata": {
18127
+ * "external_id": "123"
18128
+ * },
16411
18129
  * "object": "provider",
16412
18130
  * "updated_at": "2017-09-13T10:11:12Z"
16413
18131
  * }
@@ -16426,6 +18144,8 @@ interface components {
16426
18144
  id: string;
16427
18145
  /** @description The provider's last name. */
16428
18146
  last_name: string;
18147
+ /** @description Set of key-value pairs attached to this provider. Maximum size is 16 KB. */
18148
+ metadata?: Record<string, never>;
16429
18149
  /**
16430
18150
  * @description String representing the object's type.
16431
18151
  * @enum {string}
@@ -16998,6 +18718,7 @@ interface components {
16998
18718
  * "data": [
16999
18719
  * {
17000
18720
  * "object": "account_user",
18721
+ * "passive": false,
17001
18722
  * "roles": [
17002
18723
  * {
17003
18724
  * "id": "role_123456789012",
@@ -17023,6 +18744,65 @@ interface components {
17023
18744
  /** @description The account users details */
17024
18745
  data?: components["schemas"]["AccountUser"][];
17025
18746
  };
18747
+ /**
18748
+ * ConnectedAccount
18749
+ * @description This is an object representing a connected calendar account (e.g., a Google Calendar integration).
18750
+ * @example {
18751
+ * "connection_scope": "user",
18752
+ * "created_at": "2025-03-12T12:34:55Z",
18753
+ * "display_name": "John Doe",
18754
+ * "email": "user@example.com",
18755
+ * "external_subject": "123456789",
18756
+ * "id": "cact_d025a96ac0c6",
18757
+ * "object": "connected_account",
18758
+ * "provider": "google",
18759
+ * "status": "active",
18760
+ * "updated_at": "2025-03-13T10:11:12Z",
18761
+ * "user_id": "user_d025a96ac0c6"
18762
+ * }
18763
+ */
18764
+ ConnectedAccount: {
18765
+ /**
18766
+ * @description The scope of this connection. 'user' means owned by a specific user, 'account' means shared across the account.
18767
+ * @enum {string}
18768
+ */
18769
+ connection_scope: "user" | "account";
18770
+ /**
18771
+ * Format: date-time
18772
+ * @description Time at which the object was created.
18773
+ */
18774
+ created_at: string;
18775
+ /** @description The display name from the provider. */
18776
+ display_name: string | null;
18777
+ /** @description The email address associated with this connected account. */
18778
+ email: string;
18779
+ /** @description The unique identifier for this account at the provider. */
18780
+ external_subject: string;
18781
+ /** @description Unique identifier for the object. */
18782
+ id: string;
18783
+ /**
18784
+ * @description String representing the object's type.
18785
+ * @enum {string}
18786
+ */
18787
+ object: "connected_account";
18788
+ /**
18789
+ * @description The calendar provider for this connected account.
18790
+ * @enum {string}
18791
+ */
18792
+ provider: "google";
18793
+ /**
18794
+ * @description The current status of the connection. 'active' means the connection is working, 'reconnect_required' means the OAuth token has failed and needs reauthorization.
18795
+ * @enum {string}
18796
+ */
18797
+ status: "active" | "reconnect_required";
18798
+ /**
18799
+ * Format: date-time
18800
+ * @description Time at which the object was last updated.
18801
+ */
18802
+ updated_at: string;
18803
+ /** @description The ID of the user who owns this connected account. */
18804
+ user_id: string | null;
18805
+ };
17026
18806
  /**
17027
18807
  * CreateServiceRequest
17028
18808
  * @description Request schema for creating a service.
@@ -17345,6 +19125,9 @@ interface components {
17345
19125
  * "first_name": "John",
17346
19126
  * "id": "prov_d025a96ac0c6",
17347
19127
  * "last_name": "Smith",
19128
+ * "metadata": {
19129
+ * "external_id": "123"
19130
+ * },
17348
19131
  * "object": "provider",
17349
19132
  * "updated_at": "2017-09-13T10:11:12Z"
17350
19133
  * },
@@ -17561,6 +19344,9 @@ interface components {
17561
19344
  * "first_name": "John",
17562
19345
  * "id": "prov_d025a96ac0c6",
17563
19346
  * "last_name": "Smith",
19347
+ * "metadata": {
19348
+ * "external_id": "123"
19349
+ * },
17564
19350
  * "object": "provider",
17565
19351
  * "updated_at": "2017-09-13T10:11:12Z"
17566
19352
  * },
@@ -18018,6 +19804,9 @@ interface components {
18018
19804
  * "first_name": "John",
18019
19805
  * "id": "prov_d025a96ac0c6",
18020
19806
  * "last_name": "Smith",
19807
+ * "metadata": {
19808
+ * "external_id": "123"
19809
+ * },
18021
19810
  * "object": "provider",
18022
19811
  * "updated_at": "2017-09-13T10:11:12Z"
18023
19812
  * }
@@ -18036,6 +19825,8 @@ interface components {
18036
19825
  id: string;
18037
19826
  /** @description The provider's last name. */
18038
19827
  last_name: string;
19828
+ /** @description Set of key-value pairs attached to this provider. Maximum size is 16 KB. */
19829
+ metadata?: Record<string, never>;
18039
19830
  /**
18040
19831
  * @description String representing the object's type.
18041
19832
  * @enum {string}
@@ -19031,6 +20822,70 @@ interface operations {
19031
20822
  };
19032
20823
  };
19033
20824
  };
20825
+ updateAccountUser: {
20826
+ parameters: {
20827
+ query?: never;
20828
+ header?: {
20829
+ /**
20830
+ * @description When authenticating with a platform token, specifies the account ID for the request
20831
+ * @example acct_1234567890
20832
+ */
20833
+ "X-SavvyCal-Account"?: string;
20834
+ };
20835
+ path: {
20836
+ /**
20837
+ * @description The user's unique identifier
20838
+ * @example user_abcdef123456
20839
+ */
20840
+ user_id: string;
20841
+ };
20842
+ cookie?: never;
20843
+ };
20844
+ /** @description User update details */
20845
+ requestBody?: {
20846
+ content: {
20847
+ "application/json": components["schemas"]["UpdateAccountUserRequest"];
20848
+ };
20849
+ };
20850
+ responses: {
20851
+ /** @description User updated */
20852
+ 200: {
20853
+ headers: {
20854
+ [name: string]: unknown;
20855
+ };
20856
+ content: {
20857
+ "application/json": components["schemas"]["AccountUserResponse"];
20858
+ };
20859
+ };
20860
+ /** @description Unauthorized */
20861
+ 401: {
20862
+ headers: {
20863
+ [name: string]: unknown;
20864
+ };
20865
+ content: {
20866
+ "application/json": components["schemas"]["UnauthorizedResponse"];
20867
+ };
20868
+ };
20869
+ /** @description GenericError */
20870
+ 404: {
20871
+ headers: {
20872
+ [name: string]: unknown;
20873
+ };
20874
+ content: {
20875
+ "application/json": components["schemas"]["GenericErrorResponse"];
20876
+ };
20877
+ };
20878
+ /** @description Unprocessable Entity */
20879
+ 422: {
20880
+ headers: {
20881
+ [name: string]: unknown;
20882
+ };
20883
+ content: {
20884
+ "application/json": components["schemas"]["JsonErrorResponse"];
20885
+ };
20886
+ };
20887
+ };
20888
+ };
19034
20889
  getClient: {
19035
20890
  parameters: {
19036
20891
  query?: never;
@@ -19818,10 +21673,16 @@ interface operations {
19818
21673
  */
19819
21674
  time_zone?: string;
19820
21675
  /**
19821
- * @description Filter slot by specific provider ID
21676
+ * @deprecated
21677
+ * @description Filter slot by specific provider ID (deprecated, use provider_ids)
19822
21678
  * @example prv_123456789012
19823
21679
  */
19824
21680
  provider_id?: string;
21681
+ /**
21682
+ * @description Filter slots by provider IDs (comma-separated)
21683
+ * @example prv_123456789012,prv_234567890123
21684
+ */
21685
+ provider_ids?: string;
19825
21686
  };
19826
21687
  header?: {
19827
21688
  /**
@@ -20436,6 +22297,10 @@ interface operations {
20436
22297
  page_size?: number;
20437
22298
  /** @description Only return providers that match the search query (name or email). */
20438
22299
  search?: string;
22300
+ /** @description Filter providers by metadata using bracket notation. See [Metadata Filtering](https://developers.savvycal.app/metadata-filtering) for more details. */
22301
+ metadata?: {
22302
+ [key: string]: unknown;
22303
+ };
20439
22304
  };
20440
22305
  header?: {
20441
22306
  /**
@@ -20546,10 +22411,16 @@ interface operations {
20546
22411
  */
20547
22412
  time_zone?: string;
20548
22413
  /**
20549
- * @description Filter slots by specific provider ID
22414
+ * @deprecated
22415
+ * @description Filter slots by specific provider ID (deprecated, use provider_ids)
20550
22416
  * @example prv_123456789012
20551
22417
  */
20552
22418
  provider_id?: string;
22419
+ /**
22420
+ * @description Filter slots by provider IDs (comma-separated)
22421
+ * @example prv_123456789012,prv_234567890123
22422
+ */
22423
+ provider_ids?: string;
20553
22424
  };
20554
22425
  header?: {
20555
22426
  /**
@@ -20614,10 +22485,10 @@ interface operations {
20614
22485
  page?: number;
20615
22486
  /** @description Number of items per page */
20616
22487
  page_size?: number;
20617
- /** @description Only return provider schedules for the provider specified by this provider ID. */
20618
- provider?: string;
20619
- /** @description Only return provider schedules for the location specified by this location ID. */
20620
- location?: string;
22488
+ /** @description Filter by provider ID(s). Accepts a single ID or comma-delimited list of IDs. */
22489
+ provider_ids?: string;
22490
+ /** @description Filter by location ID(s). Accepts a single ID or comma-delimited list of IDs. */
22491
+ location_ids?: string;
20621
22492
  };
20622
22493
  header?: {
20623
22494
  /**
@@ -20906,11 +22777,28 @@ interface operations {
20906
22777
  page_size?: number;
20907
22778
  /** @description Whether to include sensitive fields (such as client name, email, and phone) */
20908
22779
  include_sensitive?: boolean;
20909
- /**
20910
- * @description A JSON-encoded list of filters
20911
- * @example [{"field":"period","op":"==","value":"upcoming"}]
20912
- */
20913
- filters?: string[];
22780
+ /** @description Filter by time period. */
22781
+ period?: "upcoming" | "past";
22782
+ /** @description Filter by status. */
22783
+ status?: "scheduled" | "canceled";
22784
+ /** @description Filter by appointment type. */
22785
+ appointment_type?: "virtual" | "in_person";
22786
+ /** @description Filter by provider ID(s). Accepts a single ID or comma-delimited list. */
22787
+ provider_ids?: string;
22788
+ /** @description Filter by service ID(s). Accepts a single ID or comma-delimited list. */
22789
+ service_ids?: string;
22790
+ /** @description Filter by client ID(s). Accepts a single ID or comma-delimited list. */
22791
+ client_ids?: string;
22792
+ /** @description Filter by location ID(s). Accepts a single ID or comma-delimited list. */
22793
+ location_ids?: string;
22794
+ /** @description Filter for appointments starting on or after this time (ISO 8601 format). */
22795
+ start_at_min?: string;
22796
+ /** @description Filter for appointments starting on or before this time (ISO 8601 format). */
22797
+ start_at_max?: string;
22798
+ /** @description Filter for appointments ending on or after this time (ISO 8601 format). */
22799
+ end_at_min?: string;
22800
+ /** @description Filter for appointments ending on or before this time (ISO 8601 format). */
22801
+ end_at_max?: string;
20914
22802
  /**
20915
22803
  * @description A field to order by
20916
22804
  * @example ?order_by[]=start_at_utc
@@ -21298,6 +23186,11 @@ interface operations {
21298
23186
  * @example "America/New_York"
21299
23187
  */
21300
23188
  time_zone?: string;
23189
+ /**
23190
+ * @description Filter slots by provider IDs (comma-separated)
23191
+ * @example prv_123456789012,prv_234567890123
23192
+ */
23193
+ provider_ids?: string;
21301
23194
  };
21302
23195
  header?: {
21303
23196
  /**
@@ -21468,14 +23361,14 @@ interface operations {
21468
23361
  page_size?: number;
21469
23362
  /** @description Only return blocks with the specified attachment type. */
21470
23363
  attachment_type?: "provider" | "service" | "location" | "service_provider";
21471
- /** @description Only return blocks for the provider specified by this provider ID. */
21472
- provider?: string;
21473
- /** @description Only return blocks for the service specified by this service ID. */
21474
- service?: string;
21475
- /** @description Only return blocks for the service provider specified by this service provider ID. */
21476
- service_provider?: string;
21477
- /** @description Only return blocks for the location specified by this location ID. */
21478
- location?: string;
23364
+ /** @description Filter by provider ID(s). Accepts a single ID or comma-delimited list of IDs. */
23365
+ provider_ids?: string;
23366
+ /** @description Filter by service ID(s). Accepts a single ID or comma-delimited list of IDs. */
23367
+ service_ids?: string;
23368
+ /** @description Filter by service provider ID(s). Accepts a single ID or comma-delimited list of IDs. */
23369
+ service_provider_ids?: string;
23370
+ /** @description Filter by location ID(s). Accepts a single ID or comma-delimited list of IDs. */
23371
+ location_ids?: string;
21479
23372
  /** @description Only return blocks that start on the specified date. */
21480
23373
  start_date?: string;
21481
23374
  /** @description Only return blocks that end on the specified date. */
@@ -21608,8 +23501,11 @@ type AppointmentRescheduledEventData = Schemas["AppointmentRescheduledEventData"
21608
23501
  type AppointmentResponse = Schemas["AppointmentResponse"];
21609
23502
  type AppointmentsResponse = Schemas["AppointmentsResponse"];
21610
23503
  type Block = Schemas["Block"];
23504
+ type BlockCreatedEventData = Schemas["BlockCreatedEventData"];
23505
+ type BlockDeletedEventData = Schemas["BlockDeletedEventData"];
21611
23506
  type BlockResponse = Schemas["BlockResponse"];
21612
23507
  type BlocksResponse = Schemas["BlocksResponse"];
23508
+ type BlockUpdatedEventData = Schemas["BlockUpdatedEventData"];
21613
23509
  type BookingPolicy = Schemas["BookingPolicy"];
21614
23510
  type CancelAppointmentRequest = Schemas["CancelAppointmentRequest"];
21615
23511
  type CancellationEvent = Schemas["CancellationEvent"];
@@ -21623,6 +23519,11 @@ type ClientResponse = Schemas["ClientResponse"];
21623
23519
  type ClientsResponse = Schemas["ClientsResponse"];
21624
23520
  type ConfirmAppointmentRequest = Schemas["ConfirmAppointmentRequest"];
21625
23521
  type ConfirmationEvent = Schemas["ConfirmationEvent"];
23522
+ type ConnectedAccount = Schemas["ConnectedAccount"];
23523
+ type ConnectedAccountCreatedEventData = Schemas["ConnectedAccountCreatedEventData"];
23524
+ type ConnectedAccountDeletedEventData = Schemas["ConnectedAccountDeletedEventData"];
23525
+ type ConnectedAccountReconnectedEventData = Schemas["ConnectedAccountReconnectedEventData"];
23526
+ type ConnectedAccountRefreshFailedEventData = Schemas["ConnectedAccountRefreshFailedEventData"];
21626
23527
  type CreateAccountRequest = Schemas["CreateAccountRequest"];
21627
23528
  type CreateAccountUserRequest = Schemas["CreateAccountUserRequest"];
21628
23529
  type CreateAppointmentRequest = Schemas["CreateAppointmentRequest"];
@@ -21674,6 +23575,7 @@ type Slot = Schemas["Slot"];
21674
23575
  type SlotRule = Schemas["SlotRule"];
21675
23576
  type UnauthorizedResponse = Schemas["UnauthorizedResponse"];
21676
23577
  type UpdateAccountRequest = Schemas["UpdateAccountRequest"];
23578
+ type UpdateAccountUserRequest = Schemas["UpdateAccountUserRequest"];
21677
23579
  type UpdateBlockRequest = Schemas["UpdateBlockRequest"];
21678
23580
  type UpdateCancellationReasonRequest = Schemas["UpdateCancellationReasonRequest"];
21679
23581
  type UpdateClientRequest = Schemas["UpdateClientRequest"];
@@ -22010,10 +23912,13 @@ declare function createAccountUser(client: FetchClient, body: RequestBody<"/v1/u
22010
23912
  };
22011
23913
  }, {
22012
23914
  body: {
23915
+ add_provider: boolean;
23916
+ display_name?: string;
22013
23917
  email: string;
22014
23918
  first_name: string;
22015
23919
  last_name: string;
22016
23920
  notify: boolean;
23921
+ passive: boolean;
22017
23922
  role_ids?: string[];
22018
23923
  time_zone?: string;
22019
23924
  } | undefined;
@@ -22126,7 +24031,13 @@ declare function createBlock(client: FetchClient, body: RequestBody<"/v1/blocks"
22126
24031
  end_date: string;
22127
24032
  end_time?: string | null;
22128
24033
  exception_dates?: string[];
22129
- recurrence_rule?: components["schemas"]["RecurrenceRule"] | null;
24034
+ recurrence_rule?: {
24035
+ byday?: string[];
24036
+ count?: number | null;
24037
+ freq: "daily" | "weekly";
24038
+ interval?: number;
24039
+ until?: Record<string, never> | null;
24040
+ } | null;
22130
24041
  service_id?: string | null;
22131
24042
  start_date: string;
22132
24043
  start_time?: string | null;
@@ -22323,6 +24234,7 @@ declare function createProvider(client: FetchClient, body: RequestBody<"/v1/prov
22323
24234
  email: string;
22324
24235
  first_name: string;
22325
24236
  last_name: string;
24237
+ metadata?: Record<string, never>;
22326
24238
  notify: boolean;
22327
24239
  role_ids?: string[];
22328
24240
  } | undefined;
@@ -23335,6 +25247,7 @@ declare function getEarliestPublicServiceSlot(client: FetchClient, path: PathPar
23335
25247
  query?: {
23336
25248
  time_zone?: string;
23337
25249
  provider_id?: string;
25250
+ provider_ids?: string;
23338
25251
  };
23339
25252
  header?: {
23340
25253
  "X-SavvyCal-Account"?: string;
@@ -23387,6 +25300,7 @@ declare function getEarliestPublicServiceSlot(client: FetchClient, path: PathPar
23387
25300
  query: {
23388
25301
  time_zone?: string;
23389
25302
  provider_id?: string;
25303
+ provider_ids?: string;
23390
25304
  } | undefined;
23391
25305
  };
23392
25306
  }, `${string}/${string}`>>;
@@ -23692,7 +25606,17 @@ declare function listAppointments(client: FetchClient, query?: QueryParams<"/v1/
23692
25606
  page?: number;
23693
25607
  page_size?: number;
23694
25608
  include_sensitive?: boolean;
23695
- filters?: string[];
25609
+ period?: "upcoming" | "past";
25610
+ status?: "scheduled" | "canceled";
25611
+ appointment_type?: "virtual" | "in_person";
25612
+ provider_ids?: string;
25613
+ service_ids?: string;
25614
+ client_ids?: string;
25615
+ location_ids?: string;
25616
+ start_at_min?: string;
25617
+ start_at_max?: string;
25618
+ end_at_min?: string;
25619
+ end_at_max?: string;
23696
25620
  order_by?: string[];
23697
25621
  order_directions?: ("asc" | "desc")[];
23698
25622
  };
@@ -23735,7 +25659,17 @@ declare function listAppointments(client: FetchClient, query?: QueryParams<"/v1/
23735
25659
  page?: number;
23736
25660
  page_size?: number;
23737
25661
  include_sensitive?: boolean;
23738
- filters?: string[];
25662
+ period?: "upcoming" | "past";
25663
+ status?: "scheduled" | "canceled";
25664
+ appointment_type?: "virtual" | "in_person";
25665
+ provider_ids?: string;
25666
+ service_ids?: string;
25667
+ client_ids?: string;
25668
+ location_ids?: string;
25669
+ start_at_min?: string;
25670
+ start_at_max?: string;
25671
+ end_at_min?: string;
25672
+ end_at_max?: string;
23739
25673
  order_by?: string[];
23740
25674
  order_directions?: ("asc" | "desc")[];
23741
25675
  } | undefined;
@@ -23747,10 +25681,10 @@ declare function listBlocks(client: FetchClient, query?: QueryParams<"/v1/blocks
23747
25681
  page?: number;
23748
25682
  page_size?: number;
23749
25683
  attachment_type?: "provider" | "service" | "location" | "service_provider";
23750
- provider?: string;
23751
- service?: string;
23752
- service_provider?: string;
23753
- location?: string;
25684
+ provider_ids?: string;
25685
+ service_ids?: string;
25686
+ service_provider_ids?: string;
25687
+ location_ids?: string;
23754
25688
  start_date?: string;
23755
25689
  end_date?: string;
23756
25690
  start_date_min?: string;
@@ -23799,10 +25733,10 @@ declare function listBlocks(client: FetchClient, query?: QueryParams<"/v1/blocks
23799
25733
  page?: number;
23800
25734
  page_size?: number;
23801
25735
  attachment_type?: "provider" | "service" | "location" | "service_provider";
23802
- provider?: string;
23803
- service?: string;
23804
- service_provider?: string;
23805
- location?: string;
25736
+ provider_ids?: string;
25737
+ service_ids?: string;
25738
+ service_provider_ids?: string;
25739
+ location_ids?: string;
23806
25740
  start_date?: string;
23807
25741
  end_date?: string;
23808
25742
  start_date_min?: string;
@@ -23942,6 +25876,9 @@ declare function listProviders(client: FetchClient, query?: QueryParams<"/v1/pro
23942
25876
  page?: number;
23943
25877
  page_size?: number;
23944
25878
  search?: string;
25879
+ metadata?: {
25880
+ [key: string]: unknown;
25881
+ };
23945
25882
  };
23946
25883
  header?: {
23947
25884
  "X-SavvyCal-Account"?: string;
@@ -23982,6 +25919,9 @@ declare function listProviders(client: FetchClient, query?: QueryParams<"/v1/pro
23982
25919
  page?: number;
23983
25920
  page_size?: number;
23984
25921
  search?: string;
25922
+ metadata?: {
25923
+ [key: string]: unknown;
25924
+ };
23985
25925
  } | undefined;
23986
25926
  };
23987
25927
  }, `${string}/${string}`>>;
@@ -23990,8 +25930,8 @@ declare function listProviderSchedules(client: FetchClient, query?: QueryParams<
23990
25930
  query?: {
23991
25931
  page?: number;
23992
25932
  page_size?: number;
23993
- provider?: string;
23994
- location?: string;
25933
+ provider_ids?: string;
25934
+ location_ids?: string;
23995
25935
  };
23996
25936
  header?: {
23997
25937
  "X-SavvyCal-Account"?: string;
@@ -24031,8 +25971,8 @@ declare function listProviderSchedules(client: FetchClient, query?: QueryParams<
24031
25971
  query: {
24032
25972
  page?: number;
24033
25973
  page_size?: number;
24034
- provider?: string;
24035
- location?: string;
25974
+ provider_ids?: string;
25975
+ location_ids?: string;
24036
25976
  } | undefined;
24037
25977
  };
24038
25978
  }, `${string}/${string}`>>;
@@ -24078,6 +26018,7 @@ declare function listPublicServiceSlots(client: FetchClient, path: PathParams<"/
24078
26018
  until: string;
24079
26019
  time_zone?: string;
24080
26020
  provider_id?: string;
26021
+ provider_ids?: string;
24081
26022
  };
24082
26023
  header?: {
24083
26024
  "X-SavvyCal-Account"?: string;
@@ -24132,6 +26073,7 @@ declare function listPublicServiceSlots(client: FetchClient, path: PathParams<"/
24132
26073
  until: string;
24133
26074
  time_zone?: string;
24134
26075
  provider_id?: string;
26076
+ provider_ids?: string;
24135
26077
  };
24136
26078
  };
24137
26079
  }, `${string}/${string}`>>;
@@ -24306,6 +26248,7 @@ declare function listServiceSlots(client: FetchClient, path: PathParams<"/v1/ser
24306
26248
  from: string;
24307
26249
  until: string;
24308
26250
  time_zone?: string;
26251
+ provider_ids?: string;
24309
26252
  };
24310
26253
  header?: {
24311
26254
  "X-SavvyCal-Account"?: string;
@@ -24359,6 +26302,7 @@ declare function listServiceSlots(client: FetchClient, path: PathParams<"/v1/ser
24359
26302
  from: string;
24360
26303
  until: string;
24361
26304
  time_zone?: string;
26305
+ provider_ids?: string;
24362
26306
  };
24363
26307
  };
24364
26308
  }, `${string}/${string}`>>;
@@ -24537,6 +26481,66 @@ declare function updateAccount(client: FetchClient, path: PathParams<"/v1/accoun
24537
26481
  };
24538
26482
  };
24539
26483
  }, `${string}/${string}`>>;
26484
+ declare function updateAccountUser(client: FetchClient, path: PathParams<"/v1/users/{user_id}", "patch">, body: RequestBody<"/v1/users/{user_id}", "patch">): Promise<openapi_fetch.FetchResponse<{
26485
+ parameters: {
26486
+ query?: never;
26487
+ header?: {
26488
+ "X-SavvyCal-Account"?: string;
26489
+ };
26490
+ path: {
26491
+ user_id: string;
26492
+ };
26493
+ cookie?: never;
26494
+ };
26495
+ requestBody?: {
26496
+ content: {
26497
+ "application/json": components["schemas"]["UpdateAccountUserRequest"];
26498
+ };
26499
+ };
26500
+ responses: {
26501
+ 200: {
26502
+ headers: {
26503
+ [name: string]: unknown;
26504
+ };
26505
+ content: {
26506
+ "application/json": components["schemas"]["AccountUserResponse"];
26507
+ };
26508
+ };
26509
+ 401: {
26510
+ headers: {
26511
+ [name: string]: unknown;
26512
+ };
26513
+ content: {
26514
+ "application/json": components["schemas"]["UnauthorizedResponse"];
26515
+ };
26516
+ };
26517
+ 404: {
26518
+ headers: {
26519
+ [name: string]: unknown;
26520
+ };
26521
+ content: {
26522
+ "application/json": components["schemas"]["GenericErrorResponse"];
26523
+ };
26524
+ };
26525
+ 422: {
26526
+ headers: {
26527
+ [name: string]: unknown;
26528
+ };
26529
+ content: {
26530
+ "application/json": components["schemas"]["JsonErrorResponse"];
26531
+ };
26532
+ };
26533
+ };
26534
+ }, {
26535
+ body: {
26536
+ passive?: boolean;
26537
+ } | undefined;
26538
+ params: {
26539
+ path: {
26540
+ user_id: string;
26541
+ };
26542
+ };
26543
+ }, `${string}/${string}`>>;
24540
26544
  declare function updateBlock(client: FetchClient, path: PathParams<"/v1/blocks/{block_id}", "patch">, body: RequestBody<"/v1/blocks/{block_id}", "patch">): Promise<openapi_fetch.FetchResponse<{
24541
26545
  parameters: {
24542
26546
  query?: never;
@@ -24585,7 +26589,13 @@ declare function updateBlock(client: FetchClient, path: PathParams<"/v1/blocks/{
24585
26589
  end_date?: string;
24586
26590
  end_time?: string | null;
24587
26591
  exception_dates?: string[];
24588
- recurrence_rule?: components["schemas"]["RecurrenceRule"] | null;
26592
+ recurrence_rule?: {
26593
+ byday?: string[];
26594
+ count?: number | null;
26595
+ freq: "daily" | "weekly";
26596
+ interval?: number;
26597
+ until?: Record<string, never> | null;
26598
+ } | null;
24589
26599
  service_id?: string | null;
24590
26600
  start_date?: string;
24591
26601
  start_time?: string | null;
@@ -24777,6 +26787,7 @@ declare function updateProvider(client: FetchClient, path: PathParams<"/v1/provi
24777
26787
  display_name?: string;
24778
26788
  first_name?: string;
24779
26789
  last_name?: string;
26790
+ metadata?: Record<string, never>;
24780
26791
  } | undefined;
24781
26792
  params: {
24782
26793
  path: {
@@ -24942,4 +26953,4 @@ declare function updateService(client: FetchClient, path: PathParams<"/v1/servic
24942
26953
  };
24943
26954
  }, `${string}/${string}`>>;
24944
26955
 
24945
- export { type Account, type AccountEvent, type AccountResponse, type AccountUser, type AccountUserResponse, type AccountUsersResponse, type AccountsResponse, type AdvanceNoticePolicy, type AggregatedSlot, type Appointment, type AppointmentCanceledEventData, type AppointmentConfirmedEventData, type AppointmentCreatedEventData, type AppointmentDeletedEventData, type AppointmentRescheduledEventData, type AppointmentResponse, type AppointmentsResponse, type Block, type BlockResponse, type BlocksResponse, type BookingPolicy, type CancelAppointmentRequest, type CancelPublicAppointmentRequest, type CancellationEvent, type CancellationPolicy, type CancellationReason, type CancellationReasonResponse, type CancellationReasonsResponse, type Client, type ClientResponse, type ClientsResponse, type ConfirmAppointmentRequest, type ConfirmationEvent, type CreateAccountRequest, type CreateAccountUserRequest, type CreateAppointmentRequest, type CreateBlockRequest, type CreateCancellationReasonRequest, type CreateClientRequest, type CreateDashboardSessionRequest, type CreateProviderRequest, type CreateProviderScheduleRequest, type CreatePublicAppointmentRequest, type CreateServiceProviderRequest, type CreateServiceRequest, type DashboardSession, type DashboardSessionResponse, type FetchClient, type FetchClientOptions, type GenericErrorResponse, type JsonErrorResponse, type MaximizeUtilizationPolicy, type NotFoundResponse, type PaginationMeta, type PathParams, type Platform, type PlatformResponse, type Provider, type ProviderResponse, type ProviderSchedule, type ProviderScheduleResponse, type ProviderSchedulesResponse, type ProvidersResponse, type PublicAppointment, type PublicAppointmentResponse, type PublicCancellationReason, type PublicCancellationReasonsResponse, type PublicServiceEarliestSlotResponse, type PublicServiceSlotsResponse, type QueryParams, type RecurrenceRule, type RequestBody, type RescheduleAppointmentRequest, type RescheduleEvent, type ReschedulePublicAppointmentRequest, type ReschedulingPolicy, type Role, type RolesResponse, type Service, type ServiceProvider, type ServiceProviderResponse, type ServiceProvidersResponse, type ServiceResponse, type ServiceSlotResponse, type ServicesResponse, type Slot, type SlotRule, type UnauthorizedResponse, type UpdateAccountRequest, type UpdateBlockRequest, type UpdateCancellationReasonRequest, type UpdateClientRequest, type UpdateProviderRequest, type UpdateProviderScheduleRequest, type UpdateServiceRequest, type User, type WeeklyRule, type ZonedDateTime, cancelAppointment, cancelPublicAppointment, confirmAppointment, createAccount, createAccountUser, createAppointment, createBlock, createCancellationReason, createClient, createDashboardSession, createFetchClient, createProvider, createProviderSchedule, createPublicAppointment, createService, createServiceProvider, deactivateProvider, deleteBlock, deleteCancellationReason, deleteClient, deleteProviderSchedule, deleteService, deleteServiceProvider, getAccountById, getAppointment, getBlock, getCancellationReason, getClient, getCurrentAccount, getCurrentAccountUser, getCurrentPlatform, getEarliestPublicServiceSlot, getProvider, getProviderSchedule, getPublicAppointment, getService, listAccountUsers, listAccounts, listAppointments, listBlocks, listCancellationReasons, listClients, listProviderSchedules, listProviders, listPublicCancellationReasons, listPublicServiceSlots, listRoles, listServiceProviders, listServiceSlots, listServices, type paths, rescheduleAppointment, reschedulePublicAppointment, updateAccount, updateBlock, updateCancellationReason, updateClient, updateProvider, updateProviderSchedule, updateService };
26956
+ export { type Account, type AccountEvent, type AccountResponse, type AccountUser, type AccountUserResponse, type AccountUsersResponse, type AccountsResponse, type AdvanceNoticePolicy, type AggregatedSlot, type Appointment, type AppointmentCanceledEventData, type AppointmentConfirmedEventData, type AppointmentCreatedEventData, type AppointmentDeletedEventData, type AppointmentRescheduledEventData, type AppointmentResponse, type AppointmentsResponse, type Block, type BlockCreatedEventData, type BlockDeletedEventData, type BlockResponse, type BlockUpdatedEventData, type BlocksResponse, type BookingPolicy, type CancelAppointmentRequest, type CancelPublicAppointmentRequest, type CancellationEvent, type CancellationPolicy, type CancellationReason, type CancellationReasonResponse, type CancellationReasonsResponse, type Client, type ClientResponse, type ClientsResponse, type ConfirmAppointmentRequest, type ConfirmationEvent, type ConnectedAccount, type ConnectedAccountCreatedEventData, type ConnectedAccountDeletedEventData, type ConnectedAccountReconnectedEventData, type ConnectedAccountRefreshFailedEventData, type CreateAccountRequest, type CreateAccountUserRequest, type CreateAppointmentRequest, type CreateBlockRequest, type CreateCancellationReasonRequest, type CreateClientRequest, type CreateDashboardSessionRequest, type CreateProviderRequest, type CreateProviderScheduleRequest, type CreatePublicAppointmentRequest, type CreateServiceProviderRequest, type CreateServiceRequest, type DashboardSession, type DashboardSessionResponse, type FetchClient, type FetchClientOptions, type GenericErrorResponse, type JsonErrorResponse, type MaximizeUtilizationPolicy, type NotFoundResponse, type PaginationMeta, type PathParams, type Platform, type PlatformResponse, type Provider, type ProviderResponse, type ProviderSchedule, type ProviderScheduleResponse, type ProviderSchedulesResponse, type ProvidersResponse, type PublicAppointment, type PublicAppointmentResponse, type PublicCancellationReason, type PublicCancellationReasonsResponse, type PublicServiceEarliestSlotResponse, type PublicServiceSlotsResponse, type QueryParams, type RecurrenceRule, type RequestBody, type RescheduleAppointmentRequest, type RescheduleEvent, type ReschedulePublicAppointmentRequest, type ReschedulingPolicy, type Role, type RolesResponse, type Service, type ServiceProvider, type ServiceProviderResponse, type ServiceProvidersResponse, type ServiceResponse, type ServiceSlotResponse, type ServicesResponse, type Slot, type SlotRule, type UnauthorizedResponse, type UpdateAccountRequest, type UpdateAccountUserRequest, type UpdateBlockRequest, type UpdateCancellationReasonRequest, type UpdateClientRequest, type UpdateProviderRequest, type UpdateProviderScheduleRequest, type UpdateServiceRequest, type User, type WeeklyRule, type ZonedDateTime, cancelAppointment, cancelPublicAppointment, confirmAppointment, createAccount, createAccountUser, createAppointment, createBlock, createCancellationReason, createClient, createDashboardSession, createFetchClient, createProvider, createProviderSchedule, createPublicAppointment, createService, createServiceProvider, deactivateProvider, deleteBlock, deleteCancellationReason, deleteClient, deleteProviderSchedule, deleteService, deleteServiceProvider, getAccountById, getAppointment, getBlock, getCancellationReason, getClient, getCurrentAccount, getCurrentAccountUser, getCurrentPlatform, getEarliestPublicServiceSlot, getProvider, getProviderSchedule, getPublicAppointment, getService, listAccountUsers, listAccounts, listAppointments, listBlocks, listCancellationReasons, listClients, listProviderSchedules, listProviders, listPublicCancellationReasons, listPublicServiceSlots, listRoles, listServiceProviders, listServiceSlots, listServices, type paths, rescheduleAppointment, reschedulePublicAppointment, updateAccount, updateAccountUser, updateBlock, updateCancellationReason, updateClient, updateProvider, updateProviderSchedule, updateService };