You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airflow.apache.org by we...@apache.org on 2025/09/18 10:19:07 UTC
(airflow) branch main updated: feat(hitl): add map_index filter to get_hitl_details endpoint (#55776)
This is an automated email from the ASF dual-hosted git repository.
weilee 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 e5083a187ef feat(hitl): add map_index filter to get_hitl_details endpoint (#55776)
e5083a187ef is described below
commit e5083a187efe44375408f640de231c219ce7b83e
Author: Wei Lee <we...@gmail.com>
AuthorDate: Thu Sep 18 18:19:00 2025 +0800
feat(hitl): add map_index filter to get_hitl_details endpoint (#55776)
---
airflow-core/src/airflow/api_fastapi/common/parameters.py | 10 ++++++++++
.../api_fastapi/core_api/openapi/v2-rest-api-generated.yaml | 8 ++++++++
.../src/airflow/api_fastapi/core_api/routes/public/hitl.py | 9 +++++++--
airflow-core/src/airflow/ui/openapi-gen/queries/common.ts | 5 +++--
.../src/airflow/ui/openapi-gen/queries/ensureQueryData.ts | 6 ++++--
airflow-core/src/airflow/ui/openapi-gen/queries/prefetch.ts | 6 ++++--
airflow-core/src/airflow/ui/openapi-gen/queries/queries.ts | 6 ++++--
airflow-core/src/airflow/ui/openapi-gen/queries/suspense.ts | 6 ++++--
.../src/airflow/ui/openapi-gen/requests/services.gen.ts | 2 ++
.../src/airflow/ui/openapi-gen/requests/types.gen.ts | 1 +
.../unit/api_fastapi/core_api/routes/public/test_hitl.py | 12 ++++++++----
11 files changed, 55 insertions(+), 16 deletions(-)
diff --git a/airflow-core/src/airflow/api_fastapi/common/parameters.py b/airflow-core/src/airflow/api_fastapi/common/parameters.py
index cc7ae250cba..e801d2d9e79 100644
--- a/airflow-core/src/airflow/api_fastapi/common/parameters.py
+++ b/airflow-core/src/airflow/api_fastapi/common/parameters.py
@@ -1007,6 +1007,16 @@ QueryHITLDetailTaskIdFilter = Annotated[
)
),
]
+QueryHITLDetailMapIndexFilter = Annotated[
+ FilterParam[int | None],
+ Depends(
+ filter_param_factory(
+ TaskInstance.map_index,
+ int | None,
+ filter_name="map_index",
+ )
+ ),
+]
QueryHITLDetailSubjectSearch = Annotated[
_SearchParam,
Depends(
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 80c8d485df9..f1722ea5ecd 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
@@ -8220,6 +8220,14 @@ paths:
title: Task Id Pattern
description: "SQL LIKE expression \u2014 use `%` / `_` wildcards (e.g. `%customer_%`).\
\ Regular expressions are **not** supported."
+ - name: map_index
+ in: query
+ required: false
+ schema:
+ anyOf:
+ - type: integer
+ - type: 'null'
+ title: Map Index
- name: state
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 e3f4b59c448..7aa430ae630 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
@@ -29,6 +29,7 @@ from airflow.api_fastapi.common.db.common import SessionDep, paginated_select
from airflow.api_fastapi.common.parameters import (
QueryHITLDetailBodySearch,
QueryHITLDetailDagIdPatternSearch,
+ QueryHITLDetailMapIndexFilter,
QueryHITLDetailRespondedUserIdFilter,
QueryHITLDetailRespondedUserNameFilter,
QueryHITLDetailResponseReceivedFilter,
@@ -226,11 +227,13 @@ def get_hitl_details(
),
],
session: SessionDep,
- # ti related filter
+ # permission filter
readable_ti_filter: ReadableTIFilterDep,
+ # ti related filter
dag_id_pattern: QueryHITLDetailDagIdPatternSearch,
task_id: QueryHITLDetailTaskIdFilter,
task_id_pattern: QueryHITLDetailTaskIdPatternSearch,
+ map_index: QueryHITLDetailMapIndexFilter,
ti_state: QueryTIStateFilter,
# hitl detail related filter
response_received: QueryHITLDetailResponseReceivedFilter,
@@ -258,11 +261,13 @@ def get_hitl_details(
hitl_detail_select, total_entries = paginated_select(
statement=query,
filters=[
- # ti related filter
+ # permission filter
readable_ti_filter,
+ # ti related filter
dag_id_pattern,
task_id,
task_id_pattern,
+ map_index,
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 dd46ddb015a..7ec7d3201c2 100644
--- a/airflow-core/src/airflow/ui/openapi-gen/queries/common.ts
+++ b/airflow-core/src/airflow/ui/openapi-gen/queries/common.ts
@@ -567,7 +567,7 @@ export const UseTaskInstanceServiceGetHitlDetailKeyFn = ({ dagId, dagRunId, mapI
export type TaskInstanceServiceGetHitlDetailsDefaultResponse = Awaited<ReturnType<typeof TaskInstanceService.getHitlDetails>>;
export type TaskInstanceServiceGetHitlDetailsQueryResult<TData = TaskInstanceServiceGetHitlDetailsDefaultResponse, TError = unknown> = UseQueryResult<TData, TError>;
export const useTaskInstanceServiceGetHitlDetailsKey = "TaskInstanceServiceGetHitlDetails";
-export const UseTaskInstanceServiceGetHitlDetailsKeyFn = ({ bodySearch, createdAtGt, createdAtGte, createdAtLt, createdAtLte, dagId, dagIdPattern, dagRunId, limit, offset, orderBy, respondedByUserId, respondedByUserName, responseReceived, state, subjectSearch, taskId, taskIdPattern }: {
+export const UseTaskInstanceServiceGetHitlDetailsKeyFn = ({ bodySearch, createdAtGt, createdAtGte, createdAtLt, createdAtLte, dagId, dagIdPattern, dagRunId, limit, mapIndex, offset, orderBy, respondedByUserId, respondedByUserName, responseReceived, state, subjectSearch, taskId, taskIdPattern }: {
bodySearch?: string;
createdAtGt?: string;
createdAtGte?: string;
@@ -577,6 +577,7 @@ export const UseTaskInstanceServiceGetHitlDetailsKeyFn = ({ bodySearch, createdA
dagIdPattern?: string;
dagRunId: string;
limit?: number;
+ mapIndex?: number;
offset?: number;
orderBy?: string[];
respondedByUserId?: string[];
@@ -586,7 +587,7 @@ export const UseTaskInstanceServiceGetHitlDetailsKeyFn = ({ bodySearch, createdA
subjectSearch?: string;
taskId?: string;
taskIdPattern?: string;
-}, queryKey?: Array<unknown>) => [useTaskInstanceServiceGetHitlDetailsKey, ...(queryKey ?? [{ bodySearch, createdAtGt, createdAtGte, createdAtLt, createdAtLte, dagId, dagIdPattern, dagRunId, limit, offset, orderBy, respondedByUserId, respondedByUserName, responseReceived, state, subjectSearch, taskId, taskIdPattern }])];
+}, queryKey?: Array<unknown>) => [useTaskInstanceServiceGetHitlDetailsKey, ...(queryKey ?? [{ bodySearch, createdAtGt, createdAtGte, createdAtLt, createdAtLte, dagId, dagIdPattern, dagRunId, limit, mapIndex, offset, orderBy, respondedByUserId, respondedByUserName, responseReceived, state, subjectSearch, taskId, taskIdPattern }])];
export type ImportErrorServiceGetImportErrorDefaultResponse = Awaited<ReturnType<typeof ImportErrorService.getImportError>>;
export type ImportErrorServiceGetImportErrorQueryResult<TData = ImportErrorServiceGetImportErrorDefaultResponse, TError = unknown> = UseQueryResult<TData, TError>;
export const useImportErrorServiceGetImportErrorKey = "ImportErrorServiceGetImportError";
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 ed45244bdbf..411f9e07a87 100644
--- a/airflow-core/src/airflow/ui/openapi-gen/queries/ensureQueryData.ts
+++ b/airflow-core/src/airflow/ui/openapi-gen/queries/ensureQueryData.ts
@@ -1083,6 +1083,7 @@ export const ensureUseTaskInstanceServiceGetHitlDetailData = (queryClient: Query
* @param data.dagIdPattern SQL LIKE expression — use `%` / `_` wildcards (e.g. `%customer_%`). Regular expressions are **not** supported.
* @param data.taskId
* @param data.taskIdPattern SQL LIKE expression — use `%` / `_` wildcards (e.g. `%customer_%`). Regular expressions are **not** supported.
+* @param data.mapIndex
* @param data.state
* @param data.responseReceived
* @param data.respondedByUserId
@@ -1096,7 +1097,7 @@ export const ensureUseTaskInstanceServiceGetHitlDetailData = (queryClient: Query
* @returns HITLDetailCollection Successful Response
* @throws ApiError
*/
-export const ensureUseTaskInstanceServiceGetHitlDetailsData = (queryClient: QueryClient, { bodySearch, createdAtGt, createdAtGte, createdAtLt, createdAtLte, dagId, dagIdPattern, dagRunId, limit, offset, orderBy, respondedByUserId, respondedByUserName, responseReceived, state, subjectSearch, taskId, taskIdPattern }: {
+export const ensureUseTaskInstanceServiceGetHitlDetailsData = (queryClient: QueryClient, { bodySearch, createdAtGt, createdAtGte, createdAtLt, createdAtLte, dagId, dagIdPattern, dagRunId, limit, mapIndex, offset, orderBy, respondedByUserId, respondedByUserName, responseReceived, state, subjectSearch, taskId, taskIdPattern }: {
bodySearch?: string;
createdAtGt?: string;
createdAtGte?: string;
@@ -1106,6 +1107,7 @@ export const ensureUseTaskInstanceServiceGetHitlDetailsData = (queryClient: Quer
dagIdPattern?: string;
dagRunId: string;
limit?: number;
+ mapIndex?: number;
offset?: number;
orderBy?: string[];
respondedByUserId?: string[];
@@ -1115,7 +1117,7 @@ export const ensureUseTaskInstanceServiceGetHitlDetailsData = (queryClient: Quer
subjectSearch?: string;
taskId?: string;
taskIdPattern?: string;
-}) => queryClient.ensureQueryData({ queryKey: Common.UseTaskInstanceServiceGetHitlDetailsKeyFn({ bodySearch, createdAtGt, createdAtGte, createdAtLt, createdAtLte, dagId, dagIdPattern, dagRunId, limit, offset, orderBy, respondedByUserId, respondedByUserName, responseReceived, state, subjectSearch, taskId, taskIdPattern }), queryFn: () => TaskInstanceService.getHitlDetails({ bodySearch, createdAtGt, createdAtGte, createdAtLt, createdAtLte, dagId, dagIdPattern, dagRunId, limit, offset, orde [...]
+}) => queryClient.ensureQueryData({ queryKey: Common.UseTaskInstanceServiceGetHitlDetailsKeyFn({ bodySearch, createdAtGt, createdAtGte, createdAtLt, createdAtLte, dagId, dagIdPattern, dagRunId, limit, mapIndex, offset, orderBy, respondedByUserId, respondedByUserName, responseReceived, state, subjectSearch, taskId, taskIdPattern }), queryFn: () => TaskInstanceService.getHitlDetails({ bodySearch, createdAtGt, createdAtGte, createdAtLt, createdAtLte, dagId, dagIdPattern, dagRunId, limit, ma [...]
/**
* Get Import Error
* Get an import error.
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 595733362cf..ec223f57f5a 100644
--- a/airflow-core/src/airflow/ui/openapi-gen/queries/prefetch.ts
+++ b/airflow-core/src/airflow/ui/openapi-gen/queries/prefetch.ts
@@ -1083,6 +1083,7 @@ export const prefetchUseTaskInstanceServiceGetHitlDetail = (queryClient: QueryCl
* @param data.dagIdPattern SQL LIKE expression — use `%` / `_` wildcards (e.g. `%customer_%`). Regular expressions are **not** supported.
* @param data.taskId
* @param data.taskIdPattern SQL LIKE expression — use `%` / `_` wildcards (e.g. `%customer_%`). Regular expressions are **not** supported.
+* @param data.mapIndex
* @param data.state
* @param data.responseReceived
* @param data.respondedByUserId
@@ -1096,7 +1097,7 @@ export const prefetchUseTaskInstanceServiceGetHitlDetail = (queryClient: QueryCl
* @returns HITLDetailCollection Successful Response
* @throws ApiError
*/
-export const prefetchUseTaskInstanceServiceGetHitlDetails = (queryClient: QueryClient, { bodySearch, createdAtGt, createdAtGte, createdAtLt, createdAtLte, dagId, dagIdPattern, dagRunId, limit, offset, orderBy, respondedByUserId, respondedByUserName, responseReceived, state, subjectSearch, taskId, taskIdPattern }: {
+export const prefetchUseTaskInstanceServiceGetHitlDetails = (queryClient: QueryClient, { bodySearch, createdAtGt, createdAtGte, createdAtLt, createdAtLte, dagId, dagIdPattern, dagRunId, limit, mapIndex, offset, orderBy, respondedByUserId, respondedByUserName, responseReceived, state, subjectSearch, taskId, taskIdPattern }: {
bodySearch?: string;
createdAtGt?: string;
createdAtGte?: string;
@@ -1106,6 +1107,7 @@ export const prefetchUseTaskInstanceServiceGetHitlDetails = (queryClient: QueryC
dagIdPattern?: string;
dagRunId: string;
limit?: number;
+ mapIndex?: number;
offset?: number;
orderBy?: string[];
respondedByUserId?: string[];
@@ -1115,7 +1117,7 @@ export const prefetchUseTaskInstanceServiceGetHitlDetails = (queryClient: QueryC
subjectSearch?: string;
taskId?: string;
taskIdPattern?: string;
-}) => queryClient.prefetchQuery({ queryKey: Common.UseTaskInstanceServiceGetHitlDetailsKeyFn({ bodySearch, createdAtGt, createdAtGte, createdAtLt, createdAtLte, dagId, dagIdPattern, dagRunId, limit, offset, orderBy, respondedByUserId, respondedByUserName, responseReceived, state, subjectSearch, taskId, taskIdPattern }), queryFn: () => TaskInstanceService.getHitlDetails({ bodySearch, createdAtGt, createdAtGte, createdAtLt, createdAtLte, dagId, dagIdPattern, dagRunId, limit, offset, orderB [...]
+}) => queryClient.prefetchQuery({ queryKey: Common.UseTaskInstanceServiceGetHitlDetailsKeyFn({ bodySearch, createdAtGt, createdAtGte, createdAtLt, createdAtLte, dagId, dagIdPattern, dagRunId, limit, mapIndex, offset, orderBy, respondedByUserId, respondedByUserName, responseReceived, state, subjectSearch, taskId, taskIdPattern }), queryFn: () => TaskInstanceService.getHitlDetails({ bodySearch, createdAtGt, createdAtGte, createdAtLt, createdAtLte, dagId, dagIdPattern, dagRunId, limit, mapI [...]
/**
* Get Import Error
* Get an import error.
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 b664457a66e..556d7932d60 100644
--- a/airflow-core/src/airflow/ui/openapi-gen/queries/queries.ts
+++ b/airflow-core/src/airflow/ui/openapi-gen/queries/queries.ts
@@ -1083,6 +1083,7 @@ export const useTaskInstanceServiceGetHitlDetail = <TData = Common.TaskInstanceS
* @param data.dagIdPattern SQL LIKE expression — use `%` / `_` wildcards (e.g. `%customer_%`). Regular expressions are **not** supported.
* @param data.taskId
* @param data.taskIdPattern SQL LIKE expression — use `%` / `_` wildcards (e.g. `%customer_%`). Regular expressions are **not** supported.
+* @param data.mapIndex
* @param data.state
* @param data.responseReceived
* @param data.respondedByUserId
@@ -1096,7 +1097,7 @@ export const useTaskInstanceServiceGetHitlDetail = <TData = Common.TaskInstanceS
* @returns HITLDetailCollection Successful Response
* @throws ApiError
*/
-export const useTaskInstanceServiceGetHitlDetails = <TData = Common.TaskInstanceServiceGetHitlDetailsDefaultResponse, TError = unknown, TQueryKey extends Array<unknown> = unknown[]>({ bodySearch, createdAtGt, createdAtGte, createdAtLt, createdAtLte, dagId, dagIdPattern, dagRunId, limit, offset, orderBy, respondedByUserId, respondedByUserName, responseReceived, state, subjectSearch, taskId, taskIdPattern }: {
+export const useTaskInstanceServiceGetHitlDetails = <TData = Common.TaskInstanceServiceGetHitlDetailsDefaultResponse, TError = unknown, TQueryKey extends Array<unknown> = unknown[]>({ bodySearch, createdAtGt, createdAtGte, createdAtLt, createdAtLte, dagId, dagIdPattern, dagRunId, limit, mapIndex, offset, orderBy, respondedByUserId, respondedByUserName, responseReceived, state, subjectSearch, taskId, taskIdPattern }: {
bodySearch?: string;
createdAtGt?: string;
createdAtGte?: string;
@@ -1106,6 +1107,7 @@ export const useTaskInstanceServiceGetHitlDetails = <TData = Common.TaskInstance
dagIdPattern?: string;
dagRunId: string;
limit?: number;
+ mapIndex?: number;
offset?: number;
orderBy?: string[];
respondedByUserId?: string[];
@@ -1115,7 +1117,7 @@ export const useTaskInstanceServiceGetHitlDetails = <TData = Common.TaskInstance
subjectSearch?: string;
taskId?: string;
taskIdPattern?: string;
-}, queryKey?: TQueryKey, options?: Omit<UseQueryOptions<TData, TError>, "queryKey" | "queryFn">) => useQuery<TData, TError>({ queryKey: Common.UseTaskInstanceServiceGetHitlDetailsKeyFn({ bodySearch, createdAtGt, createdAtGte, createdAtLt, createdAtLte, dagId, dagIdPattern, dagRunId, limit, offset, orderBy, respondedByUserId, respondedByUserName, responseReceived, state, subjectSearch, taskId, taskIdPattern }, queryKey), queryFn: () => TaskInstanceService.getHitlDetails({ bodySearch, crea [...]
+}, queryKey?: TQueryKey, options?: Omit<UseQueryOptions<TData, TError>, "queryKey" | "queryFn">) => useQuery<TData, TError>({ queryKey: Common.UseTaskInstanceServiceGetHitlDetailsKeyFn({ bodySearch, createdAtGt, createdAtGte, createdAtLt, createdAtLte, dagId, dagIdPattern, dagRunId, limit, mapIndex, offset, orderBy, respondedByUserId, respondedByUserName, responseReceived, state, subjectSearch, taskId, taskIdPattern }, queryKey), queryFn: () => TaskInstanceService.getHitlDetails({ bodySe [...]
/**
* Get Import Error
* Get an import error.
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 295371b0385..433fad2caa6 100644
--- a/airflow-core/src/airflow/ui/openapi-gen/queries/suspense.ts
+++ b/airflow-core/src/airflow/ui/openapi-gen/queries/suspense.ts
@@ -1083,6 +1083,7 @@ export const useTaskInstanceServiceGetHitlDetailSuspense = <TData = Common.TaskI
* @param data.dagIdPattern SQL LIKE expression — use `%` / `_` wildcards (e.g. `%customer_%`). Regular expressions are **not** supported.
* @param data.taskId
* @param data.taskIdPattern SQL LIKE expression — use `%` / `_` wildcards (e.g. `%customer_%`). Regular expressions are **not** supported.
+* @param data.mapIndex
* @param data.state
* @param data.responseReceived
* @param data.respondedByUserId
@@ -1096,7 +1097,7 @@ export const useTaskInstanceServiceGetHitlDetailSuspense = <TData = Common.TaskI
* @returns HITLDetailCollection Successful Response
* @throws ApiError
*/
-export const useTaskInstanceServiceGetHitlDetailsSuspense = <TData = Common.TaskInstanceServiceGetHitlDetailsDefaultResponse, TError = unknown, TQueryKey extends Array<unknown> = unknown[]>({ bodySearch, createdAtGt, createdAtGte, createdAtLt, createdAtLte, dagId, dagIdPattern, dagRunId, limit, offset, orderBy, respondedByUserId, respondedByUserName, responseReceived, state, subjectSearch, taskId, taskIdPattern }: {
+export const useTaskInstanceServiceGetHitlDetailsSuspense = <TData = Common.TaskInstanceServiceGetHitlDetailsDefaultResponse, TError = unknown, TQueryKey extends Array<unknown> = unknown[]>({ bodySearch, createdAtGt, createdAtGte, createdAtLt, createdAtLte, dagId, dagIdPattern, dagRunId, limit, mapIndex, offset, orderBy, respondedByUserId, respondedByUserName, responseReceived, state, subjectSearch, taskId, taskIdPattern }: {
bodySearch?: string;
createdAtGt?: string;
createdAtGte?: string;
@@ -1106,6 +1107,7 @@ export const useTaskInstanceServiceGetHitlDetailsSuspense = <TData = Common.Task
dagIdPattern?: string;
dagRunId: string;
limit?: number;
+ mapIndex?: number;
offset?: number;
orderBy?: string[];
respondedByUserId?: string[];
@@ -1115,7 +1117,7 @@ export const useTaskInstanceServiceGetHitlDetailsSuspense = <TData = Common.Task
subjectSearch?: string;
taskId?: string;
taskIdPattern?: string;
-}, queryKey?: TQueryKey, options?: Omit<UseQueryOptions<TData, TError>, "queryKey" | "queryFn">) => useSuspenseQuery<TData, TError>({ queryKey: Common.UseTaskInstanceServiceGetHitlDetailsKeyFn({ bodySearch, createdAtGt, createdAtGte, createdAtLt, createdAtLte, dagId, dagIdPattern, dagRunId, limit, offset, orderBy, respondedByUserId, respondedByUserName, responseReceived, state, subjectSearch, taskId, taskIdPattern }, queryKey), queryFn: () => TaskInstanceService.getHitlDetails({ bodySear [...]
+}, queryKey?: TQueryKey, options?: Omit<UseQueryOptions<TData, TError>, "queryKey" | "queryFn">) => useSuspenseQuery<TData, TError>({ queryKey: Common.UseTaskInstanceServiceGetHitlDetailsKeyFn({ bodySearch, createdAtGt, createdAtGte, createdAtLt, createdAtLte, dagId, dagIdPattern, dagRunId, limit, mapIndex, offset, orderBy, respondedByUserId, respondedByUserName, responseReceived, state, subjectSearch, taskId, taskIdPattern }, queryKey), queryFn: () => TaskInstanceService.getHitlDetails( [...]
/**
* Get Import Error
* Get an import error.
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 2b161775d45..6d674b9fa5e 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
@@ -2792,6 +2792,7 @@ export class TaskInstanceService {
* @param data.dagIdPattern SQL LIKE expression — use `%` / `_` wildcards (e.g. `%customer_%`). Regular expressions are **not** supported.
* @param data.taskId
* @param data.taskIdPattern SQL LIKE expression — use `%` / `_` wildcards (e.g. `%customer_%`). Regular expressions are **not** supported.
+ * @param data.mapIndex
* @param data.state
* @param data.responseReceived
* @param data.respondedByUserId
@@ -2820,6 +2821,7 @@ export class TaskInstanceService {
dag_id_pattern: data.dagIdPattern,
task_id: data.taskId,
task_id_pattern: data.taskIdPattern,
+ map_index: data.mapIndex,
state: data.state,
response_received: data.responseReceived,
responded_by_user_id: data.respondedByUserId,
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 96911409ea2..dd896f566d6 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
@@ -2869,6 +2869,7 @@ export type GetHitlDetailsData = {
dagIdPattern?: string | null;
dagRunId: string;
limit?: number;
+ mapIndex?: number | null;
offset?: number;
orderBy?: Array<(string)>;
respondedByUserId?: Array<(string)>;
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 9a431565e7d..22371bf1c25 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
@@ -135,7 +135,7 @@ def sample_tis(create_task_instance: CreateTaskInstance) -> list[TaskInstance]:
dag_id=f"hitl_dag_{i}",
run_id=f"hitl_run_{i}",
task_id=f"hitl_task_{i}",
- state=TaskInstanceState.RUNNING,
+ state=TaskInstanceState.DEFERRED,
)
for i in range(5)
]
@@ -542,7 +542,9 @@ class TestGetHITLDetailsEndpoint:
({"dag_id_pattern": "other_Dag_"}, 3),
({"task_id": "hitl_task_0"}, 1),
({"task_id_pattern": "another_hitl"}, 3),
- ({"state": "running"}, 5),
+ ({"map_index": -1}, 8),
+ ({"map_index": 1}, 0),
+ ({"state": "deferred"}, 5),
({"state": "success"}, 3),
# hitl detail related filter
({"subject_search": "This is subject"}, 5),
@@ -570,9 +572,11 @@ class TestGetHITLDetailsEndpoint:
ids=[
"dag_id_pattern_hitl_dag",
"dag_id_pattern_other_dag",
- "task_id_pattern",
"task_id",
- "ti_state_running",
+ "task_id_pattern",
+ "map_index_none",
+ "map_index_1",
+ "ti_state_deferred",
"ti_state_success",
"subject",
"body",