---
url: /guide/availability.md
description: >-
  Give resources working hours and time off. Scheduler Pro draws them on the
  grid and can refuse bookings outside them.
---

# Availability & Time Off

Implement the contract on the resource model:

```php [app/Models/Staff.php]
class Staff extends Model implements HasSchedulerAvailability
{
    public function getSchedulerAvailability(): Availability
    {
        return Availability::make()
            ->weekdays('09:00-13:00', '14:00-18:00')
            ->on(Carbon::SATURDAY, '10:00-14:00')
            ->timeOff('2026-10-05 00:00', '2026-10-05 23:59', 'Conference');
    }
}
```

Or configure it on the scheduler:

```php
$scheduler->resourceAvailability(fn (Staff $resource) => Availability::make()->weekdays('08:00-16:00'));
```

Night shifts such as `22:00-06:00` are supported.

## On the grid

Non-working hours are hatched, time off is labelled, and each row shows how booked it is for the visible range.

## Enforce it

```php
$scheduler->enforceAvailability();
```

Bookings outside working hours or during time off are then refused, with the reason shown on the drag ghost and in the modal.
