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

After the first package has been published to PyPI:

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.1.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.1.0
File Size Uploaded
my_office_days_cli-0.1.0.tar.gz 42.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for my-office-days-cli 0.1.0
File Interpreter ABI Platform
my_office_days_cli-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 58.1 kB

Release files / my_office_days_cli-0.1.0.tar.gz

Download URL my_office_days_cli-0.1.0.tar.gz
Size 42.5 kB
Tags Source
SHA-256 checksum
How to use checksums
bd6362945f78f1226f5e0c3ac1cf5c7fd8d0568d1699cc3d377a5c2c97b7fa45
BLAKE2b-256 checksum
How to use checksums
9e528e0ece3ef4dc75172eeff7e135226775d628b837c7d9a7e3e51fbcb9bdef
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.24 {"installer":{"name":"uv","version":"0.12.24","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.1.0-py3-none-any.whl

Download URL my_office_days_cli-0.1.0-py3-none-any.whl
Size 15.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
71c91e56cc9cdd67db36e11d6159aae9e2250408cda52061d5a4e637d1b28721
BLAKE2b-256 checksum
How to use checksums
7da96ee6f1339623c1761c0913b2c7f41b9bbf2b839426f17372f60b3b9e3aca
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.24 {"installer":{"name":"uv","version":"0.12.24","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

0.2.0

2 release files

This release

0.1.0 This release

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