Premium

Resource dependencies & substitutes

Evaluate bookings that depend on more than one resource and discover allowed replacement choices. A machine may need an operator; a primary room may have a configured substitute when capacity is unavailable.

Resource dependencies & substitutes — Screenshot of actual package API results with sample data. The read-only result table is application-owned; this feature does not provide this screen as built-in UI. Preview build: @wts-calendar/core@1.1.0 (unpublished).
Screenshot of actual package API results with sample data. The read-only result table is application-owned; this feature does not provide this screen as built-in UI. Preview build: @wts-calendar/core@1.1.0 (unpublished).

What you configure

profiles.dependencies
List required companion resources and consumed units.
profiles.substituteIds
Define the replacements your application permits.
evaluateBooking / findSubstitutes
Evaluate the proposed interval, units, and requirements.

Integration code example

  1. Keep dependent-resource IDs consistent with the resource directory.
  2. Provide the booking interval and requirements to the licensed planner.
  3. Explain decision issues and let your application choose whether to apply a suggested substitute.

Copy this TypeScript into your application, not the browser console. Replace YOUR_WTS_LICENSE_KEY with an entitlement issued for your deployment origin. A WTS license is not a Google, Microsoft or CalDAV credential. These examples are documentation only and never execute on this page.

Install command
npm install @wts-calendar/core
TypeScript integration
import { verifyCalendarLicense } from '@wts-calendar/core';
import { AdvancedResourcePlanner } from '@wts-calendar/core/advanced-resource-planning';

const license = await verifyCalendarLicense('YOUR_WTS_LICENSE_KEY');
const planner = new AdvancedResourcePlanner({
  license,
  timeZone: 'UTC',
  resources: [
    { id: 'design', title: 'Design studio', capacity: 2 },
    { id: 'engineering', title: 'Engineering', capacity: 4 },
  ],
  events: [
    {
      id: 'review',
      title: 'Design review',
      resourceId: 'design',
      start: '2026-09-07T09:00:00Z',
      end: '2026-09-07T10:30:00Z',
    },
  ],
  profiles: [
    {
      resourceId: 'design',
      dependencies: [{ resourceId: 'engineering', units: 1 }],
      substituteIds: ['engineering'],
    },
  ],
});

const request = {
  resourceId: 'design',
  start: '2026-09-07T09:30:00Z',
  end: '2026-09-07T10:00:00Z',
  units: 2,
};
export const decision = planner.evaluateBooking(request);
export const alternatives = planner.findSubstitutes(request);
console.log(decision.allowed, decision.issues, alternatives);

Application responsibilities

The engine returns data, not a built-in chart. Render results in your application and call planner.setData() after resources, events or profiles change.

Evaluations do not reserve capacity or automatically reassign events. Recheck and commit through your application after the user chooses an alternative.

Behavior and lifecycle

  • Availability, shifts, requirements, dependencies, and capacity are evaluated together.
  • Allowed substitutes are ranked by projected utilization and then stable resource ID.

Limits and responsibilities

  • Finding a substitute does not automatically modify calendar events or reserve resources.
  • Coordinate final multi-resource reservations through your application's authoritative transaction logic.
Premium

Enable this capability

Optional module
@wts-calendar/core/advanced-resource-planning
Signed entitlement
advanced-resource-planning

Request the required features and deployment origins by email. Pricing and terms are confirmed privately. A WTS license is separate from provider credentials; do not send passwords or production access tokens.

Email for a license key →

This public guide does not execute Premium modules or collect license tokens.