Skip to main content

ServicesResponse

Response schema for a list of services

data object[]required

List of services

  • Array [
  • appointment_typestringrequired

    The type of appointment.

    Possible values: [in_person, virtual]

    booking_policy objectrequired

    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 objectrequired

    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_textstringrequired

    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.
    created_atstring<datetime>required

    When the service was created.

    durationstringrequired

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

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

    Example: `PT30M`
    forms object[]nullable

    Forms attached to this service.

  • Array [
  • created_atstring<datetime>required

    When the service form was created.

    form_idstringrequired

    The ID of the attached form.

    Possible values: Value must match regular expression ^frm_\w{12}$

    form_namestringrequired

    The name of the attached form.

    idstringrequired

    Unique identifier for the service form.

    Possible values: Value must match regular expression ^sf_\w{12}$

    objectstringrequired

    String representing the object's type.

    Possible values: [service_form]

    sort_orderintegerrequired

    Display order of the form within the service.

    updated_atstring<datetime>required

    When the service form was last updated.

  • ]
  • idstringrequired

    Unique identifier for the object.

    Possible values: Value must match regular expression ^srv_\w{12}$

    internal_namestringnullable

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

    metadata objectrequired

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

    property name*any

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

    namestringrequired

    The name of the service.

    objectstringrequired

    String representing the object's type.

    Possible values: [service]

    provider_notifications objectrequired

    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 objectrequired

    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[]required

    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}$

  • ]
  • updated_atstring<datetime>required

    When the service was last updated.

  • ]
  • meta objectrequired

    Metadata for paginated responses

    current_pageintegerrequired

    Current page number

    page_sizeintegerrequired

    Number of records per page

    total_countintegerrequired

    Total number of records

    total_pagesintegerrequired

    Total number of pages

    ServicesResponse
    {
    "data": [
    {
    "appointment_type": "in_person",
    "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.",
    "created_at": "2025-02-17T17:49:19Z",
    "duration": "PT1H30M",
    "forms": [
    {
    "created_at": "2025-02-17T17:49:19Z",
    "form_id": "frm_d025a96ac0c6",
    "form_name": "Intake Form",
    "id": "sf_d025a96ac0c6",
    "object": "service_form",
    "sort_order": 1,
    "updated_at": "2025-02-17T17:49:19Z"
    }
    ],
    "id": "srv_d025a96ac0c6",
    "internal_name": null,
    "metadata": {
    "external_id": "123"
    },
    "name": "Initial Consult",
    "object": "service",
    "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"
    ]
    }
    ],
    "updated_at": "2025-02-17T17:49:19Z"
    }
    ],
    "meta": {
    "current_page": 1,
    "page_size": 10,
    "total_count": 50,
    "total_pages": 5
    }
    }