> ## Documentation Index
> Fetch the complete documentation index at: https://docs.erna.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# ScheduleConfig<R, S, T, TRuleRegistry>

Configuration for [schedule](./schedule).

In `schedule()`, the active registry always includes the built-in rules.
Most schedules only need the high-level fields documented here.

## Type Parameters

### R

`R` *extends* readonly `string`\[] = readonly `string`\[]

### S

`S` *extends* readonly `string`\[] = readonly \[]

### T

`T` *extends* `Record`\<`string`, `SemanticTimeEntry`> = `Record`\<`string`, `SemanticTimeEntry`>

### TRuleRegistry

`TRuleRegistry` *extends* `BuiltInRuleRegistry` = `BuiltInRuleRegistry`

## Properties

<ResponseField name="coverage" type="NoInfer<CoverageEntry<keyof T & string, R[number] | S[number]>>[]" required>
  Coverage requirements for named times.
</ResponseField>

<ResponseField name="dayOfWeek" type="dayOfWeek?: readonly [DayOfWeek, DayOfWeek]">
  Days of the week the business operates (inclusion filter).
</ResponseField>

<ResponseField name="members" type="members?: SchedulingMember[]">
  Team members (typically added via `.with()` at runtime).
</ResponseField>

<ResponseField name="roleIds" type="R" required>
  Declared role IDs.
</ResponseField>

<ResponseField name="rules" type="rules?: ScheduleRuleEntry<TRuleRegistry>[]">
  Scheduling rules and constraints.
</ResponseField>

<ResponseField name="shiftPatterns" type="ShiftPattern[]" required>
  Assignable shift options for satisfying coverage requirements and rules.
</ResponseField>

<ResponseField name="skillIds" type="skillIds?: S">
  Declared skill IDs. When omitted, coverage targets can only be roles.
</ResponseField>

<ResponseField name="times" type="T" required>
  Time periods keyed by name that can be referenced by scheduling primitives.
</ResponseField>

<ResponseField name="weekStartsOn" type="weekStartsOn?: DayOfWeek">
  Which day starts the week for weekly rules. Defaults to `"monday"`.
</ResponseField>
