Skip to main content

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​

EntityAliasesVerbs
jobsjoblist / get / create / update / delete
project-membersproject-memberlist / create / update / delete
taskstasklist / create / update / delete - list accepts --open, --page, --page-size
task-budget-entriestask-budget-entrycreate / delete (append-only, see below)
task-containerslist / create / update / delete
task-dependenciestask-dependencylist / create / update / delete
task-filter-valueslist / create / update / delete
task-lockedlist / create / update / delete
task-urislist / create / update / delete
time-entriestime-entrylist / create / update / delete - list requires --start and --end (YYYY-MM-DD)
time-sessionstime-sessionlist / 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​

EntityAliasesVerbs
resourcesresource, reslist / create / update / delete
resource-calendarslist / create / update / delete
resource-capacitieslist / create / update / delete - list requires --start and --end
resource-certificateslist / create / update / delete
resource-filter-valueslist / create / update / delete
resource-gps-trackingslist / create / update / delete
resource-urislist / create / update / delete
resource-typeslist (read-only)

Appointments​

EntityAliasesVerbs
appointmentsappointment, apptlist / get / create / update / delete - list requires --from and --to (RFC 3339)
appointment-categorieslist / create / update / delete
appointment-contentslist / create / update / delete
appointment-containerslist / create / update / delete
appointment-field-valueslist / create / update / delete
appointment-importanceslist / create / update / delete
appointment-lockedlist / create / update / delete
appointment-planning-quantitieslist / create / update / delete
appointment-time-markerslist / create / update / delete
appointment-urislist / create / update / delete
assignmentsassignmentlist / create / update / delete
appointment-dependencieslist (read-only)
appointment-fieldslist (read-only)

Filters and indicators​

EntityAliasesVerbs
filter-groupslist / create / update / delete
filter-valueslist / create / update / delete
categoriescategory, catlist / create / update / delete
time-markerslist / create / update / delete
pinspinlist / create / update / delete
tagstaglist / create / update / delete

Other​

EntityAliasesVerbs
action-urisaction-urilist / create / update / delete
captionscaptionlist / create / update / delete
containerscontainerlist / create / update / delete
notificationsnotificationlist / create / update / delete - list accepts --page, --limit, --sort, --group, --filter
calendarslist (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'
FlagWhat it does
-X, --methodHTTP method. Default GET.
-q, --queryQuery parameter as key=value. Repeatable.
-H, --headerExtra request header as key:value. Repeatable.
--bodyInline JSON request body.
-f, --body-filePath to a JSON request body, or - for stdin. Mutually exclusive with --body.
-i, --includePrint the response status and headers before the body.
--jqgojq 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​

CodeMeaning
0Success.
1Any 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.
2Usage error.
3Authentication error - no API key configured, or the server returned 401 or 403.
4Not found - the server returned 404.
5Server error - the server returned 5xx.
6Rate 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.