Repository navigation
feat(workflow): validate inputs endpoint and run-form checks (#3b) - #763
Merged
Merged
Conversation
POST /api/ws/{ws}/workflows/flows/{id}/executions/validate runs the
start's input check over a JSON {"inputs": {...}} body and answers 200
with Kestra's shape: every declared input (disabled ones with
enabled=false), its typed value, isDefault and errors with renderError.
SECRET values are masked. Nothing is stored, uploaded or audited.
Same gate (workflow:manage), flow lookup and 404/409 as the start; 400
for a body or inputs that is not a JSON object. The start's renderer is
shared through worker::input_outcomes, and InputOutcome gains
render_error for a dependsOn.condition or expression that fails to
render. openapi.json and the generated client are regenerated.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…ting (#3b B2) - Run calls POST .../executions/validate (generated hook) with the start's JSON body (a chosen file as its name) after the form's own checks; errors of enabled inputs the form shows go beside their field, inputs dependsOn turns off get a note, and a failed validate falls back to the start. - A start refusal is split by line, each line under the input it names (backticks or `Missing required input:<id>`). - Client checks add INT/FLOAT/DURATION min/max, DATETIME/DATE/TIME after/before (inclusive) and SELECT/MULTISELECT membership unless allowCustomValue; validator and bounds are shown in the help text, the validator is never run in the browser. - The model's module comment now says the server checks at start and via validate. - BackfillDialog prefilled BOOL via "BOOLEAN", which never matched; it now reads BOOL, including "true"/"false" text. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…3b B3) Spec section 8 (EN, VI), roadmap row #3 done and the validate row supported. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Roadmap package #3b, the second half of "Inputs checked at start" (#3a is #762).
POST /api/ws/{ws}/workflows/flows/{id}/executions/validate: JSON body{ "inputs": {…} }, always 200 with Kestra's shape (id,namespace,inputs[{input, value, enabled, isDefault, errors[{message, renderError}]}],checks: []). Every declared input is listed,dependsOn-disabled ones withenabled=false. SECRET values come back as******. Same permission and flow lookup as the start (WF_MANAGE; 404 missing/foreign/trashed, 409 disabled). Creates no execution, uploads nothing, writes no audit record. It runs the same checker with the same renderer as the start.min/max,after/before, SELECT/MULTISELECT membership (validatorstays server-side).BackfillDialogprefilled a BOOL schedule value never ("BOOLEAN"typo); fixed.Divergence from Kestra: JSON body instead of multipart; a FILE is represented by its name only.
Oracle ratchet unchanged, measured: 301 / 50 / 50 / 0. Screenshots for the user docs are owed (bounds/pattern help lines, the "turned off" note, validate errors under fields); the notes for
egret-data/docsare ready.Test plan
validate_inputs_route7/7,executions_routes,inputs_start,file_inputscargo test -p egret-server --lib(both drift tests),-p egret-configOutputsTreeflake, passes alone),tsc -b, lint, build-D warnings🤖 Generated with Claude Code