Skip to main content

UpdateServiceRequest

Request schema for updating a service.

appointment_typestring

The type of appointment.

Possible values: [in_person, virtual]

booking_policy object

A booking policy defines the rules for booking a service from public booking interfaces.

advance_notice objectrequired

A policy for requiring minimum advance notice.

enabledbooleanrequired

Whether advance notice is enabled.

minimum_durationstringnullablerequired

The minimum duration of advance notice.

Possible values: Value must match regular expression ^PT(?:(\d+)H)?(?:(\d+)M)?$

allow_bookingbooleanrequired

Whether public booking is allowed for the service.

disabled_messagestringnullablerequired

The message to display when public booking is disabled.

hold objectrequired

A policy for temporarily reserving a slot during the multi-step booking flow.

durationstringnullablerequired

The duration of the hold.

Possible values: Value must match regular expression ^PT(?:(\d+)H)?(?:(\d+)M)?$

enabledbooleanrequired

Whether slot holds are enabled for the service.

maximize_utilization objectrequired

Avoid presenting overlapping time slots for service providers to eliminate gaps in the schedule.

enabledbooleanrequired

Whether maximize utilization is enabled for the service.

cancellation_policy object

A cancellation policy defines the rules for canceling a service from public booking interfaces.

advance_notice objectrequired

A policy for requiring minimum advance notice.

enabledbooleanrequired

Whether advance notice is enabled.

minimum_durationstringnullablerequired

The minimum duration of advance notice.

Possible values: Value must match regular expression ^PT(?:(\d+)H)?(?:(\d+)M)?$

allow_cancellationbooleanrequired

Whether public cancellation is allowed for the service.

disabled_messagestringnullablerequired

The message to display when public cancellation is disabled.

change_policy_textstring

Displayed to clients in follow-up communication. Use this to explain any important rules about cancellations or rescheduling.

Example: Appointments within 48 hours cannot be canceled or rescheduled online. Please call our office.
durationstring

The duration of time slots in ISO-8601 duration format.

Possible values: Value must match regular expression ^PT(?:(\d+)H)?(?:(\d+)M)?$

Example: PT1H30M
internal_namestringnullable

An optional internal label for admin use. When set, this is displayed in the admin UI instead of the public name.

metadata object

Set of key-value pairs to attach to this service. Maximum size is 16 KB.

property name*any

Set of key-value pairs to attach to this service. Maximum size is 16 KB.

namestring

The service name.

provider_notifications object

Configuration for staff notification emails on a service, including which notification types are enabled and who receives them.

additional_recipientsstring<email>[]required

Additional email addresses that receive staff notification emails for this service.

notify_providerbooleanrequired

Whether the assigned provider receives notification emails for this service.

types object[]required

Array of enabled staff notification types for the service.

  • Array [
  • typestringrequired

    The notification type.

    Possible values: [new_appointment, rescheduled, canceled]

  • ]
  • rescheduling_policy object

    A rescheduling policy defines the rules for rescheduling a service from public booking interfaces.

    advance_notice objectrequired

    A policy for requiring minimum advance notice.

    enabledbooleanrequired

    Whether advance notice is enabled.

    minimum_durationstringnullablerequired

    The minimum duration of advance notice.

    Possible values: Value must match regular expression ^PT(?:(\d+)H)?(?:(\d+)M)?$

    allow_reschedulingbooleanrequired

    Whether public rescheduling is allowed for the service.

    disabled_messagestringnullablerequired

    The message to display when public rescheduling is disabled.

    slot_rules object[]

    Array of slot rules for the service.

  • Array [
  • recurrence_rule objectrequired

    A recurrence rule describes a repeating pattern of times. Recurrences rules in SavvyCal are modeled after the conventions of iCalendar recurrence rules (RRULE), but are a subset of the full specification.

    bydaystring[]

    The days of the week on which the recurrence occurs.

    Possible values: Value must match regular expression (mo|tu|we|th|fr|sa|su)$

    Example: ["mo","we","fr"]
    countintegernullable

    Number of occurrences at which to end the recurrence.

    Possible values: >= 1

    freqstringrequired

    The frequency of the recurrence.

    Possible values: [daily, weekly]

    intervalinteger

    How often the recurrence rule repeats.

    Possible values: >= 1

    Example: 2
    untildatenullable

    Date at which to end the recurrence (in ISO-8601 format).

    Example: 2024-01-02
    start_timesstring[]required

    Array of start times for slots.

    Possible values: Value must match regular expression ^\d{2}:\d{2}$

  • ]
  • UpdateServiceRequest
    {
    "appointment_type": "virtual",
    "booking_policy": {
    "advance_notice": {
    "enabled": true,
    "minimum_duration": "PT1H"
    },
    "allow_booking": true,
    "disabled_message": "Booking is disabled for this service.",
    "hold": {
    "duration": "PT10M",
    "enabled": true
    },
    "maximize_utilization": {
    "enabled": true
    }
    },
    "cancellation_policy": {
    "advance_notice": {
    "enabled": true,
    "minimum_duration": "PT1H"
    },
    "allow_cancellation": true,
    "disabled_message": "Cancellation is disabled for this service."
    },
    "change_policy_text": "Appointments within 48 hours cannot be canceled or rescheduled online. Please call our office.",
    "duration": "PT1H30M",
    "internal_name": "IC - New Patient",
    "metadata": {
    "external_id": "123"
    },
    "name": "Initial Consultation",
    "provider_notifications": {
    "additional_recipients": [
    "admin@example.com"
    ],
    "notify_provider": true,
    "types": [
    {
    "type": "new_appointment"
    }
    ]
    },
    "rescheduling_policy": {
    "advance_notice": {
    "enabled": true,
    "minimum_duration": "PT1H"
    },
    "allow_rescheduling": true,
    "disabled_message": "Rescheduling is disabled for this service."
    },
    "slot_rules": [
    {
    "recurrence_rule": {
    "byday": [
    "mo",
    "we",
    "fr"
    ],
    "freq": "weekly"
    },
    "start_times": [
    "09:00",
    "10:00"
    ]
    }
    ]
    }