Commands reference
Every command is discoverable via --help. This page is the map: what's available, how it's organized, and the rules every command follows.
The shape, again
dimescheduler <entity> <verb> [flags]
<entity> is the entity in plural kebab-case (categories, resource-gps-trackings, …). <verb> is list, create, update, or delete. Most entities support all four; a few are read-only, and jobs and appointments also have get to fetch a single record (jobs get <job-no>, appointments get <id>).
For create / update / delete, the flags mirror the entity's fields. Run dimescheduler <entity> <verb> --help to see them - the flag set is generated from the OpenAPI specification, so it can't drift from the API. Every write command also takes --json (inline body) or --json-file / -f (path, or - for stdin), which bypass the typed flags; see Scripting.
Top-level operational commands
These commands aren't tied to an entity:
dimescheduler auth login | logout | status
dimescheduler config get | set | list | path
dimescheduler api [-X <method>] <path> [-q key=value] [--body ...] [--body-file ...]
dimescheduler completion bash | zsh | fish | powershell
dimescheduler version [--check-update]
auth and config are covered in Authentication. The rest are below.
Entities
Here's the full list of entity commands, grouped by how they relate. The first column is the command name (plural, kebab-case); the second lists any aliases the CLI also accepts.
Work items
| Entity | Aliases | Verbs |
|---|---|---|
jobs | job | list / get / create / update / delete |
project-members | project-member | list / create / update / delete |
tasks | task | list / create / update / delete - list accepts --open, --page, --page-size |
task-budget-entries | task-budget-entry | create / delete (append-only, see below) |
task-containers | list / create / update / delete | |
task-dependencies | task-dependency | list / create / update / delete |
task-filter-values | list / create / update / delete | |
task-locked | list / create / update / delete | |
task-uris | list / create / update / delete | |
time-entries | time-entry | list / create / update / delete - list requires --start and --end (YYYY-MM-DD) |
time-sessions | time-session | list / create / update / delete - list requires --start and --end (YYYY-MM-DD) |
task-budget-entries is the one entity with a different shape: the API treats budget entries as append-only, so the CLI exposes create and delete only. There is no list or update, and asking for one fails with "unknown command".
Resources
| Entity | Aliases | Verbs |
|---|---|---|
resources | resource, res | list / create / update / delete |
resource-calendars | list / create / update / delete | |
resource-capacities | list / create / update / delete - list requires --start and --end | |
resource-certificates | list / create / update / delete | |
resource-filter-values | list / create / update / delete | |
resource-gps-trackings | list / create / update / delete | |
resource-uris | list / create / update / delete | |
resource-types | list (read-only) |
Appointments
| Entity | Aliases | Verbs |
|---|---|---|
appointments | appointment, appt | list / get / create / update / delete - list requires --from and --to (RFC 3339) |
appointment-categories | list / create / update / delete | |
appointment-contents | list / create / update / delete | |
appointment-containers | list / create / update / delete | |
appointment-field-values | list / create / update / delete | |
appointment-importances | list / create / update / delete | |
appointment-locked | list / create / update / delete | |
appointment-planning-quantities | list / create / update / delete | |
appointment-time-markers | list / create / update / delete | |
appointment-uris | list / create / update / delete | |
assignments | assignment | list / create / update / delete |
appointment-dependencies | list (read-only) | |
appointment-fields | list (read-only) |
Filters and indicators
| Entity | Aliases | Verbs |
|---|---|---|
filter-groups | list / create / update / delete | |
filter-values | list / create / update / delete | |
categories | category, cat | list / create / update / delete |
time-markers | list / create / update / delete | |
pins | pin | list / create / update / delete |
tags | tag | list / create / update / delete |
Other
| Entity | Aliases | Verbs |
|---|---|---|
action-uris | action-uri | list / create / update / delete |
captions | caption | list / create / update / delete |
containers | container | list / create / update / delete |
notifications | notification | list / create / update / delete - list accepts --page, --limit, --sort, --group, --filter |
calendars | list (read-only) |
Special list flags
Most list commands take no arguments, but six take parameters:
# Date range (RFC 3339, required)
dimescheduler appointments list --from 2026-05-01T00:00:00Z --to 2026-05-31T23:59:59Z
dimescheduler appointments list --from 2026-05-01T00:00:00Z --to 2026-05-31T23:59:59Z \
--resource RES1 --resource RES2
# Date range (capacities use --start / --end, not --from / --to; RFC 3339, required)
dimescheduler resource-capacities list --start 2026-05-01T00:00:00Z --end 2026-05-31T23:59:59Z
# Calendar-day range (YYYY-MM-DD, required)
dimescheduler time-entries list --start 2026-05-01 --end 2026-05-31
dimescheduler time-sessions list --start 2026-05-01 --end 2026-05-31
# Tasks: all optional. --open for open tasks, --open=false for closed, omit for all
dimescheduler tasks list --open --page 1 --page-size 100
# Paginated notifications (--page defaults to 1, --limit to 50)
dimescheduler notifications list --page 1 --limit 50 --sort createdAt:desc
api - the escape hatch
For endpoints the typed commands don't cover, api makes any authenticated request. It works the same way as gh api: one positional <path>, with the method set by -X / --method (default GET):
# GET
dimescheduler api /category
# POST with an inline body
dimescheduler api -X POST /category --body '{"name":"VIP","displayName":"VIP","color":"#22d3ee"}'
# POST from a file (use - for stdin)
dimescheduler api -X POST /task --body-file ./task.json
# Query parameters: one -q / --query per key=value pair
dimescheduler api /notification -q page=1 -q limit=50
# Extra headers, response headers, built-in jq
dimescheduler api /resource -H 'Accept-Language: nl-BE' -i --jq '.[].name'
| Flag | What it does |
|---|---|
-X, --method | HTTP method. Default GET. |
-q, --query | Query parameter as key=value. Repeatable. |
-H, --header | Extra request header as key:value. Repeatable. |
--body | Inline JSON request body. |
-f, --body-file | Path to a JSON request body, or - for stdin. Mutually exclusive with --body. |
-i, --include | Print the response status and headers before the body. |
--jq | gojq expression applied to the response. |
--body / --body-file belong to api only; the typed write commands use --json / --json-file instead. Output formatting works the same as for typed commands.
Completions
dimescheduler completion bash # source from .bashrc
dimescheduler completion zsh # source from .zshrc
dimescheduler completion fish # write to ~/.config/fish/completions/dimescheduler.fish
dimescheduler completion powershell # source from your PowerShell profile
Version & update check
dimescheduler version # print version
dimescheduler version --check-update # compare against GitHub releases
Exit codes
| Code | Meaning |
|---|---|
0 | Success. |
1 | Any other error - network failure, invalid JSON, a 4xx the codes below don't cover, or a logical error the API wrapped in a 200 response. |
2 | Usage error. |
3 | Authentication error - no API key configured, or the server returned 401 or 403. |
4 | Not found - the server returned 404. |
5 | Server error - the server returned 5xx. |
6 | Rate limited - the server returned 429. |
The error message and a one-line hint land on stderr. Scripts can branch on these without parsing output: retry on 5 and 6, stop on 3 and 4. Combine with --quiet for clean set -e pipelines.