Skip to content

Latest commit

 

History

History
168 lines (116 loc) · 4.92 KB

File metadata and controls

168 lines (116 loc) · 4.92 KB

Salesforce Commerce Cloud B2C Tooling SDK

Note

This project is currently in Developer Preview. Not all features are implemented, and the API may change in future releases.

A TypeScript SDK for programmatic access to Salesforce Commerce Cloud B2C APIs including OCAPI, WebDAV, SLAS, ODS, and MRT.

Version

Installation

npm install @salesforce/b2c-tooling-sdk

Quick Start

From Environment Configuration (Recommended)

The easiest way to create an instance is from environment configuration files:

import { B2CInstance } from '@salesforce/b2c-tooling-sdk';

// Load configuration from environment files (dw.json, etc.), override secrets from environment
const instance = B2CInstance.fromEnvironment({
  clientId: process.env.SFCC_CLIENT_ID,
  clientSecret: process.env.SFCC_CLIENT_SECRET,
});

// Use typed WebDAV client
await instance.webdav.mkcol('Cartridges/v1');
await instance.webdav.put('Cartridges/v1/app.zip', zipBuffer);

// Use typed OCAPI client (openapi-fetch)
const { data, error } = await instance.ocapi.GET('/sites', {
  params: { query: { select: '(**)' } },
});

Direct Construction

You can also construct an instance directly with configuration:

import { B2CInstance } from '@salesforce/b2c-tooling-sdk';

const instance = new B2CInstance(
  { hostname: 'your-sandbox.demandware.net', codeVersion: 'v1' },
  {
    oauth: {
      clientId: 'your-client-id',
      clientSecret: 'your-client-secret'
    }
  }
);

Features

WebDAV Operations

// Create directories
await instance.webdav.mkcol('Cartridges/v1');

// Upload files
await instance.webdav.put('Cartridges/v1/app.zip', buffer, 'application/zip');

// Download files
const content = await instance.webdav.get('Cartridges/v1/app.zip');

// List directory
const entries = await instance.webdav.propfind('Cartridges');

// Check existence
const exists = await instance.webdav.exists('Cartridges/v1');

// Delete
await instance.webdav.delete('Cartridges/v1/old-file.zip');

OCAPI Client

The OCAPI client uses openapi-fetch with full TypeScript support:

// List sites
const { data, error } = await instance.ocapi.GET('/sites', {
  params: { query: { select: '(**)' } },
});

// Activate a code version
const { data, error } = await instance.ocapi.PATCH('/code_versions/{code_version_id}', {
  params: { path: { code_version_id: 'v1' } },
  body: { active: true },
});

Code Deployment

import { findAndDeployCartridges, activateCodeVersion } from '@salesforce/b2c-tooling-sdk/operations/code';

// Deploy cartridges
await findAndDeployCartridges(instance, './cartridges', { reload: true });

// Activate code version
await activateCodeVersion(instance, 'v1');

Job Execution

import { executeJob, waitForJob, siteArchiveImport } from '@salesforce/b2c-tooling-sdk/operations/jobs';

// Run a job and wait for completion
const execution = await executeJob(instance, 'my-job-id');
const result = await waitForJob(instance, 'my-job-id', execution.id);

// Import a site archive
await siteArchiveImport(instance, './site-data.zip');

Module Exports

The SDK provides subpath exports for tree-shaking and organization:

Export Description
@salesforce/b2c-tooling-sdk Main entry point with all exports
@salesforce/b2c-tooling-sdk/auth Authentication strategies (OAuth, Basic, API Key)
@salesforce/b2c-tooling-sdk/instance B2CInstance class
@salesforce/b2c-tooling-sdk/clients Low-level API clients (WebDAV, OCAPI, SLAS, ODS, MRT)
@salesforce/b2c-tooling-sdk/operations/code Code deployment operations
@salesforce/b2c-tooling-sdk/operations/jobs Job execution and site import/export
@salesforce/b2c-tooling-sdk/operations/sites Site management
@salesforce/b2c-tooling-sdk/logging Structured logging utilities

Logging

Configure logging for debugging HTTP requests:

import { configureLogger } from '@salesforce/b2c-tooling-sdk/logging';

// Enable debug logging (shows HTTP request summaries)
configureLogger({ level: 'debug' });

// Enable trace logging (shows full request/response with headers and bodies)
configureLogger({ level: 'trace' });

Documentation

Full documentation is available at: https://salesforcecommercecloud.github.io/b2c-developer-tooling/

Requirements

  • Node.js >= 22.16.0

License

This project is licensed under the Apache License 2.0. See LICENSE.txt for full details.

Disclaimer

This project is currently in Developer Preview and is provided "as-is" without warranty of any kind. It is not yet generally available (GA) and should not be used in production environments. Features, APIs, and functionality may change without notice in future releases.