Skip to main content

My Office Days CLI

CI Release Please PyPI Python

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 Lunch and Sport 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)

Source distribution for my-office-days-cli 0.2.0
File Size Uploaded
my_office_days_cli-0.2.0.tar.gz 42.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for my-office-days-cli 0.2.0
File Interpreter ABI Platform
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}

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page