groupme-sdk: Python SDK wrapping GroupMe REST API #155
Labels
No labels
domain:backend
domain:devops
domain:frontend
status:approved
status:in-progress
status:needs-fix
status:qa
type:bug
type:devops
type:feature
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
forgejo_admin/basketball-api#155
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Type
Feature
Lineage
project-groupme-westside→ Ticket 1 of 3Repo
forgejo_admin/groupme-sdk(to be created on Forgejo)User Story
As a platform operator (story:GM-5)
I want to create and manage GroupMe groups via SDK
So that group setup is automated and tracked
Context
Westside Kings & Queens needs GroupMe as its real-time communication layer. This SDK wraps the GroupMe REST API (
api.groupme.com/v3) in a clean Python package, published to Forgejo PyPI. Consumers: basketball-api (auto-invite on contract signing) and groupme-mcp (agent tools).GroupMe API uses a permanent access token (no OAuth refresh). Token stored in
~/secrets/groupme/credentials.env.Architecture:
arch-domain-westside-basketball,arch-dataflow-westside-basketball,arch-deployment-westside-basketball(all updated 2026-03-24).File Targets
New repo
groupme-sdk:src/groupme_sdk/client.py— HTTP client, token authsrc/groupme_sdk/groups.py— create, list, update, destroy groupssrc/groupme_sdk/members.py— add, remove, list members (by phone/email/user_id)src/groupme_sdk/messages.py— send messages to groupstests/— unit tests (mocked) + integration tests (live API)pyproject.toml— packaging, Forgejo PyPI publishAcceptance Criteria
forgejo_admin/groupme-sdkexists with CI pipelinecreate_group,list_groups,update_group,add_member,remove_member,list_members,send_messagepip install groupme-sdkTest Expectations
pytest tests/Constraints
GROUPME_ACCESS_TOKENChecklist
Related
project-groupme-westside— project pagearch-domain-westside-basketball— domain model with GroupMeGroup/GroupMeMember entitiesArchitecture Simplification (2026-03-24)
SDK scope narrowed after brainstorming session. Key change: parents self-join via share link instead of being API-added by phone number. This eliminates the phone-number matching duplicate bug discovered during Marcus onboarding.
SDK scope reduced to:
create_group,list_groups,update_group,destroy_group— group lifecyclelist_members— audit who joined (query GroupMe, compare to roster)send_message— announcements via MCPadd_member/remove_member— admin tool only, edge casesRemoved from scope:
GroupMeMembertracking table — GroupMe API is source of truth for membershipGroupMeGrouptable — justgroupme_group_id+groupme_share_urlcolumns on teams tableRefined AC After Code Exploration (2026-03-24)
SDK is consumed by basketball-api directly (not via pal-e-mail). The primary use cases are:
Revised AC
forgejo_admin/groupme-sdkexists with Woodpecker CIcreate_group(name, description)→ returns group_id + share_urllist_groups(),get_group(group_id),update_group(group_id, ...),destroy_group(group_id)list_members(group_id)→ returns member list (name, user_id, roles)add_member(group_id, nickname, phone/email/user_id),remove_member(group_id, membership_id)send_message(group_id, text)Scope Review: NEEDS_REFINEMENT
Review note:
review-303-2026-03-24Two gaps found in file targets and repo placement instructions.
.woodpecker.yamlandsrc/groupme_sdk/__init__.pymissing from File Targets (but required by acceptance criteria)groupme-sdkrepo -- agent needs explicit repo creation step or the issue should move after repo creationReview Fixes (2026-03-24)
Addressing review-303-2026-03-24 findings:
1. Missing file targets added
src/groupme_sdk/__init__.py— package init, re-exports client.woodpecker.yaml— CI pipeline: lint, test, publish to Forgejo PyPI on main2. Repo creation instruction
Step 0: Agent must create
forgejo_admin/groupme-sdkrepo on Forgejo viamcp__forgejo__create_repobefore starting work. PRs go to the new repo, not basketball-api. This issue is filed here because the target repo doesn't exist yet.