Consolidates the Workday action reductions into one PR while preserving endpoint coverage and request schema detail.
#24552 has been merged, so #24549 is reverted from master and all Workday consolidation changes now live in this PR.
This PR includes:
Literal[...] selector fields for composites instead of free-form path stringsBusiness Process event subresources used to be four separate read actions:
ListBusinessProcessEventCommentsGetCompletedStepsBusinessProcessGetInProcessStepsBusinessProcessEventListBusinessProcessEventRemainingStepsThey are now one composite action: GetBusinessProcessEventSubresources.
The request schema stays explicit by adding a required selector:
{
"ID": "c239497eddec1001997f14ccbfe30000",
"subresource_type": "completed_steps",
"limit": 20,
"offset": 0
}
subresource_type is typed as Literal["comments", "completed_steps", "in_progress_steps", "remaining_steps"], so callers still get a closed set of valid choices instead of a free-form path string. The composite maps those values to the same old endpoints:
comments -> GET /businessProcess/v1/events/{ID}/commentscompleted_steps -> GET /businessProcess/v1/events/{ID}/completedStepsin_progress_steps -> GET /businessProcess/v1/events/{ID}/inProgressStepsremaining_steps -> GET /businessProcess/v1/events/{ID}/remainingStepsSelector-specific behavior is preserved too: completed_steps and in_progress_steps still convert upstream 404 responses into {"data": [], "total": 0}, matching the deleted actions.
Local checks on the rebuilt branch:
ruff check apps/workday/tool.py apps/workday/actions -> all checks passedpython -m compileall -q apps/workday/tool.py apps/workday/actions -> passedpytest tests/test_apps/test_workday/test_common.py -> 22 passedgit diff --check origin/master..HEAD -> cleanmercury_actions_analysis/actions.db cleanLive replay previously run using connection ca_qWLknNUm0KSI:
Notes: