{"record":{"id":"8c7b0ad67e55dc17","repo":"elsa-workflows/elsa-core","slug":"the-console-log-stream-filter-has-an-unsupported-numeric","errorCode":null,"errorMessage":"The console log stream filter has an unsupported numeric value.","messagePattern":"The console log stream filter has an unsupported numeric value\\.","errorType":"validation","errorClass":"JsonException","httpStatus":null,"severity":"error","filePath":"src/modules/Elsa.Diagnostics.ConsoleLogs/Contracts/ConsoleStreamJsonConverter.cs","lineNumber":52,"sourceCode":"            _ => throw new JsonException($\"Unsupported console stream value '{value}'.\")\n        });\n    }\n\n    private static ConsoleStream? ReadString(string? value)\n    {\n        return value?.Trim().ToLowerInvariant() switch\n        {\n            null or \"\" or \"all\" => null,\n            \"stdout\" => ConsoleStream.Stdout,\n            \"stderr\" => ConsoleStream.Stderr,\n            _ => throw new JsonException(\"The console log stream filter must be 'stdout', 'stderr', or null.\")\n        };\n    }\n\n    private static ConsoleStream ReadNumber(ref Utf8JsonReader reader)\n    {\n        if (!reader.TryGetInt32(out var value) || !Enum.IsDefined(typeof(ConsoleStream), value))\n            throw new JsonException(\"The console log stream filter has an unsupported numeric value.\");\n\n        return (ConsoleStream)value;\n    }\n}\n","sourceCodeStart":34,"sourceCodeEnd":57,"githubUrl":"https://github.com/elsa-workflows/elsa-core/blob/fe9217bdfa0e27f0e09e45006eb6898f616e513d/src/modules/Elsa.Diagnostics.ConsoleLogs/Contracts/ConsoleStreamJsonConverter.cs#L34-L57","documentation":"ReadNumber converts a JSON integer token to a ConsoleStream, but only if the integer corresponds to a defined ConsoleStream enum member. Integers that are not parseable or not defined throw this JsonException.","triggerScenarios":"Sending a numeric stream filter such as 3, -1, or a non-integer number that does not map to a defined ConsoleStream member (only 1=Stdout, 2=Stderr are defined).","commonSituations":"Clients serializing the enum of a different/newer version with extra members; sending 0 (default, undefined); sending arbitrary ids from a client-side enum.","solutions":["Send numeric value 1 (stdout) or 2 (stderr), or use the string form \"stdout\"/\"stderr\"","Prefer the string representation in API payloads to avoid enum-numbering skew","Validate client-side with Enum.IsDefined equivalent before sending"],"exampleFix":"// before\n{ \"stream\": 0 }\n// after\n{ \"stream\": 1 }","handlingStrategy":"validation","validationCode":"if (raw is < 1 or > 2 || !Enum.IsDefined(typeof(ConsoleStream), (int)raw)) throw new ArgumentException($\"{raw} is not a defined ConsoleStream value.\");","typeGuard":"bool IsDefinedStreamNumber(int n) => Enum.IsDefined(typeof(ConsoleStream), n);","tryCatchPattern":"try { filter = JsonSerializer.Deserialize<ElsaConsoleLogFilter>(payload); }\ncatch (JsonException ex) when (ex.Message.Contains(\"unsupported numeric value\"))\n{ logger.LogWarning(\"Bad numeric stream filter\"); }","preventionTips":["Prefer string stream values over raw integers in payloads","Validate numeric enums with Enum.IsDefined before sending","Synchronize enum definitions across client/server versions"],"tags":["json","deserialization","enum"],"backgroundTag":"invalid-enum-value","analyzedSha":"fe9217bdfa0e27f0e09e45006eb6898f616e513d","analyzedAt":"2026-09-13T20:32:34.702Z","contentChangedAt":"2026-09-13T20:32:34.702Z","schemaVersion":2},"datasetVersion":"2026-09-16T04:17:20.429Z"}