{"record":{"id":"27e5802080cb80dd","repo":"crowdsecurity/crowdsec","slug":"operation-s-unknown-continue","errorCode":null,"errorMessage":"operation '%s' unknown, continue","messagePattern":"operation '(.+?)' unknown, continue","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"pkg/apiserver/papi.go","lineNumber":148,"sourceCode":"\tlogger := p.Logger.WithField(\"request-id\", event.RequestId)\n\tlogger.Debugf(\"message received: %+v\", event.Data)\n\n\tmessage := &Message{}\n\tif err := json.Unmarshal([]byte(event.Data), message); err != nil {\n\t\treturn fmt.Errorf(\"polling papi message format is not compatible: %+v: %w\", event.Data, err)\n\t}\n\n\tif message.Header == nil {\n\t\treturn errors.New(\"no header in message, skipping\")\n\t}\n\n\tif message.Header.Source == nil {\n\t\treturn errors.New(\"no source user in header message, skipping\")\n\t}\n\n\toperationFunc, ok := operationMap[message.Header.OperationType]\n\tif !ok {\n\t\treturn fmt.Errorf(\"operation '%s' unknown, continue\", message.Header.OperationType)\n\t}\n\n\tmetrics.PapiOrdersReceived.WithLabelValues(message.Header.OperationType, message.Header.OperationCmd).Inc()\n\n\tlogger.Debugf(\"Calling operation '%s'\", message.Header.OperationType)\n\n\terr := operationFunc(ctx, message, p, sync)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"'%s %s failed: %w\", message.Header.OperationType, message.Header.OperationCmd, err)\n\t}\n\n\treturn nil\n}\n\nfunc (p *Papi) GetPermissions(ctx context.Context) (PapiPermCheckSuccess, error) {\n\thttpClient := p.apiClient.GetClient()\n\tpapiCheckURL := fmt.Sprintf(\"%s%s%s\", p.URL, PAPIVersion, PAPIPermissionsURL)\n","sourceCodeStart":130,"sourceCodeEnd":166,"githubUrl":"https://github.com/crowdsecurity/crowdsec/blob/909b5157986a2b2c2163300fdaef5ed01289f7d2/pkg/apiserver/papi.go#L130-L166","documentation":"A successfully parsed PAPI message carried a header.operation_type that is not in the server's operation map (decision, alert, management), so no handler exists and the order is skipped. This means the central API sent a command this crowdsec version does not understand — typically a newer operation type introduced after this build. The message says 'continue' because polling resumes with the next event.","triggerScenarios":"handleEvent looks up operationMap[message.Header.OperationType]; a message with any operation_type other than 'decision', 'alert' or 'management' hits the !ok branch and returns this error.","commonSituations":"Running an outdated crowdsec while CAPI starts emitting new operation types; console order types enabled in the CrowdSec console that this version can't process; schema typo if pointing papi_url at a custom/test endpoint.","solutions":["Note the operation name printed in the error — it identifies the unsupported order type.","Upgrade crowdsec to the latest version, which knows the new operation types.","Check console management (`cscli console list` / console management enablement) and disable order types your version doesn't support if upgrade isn't possible.","If it's isolated to one message, it can be safely ignored — polling continues automatically."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"if err := p.handleEvent(ctx, event, sync); err != nil {\n    if strings.Contains(err.Error(), \"unknown, continue\") {\n        logger.Warnf(\"skipping unsupported PAPI operation: %v\", err) // non-fatal\n        return\n    }\n}","preventionTips":["Keep crowdsec on a supported, recent version so new CAPI operation types are recognized.","Review release notes for console/management order changes before deferring upgrades.","Treat single 'unknown operation' logs as informational; escalate only if every message fails.","If you enable console management features in the CrowdSec console, verify your crowdsec version supports them first."],"tags":["papi","polling","version-compatibility"],"backgroundTag":"unsupported-operation","analyzedSha":"909b5157986a2b2c2163300fdaef5ed01289f7d2","analyzedAt":"2026-09-06T12:27:26.012Z","contentChangedAt":"2026-09-06T12:27:26.012Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}