My Office Days CLI
A secure command-line client for your personal My Office Days account. View locations and availability, inspect your bookings, and create a booking with an explicit confirmation and read-back verification.
The API behavior implemented by this project was derived from the official My office days Android app on Google Play.
Highlights
- Passwordless login with the official one-time email-code flow.
- Sessions and encryption keys stay in the operating-system keyring.
- Supports the encrypted transport used by production tenants.
- Friendly booking type names such as
LunchandSport session. - Every booking shows a concrete plan and requires confirmation.
- JSON output makes the CLI convenient for scripts and agents.
Requirements
- Python 3.11 or newer
uv- Your own authorized My Office Days account
Run without installing
Run the CLI directly from PyPI:
uvx my-office-days-cli --help
The shorter mod command is also available:
uvx --from my-office-days-cli mod --help
You can also install the command into a persistent uv tool environment:
uv tool install my-office-days-cli
mod --help
Configure and log in
The base URL includes both the tenant host and customer path:
mod config set-base-url https://<tenant>.server.werktopkantoor.nl/<customer-id>
mod auth login
mod doctor
auth login asks for your email address and a six-digit code. The email address
and code are not stored. The resulting session and optional encryption key are
saved in the OS keyring. Non-secret configuration is stored under
%LOCALAPPDATA%\my-office-days-cli on Windows.
Common commands
List the booking types configured by your organization:
mod booking-types
Check availability using a friendly booking type:
mod availability --date 2026-10-15 --type Lunch
mod availability --date 2026-10-12 --type "Sport session"
List your bookings:
mod bookings list
mod bookings list --date 2026-10-15
Create a booking:
mod bookings create --date 2026-10-15 --type Lunch --slot early
The CLI first checks the current state and prints the exact date, location,
timeslot, capacity, and remaining places. Nothing changes until you confirm.
Use --yes only when you have already reviewed that plan.
Security model
- Only use the CLI for an account you are authorized to access.
- Credentials never belong in config files, command output, or Git.
- Booking creation performs a read-before-write and read-back verification.
- Unknown mutation contracts fail closed rather than guessing against production.
See docs/security.md for details.
Development
git clone https://github.com/cveld/my-office-days-cli.git
cd my-office-days-cli
uv sync
uv run pytest
uv run mod --help
Build the package locally:
uv build
uvx --from ./dist/my_office_days_cli-0.0.0-py3-none-any.whl mod --help
Releases
Release Please maintains the changelog and release pull request from Conventional Commits. Merging a release PR creates a GitHub release. The publish workflow then builds, verifies, and publishes the package to PyPI using Trusted Publishing.
Repository maintainers must configure a PyPI Trusted Publisher for:
- owner:
cveld - repository:
my-office-days-cli - workflow:
release-please.yml - environment:
pypi
License
Licensed under the MIT License.
Metadata
Release files for my-office-days-cli 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| my_office_days_cli-0.2.0.tar.gz | 42.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| my_office_days_cli-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 58.3 kB
Release files / my_office_days_cli-0.2.0.tar.gz
| Download URL | my_office_days_cli-0.2.0.tar.gz |
|---|---|
| Size | 42.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c789e5f0006a81b7d71b499f7fc1c8c0f377dc0240d31c84cb4dbb63658e222c
|
|
BLAKE2b-256 checksum How to use checksums |
555bc3e5ff1cfff1c769d6a0eeca0de38b69bd6b4c8b65ea5b4a2eabaa25c49e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / my_office_days_cli-0.2.0-py3-none-any.whl
| Download URL | my_office_days_cli-0.2.0-py3-none-any.whl |
|---|---|
| Size | 15.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ea8af9f4949721aef5f495719af2cdc02a861077d174871546c87ad36f805581
|
|
BLAKE2b-256 checksum How to use checksums |
345ccd2996082ecc5ce7e2efe88804a223c8ed9eb7b2bc945563272ca1626008
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|