### Description

Hi,

In order to avoid extra calls to the REST API to figure out the dag_run_id linked to a task instance, it would be great to have that information in the response of the following methods of the REST API:
   - `/api/v1/dags/{dag_id}/dagRuns/{dag_run_id}/taskInstances`
   - `/api/v1/dags/~/dagRuns/~/taskInstances/list`

The current response returns a list of task instances without the `dag_run_id`:

```json
{
  "task_instances": [
    {
      "task_id": "string",
      "dag_id": "string",
      "execution_date": "string",
      "start_date": "string",
      "end_date": "string",
      "duration": 0,
      "state": "success",
      "try_number": 0,
      "max_tries": 0,
      "hostname": "string",
      "unixname": "string",
      "pool": "string",
      "pool_slots": 0,
      "queue": "string",
      "priority_weight": 0,
      "operator": "string",
      "queued_when": "string",
      "pid": 0,
      "executor_config": "string",
      "sla_miss": {
        "task_id": "string",
        "dag_id": "string",
        "execution_date": "string",
        "email_sent": true,
        "timestamp": "string",
        "description": "string",
        "notification_sent": true
      }
    }
  ],
  "total_entries": 0
}
```

Our proposal is to add the dag_run_id in the response:

```diff
 {
   "task_instances": [
     {
       "task_id": "string",
       "dag_id": "string",
       "execution_date": "string",
+      "dag_run_id": "string",
       "start_date": "string",
       "end_date": "string",
       "duration": 0,
       "state": "success",
       "try_number": 0,
       "max_tries": 0,
       "hostname": "string",
       "unixname": "string",
       "pool": "string",
       "pool_slots": 0,
       "queue": "string",
       "priority_weight": 0,
       "operator": "string",
       "queued_when": "string",
       "pid": 0,
       "executor_config": "string",
       "sla_miss": {
         "task_id": "string",
         "dag_id": "string",
         "execution_date": "string",
         "email_sent": true,
         "timestamp": "string",
         "description": "string",
         "notification_sent": true
       }
     }
   ],
   "total_entries": 0
 }
```

Thanks!



### Use case/motivation

Having tthe dag_run_id when we get a list of task instances.

### Related issues

_No response_

### Are you willing to submit a 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)

tests/api_connexion/endpoints/test_task_instance_endpoint.py
self.create_task_instances(session)
        self.create_task_instances(session, dag_id="example_skip_dag")
        response = self.client.get(
            "/api/v1/dags/example_python_operator/dagRuns/~/taskInstances",
            environ_overrides={"REMOTE_USER": "test"},
        )
        assert response.status_code == 200
        count = session.query(TaskInstance).filter(TaskInstance.dag_id == "example_python_operator").count()
        assert count == response.json["total_entries"]
        assert count == len(response.json["task_instances"])
    def test_should_raises_401_unauthenticated(self):
        response = self.client.get(
            "/api/v1/dags/example_python_operator/dagRuns/~/taskInstances",
        )
        assert_401(response)
    def test_should_raise_403_forbidden(self):
        response = self.client.get(
            "/api/v1/dags/example_python_operator/dagRuns/~/taskInstances",
            environ_overrides={'REMOTE_USER': "test_no_permissions"},
        )
        assert response.status_code == 403
class TestGetTaskInstancesBatch(TestTaskInstanceEndpoint):