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",