windmill-labs/windmill · error

Not supported

Error message

Not supported

What it means

A match statement in the jobs API dispatches on a kind/enum (in the batch/preview job-creation path) and only implements some arms; anything else falls through to a generic `Err(anyhow!("Not supported"))`. It signals that the requested variant is not implemented on this code path (and in OSS builds may be an Enterprise-only variant).

Source

Thrown at backend/windmill-api/src/jobs.rs:7090

                Some(job.tag.clone()),
                None,
                None,
                run_query.timeout,
                None,
            ),
            JobKind::Script => {
                let userdb_authed =
                    UserDbWithAuthed { db: user_db.clone(), authed: &authed.to_authed_ref() };
                script_path_to_payload(
                    job.script_path(),
                    Some(userdb_authed),
                    db.clone(),
                    &w_id,
                    run_query.skip_preprocessor,
                )
                .await?
            }
            _ => return Err(anyhow::anyhow!("Not supported").into()),
        };

    if *CLOUD_HOSTED {
        tracing::info!("workflow_as_code_tracing id {i} ");
        i += 1;
    }

    let mut extra = HashMap::new();
    extra.insert(ENTRYPOINT_OVERRIDE.to_string(), to_raw_value(&entrypoint));

    let args = PushArgs { args: &task.args.unwrap_or_else(HashMap::new), extra: Some(extra) };
    let scheduled_for = run_query.get_scheduled_for(&db).await?;

    let tag = run_query.tag.clone().or(tag).or(Some(job.tag));

    if *CLOUD_HOSTED {
        tracing::info!("workflow_as_code_tracing id {i} ");
        i += 1;

View on GitHub (pinned to e474e8803c)

Solutions

  1. Check the `kind`/variant field you send in the request body against the handled arms in jobs.rs and use a supported one.
  2. If the kind requires Enterprise, either use an EE-licensed server or drop that feature.
  3. For preview-like behavior of unsupported kinds, run the underlying script/flow directly and inspect its result.
  4. If you maintain the code, replace the catch-all arm with an explicit list of supported kinds and a descriptive error naming the unsupported variant.

Example fix

// before
// request: { "kind": "previewscript", ... } on an unsupported path
// after
// request: { "kind": "script", "path": "u/admin/hello", ... }
Defensive patterns

Strategy: validation

Validate before calling

const SUPPORTED = ['script', 'flow', 'rawscript'];
if (!SUPPORTED.includes(payload.kind)) throw new Error(`kind ${payload.kind} not supported on this endpoint`);

Type guard

function isSupportedKind(k) { return ['script', 'flow', 'rawscript'].includes(k); }

Try / catch

try {
  await jobsPreview(payload);
} catch (e) {
  if (String(e).trim() === 'Not supported') {
    // fall back to running the underlying script/flow directly
  } else throw e;
}

Prevention

When it happens

Trigger: Submitting a job/preview request (via jobs.rs around line 7090) whose kind matches the `_` arm — e.g. a job kind or preview type that is not one of the explicitly handled variants (such as an EE-only kind on an OSS server, or preview of an unsupported kind).

Common situations: Calling the preview/batch endpoint with `kind: "preview"` or an EE-only kind against an OSS deployment; a client sending a new/renamed kind the backend doesn't handle; copy-pasted API calls using a kind valid on one endpoint but not this one.

Related errors


AI-assisted analysis of windmill-labs/windmill@e474e8803c (2026-09-03). Data as JSON: /api/errors/f65d395f947fa587. Report an issue: GitHub.