diff --git a/src/sentry/incidents/endpoints/serializers/workflow_engine_action.py b/src/sentry/incidents/endpoints/serializers/workflow_engine_action.py index 38a85f3c68b7..1b456e0f90cd 100644 --- a/src/sentry/incidents/endpoints/serializers/workflow_engine_action.py +++ b/src/sentry/incidents/endpoints/serializers/workflow_engine_action.py @@ -1,3 +1,4 @@ +import logging from collections.abc import Mapping from typing import Any, Sequence @@ -18,6 +19,8 @@ from sentry.users.services.user.model import RpcUser from sentry.workflow_engine.models import Action, ActionAlertRuleTriggerAction +logger = logging.getLogger(__name__) + class WorkflowEngineActionSerializer(Serializer[dict[str, Any]]): def get_attrs( @@ -61,6 +64,12 @@ def serialize( target_identifier: str | None = obj.config.get("target_identifier") target_display: str | None = obj.config.get("target_display") + if target_type is None: + logger.warning( + "workflow_engine_action.missing_target_type", + extra={"action_id": obj.id, "action_type": obj.type}, + ) + sentry_app_id = None sentry_app_config = None if obj.type == Action.Type.SENTRY_APP.value: @@ -75,7 +84,9 @@ def serialize( ), "alertRuleTriggerId": str(alert_rule_trigger_id), "type": obj.type, - "targetType": ACTION_TARGET_TYPE_TO_STRING[ActionTarget(target_type)], + "targetType": ACTION_TARGET_TYPE_TO_STRING[ActionTarget(target_type)] + if target_type is not None + else None, "targetIdentifier": get_identifier_from_action( type_value, str(target_identifier), target_display ),