> Portal Navigation: > > - Append `.md` to any URL under `https://dev.wix.com/docs/` to get its markdown version. > - Pages are either content pages (article or reference text) or menu pages (a list of links to child pages). > - To get a menu page, truncate any URL to a parent path and append `.md` (e.g. `https://dev.wix.com/docs/sdk.md`, `https://dev.wix.com/docs/sdk/core-modules.md`). > - Top-level index of all portals: https://dev.wix.com/docs/llms.txt > - Full concatenated docs: https://dev.wix.com/docs/llms-full.txt # UpdateServiceOptionsAndVariants # Package: services # Namespace: ServiceOptionsAndVariantsService # Method link: https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/service-options-and-variants/update-service-options-and-variants.md ## Permission Scopes: Manage Bookings Services and Settings: SCOPE.BOOKINGS.CONFIGURATION ## Introduction Updates a `serviceOptionsAndVariants` object. Currently, only a single option is supported per `serviceOptionsAndVariants` object. If you want to update `variants`, you must pass the entire list of supported variants, not only newly added variants. If you want to update `options`, you must pass the entire list of supported options, not only newly added options. --- ## REST API ### Schema ``` Method: updateServiceOptionsAndVariants Description: Updates a `serviceOptionsAndVariants` object. Currently, only a single option is supported per `serviceOptionsAndVariants` object. If you want to update `variants`, you must pass the entire list of supported variants, not only newly added variants. If you want to update `options`, you must pass the entire list of supported options, not only newly added options. URL: https://www.wixapis.com/bookings/v1/serviceOptionsAndVariants/{serviceOptionsAndVariants.id} Method: PATCH # Note: If the parameter `a.b` is listed under required parameters, `b` is only required if `a` is also present. Required parameters: serviceOptionsAndVariants, serviceOptionsAndVariants.id, serviceOptionsAndVariants.revision Method parameters: param name: serviceOptionsAndVariants | type: ServiceOptionsAndVariants | description: The `serviceOptionsAndVariants` object links a [service](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/services-v2/introduction.md) to its variants. You can use it to offer customers different prices for a service, depending on which choices they book. | required: true - name: id | type: string | description: GUID of the `serviceOptionsAndVariants` object. | required: true - name: serviceId | type: string | description: GUID of the service related to these options and variants. - name: options | type: ServiceOptions | description: Service options. Note that currently only a single option is supported per service. - name: values | type: array | description: Values of the service options. Max: 1 service option - ONE-OF: - name: customData | type: CustomServiceOption | description: Details about the custom option. Available only for `CUSTOM` options. - name: name | type: string | description: Name of the service option. For example, `Age group`, `Location`, `Equipment`, or `Time`. - name: choices | type: array | description: Available choices for the service option. For example, `child`, `student`, `adult`, and `senior` for a service option named `Age group`. Each value must be unique. The value's case is ignored, meaning `Child` and `child` are considered to be identical. Currently, only a single choice is supported because a service can have only a single option. Max: 1 choice - name: durationData | type: DurationServiceOption | description: - name: name | type: string | description: Optional name of the duration option. For example, `Short Class`, or `Extended Class`. - name: id | type: string | description: GUID of the service option. - name: type | type: ServiceOptionType | description: Type of the service option. - enum: - UNKNOWN: There is no information about the option type. - CUSTOM: The service option is based on a custom parameter. For example, age group, booked equipment, or appointment timing. - STAFF_MEMBER: It's a [staff member](https://dev.wix.com/docs/rest/business-solutions/bookings/staff-members/introduction.md) based option. - DURATION: It's a duration-based option. - name: variants | type: ServiceVariants | description: Information about the service's variants. - name: values | type: array | description: Values of the service variants. - name: choices | type: array | description: Choices for the service option. Currently, only a single choice is supported because a service can have only a single option. Max: 1 choice - ONE-OF: - name: custom | type: string | description: Name of the custom choice. - name: staffMemberId | type: string | description: GUID of the [resource](https://dev.wix.com/docs/api-reference/business-solutions/bookings/resources/resources-v2/introduction.md) associated with the [staff member](https://dev.wix.com/docs/api-reference/business-solutions/bookings/staff-members/introduction.md) providing the service. - name: duration | type: Duration | description: Information about the option's duration. - name: minutes | type: integer | description: Duration of the service in minutes. Min: `1` minute Max: `44639` minutes (30 days, 23 hours, and 59 minutes) - name: name | type: string | description: Name of the duration option. Default: Human-readable text of `minutes`. For example, `1 hr 30 min`. - name: optionId | type: string | description: GUID of the service option. - name: price | type: Money | description: Information about the service variant's price. - name: value | type: string | description: Monetary amount. Decimal string with a period as a decimal separator (e.g., 3.99). Optionally, a single (-), to indicate that the amount is negative. - name: currency | type: string | description: Currency code. Must be valid ISO 4217 currency code (e.g., USD). - name: formattedValue | type: string | description: Monetary amount. Decimal string in local format (e.g., 1 000,30). Optionally, a single (-), to indicate that the amount is negative. - name: revision | type: string | description: Revision number, which increments by 1 each time the `serviceOptionsAndVariants` object is updated. To prevent conflicting changes, the current revision must be passed when updating and deleting the `serviceOptionsAndVariants` object. Ignored when creating a `serviceOptionsAndVariants` object. | required: true - name: extendedFields | type: ExtendedFields | description: Extensions enabling users to save custom data related to service options and variants. - name: namespaces | type: object | description: Extended field data. Each key corresponds to the namespace of the app that created the extended fields. The value of each key is structured according to the schema defined when the extended fields were configured. You can only access fields for which you have the appropriate permissions. Learn more about [extended fields](https://dev.wix.com/docs/rest/articles/getting-started/extended-fields.md). Return type: UpdateServiceOptionsAndVariantsResponse - name: serviceOptionsAndVariants | type: ServiceOptionsAndVariants | description: Updated `serviceOptionsAndVariants` object. - name: id | type: string | description: GUID of the `serviceOptionsAndVariants` object. - name: serviceId | type: string | description: GUID of the service related to these options and variants. - name: options | type: ServiceOptions | description: Service options. Note that currently only a single option is supported per service. - name: values | type: array | description: Values of the service options. Max: 1 service option - ONE-OF: - name: customData | type: CustomServiceOption | description: Details about the custom option. Available only for `CUSTOM` options. - name: name | type: string | description: Name of the service option. For example, `Age group`, `Location`, `Equipment`, or `Time`. - name: choices | type: array | description: Available choices for the service option. For example, `child`, `student`, `adult`, and `senior` for a service option named `Age group`. Each value must be unique. The value's case is ignored, meaning `Child` and `child` are considered to be identical. Currently, only a single choice is supported because a service can have only a single option. Max: 1 choice - name: durationData | type: DurationServiceOption | description: - name: name | type: string | description: Optional name of the duration option. For example, `Short Class`, or `Extended Class`. - name: id | type: string | description: GUID of the service option. - name: type | type: ServiceOptionType | description: Type of the service option. - enum: - UNKNOWN: There is no information about the option type. - CUSTOM: The service option is based on a custom parameter. For example, age group, booked equipment, or appointment timing. - STAFF_MEMBER: It's a [staff member](https://dev.wix.com/docs/rest/business-solutions/bookings/staff-members/introduction.md) based option. - DURATION: It's a duration-based option. - name: variants | type: ServiceVariants | description: Information about the service's variants. - name: values | type: array | description: Values of the service variants. - name: choices | type: array | description: Choices for the service option. Currently, only a single choice is supported because a service can have only a single option. Max: 1 choice - ONE-OF: - name: custom | type: string | description: Name of the custom choice. - name: staffMemberId | type: string | description: GUID of the [resource](https://dev.wix.com/docs/api-reference/business-solutions/bookings/resources/resources-v2/introduction.md) associated with the [staff member](https://dev.wix.com/docs/api-reference/business-solutions/bookings/staff-members/introduction.md) providing the service. - name: duration | type: Duration | description: Information about the option's duration. - name: minutes | type: integer | description: Duration of the service in minutes. Min: `1` minute Max: `44639` minutes (30 days, 23 hours, and 59 minutes) - name: name | type: string | description: Name of the duration option. Default: Human-readable text of `minutes`. For example, `1 hr 30 min`. - name: optionId | type: string | description: GUID of the service option. - name: price | type: Money | description: Information about the service variant's price. - name: value | type: string | description: Monetary amount. Decimal string with a period as a decimal separator (e.g., 3.99). Optionally, a single (-), to indicate that the amount is negative. - name: currency | type: string | description: Currency code. Must be valid ISO 4217 currency code (e.g., USD). - name: formattedValue | type: string | description: Monetary amount. Decimal string in local format (e.g., 1 000,30). Optionally, a single (-), to indicate that the amount is negative. - name: minPrice | type: Money | description: Price of the cheapest service variant. - name: maxPrice | type: Money | description: Price of the most expensive service variant. - name: revision | type: string | description: Revision number, which increments by 1 each time the `serviceOptionsAndVariants` object is updated. To prevent conflicting changes, the current revision must be passed when updating and deleting the `serviceOptionsAndVariants` object. Ignored when creating a `serviceOptionsAndVariants` object. - name: extendedFields | type: ExtendedFields | description: Extensions enabling users to save custom data related to service options and variants. - name: namespaces | type: object | description: Extended field data. Each key corresponds to the namespace of the app that created the extended fields. The value of each key is structured according to the schema defined when the extended fields were configured. You can only access fields for which you have the appropriate permissions. Learn more about [extended fields](https://dev.wix.com/docs/rest/articles/getting-started/extended-fields.md). Possible Errors: HTTP Code: 400 | Status Code: INVALID_ARGUMENT | Application Code: UNSUPPORTED_OPTION_DATA | Description: Passing `customData` isn't supported for the passed `options.values.type`. HTTP Code: 400 | Status Code: INVALID_ARGUMENT | Application Code: MISSING_CUSTOM_CHOICES | Description: All custom choices must be provided in the `variants` array. Either add missing variants or remove unnecessary choices. HTTP Code: 400 | Status Code: INVALID_ARGUMENT | Application Code: IDENTICAL_CHOICES | Description: Remove identical choices from the request. Note that choices aren't case sensitive. HTTP Code: 400 | Status Code: INVALID_ARGUMENT | Application Code: MISSING_STAFF_VARIANTS | Description: All staff members providing the service must have their associated resource GUIDs specified in the `variants` array. Either add missing resource GUIDs to `variants.values.choices.staffMemberId`, or remove them from the service schedule's `scheduleOwnerId`s in the active schedule's `availability.linkedSchedules` array. HTTP Code: 400 | Status Code: INVALID_ARGUMENT | Application Code: UNKNOWN_STAFF_IDS | Description: All resource GUIDs passed in `variants.values.choices.staffMemberId` must be connected to the service's schedule, defined as `scheduleOwnerId` in the active schedule's `availability.linkedSchedules` array. HTTP Code: 400 | Status Code: INVALID_ARGUMENT | Application Code: UNSUPPORTED_OPTION_TYPE | Description: The passed option type isn't supported for the passed service. Staff member based variants require that the service's schedule has staff members defined as `scheduleOwnerId` in the active schedule's `availability.linkedSchedules` array. HTTP Code: 400 | Status Code: INVALID_ARGUMENT | Application Code: MULTIPLE_CURRENCIES | Description: Multiple currencies in the `variants` array. All variants must use the same currency. HTTP Code: 400 | Status Code: INVALID_ARGUMENT | Application Code: UNKNOWN_OPTION_IDS | Description: Unknown option GUIDs in the `variants` array. ``` ### Examples ### Update the price of a single variant. ```curl curl -X PATCH \ 'https://wixapis.com/bookings/v1/serviceOptionsAndVariants/7e7eac53-21c9-41fd-844b-25b287aa38ce' \ -H 'Content-Type: application/json;charset=UTF-8' \ -H 'Authorization: ' \ -d '{ "serviceOptionsAndVariants": { "serviceId": "6072fbad-5c95-4bf6-a9bc-4280aadc1ae8", "options": { "values": [ { "customData": { "choices": [ "Student", "Adult" ], "name": "Customer Type" }, "id": "0b78af72-0ba0-4e71-ba39-b4386555a353", "type": "CUSTOM" } ] }, "variants": { "values": [ { "choices": [ { "optionId": "0b78af72-0ba0-4e71-ba39-b4386555a353", "custom": "Student" } ], "price": { "value": "8", "currency": "EUR" } }, { "choices": [ { "optionId": "0b78af72-0ba0-4e71-ba39-b4386555a353", "custom": "Adult" } ], "price": { "value": "12", "currency": "EUR" } } ] }, "revision": "1", "id": "7e7eac53-21c9-41fd-844b-25b287aa38ce" } }' ``` ### Full update of a `serviceOptionsAndVariants` object. ```curl curl -X PATCH \ 'https://wixapis.com/bookings/v1/serviceOptionsAndVariants/7e7eac53-21c9-41fd-844b-25b287aa38ce' \ -H 'Content-Type: application/json;charset=UTF-8' \ -H 'Authorization: ' \ -d '{ "serviceOptionsAndVariants": { "serviceId": "6072fbad-5c95-4bf6-a9bc-4280aadc1ae8", "options": { "values": [ { "customData": { "choices": [ "Student", "Adult", "Child" ], "name": "Customer Type" }, "id": "0b78af72-0ba0-4e71-ba39-b4386555a353", "type": "CUSTOM" } ] }, "variants": { "values": [ { "choices": [ { "optionId": "0b78af72-0ba0-4e71-ba39-b4386555a353", "custom": "Student" } ], "price": { "value": "8", "currency": "EUR" } }, { "choices": [ { "optionId": "0b78af72-0ba0-4e71-ba39-b4386555a353", "custom": "Adult" } ], "price": { "value": "12", "currency": "EUR" } }, { "choices": [ { "optionId": "0b78af72-0ba0-4e71-ba39-b4386555a353", "custom": "Child" } ], "price": { "currency": "EUR", "value": "5" } } ] }, "revision": "1", "id": "7e7eac53-21c9-41fd-844b-25b287aa38ce" } }' ``` --- ## JavaScript SDK ### Schema ``` Method: wixClientAdmin.services.ServiceOptionsAndVariantsService.updateServiceOptionsAndVariants(_id, serviceOptionsAndVariants) Description: Updates a `serviceOptionsAndVariants` object. Currently, only a single option is supported per `serviceOptionsAndVariants` object. If you want to update `variants`, you must pass the entire list of supported variants, not only newly added variants. If you want to update `options`, you must pass the entire list of supported options, not only newly added options. # Note: If the parameter `a.b` is listed under required parameters, `b` is only required if `a` is also present. Required parameters: serviceOptionsAndVariants, _id, serviceOptionsAndVariants.revision Method parameters: param name: _id | type: string | description: GUID of the `serviceOptionsAndVariants` object. | required: true param name: serviceOptionsAndVariants | type: UpdateServiceOptionsAndVariants | description: The `serviceOptionsAndVariants` object links a [service](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/services-v2/introduction.md) to its variants. You can use it to offer customers different prices for a service, depending on which choices they book. | required: true - name: serviceId | type: string | description: GUID of the service related to these options and variants. - name: options | type: ServiceOptions | description: Service options. Note that currently only a single option is supported per service. - name: values | type: array | description: Values of the service options. Max: 1 service option - ONE-OF: - name: customData | type: CustomServiceOption | description: Details about the custom option. Available only for `CUSTOM` options. - name: name | type: string | description: Name of the service option. For example, `Age group`, `Location`, `Equipment`, or `Time`. - name: choices | type: array | description: Available choices for the service option. For example, `child`, `student`, `adult`, and `senior` for a service option named `Age group`. Each value must be unique. The value's case is ignored, meaning `Child` and `child` are considered to be identical. Currently, only a single choice is supported because a service can have only a single option. Max: 1 choice - name: durationData | type: DurationServiceOption | description: - name: name | type: string | description: Optional name of the duration option. For example, `Short Class`, or `Extended Class`. - name: _id | type: string | description: GUID of the service option. - name: type | type: ServiceOptionType | description: Type of the service option. - enum: - UNKNOWN: There is no information about the option type. - CUSTOM: The service option is based on a custom parameter. For example, age group, booked equipment, or appointment timing. - STAFF_MEMBER: It's a [staff member](https://dev.wix.com/docs/rest/business-solutions/bookings/staff-members/introduction.md) based option. - DURATION: It's a duration-based option. - name: variants | type: ServiceVariants | description: Information about the service's variants. - name: values | type: array | description: Values of the service variants. - name: choices | type: array | description: Choices for the service option. Currently, only a single choice is supported because a service can have only a single option. Max: 1 choice - ONE-OF: - name: custom | type: string | description: Name of the custom choice. - name: staffMemberId | type: string | description: GUID of the [resource](https://dev.wix.com/docs/api-reference/business-solutions/bookings/resources/resources-v2/introduction.md) associated with the [staff member](https://dev.wix.com/docs/api-reference/business-solutions/bookings/staff-members/introduction.md) providing the service. - name: duration | type: Duration | description: Information about the option's duration. - name: minutes | type: integer | description: Duration of the service in minutes. Min: `1` minute Max: `44639` minutes (30 days, 23 hours, and 59 minutes) - name: name | type: string | description: Name of the duration option. Default: Human-readable text of `minutes`. For example, `1 hr 30 min`. - name: optionId | type: string | description: GUID of the service option. - name: price | type: Money | description: Information about the service variant's price. - name: value | type: string | description: Monetary amount. Decimal string with a period as a decimal separator (e.g., 3.99). Optionally, a single (-), to indicate that the amount is negative. - name: currency | type: string | description: Currency code. Must be valid ISO 4217 currency code (e.g., USD). - name: formattedValue | type: string | description: Monetary amount. Decimal string in local format (e.g., 1 000,30). Optionally, a single (-), to indicate that the amount is negative. - name: revision | type: string | description: Revision number, which increments by 1 each time the `serviceOptionsAndVariants` object is updated. To prevent conflicting changes, the current revision must be passed when updating and deleting the `serviceOptionsAndVariants` object. Ignored when creating a `serviceOptionsAndVariants` object. | required: true - name: extendedFields | type: ExtendedFields | description: Extensions enabling users to save custom data related to service options and variants. - name: namespaces | type: object | description: Extended field data. Each key corresponds to the namespace of the app that created the extended fields. The value of each key is structured according to the schema defined when the extended fields were configured. You can only access fields for which you have the appropriate permissions. Learn more about [extended fields](https://dev.wix.com/docs/rest/articles/getting-started/extended-fields.md). Return type: PROMISE - name: _id | type: string | description: GUID of the `serviceOptionsAndVariants` object. - name: serviceId | type: string | description: GUID of the service related to these options and variants. - name: options | type: ServiceOptions | description: Service options. Note that currently only a single option is supported per service. - name: values | type: array | description: Values of the service options. Max: 1 service option - ONE-OF: - name: customData | type: CustomServiceOption | description: Details about the custom option. Available only for `CUSTOM` options. - name: name | type: string | description: Name of the service option. For example, `Age group`, `Location`, `Equipment`, or `Time`. - name: choices | type: array | description: Available choices for the service option. For example, `child`, `student`, `adult`, and `senior` for a service option named `Age group`. Each value must be unique. The value's case is ignored, meaning `Child` and `child` are considered to be identical. Currently, only a single choice is supported because a service can have only a single option. Max: 1 choice - name: durationData | type: DurationServiceOption | description: - name: name | type: string | description: Optional name of the duration option. For example, `Short Class`, or `Extended Class`. - name: _id | type: string | description: GUID of the service option. - name: type | type: ServiceOptionType | description: Type of the service option. - enum: - UNKNOWN: There is no information about the option type. - CUSTOM: The service option is based on a custom parameter. For example, age group, booked equipment, or appointment timing. - STAFF_MEMBER: It's a [staff member](https://dev.wix.com/docs/rest/business-solutions/bookings/staff-members/introduction.md) based option. - DURATION: It's a duration-based option. - name: variants | type: ServiceVariants | description: Information about the service's variants. - name: values | type: array | description: Values of the service variants. - name: choices | type: array | description: Choices for the service option. Currently, only a single choice is supported because a service can have only a single option. Max: 1 choice - ONE-OF: - name: custom | type: string | description: Name of the custom choice. - name: staffMemberId | type: string | description: GUID of the [resource](https://dev.wix.com/docs/api-reference/business-solutions/bookings/resources/resources-v2/introduction.md) associated with the [staff member](https://dev.wix.com/docs/api-reference/business-solutions/bookings/staff-members/introduction.md) providing the service. - name: duration | type: Duration | description: Information about the option's duration. - name: minutes | type: integer | description: Duration of the service in minutes. Min: `1` minute Max: `44639` minutes (30 days, 23 hours, and 59 minutes) - name: name | type: string | description: Name of the duration option. Default: Human-readable text of `minutes`. For example, `1 hr 30 min`. - name: optionId | type: string | description: GUID of the service option. - name: price | type: Money | description: Information about the service variant's price. - name: value | type: string | description: Monetary amount. Decimal string with a period as a decimal separator (e.g., 3.99). Optionally, a single (-), to indicate that the amount is negative. - name: currency | type: string | description: Currency code. Must be valid ISO 4217 currency code (e.g., USD). - name: formattedValue | type: string | description: Monetary amount. Decimal string in local format (e.g., 1 000,30). Optionally, a single (-), to indicate that the amount is negative. - name: minPrice | type: Money | description: Price of the cheapest service variant. - name: maxPrice | type: Money | description: Price of the most expensive service variant. - name: revision | type: string | description: Revision number, which increments by 1 each time the `serviceOptionsAndVariants` object is updated. To prevent conflicting changes, the current revision must be passed when updating and deleting the `serviceOptionsAndVariants` object. Ignored when creating a `serviceOptionsAndVariants` object. - name: extendedFields | type: ExtendedFields | description: Extensions enabling users to save custom data related to service options and variants. - name: namespaces | type: object | description: Extended field data. Each key corresponds to the namespace of the app that created the extended fields. The value of each key is structured according to the schema defined when the extended fields were configured. You can only access fields for which you have the appropriate permissions. Learn more about [extended fields](https://dev.wix.com/docs/rest/articles/getting-started/extended-fields.md). Possible Errors: HTTP Code: 400 | Status Code: INVALID_ARGUMENT | Application Code: UNSUPPORTED_OPTION_DATA | Description: Passing `customData` isn't supported for the passed `options.values.type`. HTTP Code: 400 | Status Code: INVALID_ARGUMENT | Application Code: MISSING_CUSTOM_CHOICES | Description: All custom choices must be provided in the `variants` array. Either add missing variants or remove unnecessary choices. HTTP Code: 400 | Status Code: INVALID_ARGUMENT | Application Code: IDENTICAL_CHOICES | Description: Remove identical choices from the request. Note that choices aren't case sensitive. HTTP Code: 400 | Status Code: INVALID_ARGUMENT | Application Code: MISSING_STAFF_VARIANTS | Description: All staff members providing the service must have their associated resource GUIDs specified in the `variants` array. Either add missing resource GUIDs to `variants.values.choices.staffMemberId`, or remove them from the service schedule's `scheduleOwnerId`s in the active schedule's `availability.linkedSchedules` array. HTTP Code: 400 | Status Code: INVALID_ARGUMENT | Application Code: UNKNOWN_STAFF_IDS | Description: All resource GUIDs passed in `variants.values.choices.staffMemberId` must be connected to the service's schedule, defined as `scheduleOwnerId` in the active schedule's `availability.linkedSchedules` array. HTTP Code: 400 | Status Code: INVALID_ARGUMENT | Application Code: UNSUPPORTED_OPTION_TYPE | Description: The passed option type isn't supported for the passed service. Staff member based variants require that the service's schedule has staff members defined as `scheduleOwnerId` in the active schedule's `availability.linkedSchedules` array. HTTP Code: 400 | Status Code: INVALID_ARGUMENT | Application Code: MULTIPLE_CURRENCIES | Description: Multiple currencies in the `variants` array. All variants must use the same currency. HTTP Code: 400 | Status Code: INVALID_ARGUMENT | Application Code: UNKNOWN_OPTION_IDS | Description: Unknown option GUIDs in the `variants` array. ``` ### Examples ### updateServiceOptionsAndVariants ```javascript import { serviceOptionsAndVariants } from '@wix/bookings'; async function updateServiceOptionsAndVariants(_id,serviceOptionsAndVariants) { const response = await serviceOptionsAndVariants.updateServiceOptionsAndVariants(_id,serviceOptionsAndVariants); }; ``` ### updateServiceOptionsAndVariants (with elevated permissions) ```javascript import { serviceOptionsAndVariants } from '@wix/bookings'; import { auth } from '@wix/essentials'; async function myUpdateServiceOptionsAndVariantsMethod(_id,serviceOptionsAndVariants) { const elevatedUpdateServiceOptionsAndVariants = auth.elevate(serviceOptionsAndVariants.updateServiceOptionsAndVariants); const response = await elevatedUpdateServiceOptionsAndVariants(_id,serviceOptionsAndVariants); } ``` ### updateServiceOptionsAndVariants (self-hosted) Self-hosted SDK calls require you to [create a client](https://dev.wix.com/docs/sdk/articles/work-with-the-sdk/about-the-wix-client.md). ```javascript import { createClient } from '@wix/sdk'; import { serviceOptionsAndVariants } from '@wix/bookings'; // Import the auth strategy for the relevant access type // Import the relevant host module if needed const myWixClient = createClient ({ modules: { serviceOptionsAndVariants }, // Include the auth strategy and host as relevant }); async function updateServiceOptionsAndVariants(_id,serviceOptionsAndVariants) { const response = await myWixClient.serviceOptionsAndVariants.updateServiceOptionsAndVariants(_id,serviceOptionsAndVariants); }; ``` ---