---
editLink: false
lastUpdated: false
---

[@salesforce/b2c-tooling-sdk](../modules.md) / clients

# clients

API clients for B2C Commerce operations.

This module provides typed client classes for interacting with B2C Commerce
APIs including WebDAV, OCAPI, SCAPI, and ODS.

## Available Clients

- [WebDavClient](classes/WebDavClient.md) - File operations via WebDAV
- [OcapiClient](type-aliases/OcapiClient.md) - Data API operations via OCAPI (openapi-fetch Client)
- [SlasClient](type-aliases/SlasClient.md) - SLAS Admin API for managing tenants and clients
- [OdsClient](type-aliases/OdsClient.md) - On-Demand Sandbox API for managing developer sandboxes
- [CipClient](classes/CipClient.md) - B2C Commerce Intelligence (CIP/CCAC) query client
- [CustomApisClient](type-aliases/CustomApisClient.md) - Custom APIs DX API for retrieving endpoint status
- [ScapiSchemasClient](type-aliases/ScapiSchemasClient.md) - SCAPI Schemas API for discovering and retrieving OpenAPI schemas

## Usage

**Note:** These clients are typically accessed via `B2CInstance` rather than
instantiated directly. The `B2CInstance` class handles authentication setup
and provides convenient `webdav` and `ocapi` getters.

```typescript
import { resolveConfig } from '@salesforce/b2c-tooling-sdk/config';

const config = resolveConfig({
  clientId: process.env.SFCC_CLIENT_ID,
  clientSecret: process.env.SFCC_CLIENT_SECRET,
});
const instance = config.createB2CInstance();

// WebDAV operations via instance.webdav
await instance.webdav.put('Cartridges/v1/app.zip', content);

// OCAPI operations via instance.ocapi (openapi-fetch)
const { data } = await instance.ocapi.GET('/sites', {});
```

## Direct Client Usage

For advanced use cases, clients can be instantiated directly:

```typescript
import { WebDavClient, createOcapiClient, createSlasClient } from '@salesforce/b2c-tooling-sdk/clients';

const webdav = new WebDavClient('sandbox.demandware.net', authStrategy);
const ocapi = createOcapiClient('sandbox.demandware.net', authStrategy);

// SLAS client for managing SLAS clients and tenants
const slas = createSlasClient({ shortCode: 'kv7kzm78' }, oauthStrategy);
```

## Creating New API Clients

