This is an automated email from the ASF dual-hosted git repository.

jasonliu pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git


The following commit(s) were added to refs/heads/main by this push:
     new 5d302eb61f5 Add exact match filters for dag_id and task_id in HITL 
details endpoint (#54310)
5d302eb61f5 is described below

commit 5d302eb61f5878282c57105b12be0a8d1de936df
Author: Guan Ming(Wesley) Chiu <[email protected]>
AuthorDate: Sun Aug 10 21:50:16 2025 +0800

    Add exact match filters for dag_id and task_id in HITL details endpoint 
(#54310)
---
 .../src/airflow/api_fastapi/common/parameters.py     | 20 ++++++++++++++++++++
 .../core_api/openapi/v2-rest-api-generated.yaml      | 16 ++++++++++++++++
 .../api_fastapi/core_api/routes/public/hitl.py       |  8 +++++++-
 .../src/airflow/ui/openapi-gen/queries/common.ts     |  6 ++++--
 .../ui/openapi-gen/queries/ensureQueryData.ts        |  8 ++++++--
 .../src/airflow/ui/openapi-gen/queries/prefetch.ts   |  8 ++++++--
 .../src/airflow/ui/openapi-gen/queries/queries.ts    |  8 ++++++--
 .../src/airflow/ui/openapi-gen/queries/suspense.ts   |  8 ++++++--
 .../airflow/ui/openapi-gen/requests/services.gen.ts  |  4 ++++
 .../src/airflow/ui/openapi-gen/requests/types.gen.ts |  2 ++
 .../api_fastapi/core_api/routes/public/test_hitl.py  |  8 ++++++--
 11 files changed, 83 insertions(+), 13 deletions(-)

diff --git a/airflow-core/src/airflow/api_fastapi/common/parameters.py 
b/airflow-core/src/airflow/api_fastapi/common/parameters.py
index ccc27fe53be..5494fe0d304 100644
--- a/airflow-core/src/airflow/api_fastapi/common/parameters.py
+++ b/airflow-core/src/airflow/api_fastapi/common/parameters.py
@@ -853,3 +853,23 @@ QueryHITLDetailUserIdFilter = Annotated[
         )
     ),
 ]
+QueryHITLDetailDagIdFilter = Annotated[
+    FilterParam[str | None],
+    Depends(
+        filter_param_factory(
+            TaskInstance.dag_id,
+            str | None,
+            filter_name="dag_id",
+        )
+    ),
+]
+QueryHITLDetailTaskIdFilter = Annotated[
+    FilterParam[str | None],
+    Depends(
+        filter_param_factory(
+            TaskInstance.task_id,
+            str | None,
+            filter_name="task_id",
+        )
+    ),
+]
diff --git 
a/airflow-core/src/airflow/api_fastapi/core_api/openapi/v2-rest-api-generated.yaml
 
b/airflow-core/src/airflow/api_fastapi/core_api/openapi/v2-rest-api-generated.yaml
index 5c413bf03b9..b06dd3cb515 100644
--- 
a/airflow-core/src/airflow/api_fastapi/core_api/openapi/v2-rest-api-generated.yaml
+++ 
b/airflow-core/src/airflow/api_fastapi/core_api/openapi/v2-rest-api-generated.yaml
@@ -7614,6 +7614,14 @@ paths:
           default:
           - ti_id
           title: Order By
+      - name: dag_id
+        in: query
+        required: false
+        schema:
+          anyOf:
+          - type: string
+          - type: 'null'
+          title: Dag Id
       - name: dag_id_pattern
         in: query
         required: false
@@ -7632,6 +7640,14 @@ paths:
         schema:
           type: string
           title: Dag Run Id
+      - name: task_id
+        in: query
+        required: false
+        schema:
+          anyOf:
+          - type: string
+          - type: 'null'
+          title: Task Id
       - name: task_id_pattern
         in: query
         required: false
