Skip to content

Added calendar events, move contacts, and extensions commands #48

@guilhermeyo

Description

@guilhermeyo

Hi,

I use hey-cli and fizzy-cli, so the code was familiar. Added some commands I wanted for myself.

Didn't touch the SDK. Everything goes through the legacy client with form-encoded POSTs that handle 302 redirects, same as the web UI. Tried the endpoints with curl first.

What I added

hey event — calendar events

hey event list
hey event create "Meeting" --date 2026-04-06 --start 10:00 --end 11:00
hey event create "Holiday" --date 2026-04-06 --all-day
hey event create "Standup" --date 2026-04-06 --start 09:00 --end 09:30 --reminder 30m --reminder 1d
hey event edit <id> --title "New title" --start 14:00 --end 15:00
hey event delete <id>

List goes through the SDK (Calendars().GetRecordings). Create/edit/delete hit /calendar/events via the legacy client since those return 302s.

hey move — move contacts between boxes

hey move <topic-id> --box feedbox
hey move --contact <contact-id> --box trailbox

Gets the contact from the topic creator via Topics().Get, posts to /boxes/{id}/designations. Asks for confirmation unless you pass --yes.

hey ext — email extensions

hey ext list
hey ext create sales --member user@domain.com
hey ext edit <id> --name support
hey ext delete <id> --yes

List scrapes HTML at /accounts/{id}/domains/extenzions because there's no JSON endpoint. Account ID comes from Identity().GetIdentity. Edit/delete use POST with _method override.

How it's built

  • Legacy client extended with PostForm, PatchForm, Delete for 302 redirects
  • Followed existing code structure
  • Unit tests with httptest servers
  • --json on everything

Cool thing I found

The API accepts any reminder duration for calendar events, not just the presets in the web UI. I set a reminder days in advance to get notified the morning of an event instead of minutes before, which is really useful.

Code

All on my fork: https://github.com/guilhermeyo/hey-cli/tree/feature/new-commands

Is there any plan to add these natively? I can adjust the hey-sdk and send a PR for each one if that helps. It's been working well for me as is.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions