Epic: #12 — Implement user_activity Table Support
Size: M
Depends on: #13
Description
Create the read endpoint for user activity timelines and update the OpenAPI specification.
Files to create/modify
app/api/v1/endpoints/user_activity.py (new) — GET /users/{user_id}/activity with PaginatedResponse, optional activity_type query param
app/main.py — register new router
docs/killrvideo_openapi.yaml — regenerate via python scripts/generate_openapi.py
tests/api/v1/endpoints/test_user_activity.py (new) — API-level tests
Key design
- Public endpoint (no auth required) — consistent with existing
GET /users/{user_id}/comments
- Uses
PaginationParams dependency, optional activity_type Query param
- Returns empty
data: [] for unknown users (not 404)
- Response items:
userId, activityType, activityId, activityTimestamp
Acceptance Criteria
Epic: #12 — Implement
user_activityTable SupportSize: M
Depends on: #13
Description
Create the read endpoint for user activity timelines and update the OpenAPI specification.
Files to create/modify
app/api/v1/endpoints/user_activity.py(new) —GET /users/{user_id}/activitywithPaginatedResponse, optionalactivity_typequery paramapp/main.py— register new routerdocs/killrvideo_openapi.yaml— regenerate viapython scripts/generate_openapi.pytests/api/v1/endpoints/test_user_activity.py(new) — API-level testsKey design
GET /users/{user_id}/commentsPaginationParamsdependency, optionalactivity_typeQuery paramdata: []for unknown users (not 404)userId,activityType,activityId,activityTimestampAcceptance Criteria
GET /api/v1/users/{user_id}/activityreturns 200 withPaginatedResponsepage,pageSize,activity_typequery paramsapp/main.pydocs/killrvideo_openapi.yamlregenerated and includes the new endpoint path, query params, andUserActivityResponseschema