API clients follow a consistent pattern using
[openapi-fetch](https://openapi-ts.dev/openapi-fetch/) for type-safe
HTTP requests and [openapi-typescript](https://openapi-ts.dev/) for
generating TypeScript types from OpenAPI specifications.

### Step 1: Add the OpenAPI Specification

Place the OpenAPI spec (JSON or YAML) in `specs/`:

```
packages/b2c-tooling/specs/my-api-v1.yaml
```

### Step 2: Generate TypeScript Types

Add a generation command to `package.json` and run it:

```bash
openapi-typescript specs/my-api-v1.yaml -o src/clients/my-api.generated.ts
```

### Step 3: Create the Client Module

Create a new client file following this pattern:

```typescript
// src/clients/my-api.ts
import createClient, { type Client } from 'openapi-fetch';
import type { AuthStrategy } from '../auth/types.js';
import type { paths, components } from './my-api.generated.js';
import { createAuthMiddleware, createLoggingMiddleware } from './middleware.js';

export type { paths, components };
export type MyApiClient = Client<paths>;

export function createMyApiClient(config: MyApiConfig, auth: AuthStrategy): MyApiClient {
  const client = createClient<paths>({
    baseUrl: `https://${config.host}/api/v1`,
  });

  // Add middleware - auth first, logging last (so logging sees complete request)
  client.use(createAuthMiddleware(auth));
  client.use(createLoggingMiddleware('MYAPI'));

  return client;
}
```

### Conventions

- **Factory function**: Use `createXxxClient()` pattern (not classes)
- **Type exports**: Re-export `paths` and `components` for consumers
- **Client type**: Export a type alias `XxxClient = Client<paths>`
- **Middleware order**: Logging first, then auth (auth runs last on request)
- **Log prefix**: Use short, uppercase identifier (e.g., 'OCAPI', 'SLAS', 'SCAPI')
- **Generated files**: Name as `xxx.generated.ts` to indicate auto-generation

## Classes

- [CipClient](classes/CipClient.md)
- [MiddlewareRegistry](classes/MiddlewareRegistry.md)
- [WebDavClient](classes/WebDavClient.md)

## Interfaces

- [AccountManagerClient](interfaces/AccountManagerClient.md)
- [AccountManagerClientConfig](interfaces/AccountManagerClientConfig.md)
- [AccountManagerOrganization](interfaces/AccountManagerOrganization.md)
- [AccountManagerOrgsClient](interfaces/AccountManagerOrgsClient.md)
- [BuildPushResponse](interfaces/BuildPushResponse.md)
- [CdnZonesClientConfig](interfaces/CdnZonesClientConfig.md)
- [CdnZonesClientOptions](interfaces/CdnZonesClientOptions.md)
- [CipClientConfig](interfaces/CipClientConfig.md)
- [CipColumn](interfaces/CipColumn.md)
- [CipExecuteResponse](interfaces/CipExecuteResponse.md)
- [CipFetchResponse](interfaces/CipFetchResponse.md)
- [CipFrame](interfaces/CipFrame.md)
- [CipQueryOptions](interfaces/CipQueryOptions.md)
- [CipQueryResult](interfaces/CipQueryResult.md)
- [CustomApisClientConfig](interfaces/CustomApisClientConfig.md)
- [ExtraParamsConfig](interfaces/ExtraParamsConfig.md)
- [GranularReplicationsClientConfig](interfaces/GranularReplicationsClientConfig.md)
- [HttpMiddlewareProvider](interfaces/HttpMiddlewareProvider.md)
- [ListApiClientsOptions](interfaces/ListApiClientsOptions.md)
- [ListOrgsOptions](interfaces/ListOrgsOptions.md)
- [ListRolesOptions](interfaces/ListRolesOptions.md)
- [ListUsersOptions](interfaces/ListUsersOptions.md)
- [LoggingMiddlewareConfig](interfaces/LoggingMiddlewareConfig.md)
- [MrtB2CClientConfig](interfaces/MrtB2CClientConfig.md)
- [MrtB2CError](interfaces/MrtB2CError.md)
- [MrtClientConfig](interfaces/MrtClientConfig.md)
- [MrtError](interfaces/MrtError.md)
- [OcapiClientOptions](interfaces/OcapiClientOptions.md)
- [OdsClientConfig](interfaces/OdsClientConfig.md)
- [OrganizationCollection](interfaces/OrganizationCollection.md)
- [OrgMapping](interfaces/OrgMapping.md)
- [PropfindEntry](interfaces/PropfindEntry.md)
- [RateLimitMiddlewareConfig](interfaces/RateLimitMiddlewareConfig.md)
- [RoleMapping](interfaces/RoleMapping.md)
- [ScapiSchemasClientConfig](interfaces/ScapiSchemasClientConfig.md)
- [SlasClientConfig](interfaces/SlasClientConfig.md)
- [SlasError](interfaces/SlasError.md)
- [TlsOptions](interfaces/TlsOptions.md)
- [UserAgentConfig](interfaces/UserAgentConfig.md)
- [WebDavClientOptions](interfaces/WebDavClientOptions.md)

## Type Aliases

- [AccountManagerApiClient](type-aliases/AccountManagerApiClient.md)
- [AccountManagerApiClientsClient](type-aliases/AccountManagerApiClientsClient.md)
- [AccountManagerError](type-aliases/AccountManagerError.md)
- [AccountManagerResponse](type-aliases/AccountManagerResponse.md)
- [AccountManagerRole](type-aliases/AccountManagerRole.md)
- [AccountManagerRolesClient](type-aliases/AccountManagerRolesClient.md)
- [AccountManagerRolesError](type-aliases/AccountManagerRolesError.md)
- [AccountManagerRolesResponse](type-aliases/AccountManagerRolesResponse.md)
- [AccountManagerUser](type-aliases/AccountManagerUser.md)
- [AccountManagerUsersClient](type-aliases/AccountManagerUsersClient.md)
- [APIClientCollection](type-aliases/APIClientCollection.md)
- [APIClientCreate](type-aliases/APIClientCreate.md)
- [ApiClientExpandOption](type-aliases/ApiClientExpandOption.md)
- [APIClientUpdate](type-aliases/APIClientUpdate.md)
- [B2COrgInfo](type-aliases/B2COrgInfo.md)
- [B2CTargetInfo](type-aliases/B2CTargetInfo.md)
- [CdnZonesClient](type-aliases/CdnZonesClient.md)
- [CdnZonesError](type-aliases/CdnZonesError.md)
- [CdnZonesResponse](type-aliases/CdnZonesResponse.md)
- [Certificate](type-aliases/Certificate.md)
- [ContentAssetItemPrivate](type-aliases/ContentAssetItemPrivate.md)
- [ContentAssetItemShared](type-aliases/ContentAssetItemShared.md)
- [CustomApisClient](type-aliases/CustomApisClient.md)
- [CustomApisError](type-aliases/CustomApisError.md)
- [CustomApisResponse](type-aliases/CustomApisResponse.md)
- [GranularReplicationsClient](type-aliases/GranularReplicationsClient.md)
- [GranularReplicationsError](type-aliases/GranularReplicationsError.md)
- [GranularReplicationsResponse](type-aliases/GranularReplicationsResponse.md)
- [HttpClientType](type-aliases/HttpClientType.md)
- [MrtB2CClient](type-aliases/MrtB2CClient.md)
- [MrtB2CResponse](type-aliases/MrtB2CResponse.md)
- [MrtClient](type-aliases/MrtClient.md)
- [MrtResponse](type-aliases/MrtResponse.md)
- [OcapiClient](type-aliases/OcapiClient.md)
- [OcapiError](type-aliases/OcapiError.md)
- [OcapiResponse](type-aliases/OcapiResponse.md)
- [OdsClient](type-aliases/OdsClient.md)
- [OdsError](type-aliases/OdsError.md)
- [OdsResponse](type-aliases/OdsResponse.md)
- [OpenApiSchema](type-aliases/OpenApiSchema.md)
- [PatchedB2CTargetInfo](type-aliases/PatchedB2CTargetInfo.md)
- [PriceTableItem](type-aliases/PriceTableItem.md)
- [ProductItem](type-aliases/ProductItem.md)
- [PublishIdResponse](type-aliases/PublishIdResponse.md)
- [PublishProcessListResponse](type-aliases/PublishProcessListResponse.md)
- [PublishProcessResponse](type-aliases/PublishProcessResponse.md)
- [RoleCollection](type-aliases/RoleCollection.md)
- [ScapiSchemasClient](type-aliases/ScapiSchemasClient.md)
- [ScapiSchemasError](type-aliases/ScapiSchemasError.md)
- [ScapiSchemasResponse](type-aliases/ScapiSchemasResponse.md)
- [SchemaListItem](type-aliases/SchemaListItem.md)
- [SchemaListResult](type-aliases/SchemaListResult.md)
- [SecuritySetting](type-aliases/SecuritySetting.md)
- [SlasClient](type-aliases/SlasClient.md)
- [SlasResponse](type-aliases/SlasResponse.md)
- [SpeedSetting](type-aliases/SpeedSetting.md)
- [UnifiedMiddleware](type-aliases/UnifiedMiddleware.md)
- [UserCollection](type-aliases/UserCollection.md)
- [UserCreate](type-aliases/UserCreate.md)
- [UserExpandOption](type-aliases/UserExpandOption.md)
- [UserState](type-aliases/UserState.md)
- [UserUpdate](type-aliases/UserUpdate.md)
- [Zone](type-aliases/Zone.md)
- [ZonesEnvelope](type-aliases/ZonesEnvelope.md)

## Variables

- [CDN\_ZONES\_READ\_SCOPES](variables/CDN_ZONES_READ_SCOPES.md)
- [CDN\_ZONES\_RW\_SCOPES](variables/CDN_ZONES_RW_SCOPES.md)
- [CUSTOM\_APIS\_DEFAULT\_SCOPES](variables/CUSTOM_APIS_DEFAULT_SCOPES.md)
- [DEFAULT\_CIP\_HOST](variables/DEFAULT_CIP_HOST.md)
- [DEFAULT\_CIP\_STAGING\_HOST](variables/DEFAULT_CIP_STAGING_HOST.md)
- [DEFAULT\_MRT\_B2C\_ORIGIN](variables/DEFAULT_MRT_B2C_ORIGIN.md)
- [DEFAULT\_MRT\_ORIGIN](variables/DEFAULT_MRT_ORIGIN.md)
- [globalMiddlewareRegistry](variables/globalMiddlewareRegistry.md)
- [ORGANIZATION\_ID\_PREFIX](variables/ORGANIZATION_ID_PREFIX.md)
- [ROLE\_TENANT\_FILTER\_PATTERN](variables/ROLE_TENANT_FILTER_PATTERN.md)
- [SCAPI\_SCHEMAS\_DEFAULT\_SCOPES](variables/SCAPI_SCHEMAS_DEFAULT_SCOPES.md)
- [SCAPI\_TENANT\_SCOPE\_PREFIX](variables/SCAPI_TENANT_SCOPE_PREFIX.md)
- [userAgentProvider](variables/userAgentProvider.md)

## Functions

- [buildTenantScope](functions/buildTenantScope.md)
- [createAccountManagerApiClientsClient](functions/createAccountManagerApiClientsClient.md)
- [createAccountManagerClient](functions/createAccountManagerClient.md)
- [createAccountManagerOrgsClient](functions/createAccountManagerOrgsClient.md)
- [createAccountManagerRolesClient](functions/createAccountManagerRolesClient.md)
- [createAccountManagerUsersClient](functions/createAccountManagerUsersClient.md)
- [createAuthMiddleware](functions/createAuthMiddleware.md)
- [createCdnZonesClient](functions/createCdnZonesClient.md)
- [createCipClient](functions/createCipClient.md)
- [createCustomApisClient](functions/createCustomApisClient.md)
- [createExtraParamsMiddleware](functions/createExtraParamsMiddleware.md)
- [createGranularReplicationsClient](functions/createGranularReplicationsClient.md)
- [createLoggingMiddleware](functions/createLoggingMiddleware.md)
- [createMrtB2CClient](functions/createMrtB2CClient.md)
- [createMrtClient](functions/createMrtClient.md)
- [createOcapiClient](functions/createOcapiClient.md)
- [createOdsClient](functions/createOdsClient.md)
- [createRateLimitMiddleware](functions/createRateLimitMiddleware.md)
- [createSafetyMiddleware](functions/createSafetyMiddleware.md)
- [createScapiSchemasClient](functions/createScapiSchemasClient.md)
- [createSlasClient](functions/createSlasClient.md)
- [createTlsDispatcher](functions/createTlsDispatcher.md)
- [createUser](functions/createUser.md)
- [createUserAgentMiddleware](functions/createUserAgentMiddleware.md)
- [deleteUser](functions/deleteUser.md)
- [fetchRoleMapping](functions/fetchRoleMapping.md)
- [findUserByLogin](functions/findUserByLogin.md)
- [getApiErrorMessage](functions/getApiErrorMessage.md)
- [getRole](functions/getRole.md)
- [getUser](functions/getUser.md)
- [getUserAgent](functions/getUserAgent.md)
- [isValidRoleTenantFilter](functions/isValidRoleTenantFilter.md)
- [listRoles](functions/listRoles.md)
- [listUsers](functions/listUsers.md)
- [normalizeTenantId](functions/normalizeTenantId.md)
- [purgeUser](functions/purgeUser.md)
- [resetUser](functions/resetUser.md)
- [resetUserAgent](functions/resetUserAgent.md)
- [resolveFromInternalRole](functions/resolveFromInternalRole.md)
- [resolveToInternalRole](functions/resolveToInternalRole.md)
- [setUserAgent](functions/setUserAgent.md)
- [toOrganizationId](functions/toOrganizationId.md)
- [updateUser](functions/updateUser.md)
