Problem
Multiple activity-audit stories (STORY-131, STORY-132, STORY-133, STORY-134, STORY-138, STORY-141) describe filtering activity events by resource type, action, or service ID. However, the current API only supports GET /v1/activity?limit=N with no filtering parameters. Users must fetch all events and filter locally, which is inefficient and breaks down at scale.
For example, STORY-131 (Compliance: List All Key Rotations) requires filtering for api_key.revoked events over 90 days — currently requires paginating through ALL events and filtering client-side.
Expected Behavior
GET /v1/activity?resource_type=api_key — filter by resource type
GET /v1/activity?action=revoked — filter by action
GET /v1/activity?service_id={id} — filter by service
GET /v1/activity?since=<unix_timestamp> — filter by time window
- These filters should be combinable
- Pagination support (offset-based) for large result sets
Context
Discovered via UX Paths analysis (docs/ux-paths/topics/activity-audit.md — Stories 4, 5, 6, 7, 11, 13, 14)
Problem
Multiple activity-audit stories (STORY-131, STORY-132, STORY-133, STORY-134, STORY-138, STORY-141) describe filtering activity events by resource type, action, or service ID. However, the current API only supports
GET /v1/activity?limit=Nwith no filtering parameters. Users must fetch all events and filter locally, which is inefficient and breaks down at scale.For example, STORY-131 (Compliance: List All Key Rotations) requires filtering for
api_key.revokedevents over 90 days — currently requires paginating through ALL events and filtering client-side.Expected Behavior
GET /v1/activity?resource_type=api_key— filter by resource typeGET /v1/activity?action=revoked— filter by actionGET /v1/activity?service_id={id}— filter by serviceGET /v1/activity?since=<unix_timestamp>— filter by time windowContext
Discovered via UX Paths analysis (docs/ux-paths/topics/activity-audit.md — Stories 4, 5, 6, 7, 11, 13, 14)