feat: implement GroupMe SDK with groups, members, messages #1

Closed
opened 2026-03-24 07:18:12 +00:00 by forgejo_admin · 0 comments

Type

Feature

Lineage

project-groupme-westside — Ticket 1 of 3 (basketball-api#155)

Repo

forgejo_admin/groupme-sdk

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).

File Targets

  • src/groupme_sdk/__init__.py — re-export GroupMeClient
  • src/groupme_sdk/client.py — HTTP client, token auth, base request method
  • src/groupme_sdk/exceptions.py — SDK exception hierarchy
  • src/groupme_sdk/groups.py — create, list, get, update, destroy groups
  • src/groupme_sdk/members.py — add, remove, list members
  • src/groupme_sdk/messages.py — send messages to groups
  • tests/test_groups.py — unit tests for groups
  • tests/test_members.py — unit tests for members
  • tests/test_messages.py — unit tests for messages
  • tests/test_integration.py — live API integration tests
  • pyproject.toml — hatchling build, ruff, pytest
  • .woodpecker.yaml — CI: lint, test, publish

Acceptance Criteria

  • SDK supports: create_group, list_groups, get_group, update_group, destroy_group, add_member, remove_member, list_members, send_message
  • Unit tests pass (mocked HTTP)
  • Integration test passes against live GroupMe API
  • Published to Forgejo PyPI, installable via pip install groupme-sdk

Test Expectations

  • Unit tests: each SDK method with mocked urllib responses
  • Integration test: full lifecycle (create group, send message, list members, destroy group)
  • Run command: pytest tests/ -v

Constraints

  • Pure Python (urllib.request, no requests/httpx)
  • Follow minio-sdk patterns
  • Token via env var GROUPME_ACCESS_TOKEN

Checklist

  • PR opened
  • Tests pass
  • No unrelated changes
  • Plan: plan-wkq
  • basketball-api#155 — parent issue
### Type Feature ### Lineage `project-groupme-westside` — Ticket 1 of 3 (basketball-api#155) ### Repo `forgejo_admin/groupme-sdk` ### 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). ### File Targets - `src/groupme_sdk/__init__.py` — re-export GroupMeClient - `src/groupme_sdk/client.py` — HTTP client, token auth, base request method - `src/groupme_sdk/exceptions.py` — SDK exception hierarchy - `src/groupme_sdk/groups.py` — create, list, get, update, destroy groups - `src/groupme_sdk/members.py` — add, remove, list members - `src/groupme_sdk/messages.py` — send messages to groups - `tests/test_groups.py` — unit tests for groups - `tests/test_members.py` — unit tests for members - `tests/test_messages.py` — unit tests for messages - `tests/test_integration.py` — live API integration tests - `pyproject.toml` — hatchling build, ruff, pytest - `.woodpecker.yaml` — CI: lint, test, publish ### Acceptance Criteria - [ ] SDK supports: create_group, list_groups, get_group, update_group, destroy_group, add_member, remove_member, list_members, send_message - [ ] Unit tests pass (mocked HTTP) - [ ] Integration test passes against live GroupMe API - [ ] Published to Forgejo PyPI, installable via `pip install groupme-sdk` ### Test Expectations - Unit tests: each SDK method with mocked urllib responses - Integration test: full lifecycle (create group, send message, list members, destroy group) - Run command: `pytest tests/ -v` ### Constraints - Pure Python (urllib.request, no requests/httpx) - Follow minio-sdk patterns - Token via env var GROUPME_ACCESS_TOKEN ### Checklist - [ ] PR opened - [ ] Tests pass - [ ] No unrelated changes ### Related - Plan: `plan-wkq` - basketball-api#155 — parent issue
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
forgejo_admin/groupme-sdk#1
No description provided.