Align HEY and Basecamp clients with current official APIs - #61
Merged
Conversation
Use the official calendar event form API (including set_time_zone), week-period reads for expanded recurrences, date-only todo writes, canonical email box paths, and time-track start/stop payloads. Timeboxes now PATCH an existing HEY event instead of delete-and-recreate. Co-authored-by: is2b007 <is2b007@users.noreply.github.com>
Review against bc3-api (flat routes, OAuth grant_type, completed assignments) and hey-cli v1.0 found silent data loss and token-refresh bugs. Basecamp: persist rotated refresh tokens and expires_in; pick accounts without product=bc3; use canonical /todos and /recordings paths; paginate comments and schedule entries; expand recurring schedule series into the week window; stamp existing todos complete from /my/assignments/completed.json. HEY: occurrence ids use the event wall date, not a UTC parse. Co-authored-by: is2b007 <is2b007@users.noreply.github.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Official comment content is HTML (entities escaped, newlines as br). CI scan_ruby was failing because bin/brakeman --ensure-latest rejected 8.0.5. Co-authored-by: is2b007 <is2b007@users.noreply.github.com>
is2b007
marked this pull request as ready for review
August 25, 2026 02:24
scan_ruby failed on CVE-2026-71847 (json < 2.21.2) and GHSA-mwm8-39rw-8826 (sqlite3 < 2.9.6). Co-authored-by: is2b007 <is2b007@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Review of Daybreak’s HEY and Basecamp clients against hey-cli v1.0 / hey-sdk 0.21 and the current bc3-api (flat routes, OAuth
grant_type, completed assignments, rich-text comments).This branch includes the HEY alignment from #60 plus the Basecamp review fixes. Prefer this PR if you want both in one merge.
HEY
Official writes and reads now match hey-sdk: form
POST/PATCH /calendar/events.jsonwithset_time_zone=1, week periods for expanded recurrences, date-only todos, empty time-track start + 409 adopt, canonicallaterbox/asidebox/trailbox.Review follow-up: occurrence ids (
{series}:{date}) now use the event’s wall date. A UTC parse of2026-04-15T23:00:00-05:00was becoming the next day, soPATCH/DELETE .../occurrences/:date.jsonwould 404.Basecamp — issues that needed resolving
Official docs now treat flat routes as canonical. Legacy
/buckets/:id/...still works, but several Daybreak paths were wrong or incomplete:/buckets/:bucket/todos/:id/completion.jsonPOST/DELETE /todos/:id/completion.json/buckets/:bucket/recordings/:id/comments.json, first page only, plain text bodyGET/POST /recordings/:id/comments.json, paginated; body is HTML (<div>…<br>…</div>) per rich_text.md/schedules/:id/entries.jsontype=web_server/type=refreshonly; discarded rotatedrefresh_token; hardcoded 2-week expirygrant_type; persists new refresh token +expires_inproduct == "bc3"onlyhref/resource(Basecamp’s own authorization.json omitsproduct)GET /my/assignments/completed.json(does not import history)starts_atonly, so weekly meetings that began earlier vanished from this weekrecurrence_schedulefrequencies into the week window as{id}:{YYYY-MM-DD}Pagination
Link: rel=nextis now followed only forhttps://3.basecampapi.com/{account_id}/.... Comments and completion no longer require a storedbasecamp_bucket_id.bin/brakemanuses--ensure-latest; Brakeman is bumped 8.0.5 → 8.0.6 soscan_rubyis green.Left as-is (not bugs in the current product surface)
/my/assignments.json— a card has no completion endpoint; it is “done” by moving it to a done column (POST /card_tables/cards/:id/moves.json). Syncing them without that write-back would stamp into a failingWriteCompletionJob.Tests
Full suite: 159 runs, 0 failures. No live HEY/Basecamp account in this environment.