fix: use query params for workflow_id in Poimen endpoints #42

Merged
rock merged 1 commits from fix/poimen-path-param-routing into main 2026-09-26 12:52:21 +00:00
Owner

Root cause: ServiceAdapter dispatcher sets X-Upstream-Path to template strings like /v1/poimen/executions/{id}/stream with literal {id}. The handler extracted {id} as the workflow ID instead of the actual value.

Fix: All handlers read workflow_id from query params (?workflow_id=xxx). Paths changed to flat resource names without path parameters.

API contract:

GET  /executions                         — list
GET  /executions/detail?workflow_id=xxx   — describe
GET  /executions/history?workflow_id=xxx  — history
GET  /executions/stream?workflow_id=xxx   — SSE
POST /executions/signal?workflow_id=xxx   — signal
DELETE /executions/detail?workflow_id=xxx — terminate

All accessed via X-Service: poimen + X-Resource: <name> headers.

**Root cause:** ServiceAdapter dispatcher sets X-Upstream-Path to template strings like `/v1/poimen/executions/{id}/stream` with literal `{id}`. The handler extracted `{id}` as the workflow ID instead of the actual value. **Fix:** All handlers read `workflow_id` from query params (`?workflow_id=xxx`). Paths changed to flat resource names without path parameters. **API contract:** ``` GET /executions — list GET /executions/detail?workflow_id=xxx — describe GET /executions/history?workflow_id=xxx — history GET /executions/stream?workflow_id=xxx — SSE POST /executions/signal?workflow_id=xxx — signal DELETE /executions/detail?workflow_id=xxx — terminate ``` All accessed via `X-Service: poimen` + `X-Resource: <name>` headers.
rock added 1 commit 2026-09-26 12:46:46 +00:00
fix: use query params for workflow_id in Poimen endpoints
CI / CI (pull_request) Successful in 2m17s
731e19cf26
Root cause: ServiceAdapter dispatcher sets X-Upstream-Path to template
strings like /v1/poimen/executions/{id}/stream with literal {id}.
extractWorkflowID() returned '{id}' instead of the actual workflow ID.

Fix:
- All handlers read workflow_id from ?workflow_id=xxx query param
- Remove path param extraction (extractWorkflowID)
- Update spec paths: remove {id} segments, use flat resource paths
  /v1/poimen/executions/detail?workflow_id=xxx
  /v1/poimen/executions/stream?workflow_id=xxx
  /v1/poimen/executions/history?workflow_id=xxx
  /v1/poimen/executions/signal?workflow_id=xxx
- Exact path matching in ServeHTTP (no prefix/suffix matching)

API contract:
  GET  /v1/poimen/executions                         — list all
  GET  /v1/poimen/executions/detail?workflow_id=xxx   — describe one
  GET  /v1/poimen/executions/history?workflow_id=xxx  — event history
  GET  /v1/poimen/executions/stream?workflow_id=xxx   — SSE events
  POST /v1/poimen/executions/signal?workflow_id=xxx   — signal
  DELETE /v1/poimen/executions/detail?workflow_id=xxx  — terminate
rock merged commit aaa9a5d1cb into main 2026-09-26 12:52:21 +00:00
rock deleted branch fix/poimen-path-param-routing 2026-09-26 12:52:21 +00:00
Sign in to join this conversation.