The Wix Bookings Services API enables you to retrieve the services your business offers.
The service contains the information customers need to decide whether to book the business offering. This includes the type of offering (appointment, class, course), scheduling information, locations, booking policies (such as the latest possible time a session can be booked), payment information, and more. Creating and managing your services is the cornerstone for working with Wix Bookings.
Once services are created, you can:
Use these Services APIs to retrieve information about the service(s), enabling you to make the information available to your customers.
Use other Bookings APIs to process customer bookings, manage schedules and calendars, check availability, and more.
A service is an online or in-person offering that a business provides to its customers, such as courses and private sessions.
For example, a fitness studio may offer the following services:
Alternatively, a hair salon may offer the following services:
Services may differ in the offering they provide, but the API differentiates between 3 main types of services:
Appointments: An appointments is a 1-time session that can be booked and scheduled by a customer. The appointment takes place whenever a customer books a specific time slot.
For example, a 30-minute haircut.
Classes: Recurring sessions of multiple participants scheduled by the business. Customers can book any session of the class. Classes can be scheduled on different days, at different times, with different resources, such as staff members. Customers can sign up for single sessions or a class's recurring sessions.
For example, a language school offers a beginner's Spanish class every Monday at 8:00 PM. Customers can join the session they want and don't have to commit to attending all sessions.
Courses: A limited number of sessions for the same service that starts and ends on a particular day. Customers sign up for the entire course and not just one session.
For example, a 12-session introductory course to Pilates, starting on February 1st and ending on March 17th.
Before using the API, make sure to set up Wix Bookings and create the right services for your business.
For a comprehensive glossary of Wix Bookings terms, see Terminology.
This article shares some possible use cases your app could support, as well as a sample flow that could support each use case. This can be a helpful jumping off point as you plan your app's implementation.
If a site owner manages their services in an external catalog, you can export new services to it. To do this, your app can periodically bulk load new services being offered:
For the first load after the app is installed and services are defined, use Query Services to retrieve all services. By default the initial paging limit is 100.
If you receive 100 services, there may be more services to retrieve. Run the request again, and increase paging.offset
to 100. Keep running the request, each time increasing the offset, until all services are retrieved.
Upload the retrieved services to the external catalog.
Save the current datetime, and use it in the next request. Each subsequent request will need to use the datetime of the request that came before it.
For all subsequent loads, use Query Services , and filter for new services created since the last load:
{
"sort": {
"fieldName": "createdDate",
"order": "ASC"
},
"filter": {
"createdDate": {
"$gt": "<PREVIOUS_LOAD_DATETIME>"
}
}
}
Repeat steps 2 to 4 for each subsequent load. You can allow the site admin to configure the time interval in your app to fit their needs.
Query endpoints allow you to filter and sort results based on service properties. This article covers field support for filtering and sorting.
Specify the filter
object in the following format:
{
"filter": {
"fieldName": {
"$eq": "value"
}
}
}
The following table shows field support for filters and sorting
for the service
object:
Field | Supported Filters | Sortable |
---|---|---|
name | $eq , $ne , $exists , $in , $startsWith | Sortable |
type | $eq , $ne , $exists , $in , | Sortable |
description | $eq , $ne , $exists , $in , $startsWith | Sortable |
hidden | $eq , $ne , $exists , $in | |
tagLine | $eq , $ne , $exists , $in , $startsWith | Sortable |
staffMemberIds | $eq , $ne , $exists , $in , $hasSome , $startsWith | |
form.id | $eq , $ne , $exists , $in , $startsWith | |
category.id | $eq , $ne , $exists , $in , $startsWith | |
mainSlug.name | $eq , $ne , $exists , $in , $startsWith | Sortable |
supportedSlugs.name | $eq , $ne , $exists , $in , $hasSome , $startsWith | Sortable |
locations.business.id | $eq , $ne , $exists , $in , $hasSome , $startsWith | |
onlineBooking.enabled | $eq , $ne , $exists , $in | |
payment.options.online | $eq , $ne , $exists , $in | |
payment.options.inPerson | $eq , $ne , $exists , $in | |
payment.options.pricingPlan | $eq , $ne , $exists , $in |
The default sort is by createdDate
in ascending (ASC) order.
Specify the sort
object in the following format:
{
"sort": [
{
"fieldName": "sortOrder",
"order": "ASC"
},
{
"fieldName": "createdDate",
"order": "DESC"
}
]
}
Specify the fields
object in the following format:
{
"fields": ["name", "type", "description"]
}
Related content:
Wix Bookings supports 3 types of services for businesses: appointments, classes and courses. Each individual appointment, class, or course meeting is commonly referred to as a session. Business owners can use any or all of these service types to run their businesses.
Appointments are intended for one-on-one bookings, and exist only as available time slots until they are booked. For example, a salon might offer various hair cutting and styling services of varying lengths of time, and none of them are listed in the business’s booking calendar until they are booked by a customer.
Unique settings for appointments include:
schedule.availabilityConstraints.sessionDurations
.locations.type
= “customer”.schedule.availabilityConstraints.timeBetweenSessions
.Specialized policy settings for appointments include:
bookingPolicy.reschedulePolicy
and currently managed only in the site dashboard.bookingPolicy.cancellationPolicy
and currently managed only in the site dashboard..Classes are intended for one time or recurring events that customers can book individually. For recurring classes, customers can sign up to one, some, or all of the available classes, separately. These classes are listed in the business’s booking calendar immediately when they are created, and customers will see each session they’ve signed up for in their calendar after they book. For example, a yoga studio might offer a weekly vinyasa flow class, and customers can sign up to as many as they like based on their availability, interest, and/or membership coverage.
Specialized policy settings for classes include:
bookingPolicy.waitlistPolicy
and currently managed only in the site dashboard.Courses are intended for recurring events that customers must book as a set.
These courses are listed in the business’s booking calendar immediately when they are created, and customers will see all the individual sessions in their calendar once they’ve booked.
For example, a 5-session yoga teacher training course. API responses for course entities will include the read-only fields schedule.firstSessionStart
and schedule.lastSessionEnd
.
Specialized policy settings for courses include:
bookingPolicy.bookAfterStart
and currently managed only in the site dashboard.A service’s type can technically be changed after creation, assuming there aren’t any scheduled upcoming events with participants. However, Wix highly recommends creating a completely new service of the preferred type, rather than changing an existing service’s type. Changing a service’s type field deletes the service’s existing schedule and creates a new one, and re-triggers all validations based on the new type (availability, locations, policies, etc.)
Wix Bookings supports business owners in offering services at multiple business locations, providing clients and staff with more choices and flexibility. Site owners can create services of appointment and class types that occur at more than one location, or they can create separate services for each branch.
Services can be set to occur at any one of three location types:
When a business sets up multiple business type locations, each staff member is automatically assigned to work at all the business locations.
To define specific locations for specific dates/times, manage the staff member’s “working hours schedule” in the Schedule & Sessions API, by creating a session with type
:WORKING_HOURS
and the relevant location
.
Note that there is currently no option to set separate business working hours for multiple locations.
When allowing customers to define their appointment’s location (for example at their home or office), Wix does not validate the provided location.
The service price can be expressed in one of the following ways:
Payment options dictate in what manner the customer can pay for the service. The following payment options are available:
{
"onlinePayment": true,
"inPerson": true,
"deposit": true,
"pricingPlan": true,
}
It's required to specify either onlinePayment
or inPerson
as true
.
Enabling online payments allows customers to pay for the service at the time of booking.
To read more about the variety of ways you can receive online payments, please refer to the dedicated article.
Enabling a costumer to pay in person allows customers to pay for the service at the time of the service, and to book the service without going through the payment process.
It's recommended to set up online payments as services that accept online payment significantly reduce no-shows.
Setting a deposit requirement allows you to charge some amount of the service price as a deposit. The deposit is charged at the time of booking and the remaining balance is charged at the time of the service.
Setting deposit
to true
requires onlinePayment
to be true
as well.
The deposit amount should be specified in the rate object, and is supported both for fixed and varied rates.
Enabling payment with pricing plan enables customers to pay for the service using a pricing plan. Read more about offering pricing plans.
The Service
object represents the business offering that a business provides to its customers.
Service ID.
Service type.
Order of a service within a category.
Default maximum number of customers that can book the service. The service cannot be booked beyond this capacity.
Media associated with the service.
Whether the service is hidden from the site.
The category the service is associated with.
The form used when booking the service.
Payment options for booking the service.
Online booking settings.
Conferencing options for this service.
The locations this service is offered at.
In case of multiple (more than 1) location, All locations must be of type BUSINESS
.
For courses only: Currently, only 1 location is supported, for all location types.
Policy determining under what conditions this service can be booked. For example, whether the service can only be booked up to 30 minutes before it begins.
The service's schedule, which can be used to manage the service's sessions.
IDs of the staff members providing the service. For appointments only.
A slug is the last part of the URL address that serves as a unique identifier of the service. The list of supported slugs includes past service names for backwards compatibility, and a custom slug if one was set by the business owner.
The main slug for the service. mainSlug
is either taken from the current service name or is a custom slug set by the business owner.
mainSlug
is used to construct the service's URLs.
URLs to various service-related pages, such as the calendar page and the booking page.
Extensions enabling users to save custom data related to the service.
Custom SEO data for the service.
Date and time the service was created.
Date and time the service was updated.
Revision number, which increments by 1 each time the service is updated. To prevent conflicting changes, the existing revision must be used when updating a service.
Creates a new service.
You can only call this method when authenticated as a Wix app or Wix user identity.
Service to be created.
The created service.
curl -X POST 'https://www.wixapis.com/bookings/v2/services' \
-H 'Authorization: <AUTH>' \
-d '{
"service": {
"type": "APPOINTMENT",
"name": "Personal Cat Hugging",
"description": "Introducing the Purrfect Hug - the ultimate cat cuddling experience! Our team of expert cuddlers will come to your home and provide your furry feline with the warmest and snuggliest hugs around.",
"tagLine": "Get some purr therapy with our cat hugging service!",
"defaultCapacity": 1,
"media": {
"items": [],
"mainMedia": {
"image": {
"id": "fb5af50cdfee49a7b8d87f340c969e90.jpg",
"height": 4000,
"width": 6000
}
}
},
"hidden": false,
"payment": {
"rateType": "FIXED",
"fixed": {
"price": {
"value": "25",
"currency": "USD"
}
},
"pricingPlansIds": [],
"options": {
"online": true,
"inPerson": false,
"deposit": false,
"pricingPlan": false
}
},
"onlineBooking": {
"enabled": true,
"requireManualApproval": false,
"allowMultipleRequests": false
},
"staffMemberIds": [
"76570209-101f-409b-af97-b445bdb63125"
],
"locations": [
{
"type": "CUSTOMER"
}
]
}
}'
{
"service": {
"id": "d779a301-398d-4552-aa8c-3bef0b65cedb",
"type": "APPOINTMENT",
"sortOrder": 0,
"name": "Personal Cat Hugging",
"description": "Introducing the Purrfect Hug - the ultimate cat cuddling experience! Our team of expert cuddlers will come to your home and provide your furry feline with the warmest and snuggliest hugs around.",
"tagLine": "Get some purr therapy with our cat hugging service!",
"defaultCapacity": 1,
"media": {
"items": [],
"mainMedia": {
"image": {
"id": "fb5af50cdfee49a7b8d87f340c969e90.jpg",
"height": 4000,
"width": 6000
}
}
},
"hidden": false,
"payment": {
"rateType": "FIXED",
"fixed": {
"price": {
"value": "25",
"currency": "USD"
}
},
"options": {
"online": true,
"inPerson": false,
"deposit": false,
"pricingPlan": false
},
"pricingPlanIds": []
},
"onlineBooking": {
"enabled": true,
"requireManualApproval": false,
"allowMultipleRequests": false
},
"locations": [
{
"type": "CUSTOMER"
}
],
"bookingPolicy": {
"id": "2a8cbc1b-7968-44e7-899a-d1df1ecbeefe",
"revision": "3",
"createdDate": "2023-04-11T08:51:43.025Z",
"updatedDate": "2023-05-19T11:32:27.930Z",
"name": "Default policy",
"customPolicyDescription": {
"enabled": false,
"description": ""
},
"default": true,
"limitEarlyBookingPolicy": {
"enabled": false,
"earliestBookingInMinutes": 604800
},
"limitLateBookingPolicy": {
"enabled": false,
"latestBookingInMinutes": 1440
},
"bookAfterStartPolicy": {
"enabled": false
},
"cancellationPolicy": {
"enabled": true,
"limitLatestCancellation": false,
"latestCancellationInMinutes": 1440
},
"reschedulePolicy": {
"enabled": true,
"limitLatestReschedule": false,
"latestRescheduleInMinutes": 1440
},
"waitlistPolicy": {
"enabled": false,
"capacity": 10,
"reservationTimeInMinutes": 10
},
"participantsPolicy": {
"enabled": false,
"maxParticipantsPerBooking": 1
},
"resourcesPolicy": {
"enabled": false,
"autoAssignAllowed": false
}
},
"schedule": {
"id": "16e9e039-6437-4144-81a7-124ce6b369c4"
},
"supportedSlugs": [
{
"name": "personal-cat-hugging",
"custom": false,
"createdDate": "2023-07-20T07:48:06.900Z"
}
],
"mainSlug": {
"name": "personal-cat-hugging",
"custom": false,
"createdDate": "2023-07-20T07:48:06.900Z"
},
"urls": {
"servicePage": {
"relativePath": "/service-page-statics/personal-cat-hugging",
"url": "https://example.com/services-2-test/service-page-statics/personal-cat-hugging"
},
"bookingPage": {
"relativePath": "/booking-form/personal-cat-hugging/book",
"url": "https://example.com/services-2-test/booking-form/personal-cat-hugging/book"
},
"calendarPage": {
"relativePath": "/booking-calendar-statics/personal-cat-hugging",
"url": "https://example.com/services-2-test/booking-calendar-statics/personal-cat-hugging"
}
},
"createdDate": "2023-07-20T07:48:07.319Z",
"updatedDate": "2023-07-20T07:48:07.319Z",
"revision": "1",
"staffMemberIds": ["76570209-101f-409b-af97-b445bdb63125"]
}
}
Retrieves a service.
ID of the service to retrieve.
The retrieved service.
curl -X GET 'https://www.wixapis.com/bookings/v2/services/353aa3b7-00ef-42bd-86ff-720d7ef60443' \
-H 'Authorization: <AUTH>'
{
"service": {
"id": "353aa3b7-00ef-42bd-86ff-720d7ef60443",
"type": "CLASS",
"sortOrder": 0,
"name": "Dog Yoga",
"description": "Get ready to downward dog with your furry best friend! In this unique class, you and your pup will strike a pose and find your zen. With a mix of stretching, breathing exercises, and playtime, this class is sure to be a tail-waggin' good time. Whether you're a seasoned yogi or a pup-tastic beginner, this class is pawsitively perfect for all levels. Don't forget to bring your sense of humor, as there's sure to be a few doggy distractions and playful paw-terruptions along the way. Namaste!",
"tagLine": "Unleash your zen with downward dog and a wagging tail in our pup-poseful yoga class!",
"defaultCapacity": 50,
"media": {
"items": [],
"mainMedia": {
"image": {
"id": "nsplsh_4d7639686a6e4555485234~mv2_d_3024_4032_s_4_2.jpg",
"url": "nsplsh_4d7639686a6e4555485234~mv2_d_3024_4032_s_4_2.jpg",
"height": 4032,
"width": 3024,
"filename": "nsplsh_4d7639686a6e4555485234~mv2_d_3024_4032_s_4_2.jpg"
}
}
},
"hidden": false,
"category": {
"id": "7b5b9862-490f-491c-8477-d39baed078a1",
"name": "Best for fun dogs",
"sortOrder": 1
},
"form": {
"id": "00000000-0000-0000-0000-000000000000"
},
"payment": {
"rateType": "FIXED",
"fixed": {
"price": {
"value": "15",
"currency": "USD"
}
},
"pricingPlansIds": [],
"options": {
"online": true,
"inPerson": false,
"deposit": false,
"pricingPlan": false
}
},
"onlineBooking": {
"enabled": true,
"requireManualApproval": false,
"allowMultipleRequests": false
},
"staffMemberIds": [],
"conferencing": {
"enabled": true
},
"locations": [
{
"type": "BUSINESS"
}
],
"bookingPolicy": {
"id": "2a8cbc1b-7968-44e7-899a-d1df1ecbeefe",
"revision": "3",
"createdDate": "2023-04-11T08:51:43.025Z",
"updatedDate": "2023-05-19T11:32:27.930Z",
"name": "Default policy",
"customPolicyDescription": {
"enabled": false,
"description": ""
},
"default": true,
"limitEarlyBookingPolicy": {
"enabled": false,
"earliestBookingInMinutes": 604800
},
"limitLateBookingPolicy": {
"enabled": false,
"latestBookingInMinutes": 1440
},
"bookAfterStartPolicy": {
"enabled": false
},
"cancellationPolicy": {
"enabled": true,
"limitLatestCancellation": false,
"latestCancellationInMinutes": 1440
},
"reschedulePolicy": {
"enabled": true,
"limitLatestReschedule": false,
"latestRescheduleInMinutes": 1440
},
"waitlistPolicy": {
"enabled": false,
"capacity": 10,
"reservationTimeInMinutes": 10
},
"participantsPolicy": {
"enabled": false,
"maxParticipantsPerBooking": 1
},
"resourcesPolicy": {
"enabled": false,
"autoAssignAllowed": false
}
},
"schedule": {
"id": "8acb939f-34d1-4ac9-8564-b24c29e11ef7",
"firstSessionStart": "2023-02-13T15:30:00Z"
},
"supportedSlugs": [
{
"name": "dog-yoga",
"custom": false,
"createdDate": "2023-02-09T16:40:45.267Z"
}
],
"mainSlug": {
"name": "dog-yoga",
"custom": false,
"createdDate": "2023-02-09T16:40:45.267Z"
},
"urls": {
"servicePage": {
"relativePath": "/service-page/dog-yoga",
"url": "https://example.com/services-v2"
},
"bookingPage": {
"relativePath": "/book-online/dog-yoga/book",
"url": "https://example.com/services-v2"
},
"calendarPage": {
"relativePath": "/booking-calendar/dog-yoga",
"url": "https://example.com/services-v2"
}
}
}
}
Deletes a service.
You can only call this method when authenticated as a Wix app or Wix user identity.
ID of the service to delete.
Whether to preserve future sessions with participants.
Default: false
Whether to send the message about the changes to the customer.
Default: false
Custom message to send to the participants about the changes to the booking.
curl -X DELETE 'https://www.wixapis.com/bookings/v2/services/d779a301-398d-4552-aa8c-3bef0b65cedb' \
-H 'Authorization: <AUTH>'
{}
Updates a service.
Partial updates are supported.
Each time the service is updated, revision
increments by 1. You must include the
number of the existing revision when
updating the service. This ensures you're working with the
latest service information and prevents unintended overwrites.
You can only call this method when authenticated as a Wix app or Wix user identity.
Service ID.
Service to update. Partial updates are supported.
The updated service.
curl -X PATCH 'https://www.wixapis.com/bookings/v2/services/d779a301-398d-4552-aa8c-3bef0b65cedb' \
-H 'Authorization: <AUTH>' \
-d '{
"service": {
"id": "d779a301-398d-4552-aa8c-3bef0b65cedb",
"name": "Group Cat Hugging",
"revision": "1"
}
}'
{
"service": {
"id": "d779a301-398d-4552-aa8c-3bef0b65cedb",
"type": "APPOINTMENT",
"sortOrder": 0,
"name": "Group Cat Hugging",
"description": "Introducing the Purrfect Hug - the ultimate cat cuddling experience! Our team of expert cuddlers will come to your home and provide your furry feline with the warmest and snuggliest hugs around.",
"tagLine": "Get some purr therapy with our cat hugging service!",
"defaultCapacity": 1,
"media": {
"items": [],
"mainMedia": {
"image": {
"id": "fb5af50cdfee49a7b8d87f340c969e90.jpg",
"height": 4000,
"width": 6000
}
}
},
"hidden": false,
"payment": {
"rateType": "FIXED",
"fixed": {
"price": {
"value": "25",
"currency": "USD"
}
},
"options": {
"online": true,
"inPerson": false,
"deposit": false,
"pricingPlan": false
},
"pricingPlanIds": []
},
"onlineBooking": {
"enabled": true,
"requireManualApproval": false,
"allowMultipleRequests": false
},
"locations": [
{
"type": "CUSTOMER"
}
],
"bookingPolicy": {
"id": "2a8cbc1b-7968-44e7-899a-d1df1ecbeefe",
"revision": "3",
"createdDate": "2023-04-11T08:51:43.025Z",
"updatedDate": "2023-05-19T11:32:27.930Z",
"name": "Default policy",
"customPolicyDescription": {
"enabled": false,
"description": ""
},
"default": true,
"limitEarlyBookingPolicy": {
"enabled": false,
"earliestBookingInMinutes": 604800
},
"limitLateBookingPolicy": {
"enabled": false,
"latestBookingInMinutes": 1440
},
"bookAfterStartPolicy": {
"enabled": false
},
"cancellationPolicy": {
"enabled": true,
"limitLatestCancellation": false,
"latestCancellationInMinutes": 1440
},
"reschedulePolicy": {
"enabled": true,
"limitLatestReschedule": false,
"latestRescheduleInMinutes": 1440
},
"waitlistPolicy": {
"enabled": false,
"capacity": 10,
"reservationTimeInMinutes": 10
},
"participantsPolicy": {
"enabled": false,
"maxParticipantsPerBooking": 1
},
"resourcesPolicy": {
"enabled": false,
"autoAssignAllowed": false
}
},
"schedule": {
"id": "16e9e039-6437-4144-81a7-124ce6b369c4"
},
"supportedSlugs": [
{
"name": "group-cat-hugging",
"custom": false,
"createdDate": "2023-07-20T07:57:40.325Z"
},
{
"name": "personal-cat-hugging",
"custom": false,
"createdDate": "2023-07-20T07:48:06.900Z"
}
],
"mainSlug": {
"name": "group-cat-hugging",
"custom": false,
"createdDate": "2023-07-20T07:57:40.325Z"
},
"urls": {
"servicePage": {
"relativePath": "/service-page-statics/group-cat-hugging",
"url": "https://example.com/services-2-test/service-page-statics/group-cat-hugging"
},
"bookingPage": {
"relativePath": "/booking-form/group-cat-hugging/book",
"url": "https://example.com/services-2-test/booking-form/group-cat-hugging/book"
},
"calendarPage": {
"relativePath": "/booking-calendar-statics/group-cat-hugging",
"url": "https://example.com/services-2-test/booking-calendar-statics/group-cat-hugging"
}
},
"createdDate": "2023-07-20T07:48:07.319Z",
"updatedDate": "2023-07-20T07:57:40.637Z",
"revision": "2",
"staffMemberIds": ["76570209-101f-409b-af97-b445bdb63125"]
}
}
Retrieves a list of up to 100 services, given the provided paging, filtering, and sorting.
Define queries using WQL - Wix Query Language. For field support for filters and sorting, see Supported Filters and Sorting.
To retrieve all services use an empty query:
{
"query": {}
}
Query Services
runs with these defaults, which you can override:
paging.limit
is 100
.paging.offset
is 0
.Notes:
WQL expression.
The retrieved services.
Paging metadata, including offset and count.
curl -X POST 'https://www.wixapis.com/bookings/v2/services/query' \
-H 'Authorization: <AUTH>' \
-d '{
"query": {
"limit": 15,
"filter": {
"hidden": {
"$eq": "false"
}
},
"fields": ["name", "type", "description"]
}
}'
{
"services": [
{
"id": "0f01e746-2943-4893-97a3-9d52d8e9e26e",
"type": "APPOINTMENT",
"sortOrder": 1,
"name": "Personal Cat Hugging",
"description": "Introducing the Purrfect Hug - the ultimate cat cuddling experience! Our team of expert cuddlers will come to your home and provide your furry feline with the warmest and snuggliest hugs around.",
"tagLine": "Get some purr therapy with our cat hugging service!",
"defaultCapacity": 1,
"media": {
"items": [],
"mainMedia": {
"image": {
"id": "fb5af50cdfee49a7b8d87f340c969e90.jpg",
"url": "fb5af50cdfee49a7b8d87f340c969e90.jpg",
"height": 4000,
"width": 6000,
"filename": "fb5af50cdfee49a7b8d87f340c969e90.jpg"
}
}
},
"hidden": false,
"category": {
"id": "0c54fbd3-9de6-4d2f-8775-e58eac5f5921",
"name": "Our Services",
"sortOrder": 0
},
"form": {
"id": "00000000-0000-0000-0000-000000000000"
},
"payment": {
"rateType": "FIXED",
"fixed": {
"price": {
"value": "25",
"currency": "USD"
}
},
"pricingPlansIds": [],
"options": {
"online": true,
"inPerson": false,
"deposit": false,
"pricingPlan": false
}
},
"onlineBooking": {
"enabled": true,
"requireManualApproval": false,
"allowMultipleRequests": false
},
"staffMemberIds": ["76570209-101f-409b-af97-b445bdb63125"],
"conferencing": {
"enabled": false
},
"locations": [
{
"type": "CUSTOMER"
}
],
"bookingPolicy": {
"id": "2a8cbc1b-7968-44e7-899a-d1df1ecbeefe",
"revision": "3",
"createdDate": "2023-04-11T08:51:43.025Z",
"updatedDate": "2023-05-19T11:32:27.930Z",
"name": "Default policy",
"customPolicyDescription": {
"enabled": false,
"description": ""
},
"default": true,
"limitEarlyBookingPolicy": {
"enabled": false,
"earliestBookingInMinutes": 604800
},
"limitLateBookingPolicy": {
"enabled": false,
"latestBookingInMinutes": 1440
},
"bookAfterStartPolicy": {
"enabled": false
},
"cancellationPolicy": {
"enabled": true,
"limitLatestCancellation": false,
"latestCancellationInMinutes": 1440
},
"reschedulePolicy": {
"enabled": true,
"limitLatestReschedule": false,
"latestRescheduleInMinutes": 1440
},
"waitlistPolicy": {
"enabled": false,
"capacity": 10,
"reservationTimeInMinutes": 10
},
"participantsPolicy": {
"enabled": false,
"maxParticipantsPerBooking": 1
},
"resourcesPolicy": {
"enabled": false,
"autoAssignAllowed": false
}
},
"schedule": {
"id": "f986bc0e-ced0-48a7-8557-eb5c75c256cd",
"availabilityConstraints": {
"sessionDurations": [60],
"timeBetweenSessions": 0
}
},
"supportedSlugs": [
{
"name": "personal-cat-hugging",
"custom": false,
"createdDate": "2023-02-15T14:40:47.408Z"
},
{
"name": "initial-in-home-consultation",
"custom": false,
"createdDate": "2023-02-15T11:58:20.313Z"
}
],
"mainSlug": {
"name": "personal-cat-hugging",
"custom": false,
"createdDate": "2023-02-15T14:40:47.408Z"
},
"urls": {
"servicePage": {
"relativePath": "/service-page/personal-cat-hugging",
"url": "https://example.com/services-v2"
},
"bookingPage": {
"relativePath": "/book-online/personal-cat-hugging/book",
"url": "https://example.com/services-v2"
},
"calendarPage": {
"relativePath": "/booking-calendar/personal-cat-hugging",
"url": "https://example.com/services-v2"
}
}
},
{
"id": "353aa3b7-00ef-42bd-86ff-720d7ef60443",
"type": "CLASS",
"sortOrder": 0,
"name": "Dog Yoga",
"description": "Get ready to downward dog with your furry best friend! In this unique class, you and your pup will strike a pose and find your zen. With a mix of stretching, breathing exercises, and playtime, this class is sure to be a tail-waggin' good time. Whether you're a seasoned yogi or a pup-tastic beginner, this class is pawsitively perfect for all levels. Don't forget to bring your sense of humor, as there's sure to be a few doggy distractions and playful paw-terruptions along the way. Namaste!",
"tagLine": "Unleash your zen with downward dog and a wagging tail in our pup-poseful yoga class!",
"defaultCapacity": 50,
"media": {
"items": [],
"mainMedia": {
"image": {
"id": "nsplsh_4d7639686a6e4555485234~mv2_d_3024_4032_s_4_2.jpg",
"url": "nsplsh_4d7639686a6e4555485234~mv2_d_3024_4032_s_4_2.jpg",
"height": 4032,
"width": 3024,
"filename": "nsplsh_4d7639686a6e4555485234~mv2_d_3024_4032_s_4_2.jpg"
}
}
},
"hidden": false,
"category": {
"id": "7b5b9862-490f-491c-8477-d39baed078a1",
"name": "Best for fun dogs",
"sortOrder": 1
},
"form": {
"id": "00000000-0000-0000-0000-000000000000"
},
"payment": {
"rateType": "FIXED",
"fixed": {
"price": {
"value": "15",
"currency": "USD"
}
},
"pricingPlansIds": [],
"options": {
"online": true,
"inPerson": false,
"deposit": false,
"pricingPlan": false
}
},
"onlineBooking": {
"enabled": true,
"requireManualApproval": false,
"allowMultipleRequests": false
},
"staffMemberIds": [],
"conferencing": {
"enabled": true
},
"locations": [
{
"type": "BUSINESS"
}
],
"bookingPolicy": {
"id": "2a8cbc1b-7968-44e7-899a-d1df1ecbeefe",
"revision": "3",
"createdDate": "2023-04-11T08:51:43.025Z",
"updatedDate": "2023-05-19T11:32:27.930Z",
"name": "Default policy",
"customPolicyDescription": {
"enabled": false,
"description": ""
},
"default": true,
"limitEarlyBookingPolicy": {
"enabled": false,
"earliestBookingInMinutes": 604800
},
"limitLateBookingPolicy": {
"enabled": false,
"latestBookingInMinutes": 1440
},
"bookAfterStartPolicy": {
"enabled": false
},
"cancellationPolicy": {
"enabled": true,
"limitLatestCancellation": false,
"latestCancellationInMinutes": 1440
},
"reschedulePolicy": {
"enabled": true,
"limitLatestReschedule": false,
"latestRescheduleInMinutes": 1440
},
"waitlistPolicy": {
"enabled": false,
"capacity": 10,
"reservationTimeInMinutes": 10
},
"participantsPolicy": {
"enabled": false,
"maxParticipantsPerBooking": 1
},
"resourcesPolicy": {
"enabled": false,
"autoAssignAllowed": false
}
},
"schedule": {
"id": "8acb939f-34d1-4ac9-8564-b24c29e11ef7",
"firstSessionStart": "2023-02-13T15:30:00Z"
},
"supportedSlugs": [
{
"name": "dog-yoga",
"custom": false,
"createdDate": "2023-02-09T16:40:45.267Z"
}
],
"mainSlug": {
"name": "dog-yoga",
"custom": false,
"createdDate": "2023-02-09T16:40:45.267Z"
},
"urls": {
"servicePage": {
"relativePath": "/service-page/dog-yoga",
"url": "https://example.com/services-v2"
},
"bookingPage": {
"relativePath": "/book-online/dog-yoga/book",
"url": "https://example.com/services-v2"
},
"calendarPage": {
"relativePath": "/booking-calendar/dog-yoga",
"url": "https://example.com/services-v2"
}
}
}
],
"pagingMetadata": {
"count": 2,
"cursors": {}
}
}
Counts services according to given criteria. Use WQL filter to define the criteria.
The filters for performing the count.
The number of services matching the given filter.
curl -X POST 'https://www.wixapis.com/bookings/v2/services/count' \
-H 'Authorization: <AUTH>' \
-d '{
"query": {
"filter": {
"hidden": {
"$eq": "false"
}
}
}
}'
{
"count": 2
}
Unique event ID. Allows clients to ignore duplicate webhooks.
Fully qualified domain name of the entity associated with the event. Expected wix.bookings.services.v2.service
.
Event name. Expected created
.
ID of the entity associated with the event.
Event timestamp.
Whether the event was triggered as a result of a privacy regulation application (for example, GDPR).
If present, indicates the action that triggered the event.
Event information.
The data payload will include the following as an encoded JWT:
{
"data": {
"eventType": "wix.bookings.services.v2.service_created",
"instanceId": "<app-instance-id>",
"data": "<stringified-JSON>",
// The identity field is sent as a stringified JSON
"identity": {
"identityType": "<identityType>", // ANONYMOUS_VISITOR, MEMBER, WIX_USER, APP
"anonymousVisitorId": "<anonymousVisitorId>", // in case of ANONYMOUS_VISITOR
"memberId": "<memberId>", // in case of MEMBER
"wixUserId": "<wixUserId>", // in case of WIX_USER
"appId": "<appId>" // in case of APP
}
}
}
Unique event ID. Allows clients to ignore duplicate webhooks.
Fully qualified domain name of the entity associated with the event. Expected wix.bookings.services.v2.service
.
Event name. Expected updated
.
ID of the entity associated with the event.
Event timestamp.
Whether the event was triggered as a result of a privacy regulation application (for example, GDPR).
If present, indicates the action that triggered the event.
Event information.
The data payload will include the following as an encoded JWT:
{
"data": {
"eventType": "wix.bookings.services.v2.service_updated",
"instanceId": "<app-instance-id>",
"data": "<stringified-JSON>",
// The identity field is sent as a stringified JSON
"identity": {
"identityType": "<identityType>", // ANONYMOUS_VISITOR, MEMBER, WIX_USER, APP
"anonymousVisitorId": "<anonymousVisitorId>", // in case of ANONYMOUS_VISITOR
"memberId": "<memberId>", // in case of MEMBER
"wixUserId": "<wixUserId>", // in case of WIX_USER
"appId": "<appId>" // in case of APP
}
}
}
Unique event ID. Allows clients to ignore duplicate webhooks.
Fully qualified domain name of the entity associated with the event. Expected wix.bookings.services.v2.service
.
Event name. Expected deleted
.
ID of the entity associated with the event.
Event timestamp.
Whether the event was triggered as a result of a privacy regulation application (for example, GDPR).
If present, indicates the action that triggered the event.
Event information.
The data payload will include the following as an encoded JWT:
{
"data": {
"eventType": "wix.bookings.services.v2.service_deleted",
"instanceId": "<app-instance-id>",
"data": "<stringified-JSON>",
// The identity field is sent as a stringified JSON
"identity": {
"identityType": "<identityType>", // ANONYMOUS_VISITOR, MEMBER, WIX_USER, APP
"anonymousVisitorId": "<anonymousVisitorId>", // in case of ANONYMOUS_VISITOR
"memberId": "<memberId>", // in case of MEMBER
"wixUserId": "<wixUserId>", // in case of WIX_USER
"appId": "<appId>" // in case of APP
}
}
}