Extra links supported for operators coming from third-party packages:

airflow.serialization.serialized_objects.BUILTIN_OPERATOR_EXTRA_LINKS

airflow/serialization/serialized_objects.py
"""Helper function of depth first search for serialization.
        The serialization protocol is:
        (1) keeping JSON supported types: primitives, dict, list;
        (2) encoding other types as ``{TYPE: 'foo', VAR: 'bar'}``, the deserialization
            step decode VAR according to TYPE;
        (3) Operator has a special field CLASS to record the original class
            name for displaying in UI.
        """
        try:
            if cls._is_primitive(var):
                
                if isinstance(var, enum.Enum):
                    return var.value
                return var
            elif isinstance(var, dict):
                return cls._encode({str(k): cls._serialize(v) for k, v in var.items()}, type_=DAT.DICT)
            elif isinstance(var, list):
                return [cls._serialize(v) for v in var]
            elif HAS_KUBERNETES and isinstance(var, k8s.V1Pod):
                json_pod = PodGenerator.serialize_pod(var)
                return cls._encode(json_pod, type_=DAT.POD)
            elif isinstance(var, DAG):
                return SerializedDAG.serialize_dag(var)
            elif isinstance(var, BaseOperator):
                return SerializedBaseOperator.serialize_operator(var)
            elif isinstance(var, cls._datetime_types):
                return cls._encode(var.timestamp(), type_=DAT.DATETIME)
            elif isinstance(var, datetime.timedelta):