{"record":{"id":"289311f266dbe5fe","repo":"floci-io/floci","slug":"invalidaction-289311","errorCode":"InvalidAction","errorMessage":"Action  \" + action + \" is not supported","messagePattern":"Action  \" \\+ action \\+ \" is not supported","errorType":"exception","errorClass":"AwsException","httpStatus":400,"severity":"error","filePath":"src/main/java/io/github/hectorvent/floci/services/codebuild/CodeBuildJsonHandler.java","lineNumber":56,"sourceCode":"            case \"DeleteProject\" -> deleteProject(request, region);\n            case \"BatchGetProjects\" -> batchGetProjects(request, region);\n            case \"ListProjects\" -> listProjects(region);\n            case \"CreateReportGroup\" -> createReportGroup(request, region, account);\n            case \"UpdateReportGroup\" -> updateReportGroup(request, region);\n            case \"DeleteReportGroup\" -> deleteReportGroup(request, region);\n            case \"BatchGetReportGroups\" -> batchGetReportGroups(request, region);\n            case \"ListReportGroups\" -> listReportGroups(region);\n            case \"ImportSourceCredentials\" -> importSourceCredentials(request, region, account);\n            case \"ListSourceCredentials\" -> listSourceCredentials(region);\n            case \"DeleteSourceCredentials\" -> deleteSourceCredentials(request, region);\n            case \"ListCuratedEnvironmentImages\" -> listCuratedEnvironmentImages();\n            case \"StartBuild\" -> startBuild(request, region, account);\n            case \"BatchGetBuilds\" -> batchGetBuilds(request, region);\n            case \"ListBuilds\" -> listBuilds(region);\n            case \"ListBuildsForProject\" -> listBuildsForProject(request, region);\n            case \"StopBuild\" -> stopBuild(request, region);\n            case \"RetryBuild\" -> retryBuild(request, region, account);\n            default -> throw new AwsException(\"InvalidAction\", \"Action \" + action + \" is not supported\", 400);\n        };\n    }\n\n    private Response createProject(JsonNode req, String region, String account) throws Exception {\n        String name = req.path(\"name\").asText(null);\n        String description = req.has(\"description\") ? req.path(\"description\").asText() : null;\n        ProjectSource source = req.has(\"source\") ? mapper.treeToValue(req.get(\"source\"), ProjectSource.class) : null;\n        List<ProjectSource> secondarySources = parseList(req, \"secondarySources\", ProjectSource.class);\n        String sourceVersion = req.has(\"sourceVersion\") ? req.path(\"sourceVersion\").asText() : null;\n        ProjectArtifacts artifacts = req.has(\"artifacts\") ? mapper.treeToValue(req.get(\"artifacts\"), ProjectArtifacts.class) : null;\n        List<ProjectArtifacts> secondaryArtifacts = parseList(req, \"secondaryArtifacts\", ProjectArtifacts.class);\n        ProjectEnvironment environment = req.has(\"environment\") ? mapper.treeToValue(req.get(\"environment\"), ProjectEnvironment.class) : null;\n        String serviceRole = req.has(\"serviceRole\") ? req.path(\"serviceRole\").asText() : null;\n        Integer timeout = req.has(\"timeoutInMinutes\") ? req.path(\"timeoutInMinutes\").asInt() : null;\n        Integer queuedTimeout = req.has(\"queuedTimeoutInMinutes\") ? req.path(\"queuedTimeoutInMinutes\").asInt() : null;\n        String encryptionKey = req.has(\"encryptionKey\") ? req.path(\"encryptionKey\").asText() : null;\n        List<Map<String, String>> tags = parseTags(req);\n        Map<String, Object> logsConfig = req.has(\"logsConfig\") ? mapper.treeToValue(req.get(\"logsConfig\"), Map.class) : null;","sourceCodeStart":38,"sourceCodeEnd":74,"githubUrl":"https://github.com/floci-io/floci/blob/62ff490619e7bd3554597c28c704081b4c15add5/src/main/java/io/github/hectorvent/floci/services/codebuild/CodeBuildJsonHandler.java#L38-L74","documentation":"Thrown by the CodeBuild JSON handler's action dispatch switch when the X-Amz-Target action is not one of the implemented operations (CreateProject, StartBuild, BatchGetReportGroups, ImportSourceCredentials, etc.). It is an InvalidAction 400, matching the AWS convention for unrecognized actions on a recognized service endpoint.","triggerScenarios":"Calling a CodeBuild operation Floci has not implemented (e.g. UpdateProject? no - implemented; more likely ListProjects variants, BatchDeleteBuilds, CreateWebhook, PutResourcePolicy); a typo in the action name; an SDK version newer than Floci's implemented action set invoking a recently added API.","commonSituations":"Using AWS CLI/SDK operations beyond Floci's CodeBuild coverage (webhooks, fleets, report batch APIs); SDK auto-generated calls for features like persistent storage policies; scripts ported from real AWS that rely on auxiliary CodeBuild APIs.","solutions":["Check the supported action list in the handler switch (CodeBuildJsonHandler) and use only those operations against Floci","If the operation exists in AWS but not in Floci, file/extend coverage in the handler rather than retrying","For typos, compare your action string against the AWS CodeBuild API reference name"],"exampleFix":null,"handlingStrategy":"validation","validationCode":"// Java - whitelist CodeBuild actions before dispatching to Floci\nSet<String> SUPPORTED = Set.of(\"CreateProject\",\"UpdateProject\",\"DeleteProject\",\"BatchGetProjects\",\n    \"ListProjects\",\"StartBuild\",\"BatchGetBuilds\",\"ListBuilds\",\"ListBuildsForProject\",\"StopBuild\",\n    \"RetryBuild\",\"CreateReportGroup\",\"UpdateReportGroup\",\"DeleteReportGroup\",\"BatchGetReportGroups\",\n    \"ListReportGroups\",\"ImportSourceCredentials\",\"ListSourceCredentials\",\"DeleteSourceCredentials\",\n    \"ListCuratedEnvironmentImages\");\nif (!SUPPORTED.contains(action)) throw new UnsupportedOperationException(action + \" not supported by Floci\");","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Check Floci's CodeBuild coverage before scripting against it","Pin SDK versions whose calls you have verified against the emulator","Treat InvalidAction as a permanent capability gap, not a transient error"],"tags":["codebuild","invalid-action","api-coverage"],"backgroundTag":null,"analyzedSha":"62ff490619e7bd3554597c28c704081b4c15add5","analyzedAt":"2026-08-14T14:25:23.764Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}