Here are some bugs in dag details endpoint.

1. Calling this endpoint `dags/{dag_id}/details` returns an error due to `doc_md` field that's not nullable.

2. The dag details endpoint `GET /dags/{dag_id}/details` does not return a json if dag does not exist.

3. This endpoint does not return a `file_token` which is needed to get the source code of a DAG. And also expected judging from the documentation.

**Apache Airflow version**: 2.0


**What happened**:
1. Calling this endpoint GET /dags/{dag_id}/details returns an error
2. When the above is fixed and you look for the details of a dag that does not exist, this endpoint returns a webpage instead of json.
3. Calling the endpoint with a dag ID that exists doesn't return a file_token

**What you expected to happen**:
1. I expected it to return the details of the dag
2. I expected it to return a json indicating that the dag was not found if dag doesn't exist
3. I expected it to return a file_token in the list of fields when the dag exists

**How to reproduce it**:
Run airflow in breeze.
Make a request to `/dags/{dag_id}/details`. It will return an error.
Go to openapi.yaml and set `doc_md` to be nullable.
Make another request to see that it returns a result without a file_token.
Change the dag id to a dag ID that does not exist.
Make another request and see that it returns a webpage.

tests/api_connexion/schemas/test_dag_schema.py
def test_serialize(self):
        dag_model = DagModel(
            dag_id="test_dag_id",
            root_dag_id="test_root_dag_id",
            is_paused=True,
            is_subdag=False,
            fileloc="/root/airflow/dags/my_dag.py",
            owners="airflow1,airflow2",
            description="The description",
            schedule_interval="5 4 * * *",
            tags=[DagTag(name="tag-1"), DagTag(name="tag-2")],
        )
        serialized_dag = DAGSchema().dump(dag_model)
        self.assertEqual(
            {
                "dag_id": "test_dag_id",
                "description": "The description",
                "fileloc": "/root/airflow/dags/my_dag.py",
                "is_paused": True,
                "is_subdag": False,
                "owners": ["airflow1", "airflow2"],
                "root_dag_id": "test_root_dag_id",
                "schedule_interval": {"__type": "CronExpression", "value": "5 4 * * *"},
                "tags": [{"name": "tag-1"}, {"name": "tag-2"}],
            },
            serialized_dag,
        )
class TestDAGCollectionSchema(unittest.TestCase):