Block employees from working on specific days or shifts, or make it desired/undesired for them to work on specific days or shifts.
This rule can be used for three purposes, all related to which periods or shifts an employee should be considered available for:
Mark an employee as strictly unavailable for specific periods or shifts.
Mark an employee as available but undesirable for specific periods or shifts.
Mark an employee as available and desirable for specific periods or shifts.
Rule schema
object
Used to indicate when employees are strictly or preferably available or unavailable to work.
Show properties
string
required
Unique identifier for the rule.
array of string
Labels for the rule. Labels can be used to group rules together. For example, if multiple rules are related to the same shift type, they can all be labeled with the same label.
string (enum: NONE | VERY_LOW | LOW | MEDIUM | HIGH | ...)
required
The importance of the rule. The higher the importance, the more it will be taking the rule into account. Under strict importance, the rule may never be violated.
boolean
required
If set to true, it will be considered preferable for employees to work the shifts that this rule applies to during the specified periods. If set to false, we will try to avoid assigning applicable shifts to employees during the specified periods. If importance is set to strict, this must be false.
object
Filters to determine the scope of the rule. Used to decide which employees and which shifts the rule should be applied to. Filters use logical OR filtering - an employee or shift is included as long as it is targeted by any of the filters.
Show filters – properties
object
Filters entities by id and label.
Show employees – properties
array of string
Entity ids to match.
array of string
Entity labels to match.
object
Show matchTypes – properties
string (enum: NONE | ANY | ALL)
Used to indicate how to apply the id filters. For example, if set to NONE, entities with the specified ids will be excluded. Default: “ANY”.
string (enum: NONE | ANY | ALL)
Used to indicate how to apply the label filters. For example, if set to ANY, entities that have any of the specified labels will be included. Default: “ANY”.
object
Filters entities by id and label.
Show shifts – properties
array of string
Entity ids to match.
array of string
Entity labels to match.
object
Show matchTypes – properties
string (enum: NONE | ANY | ALL)
Used to indicate how to apply the id filters. For example, if set to NONE, entities with the specified ids will be excluded. Default: “ANY”.
string (enum: NONE | ANY | ALL)
Used to indicate how to apply the label filters. For example, if set to ANY, entities that have any of the specified labels will be included. Default: “ANY”.
object
Defines filtering for specific work that the rule should be applied to. For example, it can be used to apply the rule only to work carried out in specific roles.
Show work – properties
object
Used to apply the rule only to work carried out in specific roles.
Show roles – properties
array of string
List of relevant role ids.
object
Used to apply the rule only to work carried out with specific workload categories.
Show workloads – properties
array of string
If specified, the shift must have at least one of the workload categories specified in this list.
object
Additional options for how the rule should be applied.
Show options – properties
string (enum: PARTIAL | COMPLETE)
Used to indicate whether partial fulfillment per period is acceptable (PARTIAL) or not (COMPLETE). This setting can only be used for undesired rules. Default: “PARTIAL”.
object
List of periods in the schedule. Periods can be defined explicitly or through a recurrent definition (for example, to generate weeks).
Show periods – properties
object
List of days in the schedule. Each day will become one period. By default, each period will last the entire day. If a startTime and/or endTime are specified, these will apply to each period.
Show days – properties
array of date (date)
List of dates in the schedule. Only allowed in CALENDAR payloads.
array of dayIndex
List of day indices in the schedule. Only allowed in RECURRING payloads.
array of dayOfWeek
List of days of the week. Will apply to all days in the schedule that match any of the specified weekdays.
string (time)
TIME ISO 8601 format hh:mm. Equivalent to the 24h format of a single day. Use 00:00 to represent midnight.
string (time)
TIME ISO 8601 format hh:mm. Equivalent to the 24h format of a single day. Use 00:00 to represent midnight.
array of object
List of custom period definitions. Each custom period definition defines one period in the schedule.
Show customDefinitions – item structure
object
Describes one day in the schedule.
Show startDay – properties
string (date)
Date specified in ISO8601 format (YYYY-MM-DD). Only available in CALENDAR schedules.
integer
Day index relative to the horizon start day (starts at 0). Only available in RECURRING schedules.
object
Describes one day in the schedule.
Show endDay – properties
string (date)
Date specified in ISO8601 format (YYYY-MM-DD). Only available in CALENDAR schedules.
integer
Day index relative to the horizon start day (starts at 0). Only available in RECURRING schedules.
string (time)
TIME ISO 8601 format hh:mm. Equivalent to the 24h format of a single day. Use 00:00 to represent midnight.
string (time)
TIME ISO 8601 format hh:mm. Equivalent to the 24h format of a single day. Use 00:00 to represent midnight.
boolean
If true, the startTime and endTime will be applied to each individual day in the period. If false, the startTime will apply to the first day and the endTime will apply to the last day. Default: false.
object
A recurrent definition to easily create a set of similar periods.
Show recurrentDefinition – properties
integer
required
The number of days in each period.
integer
The number of days between the start of each period. If not specified, this defaults to the value of daysPerPeriod, creating non-overlapping consecutive periods. Setting daysBetweenStarts to 1 will create a sliding window of periods.
object
Describes one day in the schedule.
Show startDay – properties
string (date)
Date specified in ISO8601 format (YYYY-MM-DD). Only available in CALENDAR schedules.
integer
Day index relative to the horizon start day (starts at 0). Only available in RECURRING schedules.
object
Describes one day in the schedule.
Show endDay – properties
string (date)
Date specified in ISO8601 format (YYYY-MM-DD). Only available in CALENDAR schedules.
integer
Day index relative to the horizon start day (starts at 0). Only available in RECURRING schedules.
string (time)
TIME ISO 8601 format hh:mm. Equivalent to the 24h format of a single day. Use 00:00 to represent midnight.
string (time)
TIME ISO 8601 format hh:mm. Equivalent to the 24h format of a single day. Use 00:00 to represent midnight.
boolean
If true, the startTime and endTime will be applied to each individual day in the period. If false, the startTime will apply to the first day and the endTime will apply to the last day. Default: false.
array of string
Provide labels to re-use periods that were defined in the configuration.
Strict unavailability
To define certain periods as strictly unavailable for an employee, simply specify the periods in the rule. The solver will then never assign shifts to the employee during these periods.
The rule below makes it strictly impossible for employee with id employee-1 to work on weekends.
To mark that an employee would rather not work during certain periods, set the isDesired field to false and choose an importance level different than STRICT. The solver will try to avoid assigning shifts to the employee during these periods, but it is not strictly forbidden.
The rule below makes it undesirable for employee with id employee-1 to work on Mondays or Thursdays.
To mark that an employee prefers working on certain periods or shifts, set the isDesired field to true and choose an importance level different than STRICT (STRICT is currently not supported on desired rules).
The rule below makes it preferred to assign shifts with shift label night to employee with id employee-1 on Mondays, Tuesdays or Wednesdays.
You can also use work filters to target specific kinds of work. With role and workload filters, you can make the rule apply only to work carried out in certain roles and with certain workload categories.
It is also possible to apply role or workload filters separately.
The rule below makes it undesirable for employee with id employee-1 to work shifts in role role-1 with workload category on_call on weekends. Work in other roles or with other workload categories is not targeted by this rule.
The following status metric is available for tracking on Availability rules:
Metric key
Description
AVAILABILITY.WORKED_MINUTES
Total minutes worked in the periods covered by Availability rules.
AVAILABILITY.ASSIGNMENTS
Number of assignments relevant to Availability rules.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Automatic Rostering","colors":{"primary":"#16A34A","light":"#07C983","dark":"#15803D"},"logo":{"light":"https://mintcdn.com/automaticrostering/geYJCg2PEZLfgAwl/logo/light.png?fit=max\u0026auto=format\u0026n=geYJCg2PEZLfgAwl\u0026q=85\u0026s=184cc1b5d04c48601ba425b95cf1d878","dark":"https://mintcdn.com/automaticrostering/geYJCg2PEZLfgAwl/logo/light.png?fit=max\u0026auto=format\u0026n=geYJCg2PEZLfgAwl\u0026q=85\u0026s=184cc1b5d04c48601ba425b95cf1d878"},"favicon":"https://mintcdn.com/automaticrostering/tszNXFD11BtKFzPx/favicon.png?fit=max\u0026auto=format\u0026n=tszNXFD11BtKFzPx\u0026q=85\u0026s=c07f8a95ebdc438d2979dd06d3d989ed","api":{"examples":{"languages":[]}},"navbar":{"links":[{"href":"mailto:stian.vale@visma.com","label":"Contact"}]},"footer":{},"contextual":{"options":["copy","chatgpt"],"display":"header"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"automaticrostering","hasAudioNarration":false,"actualSubdomain":"automaticrostering","customDomains":["docs.automaticrostering.visma.net"],"gitSource":{"type":"github","owner":"automatic-rostering","repo":"product","deployBranch":"main","contentDirectory":"docs","isPrivate":true,"mountPath":"","label":""},"entitlements":{},"buildId":"6aedc35cb7010cc612509184","clientVersion":"0.0.4143","searchFilterCounts":[{"language":"default","tag":"Guides","count":41},{"language":"default","tag":"Entities","count":24},{"language":"default","tag":"API reference","count":10},{"language":"default","tag":"Constraints","count":9},{"language":"default","tag":"Rules","count":9},{"language":"default","tag":"Roster","count":8},{"language":"default","tag":"Getting started","count":7},{"language":"default","tag":"Concepts","count":3},{"language":"default","tag":"Status updates","count":3},{"language":"default","tag":"Other","count":2}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"v2/rules/availability","slug":"/v2/rules/availability","pageMetadata":{"title":"Availability","description":"Block employees from working on specific days or shifts, or make it desired/undesired for them to work on specific days or shifts.","href":"/v2/rules/availability"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Block employees from working on specific days or shifts, or make it desired/undesired for them to work on specific days or shifts.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];const AvailabilityMetricRows=()=>_jsxs(_Fragment,{children:[_jsxs(`tr`,{children:[_jsx(`td`,{children:_jsx(`code`,{className:`mint-whitespace-nowrap`,children:`AVAILABILITY.WORKED_MINUTES`})}),_jsx(`td`,{children:`Total minutes worked in the periods covered by Availability rules.`})]}),_jsxs(`tr`,{children:[_jsx(`td`,{children:_jsx(`code`,{className:`mint-whitespace-nowrap`,children:`AVAILABILITY.ASSIGNMENTS`})}),_jsx(`td`,{children:`Number of assignments relevant to Availability rules.`})]})]});function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,..._provideComponents(),...props.components},{Card,CodeBlock,Expandable,Heading,ResponseField,Tip,_MdxComponentBoundary}=_components;if(!Card)_missingMdxReference(`Card`,true);if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Expandable)_missingMdxReference(`Expandable`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!ResponseField)_missingMdxReference(`ResponseField`,true);if(!Tip)_missingMdxReference(`Tip`,true);if(!_MdxComponentBoundary)_missingMdxReference(`_MdxComponentBoundary`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`This rule can be used for three purposes, all related to which periods or shifts an employee should be considered available for:`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`Mark an employee as `,_jsx(_components.strong,{children:`strictly unavailable`}),` for specific periods or shifts.`]}),`\n`,_jsxs(_components.li,{children:[`Mark an employee as `,_jsx(_components.strong,{children:`available but undesirable`}),` for specific periods or shifts.`]}),`\n`,_jsxs(_components.li,{children:[`Mark an employee as `,_jsx(_components.strong,{children:`available and desirable`}),` for specific periods or shifts.`]}),`\n`]}),`\n`,_jsx(Card,{title:`Rule schema`,children:_jsxs(ResponseField,{name:`availabilityRule`,type:`object`,id:`param-availability-rule`,children:[_jsx(_components.p,{children:`Used to indicate when employees are strictly or preferably available or unavailable to work.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(ResponseField,{name:`id`,type:`string`,required:true,id:`param-id`,children:_jsx(_components.p,{children:`Unique identifier for the rule.`})}),_jsx(ResponseField,{name:`labels`,type:`array of string`,id:`param-labels`,children:_jsx(_components.p,{children:`Labels for the rule. Labels can be used to group rules together. For example, if multiple rules are related to the same shift type, they can all be labeled with the same label.`})}),_jsx(ResponseField,{name:`importance`,type:`string (enum: NONE | VERY_LOW | LOW | MEDIUM | HIGH | ...)`,required:true,id:`param-importance`,children:_jsx(_components.p,{children:`The importance of the rule. The higher the importance, the more it will be taking the rule into account. Under strict importance, the rule may never be violated.`})}),_jsx(ResponseField,{name:`isDesired`,type:`boolean`,required:true,id:`param-is-desired`,children:_jsx(_components.p,{children:`If set to true, it will be considered preferable for employees to work the shifts that this rule applies to during the specified periods. If set to false, we will try to avoid assigning applicable shifts to employees during the specified periods. If importance is set to strict, this must be false.`})}),_jsx(ResponseField,{name:`filters`,type:`object`,id:`param-filters`,children:_jsx(_components.p,{children:`Filters to determine the scope of the rule. Used to decide which employees and which shifts the rule should be applied to. Filters use logical OR filtering - an employee or shift is included as long as it is targeted by any of the filters.`})}),_jsxs(Expandable,{title:`filters – properties`,children:[_jsx(ResponseField,{name:`employees`,type:`object`,id:`param-employees`,children:_jsx(_components.p,{children:`Filters entities by id and label.`})}),_jsxs(Expandable,{title:`employees – properties`,children:[_jsx(ResponseField,{name:`ids`,type:`array of string`,id:`param-ids`,children:_jsx(_components.p,{children:`Entity ids to match.`})}),_jsx(ResponseField,{name:`labels`,type:`array of string`,id:`param-labels-1`,children:_jsx(_components.p,{children:`Entity labels to match.`})}),_jsx(ResponseField,{name:`matchTypes`,type:`object`,id:`param-match-types`}),_jsxs(Expandable,{title:`matchTypes – properties`,children:[_jsx(ResponseField,{name:`ids`,type:`string (enum: NONE | ANY | ALL)`,id:`param-ids-1`,children:_jsx(_components.p,{children:`Used to indicate how to apply the id filters. For example, if set to NONE, entities with the specified ids will be excluded. Default: “ANY”.`})}),_jsx(ResponseField,{name:`labels`,type:`string (enum: NONE | ANY | ALL)`,id:`param-labels-2`,children:_jsx(_components.p,{children:`Used to indicate how to apply the label filters. For example, if set to ANY, entities that have any of the specified labels will be included. Default: “ANY”.`})})]})]}),_jsx(ResponseField,{name:`shifts`,type:`object`,id:`param-shifts`,children:_jsx(_components.p,{children:`Filters entities by id and label.`})}),_jsxs(Expandable,{title:`shifts – properties`,children:[_jsx(ResponseField,{name:`ids`,type:`array of string`,id:`param-ids-2`,children:_jsx(_components.p,{children:`Entity ids to match.`})}),_jsx(ResponseField,{name:`labels`,type:`array of string`,id:`param-labels-3`,children:_jsx(_components.p,{children:`Entity labels to match.`})}),_jsx(ResponseField,{name:`matchTypes`,type:`object`,id:`param-match-types-1`}),_jsxs(Expandable,{title:`matchTypes – properties`,children:[_jsx(ResponseField,{name:`ids`,type:`string (enum: NONE | ANY | ALL)`,id:`param-ids-3`,children:_jsx(_components.p,{children:`Used to indicate how to apply the id filters. For example, if set to NONE, entities with the specified ids will be excluded. Default: “ANY”.`})}),_jsx(ResponseField,{name:`labels`,type:`string (enum: NONE | ANY | ALL)`,id:`param-labels-4`,children:_jsx(_components.p,{children:`Used to indicate how to apply the label filters. For example, if set to ANY, entities that have any of the specified labels will be included. Default: “ANY”.`})})]})]}),_jsx(ResponseField,{name:`work`,type:`object`,id:`param-work`,children:_jsx(_components.p,{children:`Defines filtering for specific work that the rule should be applied to. For example, it can be used to apply the rule only to work carried out in specific roles.`})}),_jsxs(Expandable,{title:`work – properties`,children:[_jsx(ResponseField,{name:`roles`,type:`object`,id:`param-roles`,children:_jsx(_components.p,{children:`Used to apply the rule only to work carried out in specific roles.`})}),_jsx(Expandable,{title:`roles – properties`,children:_jsx(ResponseField,{name:`ids`,type:`array of string`,id:`param-ids-4`,children:_jsx(_components.p,{children:`List of relevant role ids.`})})}),_jsx(ResponseField,{name:`workloads`,type:`object`,id:`param-workloads`,children:_jsx(_components.p,{children:`Used to apply the rule only to work carried out with specific workload categories.`})}),_jsx(Expandable,{title:`workloads – properties`,children:_jsx(ResponseField,{name:`categories`,type:`array of string`,id:`param-categories`,children:_jsx(_components.p,{children:`If specified, the shift must have at least one of the workload categories specified in this list.`})})})]})]}),_jsx(ResponseField,{name:`options`,type:`object`,id:`param-options`,children:_jsx(_components.p,{children:`Additional options for how the rule should be applied.`})}),_jsx(Expandable,{title:`options – properties`,children:_jsx(ResponseField,{name:`periodHandling`,type:`string (enum: PARTIAL | COMPLETE)`,id:`param-period-handling`,children:_jsx(_components.p,{children:`Used to indicate whether partial fulfillment per period is acceptable (PARTIAL) or not (COMPLETE). This setting can only be used for undesired rules. Default: “PARTIAL”.`})})}),_jsx(ResponseField,{name:`periods`,type:`object`,id:`param-periods`,children:_jsx(_components.p,{children:`List of periods in the schedule. Periods can be defined explicitly or through a recurrent definition (for example, to generate weeks).`})}),_jsxs(Expandable,{title:`periods – properties`,children:[_jsx(ResponseField,{name:`days`,type:`object`,id:`param-days`,children:_jsx(_components.p,{children:`List of days in the schedule. Each day will become one period. By default, each period will last the entire day. If a startTime and/or endTime are specified, these will apply to each period.`})}),_jsxs(Expandable,{title:`days – properties`,children:[_jsx(ResponseField,{name:`dates`,type:`array of date (date)`,id:`param-dates`,children:_jsx(_components.p,{children:`List of dates in the schedule. Only allowed in CALENDAR payloads.`})}),_jsx(ResponseField,{name:`dayIndices`,type:`array of dayIndex`,id:`param-day-indices`,children:_jsx(_components.p,{children:`List of day indices in the schedule. Only allowed in RECURRING payloads.`})}),_jsx(ResponseField,{name:`daysOfWeek`,type:`array of dayOfWeek`,id:`param-days-of-week`,children:_jsx(_components.p,{children:`List of days of the week. Will apply to all days in the schedule that match any of the specified weekdays.`})}),_jsx(ResponseField,{name:`startTime`,type:`string (time)`,id:`param-start-time`,children:_jsx(_components.p,{children:`TIME ISO 8601 format hh:mm. Equivalent to the 24h format of a single day. Use 00:00 to represent midnight.`})}),_jsx(ResponseField,{name:`endTime`,type:`string (time)`,id:`param-end-time`,children:_jsx(_components.p,{children:`TIME ISO 8601 format hh:mm. Equivalent to the 24h format of a single day. Use 00:00 to represent midnight.`})})]}),_jsx(ResponseField,{name:`customDefinitions`,type:`array of object`,id:`param-custom-definitions`,children:_jsx(_components.p,{children:`List of custom period definitions. Each custom period definition defines one period in the schedule.`})}),_jsxs(Expandable,{title:`customDefinitions – item structure`,children:[_jsx(ResponseField,{name:`startDay`,type:`object`,id:`param-start-day`,children:_jsx(_components.p,{children:`Describes one day in the schedule.`})}),_jsxs(Expandable,{title:`startDay – properties`,children:[_jsx(ResponseField,{name:`date`,type:`string (date)`,id:`param-date`,children:_jsx(_components.p,{children:`Date specified in ISO8601 format (YYYY-MM-DD). Only available in CALENDAR schedules.`})}),_jsx(ResponseField,{name:`dayIndex`,type:`integer`,id:`param-day-index`,children:_jsx(_components.p,{children:`Day index relative to the horizon start day (starts at 0). Only available in RECURRING schedules.`})})]}),_jsx(ResponseField,{name:`endDay`,type:`object`,id:`param-end-day`,children:_jsx(_components.p,{children:`Describes one day in the schedule.`})}),_jsxs(Expandable,{title:`endDay – properties`,children:[_jsx(ResponseField,{name:`date`,type:`string (date)`,id:`param-date-1`,children:_jsx(_components.p,{children:`Date specified in ISO8601 format (YYYY-MM-DD). Only available in CALENDAR schedules.`})}),_jsx(ResponseField,{name:`dayIndex`,type:`integer`,id:`param-day-index-1`,children:_jsx(_components.p,{children:`Day index relative to the horizon start day (starts at 0). Only available in RECURRING schedules.`})})]}),_jsx(ResponseField,{name:`startTime`,type:`string (time)`,id:`param-start-time-1`,children:_jsx(_components.p,{children:`TIME ISO 8601 format hh:mm. Equivalent to the 24h format of a single day. Use 00:00 to represent midnight.`})}),_jsx(ResponseField,{name:`endTime`,type:`string (time)`,id:`param-end-time-1`,children:_jsx(_components.p,{children:`TIME ISO 8601 format hh:mm. Equivalent to the 24h format of a single day. Use 00:00 to represent midnight.`})}),_jsx(ResponseField,{name:`applyTimeToAllDays`,type:`boolean`,id:`param-apply-time-to-all-days`,children:_jsx(_components.p,{children:`If true, the startTime and endTime will be applied to each individual day in the period. If false, the startTime will apply to the first day and the endTime will apply to the last day. Default: false.`})})]}),_jsx(ResponseField,{name:`recurrentDefinition`,type:`object`,id:`param-recurrent-definition`,children:_jsx(_components.p,{children:`A recurrent definition to easily create a set of similar periods.`})}),_jsxs(Expandable,{title:`recurrentDefinition – properties`,children:[_jsx(ResponseField,{name:`daysPerPeriod`,type:`integer`,required:true,id:`param-days-per-period`,children:_jsx(_components.p,{children:`The number of days in each period.`})}),_jsx(ResponseField,{name:`daysBetweenStarts`,type:`integer`,id:`param-days-between-starts`,children:_jsx(_components.p,{children:`The number of days between the start of each period. If not specified, this defaults to the value of daysPerPeriod, creating non-overlapping consecutive periods. Setting daysBetweenStarts to 1 will create a sliding window of periods.`})}),_jsx(ResponseField,{name:`startDay`,type:`object`,id:`param-start-day-1`,children:_jsx(_components.p,{children:`Describes one day in the schedule.`})}),_jsxs(Expandable,{title:`startDay – properties`,children:[_jsx(ResponseField,{name:`date`,type:`string (date)`,id:`param-date-2`,children:_jsx(_components.p,{children:`Date specified in ISO8601 format (YYYY-MM-DD). Only available in CALENDAR schedules.`})}),_jsx(ResponseField,{name:`dayIndex`,type:`integer`,id:`param-day-index-2`,children:_jsx(_components.p,{children:`Day index relative to the horizon start day (starts at 0). Only available in RECURRING schedules.`})})]}),_jsx(ResponseField,{name:`endDay`,type:`object`,id:`param-end-day-1`,children:_jsx(_components.p,{children:`Describes one day in the schedule.`})}),_jsxs(Expandable,{title:`endDay – properties`,children:[_jsx(ResponseField,{name:`date`,type:`string (date)`,id:`param-date-3`,children:_jsx(_components.p,{children:`Date specified in ISO8601 format (YYYY-MM-DD). Only available in CALENDAR schedules.`})}),_jsx(ResponseField,{name:`dayIndex`,type:`integer`,id:`param-day-index-3`,children:_jsx(_components.p,{children:`Day index relative to the horizon start day (starts at 0). Only available in RECURRING schedules.`})})]}),_jsx(ResponseField,{name:`startTime`,type:`string (time)`,id:`param-start-time-2`,children:_jsx(_components.p,{children:`TIME ISO 8601 format hh:mm. Equivalent to the 24h format of a single day. Use 00:00 to represent midnight.`})}),_jsx(ResponseField,{name:`endTime`,type:`string (time)`,id:`param-end-time-2`,children:_jsx(_components.p,{children:`TIME ISO 8601 format hh:mm. Equivalent to the 24h format of a single day. Use 00:00 to represent midnight.`})}),_jsx(ResponseField,{name:`applyTimeToAllDays`,type:`boolean`,id:`param-apply-time-to-all-days-1`,children:_jsx(_components.p,{children:`If true, the startTime and endTime will be applied to each individual day in the period. If false, the startTime will apply to the first day and the endTime will apply to the last day. Default: false.`})})]}),_jsx(ResponseField,{name:`labels`,type:`array of string`,id:`param-labels-5`,children:_jsx(_components.p,{children:`Provide labels to re-use periods that were defined in the configuration.`})})]})]})]})}),`\n`,_jsx(Heading,{level:`2`,id:`strict-unavailability`,children:`Strict unavailability`}),`\n`,_jsx(_components.p,{children:`To define certain periods as strictly unavailable for an employee, simply specify the periods in the rule. The solver will then never assign shifts to the employee during these periods.`}),`\n`,_jsxs(Tip,{children:[_jsxs(_components.p,{children:[`The rule below makes it strictly impossible for employee with id `,_jsx(_components.code,{children:`employee-1`}),` to work on weekends.`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`13`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`13`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"eac-weekends\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"importance\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"STRICT\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"isDesired\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`false`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"filters\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"employees\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"ids\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"employee-1\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"periods\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"labels\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"WEEKENDS\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})})]}),`\n`,_jsx(Heading,{level:`2`,id:`undesired-availability`,children:`Undesired availability`}),`\n`,_jsxs(_components.p,{children:[`To mark that an employee would rather not work during certain periods, set the `,_jsx(_components.code,{children:`isDesired`}),` field to `,_jsx(_components.code,{children:`false`}),` and choose an `,_jsx(_components.a,{href:`/v2/rules/index#rule-importance`,children:`importance level`}),` different than `,_jsx(_components.code,{children:`STRICT`}),`. The solver will try to avoid assigning shifts to the employee during these periods, but it is not strictly forbidden.`]}),`\n`,_jsxs(Tip,{children:[_jsxs(_components.p,{children:[`The rule below makes it undesirable for employee with id `,_jsx(_components.code,{children:`employee-1`}),` to work on Mondays or Thursdays.`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`15`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`15`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"eac-undesired-mondays-thursdays\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"importance\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"HIGH\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"isDesired\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`false`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"filters\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"employees\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"ids\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"employee-1\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"periods\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"days\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"daysOfWeek\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"MON\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"THU\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})})]}),`\n`,_jsx(Heading,{level:`2`,id:`desired-availability`,children:`Desired availability`}),`\n`,_jsxs(_components.p,{children:[`To mark that an employee prefers working on certain periods or shifts, set the `,_jsx(_components.code,{children:`isDesired`}),` field to `,_jsx(_components.code,{children:`true`}),` and choose an `,_jsx(_components.a,{href:`/v2/rules/index#rule-importance`,children:`importance level`}),` different than `,_jsx(_components.code,{children:`STRICT`}),` (`,_jsx(_components.code,{children:`STRICT`}),` is currently not supported on desired rules).`]}),`\n`,_jsxs(Tip,{children:[_jsxs(_components.p,{children:[`The rule below makes it preferred to assign shifts with shift label `,_jsx(_components.code,{children:`night`}),` to employee with id `,_jsx(_components.code,{children:`employee-1`}),` on Mondays, Tuesdays or Wednesdays.`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`18`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`18`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"eac-desired-night-shifts\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"importance\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"MEDIUM\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"isDesired\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`true`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"filters\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"employees\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"ids\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"employee-1\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"shifts\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"labels\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"night\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"periods\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"days\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"daysOfWeek\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"MON\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"TUE\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"WED\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})})]}),`\n`,_jsx(Heading,{level:`2`,id:`availability-with-work-filters`,children:`Availability with work filters`}),`\n`,_jsx(_components.p,{children:`You can also use work filters to target specific kinds of work. With role and workload filters, you can make the rule apply only to work carried out in certain roles and with certain workload categories.\nIt is also possible to apply role or workload filters separately.`}),`\n`,_jsxs(Tip,{children:[_jsxs(_components.p,{children:[`The rule below makes it undesirable for employee with id `,_jsx(_components.code,{children:`employee-1`}),` to work shifts in role `,_jsx(_components.code,{children:`role-1`}),` with workload category `,_jsx(_components.code,{children:`on_call`}),` on weekends. Work in other roles or with other workload categories is not targeted by this rule.`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`21`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`21`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"eac-undesired-weekend-role-1-oncall-workload\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"importance\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"HIGH\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"isDesired\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`false`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"filters\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"employees\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"ids\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"employee-1\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"work\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"roles\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"ids\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"role-1\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"workloads\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"categories\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"on_call\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"periods\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"labels\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"WEEKENDS\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})})]}),`\n`,_jsx(Heading,{level:`2`,id:`metrics`,children:`Metrics`}),`\n`,_jsxs(_components.p,{children:[`The following `,_jsx(_components.a,{href:`/v2/concepts/metrics`,children:`status metric`}),` is available for tracking on Availability rules:`]}),`\n`,_jsxs(`table`,{children:[_jsx(`thead`,{children:_jsxs(`tr`,{children:[_jsx(`th`,{children:`Metric key`}),_jsx(`th`,{children:`Description`})]})}),_jsx(`tbody`,{children:_jsx(_MdxComponentBoundary,{name:`AvailabilityMetricRows`,children:_jsx(AvailabilityMetricRows,{})})})]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{AvailabilityMetricRows,default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Availability","description":"Block employees from working on specific days or shifts, or make it desired/undesired for them to work on specific days or shifts.","href":"/v2/rules/availability"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Strict unavailability","slug":"strict-unavailability","depth":2,"children":[]},{"title":"Undesired availability","slug":"undesired-availability","depth":2,"children":[]},{"title":"Desired availability","slug":"desired-availability","depth":2,"children":[]},{"title":"Availability with work filters","slug":"availability-with-work-filters","depth":2,"children":[]},{"title":"Metrics","slug":"metrics","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/automaticrostering/cf28444263d74e9f/v1/api-reference/scripts/schema-to-mintlify.js","/_mintlify/custom/automaticrostering/c99586a9043111f0/v1/api-reference/scripts/strip-deprecated.js","/_mintlify/custom/automaticrostering/91008760a362276f/v1/api-reference/update-api.js","/_mintlify/custom/automaticrostering/2d0dc99d5a8b6ce9/v2/update-api.js"],"dynamicCss":".mint-whitespace-nowrap {\n white-space: nowrap\n}","subdomain":"automaticrostering","siteName":"Automatic Rostering","title":"Availability - Automatic Rostering","navMaps":{"firstHrefInVersion":{"2.0.0":{"href":"/v2/rules/availability","matchLevel":0},"1.0.0":{"href":"/v1/entities/employees","matchLevel":2}},"firstHrefInLanguage":{}},"lastModified":"2026-09-04T09:17:01.328Z","originalFileLocation":"v2/rules/availability.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Block employees from working on specific days or shifts, or make it desired/undesired for them to work on specific days or shifts.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Automatic Rostering\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/automaticrostering/nNovoS61Lhz_FEoi/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/automaticrostering/nNovoS61Lhz_FEoi/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/automaticrostering/nNovoS61Lhz_FEoi/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/automaticrostering/nNovoS61Lhz_FEoi/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/automaticrostering/nNovoS61Lhz_FEoi/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/automaticrostering/nNovoS61Lhz_FEoi/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/automaticrostering/nNovoS61Lhz_FEoi/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/automaticrostering/nNovoS61Lhz_FEoi/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/automaticrostering/nNovoS61Lhz_FEoi/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Availability - Automatic Rostering\">\u003cmeta data-mint-head property=\"og:description\" content=\"Block employees from working on specific days or shifts, or make it desired/undesired for them to work on specific days or shifts.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Automatic Rostering\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.automaticrostering.visma.net/v2/rules/availability\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://automaticrostering.mintlify.site/_mintlify/api/og/v2?division=Rules\u0026amp;title=Availability\u0026amp;description=Block+employees+from+working+on+specific+days+or+shifts%2C+or+make+it+desired%2Fundesired+for+them+to+work+on+specific+days+or+shifts.\u0026amp;theme=82f9a5919eb5b34df74de5d7\u0026amp;signature=8d67b5e18e09cd7717be971070b35741eb64564bb6ba875ca9468891e2c91f12\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Availability - Automatic Rostering\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Block employees from working on specific days or shifts, or make it desired/undesired for them to work on specific days or shifts.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://automaticrostering.mintlify.site/_mintlify/api/og/v2?division=Rules\u0026amp;title=Availability\u0026amp;description=Block+employees+from+working+on+specific+days+or+shifts%2C+or+make+it+desired%2Fundesired+for+them+to+work+on+specific+days+or+shifts.\u0026amp;theme=82f9a5919eb5b34df74de5d7\u0026amp;signature=8d67b5e18e09cd7717be971070b35741eb64564bb6ba875ca9468891e2c91f12\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/automaticrostering/nNovoS61Lhz_FEoi/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Automatic Rostering\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#16A34A\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.automaticrostering.visma.net/v2/rules/availability\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/v2/rules/availability.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.automaticrostering.visma.net/#organization\",\"name\":\"Automatic Rostering\",\"url\":\"https://docs.automaticrostering.visma.net\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/automaticrostering/geYJCg2PEZLfgAwl/logo/light.png?fit=max\u0026auto=format\u0026n=geYJCg2PEZLfgAwl\u0026q=85\u0026s=184cc1b5d04c48601ba425b95cf1d878\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.automaticrostering.visma.net#website\",\"name\":\"Automatic Rostering\",\"url\":\"https://docs.automaticrostering.visma.net\",\"publisher\":{\"@id\":\"https://docs.automaticrostering.visma.net/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.automaticrostering.visma.net/v2/rules/availability#webpage\",\"url\":\"https://docs.automaticrostering.visma.net/v2/rules/availability\",\"name\":\"Availability\",\"description\":\"Block employees from working on specific days or shifts, or make it desired/undesired for them to work on specific days or shifts.\",\"dateModified\":\"2026-09-04T09:17:01.328Z\",\"isPartOf\":{\"@id\":\"https://docs.automaticrostering.visma.net#website\"},\"breadcrumb\":{\"@id\":\"https://docs.automaticrostering.visma.net/v2/rules/availability#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.automaticrostering.visma.net/v2/rules/availability#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Entities\",\"item\":\"https://docs.automaticrostering.visma.net/v2/entities/employees\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Rules\",\"item\":\"https://docs.automaticrostering.visma.net/v2/rules\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Availability\",\"item\":\"https://docs.automaticrostering.visma.net/v2/rules/availability\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.automaticrostering.visma.net/v2/rules/availability#article\",\"headline\":\"Availability\",\"name\":\"Availability\",\"description\":\"Block employees from working on specific days or shifts, or make it desired/undesired for them to work on specific days or shifts.\",\"url\":\"https://docs.automaticrostering.visma.net/v2/rules/availability\",\"mainEntityOfPage\":{\"@id\":\"https://docs.automaticrostering.visma.net/v2/rules/availability#webpage\"},\"dateModified\":\"2026-09-04T09:17:01.328Z\",\"publisher\":{\"@id\":\"https://docs.automaticrostering.visma.net/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.automaticrostering.visma.net#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Automatic Rostering\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"Automatic Rostering\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/v2/rules/availability.md","siteName":"Automatic Rostering","nav":{"global":null,"versions":[{"version":"2.0.0","default":true,"tag":"Latest","tabs":[{"tab":"Guides","groups":[{"group":"Getting started","pages":[{"title":"Introduction","icon":"hand-wave","href":"/v2"},{"title":"Authentication","icon":"key","href":"/v2/getting-started/authentication"},{"title":"Quickstart","icon":"circle-play","href":"/v2/getting-started/quickstart"},{"title":"Migrate from v1","icon":"arrows-left-right","href":"/v2/getting-started/migrate-from-v1"}]},{"group":"Entities","pages":[{"title":"Employees","icon":"users","href":"/v2/entities/employees"},{"title":"Shifts","icon":"clock","href":"/v2/entities/shifts"},{"title":"Demands","icon":"chart-column","href":"/v2/entities/demands"},{"group":"Rules","icon":"shield-check","pages":[{"title":"Basic rule concepts","description":"Learn about the rules the solver can follow when generating rosters.","icon":"shield-exclamation","href":"/v2/rules/index"},{"title":"Availability","href":"/v2/rules/availability"},{"title":"Utilization","description":"Set targets and limits for the number of hours or shifts worked by employees in specific periods.","href":"/v2/rules/utilization"},{"title":"Cooldown","href":"/v2/rules/cooldown"},{"title":"Consecutive","href":"/v2/rules/consecutive"},{"title":"Pattern","href":"/v2/rules/pattern"},{"title":"Periodic Rest","href":"/v2/rules/periodic-rest"},{"title":"Period Distribution","href":"/v2/rules/period-distribution"},{"title":"Fairness","href":"/v2/rules/fairness"}]}]},{"group":"Concepts","pages":[{"title":"Periods","icon":"calendar-week","href":"/v2/concepts/periods"},{"group":"Extensions","pages":[{"title":"Shift templates","icon":"wand-magic-sparkles","href":"/v2/concepts/extensions/shift-templates"}]}]},{"group":"Reasoning","pages":[{"title":"Basics","icon":"message","href":"/v2/reasoning/basics"},{"title":"Analyzer","icon":"magnifying-glass","href":"/v2/reasoning/analyzer"}]},{"group":"Status updates","pages":[{"title":"Overview","icon":"signal","mode":"wide","href":"/v2/concepts/status"},{"title":"Metrics","icon":"gauge-high","mode":"wide","href":"/v2/concepts/metrics"},{"title":"Messages","icon":"message","mode":"wide","href":"/v2/concepts/status-messages"}]}]},{"tab":"API reference","pages":[{"title":"API reference","href":"/api-reference/roster/start-a-job"}]}],"global":{"anchors":[{"anchor":"Documentation","icon":"book-open-cover","href":"/"},{"anchor":"Hub","icon":"code","href":"https://hub.automaticrostering.visma.net/"}]}},{"version":"1.0.0","pages":[{"title":"1.0.0","href":"/v1/entities/employees"}]}]},"basePath":"","title":"Availability - Automatic Rostering","buildId":"dpl_Fyv1NbzwP68g2bEH2Roy98uY1zmE","deploymentId":"dpl_Fyv1NbzwP68g2bEH2Roy98uY1zmE","dynamics":[],"chunks":[]}