diff --git 
a/airflow-core/src/airflow/api_fastapi/core_api/routes/public/hitl.py 
b/airflow-core/src/airflow/api_fastapi/core_api/routes/public/hitl.py
index 63a5f575b2d..9f17bc3fd71 100644
--- a/airflow-core/src/airflow/api_fastapi/core_api/routes/public/hitl.py
+++ b/airflow-core/src/airflow/api_fastapi/core_api/routes/public/hitl.py
@@ -28,10 +28,12 @@ from 
airflow.api_fastapi.auth.managers.models.resource_details import DagAccessE
 from airflow.api_fastapi.common.db.common import SessionDep, paginated_select
 from airflow.api_fastapi.common.parameters import (
     QueryHITLDetailBodySearch,
+    QueryHITLDetailDagIdFilter,
     QueryHITLDetailDagIdPatternSearch,
     QueryHITLDetailDagRunIdFilter,
     QueryHITLDetailResponseReceivedFilter,
     QueryHITLDetailSubjectSearch,
+    QueryHITLDetailTaskIdFilter,
     QueryHITLDetailTaskIdPatternSearch,
     QueryHITLDetailUserIdFilter,
     QueryLimit,
@@ -301,9 +303,11 @@ def get_hitl_details(
     session: SessionDep,
     # ti related filter
     readable_ti_filter: ReadableTIFilterDep,
+    dag_id: QueryHITLDetailDagIdFilter,
     dag_id_pattern: QueryHITLDetailDagIdPatternSearch,
     dag_run_id: QueryHITLDetailDagRunIdFilter,
-    task_id: QueryHITLDetailTaskIdPatternSearch,
+    task_id: QueryHITLDetailTaskIdFilter,
+    task_id_pattern: QueryHITLDetailTaskIdPatternSearch,
     ti_state: QueryTIStateFilter,
     # hitl detail related filter
     response_received: QueryHITLDetailResponseReceivedFilter,
@@ -322,9 +326,11 @@ def get_hitl_details(
         filters=[
             # ti related filter
             readable_ti_filter,
+            dag_id,
             dag_id_pattern,
             dag_run_id,
             task_id,
+            task_id_pattern,
             ti_state,
             # hitl detail related filter
             response_received,
diff --git a/airflow-core/src/airflow/ui/openapi-gen/queries/common.ts 
b/airflow-core/src/airflow/ui/openapi-gen/queries/common.ts
index 5621fb8c5e5..65a87575ad6 100644
--- a/airflow-core/src/airflow/ui/openapi-gen/queries/common.ts
+++ b/airflow-core/src/airflow/ui/openapi-gen/queries/common.ts
@@ -651,8 +651,9 @@ export const 
UseHumanInTheLoopServiceGetMappedTiHitlDetailKeyFn = ({ dagId, dagR
 export type HumanInTheLoopServiceGetHitlDetailsDefaultResponse = 
Awaited<ReturnType<typeof HumanInTheLoopService.getHitlDetails>>;
 export type HumanInTheLoopServiceGetHitlDetailsQueryResult<TData = 
HumanInTheLoopServiceGetHitlDetailsDefaultResponse, TError = unknown> = 
UseQueryResult<TData, TError>;
 export const useHumanInTheLoopServiceGetHitlDetailsKey = 
"HumanInTheLoopServiceGetHitlDetails";
-export const UseHumanInTheLoopServiceGetHitlDetailsKeyFn = ({ bodySearch, 
dagIdPattern, dagRunId, limit, offset, orderBy, responseReceived, state, 
subjectSearch, taskIdPattern, userId }: {
+export const UseHumanInTheLoopServiceGetHitlDetailsKeyFn = ({ bodySearch, 
dagId, dagIdPattern, dagRunId, limit, offset, orderBy, responseReceived, state, 
subjectSearch, taskId, taskIdPattern, userId }: {
   bodySearch?: string;
+  dagId?: string;
   dagIdPattern?: string;
   dagRunId?: string;
   limit?: number;
@@ -661,9 +662,10 @@ export const UseHumanInTheLoopServiceGetHitlDetailsKeyFn = 
({ bodySearch, dagIdP
   responseReceived?: boolean;
   state?: string[];
   subjectSearch?: string;
+  taskId?: string;
   taskIdPattern?: string;
   userId?: string[];
-} = {}, queryKey?: Array<unknown>) => 
[useHumanInTheLoopServiceGetHitlDetailsKey, ...(queryKey ?? [{ bodySearch, 
dagIdPattern, dagRunId, limit, offset, orderBy, responseReceived, state, 
subjectSearch, taskIdPattern, userId }])];
+} = {}, queryKey?: Array<unknown>) => 
[useHumanInTheLoopServiceGetHitlDetailsKey, ...(queryKey ?? [{ bodySearch, 
dagId, dagIdPattern, dagRunId, limit, offset, orderBy, responseReceived, state, 
subjectSearch, taskId, taskIdPattern, userId }])];
 export type MonitorServiceGetHealthDefaultResponse = Awaited<ReturnType<typeof 
MonitorService.getHealth>>;
 export type MonitorServiceGetHealthQueryResult<TData = 
MonitorServiceGetHealthDefaultResponse, TError = unknown> = 
UseQueryResult<TData, TError>;
 export const useMonitorServiceGetHealthKey = "MonitorServiceGetHealth";
diff --git a/airflow-core/src/airflow/ui/openapi-gen/queries/ensureQueryData.ts 
b/airflow-core/src/airflow/ui/openapi-gen/queries/ensureQueryData.ts
index 7024c46f610..7a18c205ce0 100644
--- a/airflow-core/src/airflow/ui/openapi-gen/queries/ensureQueryData.ts
+++ b/airflow-core/src/airflow/ui/openapi-gen/queries/ensureQueryData.ts
@@ -1231,8 +1231,10 @@ export const 
ensureUseHumanInTheLoopServiceGetMappedTiHitlDetailData = (queryCli
 * @param data.limit
 * @param data.offset
 * @param data.orderBy
+* @param data.dagId
 * @param data.dagIdPattern SQL LIKE expression — use `%` / `_` wildcards (e.g. 
`%customer_%`). Regular expressions are **not** supported.
 * @param data.dagRunId
+* @param data.taskId
 * @param data.taskIdPattern SQL LIKE expression — use `%` / `_` wildcards 
(e.g. `%customer_%`). Regular expressions are **not** supported.
 * @param data.state
 * @param data.responseReceived
@@ -1242,8 +1244,9 @@ export const 
ensureUseHumanInTheLoopServiceGetMappedTiHitlDetailData = (queryCli
 * @returns HITLDetailCollection Successful Response
 * @throws ApiError
 */
-export const ensureUseHumanInTheLoopServiceGetHitlDetailsData = (queryClient: 
QueryClient, { bodySearch, dagIdPattern, dagRunId, limit, offset, orderBy, 
responseReceived, state, subjectSearch, taskIdPattern, userId }: {
+export const ensureUseHumanInTheLoopServiceGetHitlDetailsData = (queryClient: 
QueryClient, { bodySearch, dagId, dagIdPattern, dagRunId, limit, offset, 
orderBy, responseReceived, state, subjectSearch, taskId, taskIdPattern, userId 
}: {
   bodySearch?: string;
+  dagId?: string;
   dagIdPattern?: string;
   dagRunId?: string;
   limit?: number;
@@ -1252,9 +1255,10 @@ export const 
ensureUseHumanInTheLoopServiceGetHitlDetailsData = (queryClient: Qu
   responseReceived?: boolean;
   state?: string[];
   subjectSearch?: string;
+  taskId?: string;
   taskIdPattern?: string;
   userId?: string[];
-} = {}) => queryClient.ensureQueryData({ queryKey: 
Common.UseHumanInTheLoopServiceGetHitlDetailsKeyFn({ bodySearch, dagIdPattern, 
dagRunId, limit, offset, orderBy, responseReceived, state, subjectSearch, 
taskIdPattern, userId }), queryFn: () => HumanInTheLoopService.getHitlDetails({ 
bodySearch, dagIdPattern, dagRunId, limit, offset, orderBy, responseReceived, 
state, subjectSearch, taskIdPattern, userId }) });
+} = {}) => queryClient.ensureQueryData({ queryKey: 
Common.UseHumanInTheLoopServiceGetHitlDetailsKeyFn({ bodySearch, dagId, 
dagIdPattern, dagRunId, limit, offset, orderBy, responseReceived, state, 
subjectSearch, taskId, taskIdPattern, userId }), queryFn: () => 
HumanInTheLoopService.getHitlDetails({ bodySearch, dagId, dagIdPattern, 
dagRunId, limit, offset, orderBy, responseReceived, state, subjectSearch, 
taskId, taskIdPattern, userId }) });
 /**
 * Get Health
 * @returns HealthInfoResponse Successful Response
diff --git a/airflow-core/src/airflow/ui/openapi-gen/queries/prefetch.ts 
b/airflow-core/src/airflow/ui/openapi-gen/queries/prefetch.ts
index caa59c7135d..d4df09ab1c7 100644
--- a/airflow-core/src/airflow/ui/openapi-gen/queries/prefetch.ts
+++ b/airflow-core/src/airflow/ui/openapi-gen/queries/prefetch.ts
@@ -1231,8 +1231,10 @@ export const 
prefetchUseHumanInTheLoopServiceGetMappedTiHitlDetail = (queryClien
 * @param data.limit
 * @param data.offset
 * @param data.orderBy
+* @param data.dagId
 * @param data.dagIdPattern SQL LIKE expression — use `%` / `_` wildcards (e.g. 
`%customer_%`). Regular expressions are **not** supported.
 * @param data.dagRunId
+* @param data.taskId
 * @param data.taskIdPattern SQL LIKE expression — use `%` / `_` wildcards 
(e.g. `%customer_%`). Regular expressions are **not** supported.
 * @param data.state
 * @param data.responseReceived
@@ -1242,8 +1244,9 @@ export const 
prefetchUseHumanInTheLoopServiceGetMappedTiHitlDetail = (queryClien
 * @returns HITLDetailCollection Successful Response
 * @throws ApiError
 */
-export const prefetchUseHumanInTheLoopServiceGetHitlDetails = (queryClient: 
QueryClient, { bodySearch, dagIdPattern, dagRunId, limit, offset, orderBy, 
responseReceived, state, subjectSearch, taskIdPattern, userId }: {
+export const prefetchUseHumanInTheLoopServiceGetHitlDetails = (queryClient: 
QueryClient, { bodySearch, dagId, dagIdPattern, dagRunId, limit, offset, 
orderBy, responseReceived, state, subjectSearch, taskId, taskIdPattern, userId 
}: {
   bodySearch?: string;
+  dagId?: string;
   dagIdPattern?: string;
   dagRunId?: string;
   limit?: number;
@@ -1252,9 +1255,10 @@ export const 
prefetchUseHumanInTheLoopServiceGetHitlDetails = (queryClient: Quer
   responseReceived?: boolean;
   state?: string[];
   subjectSearch?: string;
+  taskId?: string;
   taskIdPattern?: string;
   userId?: string[];
-} = {}) => queryClient.prefetchQuery({ queryKey: 
Common.UseHumanInTheLoopServiceGetHitlDetailsKeyFn({ bodySearch, dagIdPattern, 
dagRunId, limit, offset, orderBy, responseReceived, state, subjectSearch, 
taskIdPattern, userId }), queryFn: () => HumanInTheLoopService.getHitlDetails({ 
bodySearch, dagIdPattern, dagRunId, limit, offset, orderBy, responseReceived, 
state, subjectSearch, taskIdPattern, userId }) });
+} = {}) => queryClient.prefetchQuery({ queryKey: 
Common.UseHumanInTheLoopServiceGetHitlDetailsKeyFn({ bodySearch, dagId, 
dagIdPattern, dagRunId, limit, offset, orderBy, responseReceived, state, 
subjectSearch, taskId, taskIdPattern, userId }), queryFn: () => 
HumanInTheLoopService.getHitlDetails({ bodySearch, dagId, dagIdPattern, 
dagRunId, limit, offset, orderBy, responseReceived, state, subjectSearch, 
taskId, taskIdPattern, userId }) });
 /**
 * Get Health
 * @returns HealthInfoResponse Successful Response
diff --git a/airflow-core/src/airflow/ui/openapi-gen/queries/queries.ts 
b/airflow-core/src/airflow/ui/openapi-gen/queries/queries.ts
index d48e9342d43..f5b65f7596b 100644
--- a/airflow-core/src/airflow/ui/openapi-gen/queries/queries.ts
+++ b/airflow-core/src/airflow/ui/openapi-gen/queries/queries.ts
@@ -1231,8 +1231,10 @@ export const 
useHumanInTheLoopServiceGetMappedTiHitlDetail = <TData = Common.Hum
 * @param data.limit
 * @param data.offset
 * @param data.orderBy
+* @param data.dagId
 * @param data.dagIdPattern SQL LIKE expression — use `%` / `_` wildcards (e.g. 
`%customer_%`). Regular expressions are **not** supported.
 * @param data.dagRunId
+* @param data.taskId
 * @param data.taskIdPattern SQL LIKE expression — use `%` / `_` wildcards 
(e.g. `%customer_%`). Regular expressions are **not** supported.
 * @param data.state
 * @param data.responseReceived
@@ -1242,8 +1244,9 @@ export const 
useHumanInTheLoopServiceGetMappedTiHitlDetail = <TData = Common.Hum
 * @returns HITLDetailCollection Successful Response
 * @throws ApiError
 */
-export const useHumanInTheLoopServiceGetHitlDetails = <TData = 
Common.HumanInTheLoopServiceGetHitlDetailsDefaultResponse, TError = unknown, 
TQueryKey extends Array<unknown> = unknown[]>({ bodySearch, dagIdPattern, 
dagRunId, limit, offset, orderBy, responseReceived, state, subjectSearch, 
taskIdPattern, userId }: {
+export const useHumanInTheLoopServiceGetHitlDetails = <TData = 
Common.HumanInTheLoopServiceGetHitlDetailsDefaultResponse, TError = unknown, 
TQueryKey extends Array<unknown> = unknown[]>({ bodySearch, dagId, 
dagIdPattern, dagRunId, limit, offset, orderBy, responseReceived, state, 
subjectSearch, taskId, taskIdPattern, userId }: {
   bodySearch?: string;
+  dagId?: string;
   dagIdPattern?: string;
   dagRunId?: string;
   limit?: number;
@@ -1252,9 +1255,10 @@ export const useHumanInTheLoopServiceGetHitlDetails = 
<TData = Common.HumanInThe
   responseReceived?: boolean;
   state?: string[];
   subjectSearch?: string;
+  taskId?: string;
   taskIdPattern?: string;
   userId?: string[];
-} = {}, queryKey?: TQueryKey, options?: Omit<UseQueryOptions<TData, TError>, 
"queryKey" | "queryFn">) => useQuery<TData, TError>({ queryKey: 
Common.UseHumanInTheLoopServiceGetHitlDetailsKeyFn({ bodySearch, dagIdPattern, 
dagRunId, limit, offset, orderBy, responseReceived, state, subjectSearch, 
taskIdPattern, userId }, queryKey), queryFn: () => 
HumanInTheLoopService.getHitlDetails({ bodySearch, dagIdPattern, dagRunId, 
limit, offset, orderBy, responseReceived, state, subjectSearch, taskIdPa [...]
+} = {}, queryKey?: TQueryKey, options?: Omit<UseQueryOptions<TData, TError>, 
"queryKey" | "queryFn">) => useQuery<TData, TError>({ queryKey: 
Common.UseHumanInTheLoopServiceGetHitlDetailsKeyFn({ bodySearch, dagId, 
dagIdPattern, dagRunId, limit, offset, orderBy, responseReceived, state, 
subjectSearch, taskId, taskIdPattern, userId }, queryKey), queryFn: () => 
HumanInTheLoopService.getHitlDetails({ bodySearch, dagId, dagIdPattern, 
dagRunId, limit, offset, orderBy, responseReceived, state, s [...]
 /**
 * Get Health
 * @returns HealthInfoResponse Successful Response
diff --git a/airflow-core/src/airflow/ui/openapi-gen/queries/suspense.ts 
b/airflow-core/src/airflow/ui/openapi-gen/queries/suspense.ts
index dabcabf0b94..d2b2ee9fcd6 100644
--- a/airflow-core/src/airflow/ui/openapi-gen/queries/suspense.ts
+++ b/airflow-core/src/airflow/ui/openapi-gen/queries/suspense.ts
@@ -1231,8 +1231,10 @@ export const 
useHumanInTheLoopServiceGetMappedTiHitlDetailSuspense = <TData = Co
 * @param data.limit
 * @param data.offset
 * @param data.orderBy
+* @param data.dagId
 * @param data.dagIdPattern SQL LIKE expression — use `%` / `_` wildcards (e.g. 
`%customer_%`). Regular expressions are **not** supported.
 * @param data.dagRunId
+* @param data.taskId
 * @param data.taskIdPattern SQL LIKE expression — use `%` / `_` wildcards 
(e.g. `%customer_%`). Regular expressions are **not** supported.
 * @param data.state
 * @param data.responseReceived
@@ -1242,8 +1244,9 @@ export const 
useHumanInTheLoopServiceGetMappedTiHitlDetailSuspense = <TData = Co
 * @returns HITLDetailCollection Successful Response
 * @throws ApiError
 */
-export const useHumanInTheLoopServiceGetHitlDetailsSuspense = <TData = 
Common.HumanInTheLoopServiceGetHitlDetailsDefaultResponse, TError = unknown, 
TQueryKey extends Array<unknown> = unknown[]>({ bodySearch, dagIdPattern, 
dagRunId, limit, offset, orderBy, responseReceived, state, subjectSearch, 
taskIdPattern, userId }: {
+export const useHumanInTheLoopServiceGetHitlDetailsSuspense = <TData = 
Common.HumanInTheLoopServiceGetHitlDetailsDefaultResponse, TError = unknown, 
TQueryKey extends Array<unknown> = unknown[]>({ bodySearch, dagId, 
dagIdPattern, dagRunId, limit, offset, orderBy, responseReceived, state, 
subjectSearch, taskId, taskIdPattern, userId }: {
   bodySearch?: string;
+  dagId?: string;
   dagIdPattern?: string;
   dagRunId?: string;
   limit?: number;
@@ -1252,9 +1255,10 @@ export const 
useHumanInTheLoopServiceGetHitlDetailsSuspense = <TData = Common.Hu
   responseReceived?: boolean;
   state?: string[];
   subjectSearch?: string;
+  taskId?: string;
   taskIdPattern?: string;
   userId?: string[];
-} = {}, queryKey?: TQueryKey, options?: Omit<UseQueryOptions<TData, TError>, 
"queryKey" | "queryFn">) => useSuspenseQuery<TData, TError>({ queryKey: 
Common.UseHumanInTheLoopServiceGetHitlDetailsKeyFn({ bodySearch, dagIdPattern, 
dagRunId, limit, offset, orderBy, responseReceived, state, subjectSearch, 
taskIdPattern, userId }, queryKey), queryFn: () => 
HumanInTheLoopService.getHitlDetails({ bodySearch, dagIdPattern, dagRunId, 
limit, offset, orderBy, responseReceived, state, subjectSearch,  [...]
+} = {}, queryKey?: TQueryKey, options?: Omit<UseQueryOptions<TData, TError>, 
"queryKey" | "queryFn">) => useSuspenseQuery<TData, TError>({ queryKey: 
Common.UseHumanInTheLoopServiceGetHitlDetailsKeyFn({ bodySearch, dagId, 
dagIdPattern, dagRunId, limit, offset, orderBy, responseReceived, state, 
subjectSearch, taskId, taskIdPattern, userId }, queryKey), queryFn: () => 
HumanInTheLoopService.getHitlDetails({ bodySearch, dagId, dagIdPattern, 
dagRunId, limit, offset, orderBy, responseReceived,  [...]
 /**
 * Get Health
 * @returns HealthInfoResponse Successful Response
diff --git a/airflow-core/src/airflow/ui/openapi-gen/requests/services.gen.ts 
b/airflow-core/src/airflow/ui/openapi-gen/requests/services.gen.ts
index 942628787a2..3ddb842f322 100644
--- a/airflow-core/src/airflow/ui/openapi-gen/requests/services.gen.ts
+++ b/airflow-core/src/airflow/ui/openapi-gen/requests/services.gen.ts
@@ -3524,8 +3524,10 @@ export class HumanInTheLoopService {
      * @param data.limit
      * @param data.offset
      * @param data.orderBy
+     * @param data.dagId
      * @param data.dagIdPattern SQL LIKE expression — use `%` / `_` wildcards 
(e.g. `%customer_%`). Regular expressions are **not** supported.
      * @param data.dagRunId
+     * @param data.taskId
      * @param data.taskIdPattern SQL LIKE expression — use `%` / `_` wildcards 
(e.g. `%customer_%`). Regular expressions are **not** supported.
      * @param data.state
      * @param data.responseReceived
@@ -3543,8 +3545,10 @@ export class HumanInTheLoopService {
                 limit: data.limit,
                 offset: data.offset,
                 order_by: data.orderBy,
+                dag_id: data.dagId,
                 dag_id_pattern: data.dagIdPattern,
                 dag_run_id: data.dagRunId,
+                task_id: data.taskId,
                 task_id_pattern: data.taskIdPattern,
                 state: data.state,
                 response_received: data.responseReceived,
diff --git a/airflow-core/src/airflow/ui/openapi-gen/requests/types.gen.ts 
b/airflow-core/src/airflow/ui/openapi-gen/requests/types.gen.ts
index 5a7cd9d3cad..15c706dc41f 100644
--- a/airflow-core/src/airflow/ui/openapi-gen/requests/types.gen.ts
+++ b/airflow-core/src/airflow/ui/openapi-gen/requests/types.gen.ts
@@ -2953,6 +2953,7 @@ export type GetHitlDetailsData = {
      * SQL LIKE expression — use `%` / `_` wildcards (e.g. `%customer_%`). 
Regular expressions are **not** supported.
      */
     bodySearch?: string | null;
+    dagId?: string | null;
     /**
      * SQL LIKE expression — use `%` / `_` wildcards (e.g. `%customer_%`). 
Regular expressions are **not** supported.
      */
@@ -2967,6 +2968,7 @@ export type GetHitlDetailsData = {
      * SQL LIKE expression — use `%` / `_` wildcards (e.g. `%customer_%`). 
Regular expressions are **not** supported.
      */
     subjectSearch?: string | null;
+    taskId?: string | null;
     /**
      * SQL LIKE expression — use `%` / `_` wildcards (e.g. `%customer_%`). 
Regular expressions are **not** supported.
      */
diff --git 
a/airflow-core/tests/unit/api_fastapi/core_api/routes/public/test_hitl.py 
b/airflow-core/tests/unit/api_fastapi/core_api/routes/public/test_hitl.py
index 237410ab808..d6a1764592c 100644
--- a/airflow-core/tests/unit/api_fastapi/core_api/routes/public/test_hitl.py
+++ b/airflow-core/tests/unit/api_fastapi/core_api/routes/public/test_hitl.py
@@ -487,7 +487,9 @@ class TestGetHITLDetailsEndpoint:
             # ti related filter
             ({"dag_id_pattern": "hitl_dag"}, 5),
             ({"dag_id_pattern": "other_Dag_"}, 3),
+            ({"dag_id": "hitl_dag_0"}, 1),
             ({"dag_run_id": "hitl_run_0"}, 1),
+            ({"task_id": "hitl_task_0"}, 1),
             ({"task_id_pattern": "another_hitl"}, 3),
             ({"state": "running"}, 5),
             ({"state": "success"}, 3),
@@ -499,9 +501,11 @@ class TestGetHITLDetailsEndpoint:
             ({"user_id": ["test"]}, 3),
         ],
         ids=[
-            "dag_id_hitl_dag",
-            "dag_id_other_dag",
+            "dag_id_pattern_hitl_dag",
+            "dag_id_pattern_other_dag",
+            "dag_id",
             "dag_run_id",
+            "task_id_pattern",
             "task_id",
             "ti_state_running",
             "ti_state_success",

Reply via email to