### What do you see as an issue?

The [/dags/{dag_id}/details](https://airflow.apache.org/docs/apache-airflow/stable/stable-rest-api-ref.html#operation/post_set_task_instances_state) endpoint of the REST API does not return all of the keys that are listed in the documentation. If I run `curl -X GET localhost:8080/api/v1/dags/{my_dag}/details`, then compare the results with the results in the documentation, you can see the following missing keys:

```python
>>> for key in docs.keys():
...     if not key in actual.keys():
...             print(key)
...
root_dag_id
last_parsed_time
last_pickled
last_expired
scheduler_lock
timetable_description
has_task_concurrency_limits
has_import_errors
next_dagrun
next_dagrun_data_interval_start
next_dagrun_data_interval_end
next_dagrun_create_after
template_search_path
```

### Solving the problem

Either remove these keys from the documentation or fix the API endpoint

### Anything else

_No response_

### Are you willing to submit PR?

- [ ] Yes I am willing to submit a PR!

### Code of Conduct

- [X] I agree to follow this project's [Code of Conduct](https://github.com/apache/airflow/blob/main/CODE_OF_CONDUCT.md)

from airflow.timetables.interval import _DataIntervalTimetable
        warnings.warn(
            "`DAG.previous_schedule()` is deprecated.",
            category=RemovedInAirflow3Warning,
            stacklevel=2,
        )
        if not isinstance(self.timetable, _DataIntervalTimetable):
            return None
        return self.timetable._get_prev(timezone.coerce_datetime(dttm))
    def get_next_data_interval(self, dag_model: DagModel) -> DataInterval | None:
        """Get the data interval of the next scheduled run.
        For compatibility, this method infers the data interval from the DAG's
        schedule if the run does not have an explicit one set, which is possible
        for runs created prior to AIP-39.
        This function is private to Airflow core and should not be depended on as a
        part of the Python API.
        :meta private:
        """
        if self.dag_id != dag_model.dag_id:
            raise ValueError(f"Arguments refer to different DAGs: {self.dag_id} != {dag_model.dag_id}")
        if dag_model.next_dagrun is None:  
            return None
        data_interval = dag_model.next_dagrun_data_interval
        if data_interval is not None:
            return data_interval
        
        
        
        return self.infer_automated_data_interval(dag_model.next_dagrun)
    def get_run_data_interval(self, run: DagRun | DagRunPydantic) -> DataInterval: