> 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

# SetServiceProvider

# Package: staffMembers

# Namespace: StaffMembersService

# Method link: https://dev.wix.com/docs/api-reference/business-solutions/bookings/staff-members/staff-members/set-service-provider.md

## Permission Scopes:
Manage Bookings: SCOPE.DC-BOOKINGS.MANAGE-BOOKINGS

## Introduction

Sets whether a staff member is a service provider, meaning someone who provides bookable services to customers.


Demoting a staff member to non-provider hides them from booking flows. Their
working hours are preserved and existing bookings aren't affected.

Promoting a staff member to service provider also grants the Wix user connected to them the
Staff role, if they don't already have it. Demoting the staff member doesn't revoke that role.

---

## REST API

### Schema

```
 Method: setServiceProvider
 Description: Sets whether a staff member is a service provider, meaning someone who provides bookable services to customers.   Demoting a staff member to non-provider hides them from booking flows. Their working hours are preserved and existing bookings aren't affected.  Promoting a staff member to service provider also grants the Wix user connected to them the Staff role, if they don't already have it. Demoting the staff member doesn't revoke that role.
 URL: https://www.wixapis.com/bookings/v1/staff-members/{staffMemberId}/set-service-provider
 Method: POST
 # Note: If the parameter `a.b` is listed under required parameters, `b` is only required if `a` is also present.
 Required parameters:  serviceProvider
 Method parameters: 
   param name: fields | type: array<fields> | description: Conditional fields to return.  | validation: maxItems 3
                 - enum:
                 -     RESOURCE_DETAILS: Includes `resource` in the response.
                 -     ASSOCIATED_IDENTITY_STATUS: Includes `associatedIdentityStatus` in the response.
   param name: serviceProvider | type: serviceProvider | description: Whether the staff member should be a service provider. When `true`, the staff member appears in booking flows, and the Wix user connected to them is granted the Staff role if they don't already have it.  When `false`, the staff member no longer appears in booking flows. Their working hours are preserved, existing bookings aren't affected, and the Staff role isn't revoked. | required: true 
 Return type: SetServiceProviderResponse
  - name: staffMember | type: StaffMember | description: Updated staff member.  
     - name: id | type: string | description: Staff member GUID.  | read-only: true | validation: format GUID
     - name: name | type: string | description: Staff member name.  | validation: minLength 1, maxLength 40
     - name: email | type: string | description: Staff member's email address. This field is populated based on the `publiclyAccessible` setting in the [Staff Member Settings API](https://dev.wix.com/docs/api-reference/business-solutions/bookings/staff-members/staff-member-settings/introduction.md). When the setting is disabled, this field is empty if the calling [identity](https://dev.wix.com/docs/build-apps/develop-your-app/access/about-identities.md) doesn't have sufficient permissions. Identities with appropriate permissions can access this field regardless of the setting.  | validation: maxLength 320, format EMAIL
     - name: phone | type: string | description: Staff member's phone number. This field is populated based on the `publiclyAccessible` setting in the [Staff Member Settings API](https://dev.wix.com/docs/api-reference/business-solutions/bookings/staff-members/staff-member-settings/introduction.md). When the setting is disabled, this field is empty if the calling [identity](https://dev.wix.com/docs/build-apps/develop-your-app/access/about-identities.md) doesn't have sufficient permissions. Identities with appropriate permissions can access this field regardless of the setting.  | validation: maxLength 20, format PHONE
     - name: description | type: string | description: Description for the staff member. For example, `Experienced nail technician specialized in gel and acrylic nails`.  | validation: maxLength 500
     - name: mainMedia | type: MediaItem | description: Staff media.  
        - ONE-OF: 
           - name: image | type: Image | description: Staff member's main image.  
              - name: id | type: string | description: WixMedia image GUID. To manage media assets, use the [Media Manager API](https://dev.wix.com/docs/rest/assets/media/media-manager/introduction.md)  | validation: maxLength 2048
              - name: url | type: string | description: Image URL.  | validation: maxLength 2048
              - name: height | type: integer | description: Original image height.  | read-only: true 
              - name: width | type: integer | description: Original image width.  | read-only: true 
              - name: altText | type: string | description: Image alt text.  | validation: maxLength 2048
              - name: filename | type: string | description: Image filename.  | read-only: true | validation: maxLength 2048
     - name: resourceId | type: string | description: Staff member's [resource GUID](https://dev.wix.com/docs/api-reference/business-solutions/bookings/resources/resources-v2/introduction.md), identical to `resource.id`.  | read-only: true | validation: format GUID
     - name: resource | type: Resource | description: Details about the [resource object](https://dev.wix.com/docs/api-reference/business-solutions/bookings/resources/resources-v2/resource-object.md) associated with the staff member. Available only if you specify `RESOURCE_DETAILS` in the `fields` array.  | read-only: true 
        - name: id | type: string | description: GUID of the [resource](https://dev.wix.com/docs/rest/business-solutions/bookings/resources/resources-v2/introduction.md) associated with the staff member.  | validation: format GUID
        - name: workingHoursSchedules | type: array<WorkingHoursSchedule> | description: Working hour [schedule](https://dev.wix.com/docs/rest/business-management/calendar/schedules-v3/introduction.md) of the staff member. By default, identical the opening hours of the business's [default location](https://dev.wix.com/docs/rest/business-management/locations/introduction.md). If the staff has custom working hours, identical to `eventsSchedule`.  | validation: maxItems 1
           - name: id | type: string | description: GUID of the working hour [schedule](https://dev.wix.com/docs/api-reference/business-management/calendar/schedules-v3/introduction.md) associated with the staff member. Currently, each staff member can't have more than a single working hour schedule. Learn more about [how Wix Bookings uses the Calendar APIs](https://dev.wix.com/docs/api-reference/business-management/calendar/wix-bookings-integration.md).  | validation: format GUID
           - name: shared | type: boolean | description: Whether the working hour schedule is shared with the business. If this field isn't available, the schedule isn't shared but specific for the staff member.  
        - name: eventsSchedule | type: EventSchedule | description: Event [schedule](https://dev.wix.com/docs/rest/business-management/calendar/schedules-v3/introduction.md) of the staff member.  
           - name: id | type: string | description: GUID of the event [schedule](https://dev.wix.com/docs/rest/business-management/calendar/schedules-v3/introduction.md) associated with the staff member. Learn more about _how Wix Bookings uses the Calendar APIs_ [Wix Bookings](https://dev.wix.com/docs/rest/business-management/calendar/wix-bookings-integration.md).  | validation: format GUID
        - name: usesDefaultWorkingHours | type: boolean | description: Whether the staff member works according to business's [default location](https://dev.wix.com/docs/rest/business-management/locations/introduction.md) opening hours.  `false`: The staff has custom working hours.  Default: `true`  
        - name: revision | type: string | description: Revision number, which increments by 1 each time the resource is updated.  | validation: format int64
     - name: associatedWixIdentity | type: AssociatedWixIdentity | description: Identity of the Wix user associated with the staff member. Learn more about [identities](https://dev.wix.com/docs/api-reference/articles/authentication/about-identities.md).  | read-only: true 
        - name: identificationData | type: IdentificationData | description: Information about the identity connected to the staff member. Available only if the staff member is connected to a Wix user. Learn more about [identities](https://dev.wix.com/docs/rest/articles/getting-started/about-identities.md).  
           - ONE-OF: 
              - name: anonymousVisitorId | type: string | description: GUID of a site visitor that has not logged in to the site.  | validation: format GUID
              - name: memberId | type: string | description: GUID of a site visitor that has logged in to the site.  | validation: format GUID
              - name: wixUserId | type: string | description: GUID of a Wix user (site owner, contributor, etc.).  | validation: format GUID
              - name: appId | type: string | description: GUID of an app.  | validation: format GUID
           - name: contactId | type: string | description: GUID of of a contact in the site's [CRM by Ascend](https://www.wix.com/ascend/crm) system. Retrievable via the [Contacts API](https://dev.wix.com/docs/rest/crm/members-contacts/contacts/introduction.md)  | validation: format GUID
        - name: connection | type: Connection | description: Connection status. Available only if you specify `ASSOCIATED_IDENTITY_STATUS` in the `fields` array.  | read-only: true 
           - name: status | type: ConnectionStatus | description: Connection status of the Wix user and the staff member.  | read-only: true 
                 - enum:
                 -     UNKNOWN: There is no information about the connection status.
                 -     CONNECTED: The Wix user is connected to the staff member.
                 -     PENDING: The Wix user must accept the invitation to join **.wix.com.** or the site.
                 -     EXPIRED: The invitation to join **.wix.com.** or the site has expired.
                 -     DISCONNECTED: The Wix user was disconnected from the staff member.
     - name: revision | type: string | description: Revision number, which increments by 1 each time the staff member is updated. To prevent conflicting changes, the current revision must be passed when updating the staff member.  | read-only: true | validation: format int64
     - name: createdDate | type: string | description: Time the staff member was created in `YYYY-MM-DDThh:mm:ss.sssZ` format.  | read-only: true | validation: format date-time
     - name: updatedDate | type: string | description: Time the staff member was last updated in `YYYY-MM-DDThh:mm:ss.sssZ` format.  | read-only: true | validation: format date-time
     - name: extendedFields | type: ExtendedFields | description: Extensions enabling users to save custom data related to the staff member.  
        - 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).  | validation: format map
     - name: tags | type: Tags | description: Tags allowing you to classify staff members. Learn more about [tags](https://dev.wix.com/docs/api-reference/business-management/tags/introduction.md).  
        - name: privateTags | type: TagList | description: Tags that require an additional permission in order to access them, normally not given to site members or visitors.  
           - name: tagIds | type: array<string> | description: List of tag GUIDs  | validation: maxItems 100, maxLength 5
        - name: tags | type: TagList | description: Tags that are exposed to anyone who has access to the labeled entity itself, including site members and visitors.  
     - name: serviceProvider | type: boolean | description: Whether the staff member provides [services](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/services-v2/introduction.md) to customers. Staff members who aren't service providers don't appear in booking flows.  Set with the `serviceProvider` field of [Create Staff Member](https://dev.wix.com/docs/api-reference/business-solutions/bookings/staff-members/staff-members/create-staff-member.md). To change it afterward, use [Set Service Provider](https://dev.wix.com/docs/api-reference/business-solutions/bookings/staff-members/staff-members/set-service-provider.md).  Default: `true`.  | read-only: true 


```

### Examples

### Set whether a staff member is a service provider.
```curl
curl -X POST \
'https://www.wixapis.com/bookings/v1/staff-members/0954bbb2-88cd-445c-9827-44253eb8b039/set-service-provider' \
-H 'Authorization: <AUTH>' \
-H 'Content-Type: application/json' \
-d '{
  "staffMemberId": "0954bbb2-88cd-445c-9827-44253eb8b039",
  "serviceProvider": false
}'
```

---

## JavaScript SDK

### Schema

```
 Method: wixClientAdmin.bookings.staffMembers.setServiceProvider(staffMemberId, serviceProvider, options)
 Description: Sets whether a staff member is a service provider, meaning someone who provides bookable services to customers.   Demoting a staff member to non-provider hides them from booking flows. Their working hours are preserved and existing bookings aren't affected.  Promoting a staff member to service provider also grants the Wix user connected to them the Staff role, if they don't already have it. Demoting the staff member doesn't revoke that role.
 # Note: If the parameter `a.b` is listed under required parameters, `b` is only required if `a` is also present.
 Required parameters:  staffMemberId, serviceProvider
 Method parameters: 
   param name: options | type: SetServiceProviderOptions  none  
        - name: fields | type: array<RequestedFields> | description: Conditional fields to return.  | validation: maxItems 3
             - enum:
             -     RESOURCE_DETAILS: Includes `resource` in the response.
             -     ASSOCIATED_IDENTITY_STATUS: Includes `associatedIdentityStatus` in the response.
   param name: serviceProvider | type: SetServiceProvider   | required: true 
        - name: value | type: boolean | description:   
   param name: staffMemberId | type: string | description: GUID of the staff member whose service provider status to set. | required: true | validation: format GUID
 Return type: PROMISE<SetServiceProviderResponse>
  - name: staffMember | type: StaffMember | description: Updated staff member.  
     - name: _id | type: string | description: Staff member GUID.  | read-only: true | validation: format GUID
     - name: name | type: string | description: Staff member name.  | validation: minLength 1, maxLength 40
     - name: email | type: string | description: Staff member's email address. This field is populated based on the `publiclyAccessible` setting in the [Staff Member Settings API](https://dev.wix.com/docs/api-reference/business-solutions/bookings/staff-members/staff-member-settings/introduction.md). When the setting is disabled, this field is empty if the calling [identity](https://dev.wix.com/docs/build-apps/develop-your-app/access/about-identities.md) doesn't have sufficient permissions. Identities with appropriate permissions can access this field regardless of the setting.  | validation: maxLength 320, format EMAIL
     - name: phone | type: string | description: Staff member's phone number. This field is populated based on the `publiclyAccessible` setting in the [Staff Member Settings API](https://dev.wix.com/docs/api-reference/business-solutions/bookings/staff-members/staff-member-settings/introduction.md). When the setting is disabled, this field is empty if the calling [identity](https://dev.wix.com/docs/build-apps/develop-your-app/access/about-identities.md) doesn't have sufficient permissions. Identities with appropriate permissions can access this field regardless of the setting.  | validation: maxLength 20, format PHONE
     - name: description | type: string | description: Description for the staff member. For example, `Experienced nail technician specialized in gel and acrylic nails`.  | validation: maxLength 500
     - name: mainMedia | type: MediaItem | description: Staff media.  
        - ONE-OF: 
           - name: image | type: string | description: Staff member's main image.  
     - name: resourceId | type: string | description: Staff member's [resource GUID](https://dev.wix.com/docs/api-reference/business-solutions/bookings/resources/resources-v2/introduction.md), identical to `resource.id`.  | read-only: true | validation: format GUID
     - name: resource | type: Resource | description: Details about the [resource object](https://dev.wix.com/docs/api-reference/business-solutions/bookings/resources/resources-v2/resource-object.md) associated with the staff member. Available only if you specify `RESOURCE_DETAILS` in the `fields` array.  | read-only: true 
        - name: _id | type: string | description: GUID of the [resource](https://dev.wix.com/docs/rest/business-solutions/bookings/resources/resources-v2/introduction.md) associated with the staff member.  | validation: format GUID
        - name: workingHoursSchedules | type: array<WorkingHoursSchedule> | description: Working hour [schedule](https://dev.wix.com/docs/rest/business-management/calendar/schedules-v3/introduction.md) of the staff member. By default, identical the opening hours of the business's [default location](https://dev.wix.com/docs/rest/business-management/locations/introduction.md). If the staff has custom working hours, identical to `eventsSchedule`.  | validation: maxItems 1
           - name: _id | type: string | description: GUID of the working hour [schedule](https://dev.wix.com/docs/api-reference/business-management/calendar/schedules-v3/introduction.md) associated with the staff member. Currently, each staff member can't have more than a single working hour schedule. Learn more about [how Wix Bookings uses the Calendar APIs](https://dev.wix.com/docs/api-reference/business-management/calendar/wix-bookings-integration.md).  | validation: format GUID
           - name: shared | type: boolean | description: Whether the working hour schedule is shared with the business. If this field isn't available, the schedule isn't shared but specific for the staff member.  
        - name: eventsSchedule | type: EventSchedule | description: Event [schedule](https://dev.wix.com/docs/rest/business-management/calendar/schedules-v3/introduction.md) of the staff member.  
           - name: _id | type: string | description: GUID of the event [schedule](https://dev.wix.com/docs/rest/business-management/calendar/schedules-v3/introduction.md) associated with the staff member. Learn more about _how Wix Bookings uses the Calendar APIs_ [Wix Bookings](https://dev.wix.com/docs/rest/business-management/calendar/wix-bookings-integration.md).  | validation: format GUID
        - name: usesDefaultWorkingHours | type: boolean | description: Whether the staff member works according to business's [default location](https://dev.wix.com/docs/rest/business-management/locations/introduction.md) opening hours.  `false`: The staff has custom working hours.  Default: `true`  
        - name: revision | type: string | description: Revision number, which increments by 1 each time the resource is updated.  | validation: format int64
     - name: associatedWixIdentity | type: AssociatedWixIdentity | description: Identity of the Wix user associated with the staff member. Learn more about [identities](https://dev.wix.com/docs/api-reference/articles/authentication/about-identities.md).  | read-only: true 
        - name: identificationData | type: IdentificationData | description: Information about the identity connected to the staff member. Available only if the staff member is connected to a Wix user. Learn more about [identities](https://dev.wix.com/docs/rest/articles/getting-started/about-identities.md).  
           - ONE-OF: 
              - name: anonymousVisitorId | type: string | description: GUID of a site visitor that has not logged in to the site.  | validation: format GUID
              - name: memberId | type: string | description: GUID of a site visitor that has logged in to the site.  | validation: format GUID
              - name: wixUserId | type: string | description: GUID of a Wix user (site owner, contributor, etc.).  | validation: format GUID
              - name: appId | type: string | description: GUID of an app.  | validation: format GUID
           - name: contactId | type: string | description: GUID of of a contact in the site's [CRM by Ascend](https://www.wix.com/ascend/crm) system. Retrievable via the [Contacts API](https://dev.wix.com/docs/rest/crm/members-contacts/contacts/introduction.md)  | validation: format GUID
        - name: connection | type: Connection | description: Connection status. Available only if you specify `ASSOCIATED_IDENTITY_STATUS` in the `fields` array.  | read-only: true 
           - name: status | type: ConnectionStatus | description: Connection status of the Wix user and the staff member.  | read-only: true 
                 - enum:
                 -     UNKNOWN: There is no information about the connection status.
                 -     CONNECTED: The Wix user is connected to the staff member.
                 -     PENDING: The Wix user must accept the invitation to join **.wix.com.** or the site.
                 -     EXPIRED: The invitation to join **.wix.com.** or the site has expired.
                 -     DISCONNECTED: The Wix user was disconnected from the staff member.
     - name: revision | type: string | description: Revision number, which increments by 1 each time the staff member is updated. To prevent conflicting changes, the current revision must be passed when updating the staff member.  | read-only: true | validation: format int64
     - name: _createdDate | type: Date | description: Time the staff member was created in `YYYY-MM-DDThh:mm:ss.sssZ` format.  | read-only: true 
     - name: _updatedDate | type: Date | description: Time the staff member was last updated in `YYYY-MM-DDThh:mm:ss.sssZ` format.  | read-only: true 
     - name: extendedFields | type: ExtendedFields | description: Extensions enabling users to save custom data related to the staff member.  
        - 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).  | validation: format map
     - name: tags | type: Tags | description: Tags allowing you to classify staff members. Learn more about [tags](https://dev.wix.com/docs/api-reference/business-management/tags/introduction.md).  
        - name: privateTags | type: TagList | description: Tags that require an additional permission in order to access them, normally not given to site members or visitors.  
           - name: tagIds | type: array<string> | description: List of tag GUIDs  | validation: maxItems 100, maxLength 5
        - name: tags | type: TagList | description: Tags that are exposed to anyone who has access to the labeled entity itself, including site members and visitors.  
     - name: serviceProvider | type: boolean | description: Whether the staff member provides [services](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/services-v2/introduction.md) to customers. Staff members who aren't service providers don't appear in booking flows.  Set with the `serviceProvider` field of [Create Staff Member](https://dev.wix.com/docs/api-reference/business-solutions/bookings/staff-members/staff-members/create-staff-member.md). To change it afterward, use [Set Service Provider](https://dev.wix.com/docs/api-reference/business-solutions/bookings/staff-members/staff-members/set-service-provider.md).  Default: `true`.  | read-only: true 


```

