{"record":{"id":"0efeb62c38d6d79f","repo":"conductor-oss/conductor","slug":"invalid-input-operation-s-payloadtype-s","errorCode":null,"errorMessage":"Invalid input - Operation: %s, PayloadType: %s","messagePattern":"Invalid input - Operation: (.+?), PayloadType: (.+?)","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":400,"severity":"error","filePath":"core/src/main/java/com/netflix/conductor/service/ExecutionService.java","lineNumber":712,"sourceCode":"     * @param path the path for which the external storage location is to be populated\n     * @param operation the type of {@link Operation} to be performed\n     * @param type the {@link PayloadType} at the external uri\n     * @return the external uri at which the payload is stored/to be stored\n     */\n    public ExternalStorageLocation getExternalStorageLocation(\n            String path, String operation, String type) {\n        try {\n            ExternalPayloadStorage.Operation payloadOperation =\n                    ExternalPayloadStorage.Operation.valueOf(StringUtils.upperCase(operation));\n            ExternalPayloadStorage.PayloadType payloadType =\n                    ExternalPayloadStorage.PayloadType.valueOf(StringUtils.upperCase(type));\n            return externalPayloadStorage.getLocation(payloadOperation, payloadType, path);\n        } catch (Exception e) {\n            String errorMsg =\n                    String.format(\n                            \"Invalid input - Operation: %s, PayloadType: %s\", operation, type);\n            LOGGER.error(errorMsg);\n            throw new IllegalArgumentException(errorMsg);\n        }\n    }\n}\n","sourceCodeStart":694,"sourceCodeEnd":716,"githubUrl":"https://github.com/conductor-oss/conductor/blob/cf7c3e4a8adfb158be778ab1ec525323c363cd3a/core/src/main/java/com/netflix/conductor/service/ExecutionService.java#L694-L716","documentation":"Thrown by ExecutionService.getExternalStorageLocation when the 'operation' or 'type' string parameters cannot be mapped to valid ExternalPayloadStorage.Operation (READ, WRITE) or PayloadType (WORKFLOW_INPUT, WORKFLOW_OUTPUT, TASK_INPUT, TASK_OUTPUT) enum values via valueOf. The method uppercases the input and attempts enum conversion; any failure is wrapped in IllegalArgumentException. Also thrown if externalPayloadStorage.getLocation itself throws.","triggerScenarios":"Calling the external storage location API (GET /api/external-storage/location) or the service method with an invalid operation string (e.g. 'DELETE', 'COPY', 'delete') or an invalid payload type string (e.g. 'TASK_STATUS', 'WORKFLOW_STATUS', 'input'). Case is handled (uppercased) but the resulting string must match a valid enum constant.","commonSituations":"Passing an unsupported operation like 'DELETE' or 'COPY' — only READ and WRITE are supported. Passing a payload type like 'INPUT' instead of 'TASK_INPUT' or 'WORKFLOW_INPUT'. Typo in the query parameter. Client SDK using a different naming convention than the server's enum constants.","solutions":["Use valid operation values: 'READ' or 'WRITE' (case-insensitive).","Use valid payload type values: 'WORKFLOW_INPUT', 'WORKFLOW_OUTPUT', 'TASK_INPUT', 'TASK_OUTPUT' (case-insensitive).","Check the API documentation or ExternalPayloadStorage interface for the complete enum set before constructing the request."],"exampleFix":"// before — invalid operation and type\nGET /api/external-storage/location?path=/foo&operation=delete&type=input\n// 400: Invalid input - Operation: delete, PayloadType: input\n\n// after — valid values\nGET /api/external-storage/location?path=/foo&operation=WRITE&type=TASK_INPUT","handlingStrategy":"validation","validationCode":"// Validate operation and type strings before calling getExternalStorageLocation\nprivate static final Set<String> VALID_OPERATIONS = Set.of(\"READ\", \"WRITE\");\nprivate static final Set<String> VALID_PAYLOAD_TYPES =\n    Set.of(\"WORKFLOW_INPUT\", \"WORKFLOW_OUTPUT\", \"TASK_INPUT\", \"TASK_OUTPUT\");\n\nString op = operation.toUpperCase();\nString pt = type.toUpperCase();\nif (!VALID_OPERATIONS.contains(op)) {\n    throw new IllegalArgumentException(\"Invalid operation: \" + operation\n        + \". Valid: READ, WRITE\");\n}\nif (!VALID_PAYLOAD_TYPES.contains(pt)) {\n    throw new IllegalArgumentException(\"Invalid payload type: \" + type\n        + \". Valid: \" + VALID_PAYLOAD_TYPES);\n}","typeGuard":"public static boolean isValidStorageOperation(String op) {\n    return Set.of(\"READ\", \"WRITE\").contains(op.toUpperCase());\n}\n\npublic static boolean isValidPayloadType(String type) {\n    return Set.of(\"WORKFLOW_INPUT\", \"WORKFLOW_OUTPUT\", \"TASK_INPUT\", \"TASK_OUTPUT\")\n        .contains(type.toUpperCase());\n}","tryCatchPattern":null,"preventionTips":["Use only READ/WRITE for operation and the four valid PayloadType enum names for type.","Add enum validation in client SDKs before making the request.","Document the exact enum values in API documentation."],"tags":["external-storage","validation","api","enum"],"backgroundTag":null,"analyzedSha":"cf7c3e4a8adfb158be778ab1ec525323c363cd3a","analyzedAt":"2026-08-14T03:33:19.897Z","schemaVersion":2},"datasetVersion":"2026-08-14T05:17:29.042Z"}