{"record":{"id":"75d344b43c046533","repo":"apache/superset","slug":"invalid-slack-recipient-configuration","errorCode":null,"errorMessage":"Invalid Slack recipient configuration","messagePattern":"Invalid Slack recipient configuration","errorType":"exception","errorClass":"NotificationParamException","httpStatus":422,"severity":"error","filePath":"superset/commands/report/slack_upgrade.py","lineNumber":104,"sourceCode":"            recipient,\n            recipient_type,\n            recipient_config_json,\n        ) in self._upgraded_recipient_state:\n            recipient.type = recipient_type\n            recipient.recipient_config_json = recipient_config_json\n        self._upgraded_recipient_state = []\n\n    def update_recipients(self) -> None:\n        \"\"\"Resolve and atomically convert every Slack v1 recipient to Slack v2.\"\"\"\n        pending: list[tuple[ReportRecipients, list[str]]] = []\n        try:\n            for recipient in self._report_schedule.recipients:\n                if recipient.type != ReportRecipientType.SLACK:\n                    continue\n                try:\n                    slack_recipients = json.loads(recipient.recipient_config_json)\n                except (TypeError, ValueError) as ex:\n                    raise NotificationParamException(\n                        \"Invalid Slack recipient configuration\"\n                    ) from ex\n                target = (\n                    slack_recipients.get(\"target\")\n                    if isinstance(slack_recipients, dict)\n                    else None\n                )\n                if not isinstance(target, str):\n                    raise NotificationParamException(NO_SLACK_RECIPIENTS_MESSAGE)\n                channels = parse_slack_recipient_targets(target.replace(\"#\", \"\"))\n                if not channels:\n                    raise NotificationParamException(NO_SLACK_RECIPIENTS_MESSAGE)\n                pending.append((recipient, channels))\n\n            all_targets = list(\n                dict.fromkeys(\n                    channel for _, channels in pending for channel in channels\n                )","sourceCodeStart":86,"sourceCodeEnd":122,"githubUrl":"https://github.com/apache/superset/blob/f4587218dd19d046c3e4d00063e7d27f8a2ed354/superset/commands/report/slack_upgrade.py#L86-L122","documentation":"Error \"Invalid Slack recipient configuration\" thrown in apache/superset.","triggerScenarios":"The stored Slack recipients cannot be mapped to valid v2 Slack targets during upgrade.","commonSituations":"Upgrading Slack recipients to v2 when the stored recipient config is malformed (missing channel/user id).","solutions":["Fix the Slack recipient list: use valid channel/user targets for the v2 Slack API.","Ensure the Slack bot token and scopes are configured correctly."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"f4587218dd19d046c3e4d00063e7d27f8a2ed354","analyzedAt":"2026-08-14T22:39:27.425Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}