### Examples

### Stop a staff member appearing in booking flows
Demoting preserves the staff member's working hours, service assignments, and existing bookings.

```javascript
import { staffMembers } from "@wix/bookings";

async function setServiceProvider() {
  const response = await staffMembers.setServiceProvider(
    "3afa39f1-7638-42d3-8ed6-266ff9648531",
    false,
  );
}

/* Promise resolves to:
 * {
 *   "staffMember": {
 *     "name": "Dana Cohen",
 *     "email": "dana.cohen@example.com",
 *     "description": "Senior stylist",
 *     "resourceId": "8b0c7207-95f1-4e35-81ed-5189fa015c70",
 *     "revision": "3",
 *     "serviceProvider": false,
 *     "_id": "3afa39f1-7638-42d3-8ed6-266ff9648531",
 *     "_createdDate": "2026-08-16T11:53:33.679Z",
 *     "_updatedDate": "2026-08-16T11:53:35.572Z"
 *   }
 * }
 */

```

### setServiceProvider (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 { staffMembers } from '@wix/bookings';
// Import the auth strategy for the relevant access type
// Import the relevant host module if needed

const myWixClient = createClient ({
  modules: { staffMembers },
  // Include the auth strategy and host as relevant
});


async function setServiceProvider(staffMemberId,serviceProvider,options) {
  const response = await myWixClient.staffMembers.setServiceProvider(staffMemberId,serviceProvider,options);
};
```

---