> For the complete documentation index, see [llms.txt](https://teamleader-sdk.mcore-services.dev/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://teamleader-sdk.mcore-services.dev/api-reference/general/days-off.md).

# Days Off

Manage days off for users in Teamleader Focus.

```php
Teamleader::daysOff()
```

|                          |                                                         |
| ------------------------ | ------------------------------------------------------- |
| Class                    | `McoreServices\TeamleaderSDK\Resources\General\DaysOff` |
| Create / update / delete | — / — / —                                               |
| Pagination               | No                                                      |

## Endpoints

* `daysOff.bulkDelete`
* `daysOff.import`

## Filters

`list()` takes no filters.

## Methods

### `bulkDelete()`

```php
bulkDelete(string $userId, array $dayOffIds): array
```

Delete multiple days off for a user

* `$userId` — The user ID that owns the days off
* `$dayOffIds` — Array of day off IDs to delete

### `importSingleDay()`

```php
importSingleDay(string $userId, string $leaveTypeId, string $startsAt, string $endsAt): array
```

Import a single day off - convenience method

* `$userId` — The user ID
* `$leaveTypeId` — The leave type ID
* `$startsAt` — Start datetime (ISO 8601 format)
* `$endsAt` — End datetime (ISO 8601 format)

### `bulkImport()`

```php
bulkImport(string $userId, string $leaveTypeId, array $days): array
```

Import (create) multiple days off for a user

* `$userId` — The user ID to create days off for
* `$leaveTypeId` — The leave type ID (from dayOffTypes resource)
* `$days` — Array of day objects with starts\_at and ends\_at

### `importFullDays()`

```php
importFullDays(string $userId, string $leaveTypeId, array $dates): array
```

Import full days off

Each date is sent as a full day; the user must have a working schedule on it. Chunked into calls of at most 100 days, the API's limit.

* `$dates` — Y-m-d dates

### `importDateRange()`

```php
importDateRange(string $userId, string $leaveTypeId, string $startDate, string $endDate, string $startTime = '08:00:00', string $endTime = '18:00:00', string $timezone = '+00:00', bool $excludeWeekends = true): array
```

Import a date range of days off

* `$userId` — The user ID
* `$leaveTypeId` — The leave type ID
* `$startDate` — Start date (Y-m-d format)
* `$endDate` — End date (Y-m-d format)
* `$startTime` — Start time (H:i:s format)
* `$endTime` — End time (H:i:s format)
* `$timezone` — Timezone (default: +00:00)
* `$excludeWeekends` — Whether to exclude weekends (default: true)

### `importMultipleDays()`

```php
importMultipleDays(string $userId, string $leaveTypeId, array $dates, string $startTime = '08:00:00', string $endTime = '18:00:00', string $timezone = '+00:00'): array
```

Import multiple days off with the same duration pattern

* `$userId` — The user ID
* `$leaveTypeId` — The leave type ID
* `$dates` — Array of date strings (Y-m-d format)
* `$startTime` — Start time (H:i:s format, e.g., '08:00:00')
* `$endTime` — End time (H:i:s format, e.g., '18:00:00')
* `$timezone` — Timezone (default: +00:00)

### `list()`

```php
list(array $filters = [], array $options = [])
```

Override standard methods since this resource doesn't support them

### `info()`

```php
info($id, $includes = null)
```

### `create()`

```php
create(array $data)
```

### `update()`

```php
update($id, array $data)
```

### `delete()`

```php
delete($id)
```

### `getFormattingHelpers()`

```php
getFormattingHelpers(): array
```

Get available date/time formatting helpers

### `formatDatetime()`

```php
formatDatetime(DateTime $datetime): string
```

Format datetime for API

### `createDatetime()`

```php
createDatetime(string $date, string $time, string $timezone = '+00:00'): string
```

Create datetime from date and time strings

## Examples

Import multiple days off for a user:

```php
$result = Teamleader::daysOff()->bulkImport($userId, $leaveTypeId, $days);
```

Delete multiple days off for a user:

```php
$result = Teamleader::daysOff()->bulkDelete($userId, $dayOffIds);
```

Import a single day off:

```php
$result = Teamleader::daysOff()->importSingleDay($userId, $leaveTypeId, $startsAt, $endsAt);
```
