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

# forced-ptos

> List and create Forced PTO entries.

Forced PTO marks a day off that the organization imposed rather than the person requesting it,
such as a company holiday. Each entry is a time entry logged against the workspace's Forced
PTO task.

<Note>
  These commands need a Forced PTO task configured on the workspace's HR project. Without one,
  `list` returns an empty result and `create` fails.
</Note>

<Note>
  Sample responses on this page show the JSON envelope (`--json`). Pretty output is the
  default on a terminal and its columns adapt to width. See
  [Output formats](/cli/output-formats).
</Note>

## forced-ptos list

List the Forced PTO entries in a date range, optionally for one person.

```bash theme={"system"}
neetoinvoice forced-ptos list \
  --start-date 2026-07-01 \
  --end-date 2026-07-31 \
  --user-email oliver@example.com
```

| Flag           | Type     | Required | Default | Description                      |
| -------------- | -------- | -------- | ------- | -------------------------------- |
| `--end-date`   | `string` | Yes      |         | Range end (YYYY-MM-DD)           |
| `--start-date` | `string` | Yes      |         | Range start (YYYY-MM-DD)         |
| `--user-email` | `string` | No       |         | Filter to a single user by email |

```json theme={"system"}
{
  "data": {
    "start_date": "2026-07-01",
    "end_date": "2026-07-31",
    "forced_pto_entries": [
      {
        "id": "128c1dfc-b29f-4fda-9a05-8a90e197b81b",
        "user_email": "oliver@example.com",
        "user_name": "Oliver Smith",
        "recorded_on": "2026-07-04",
        "hours": 8.0
      }
    ],
    "count": 1
  }
}
```

## forced-ptos create

Mark one day as Forced PTO for one user. `--hours` defaults to 8 when omitted.

```bash theme={"system"}
neetoinvoice forced-ptos create \
  --user-email oliver@example.com \
  --date 2026-07-04 \
  --hours 8
```

| Flag           | Type      | Required | Default | Description                             |
| -------------- | --------- | -------- | ------- | --------------------------------------- |
| `--date`       | `string`  | Yes      |         | Date to mark as Forced PTO (YYYY-MM-DD) |
| `--hours`      | `float64` | No       | `0`     | Hours to log (default: 8)               |
| `--user-email` | `string`  | Yes      |         | User email                              |

```json theme={"system"}
{
  "data": {
    "id": "128c1dfc-b29f-4fda-9a05-8a90e197b81b",
    "recorded_on": "2026-07-04",
    "hours": 8.0,
    "user_email": "oliver@example.com",
    "task_name": "Forced PTO"
  }
}
```

To mark a whole team, loop over the emails:

```bash theme={"system"}
for email in oliver@example.com sam@example.com; do
  neetoinvoice forced-ptos create --user-email "$email" --date 2026-07-04
done
```
