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

airflow.serialization.serialized_objects.BUILTIN_OPERATOR_EXTRA_LINKS

airflow/serialization/serialized_objects.py
"""Serializes a DAG into a JSON object."""
        serialize_dag = cls.serialize_to_json(dag, cls._decorated_fields)
        serialize_dag["tasks"] = [cls._serialize(task) for _, task in dag.task_dict.items()]
        serialize_dag['_task_group'] = SerializedTaskGroup.serialize_task_group(dag.task_group)
        return serialize_dag
    @classmethod
    def deserialize_dag(cls, encoded_dag: Dict[str, Any]) -> 'SerializedDAG':
        """Deserializes a DAG from a JSON object."""
        dag = SerializedDAG(dag_id=encoded_dag['_dag_id'])
        for k, v in encoded_dag.items():
            if k == "_downstream_task_ids":
                v = set(v)
            elif k == "tasks":
                v = {task["task_id"]: SerializedBaseOperator.deserialize_operator(task) for task in v}
                k = "task_dict"
            elif k == "timezone":
                v = cls._deserialize_timezone(v)
            elif k in {"dagrun_timeout"}:
                v = cls._deserialize_timedelta(v)
            elif k.endswith("_date"):
                v = cls._deserialize_datetime(v)
            elif k in cls._decorated_fields:
                v = cls._deserialize(v)
            
            setattr(dag, k, v)
        
        
        if "_task_group" in encoded_dag: