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.

airflow/api_connexion/schemas/dag_schema.py
"""Convert owners attribute to DAG representation"""
        if not getattr(obj, 'owners', None):
            return []
        return obj.owners.split(",")
class DAGDetailSchema(DAGSchema):
    """DAG details"""
    timezone = TimezoneField(dump_only=True)
    catchup = fields.Boolean(dump_only=True)
    orientation = fields.String(dump_only=True)
    concurrency = fields.Integer(dump_only=True)
    start_date = fields.DateTime(dump_only=True)
    dag_run_timeout = fields.Nested(TimeDeltaSchema, dump_only=True, attribute="dagrun_timeout")
    doc_md = fields.String(dump_only=True)
    default_view = fields.String(dump_only=True)
class DAGCollection(NamedTuple):
    """List of DAGs with metadata"""
    dags: List[DagModel]
    total_entries: int
class DAGCollectionSchema(Schema):
    """DAG Collection schema"""
    dags = fields.List(fields.Nested(DAGSchema))
    total_entries = fields.Int()
dags_collection_schema = DAGCollectionSchema()
dag_schema = DAGSchema()
dag_detail_schema = DAGDetailSchema()