### Body

Currently `start_date` is mandatory parameter.
For DAGs with `schedule=None` we can relax this requirement as no scheduling calculation needed so the `start_date` parameter isn't used.

### Committer

- [X] I acknowledge that I am a maintainer/committer of the Apache Airflow project.
self.is_jsonable({key: value})
        super().__setitem__(key, value)
    @staticmethod
    def is_jsonable(conf: dict) -> dict | None:
        """Prevent setting non-json attributes."""
        try:
            json.dumps(conf)
        except TypeError:
            raise AirflowException("Cannot assign non JSON Serializable value")
        if isinstance(conf, dict):
            return conf
        else:
            raise AirflowException(f"Object of type {type(conf)} must be a dict")
    @staticmethod
    def dump_check(conf: str) -> str:
        val = json.loads(conf)
        if isinstance(val, dict):
            return conf
        else:
            raise TypeError(f"Object of type {type(val)} must be a dict")
def _creator_note(val):
    """Creator the ``note`` association proxy."""
    if isinstance(val, str):
        return DagRunNote(content=val)
    elif isinstance(val, dict):
        return DagRunNote(**val)
    else:
        return DagRunNote(*val)
class DagRun(Base, LoggingMixin):