Skip to content

feat(sink): catch-all capture → bounded store + GET /api/hooks (S1)#77

Open
williamdewitt wants to merge 1 commit into
mainfrom
claude/issue-64-20260628-2216
Open

feat(sink): catch-all capture → bounded store + GET /api/hooks (S1)#77
williamdewitt wants to merge 1 commit into
mainfrom
claude/issue-64-20260628-2216

Conversation

@williamdewitt

Copy link
Copy Markdown
Owner

Automated by the agent-in-the-loop for #64. Closes #64.

Implements slice S1 of the WebhookSink epic (#49):

- HookCapture record: Id, Bucket, Method, Headers, Body, ReceivedAt
- IHookStore/HookStore: bounded in-memory ring buffer (Queue + Guid index)
  with lock-guarded Add/GetAll (newest-first)/GetById; capacity configurable
  via WebhookSink:StoreCapacity (default 200)
- Program.cs: MapMethods("/in/{bucket}") catches all HTTP verbs and records
  the request; GET /api/hooks returns JSON (newest first);
  GET /api/hooks/{id:guid} returns one hook or 404
- CaptureEndpointTests: WebApplicationFactory smoke covering capture +
  retrieval + ring eviction at capacity=3

Closes #64.

Co-authored-by: William de Witt <williamdewitt@users.noreply.github.com>
@github-actions github-actions Bot added the risk:low tests/samples; CI green + light approval label Jun 28, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

risk:low tests/samples; CI green + light approval

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat(sink): catch-all capture → bounded store + GET /api/hooks (S1)

1 participant