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 62fbe0178a1 Add map_index filter to TaskInstance API queries (#55614)
62fbe0178a1 is described below

commit 62fbe0178a1361b84c931451783c7a68ac578058
Author: Guan Ming(Wesley) Chiu <[email protected]>
AuthorDate: Tue Sep 16 03:12:45 2025 +0800

    Add map_index filter to TaskInstance API queries (#55614)
    
    * Add QueryTIMapIndexFilter to API parameters for task instance queries
    
    * Update test case to prevent confusion
---
 .../src/airflow/api_fastapi/common/parameters.py      |  9 +++++++++
 .../core_api/openapi/v2-rest-api-generated.yaml       | 16 ++++++++++++++++
 .../core_api/routes/public/task_instances.py          |  5 +++++
 .../src/airflow/ui/openapi-gen/queries/common.ts      | 10 ++++++----
 .../airflow/ui/openapi-gen/queries/ensureQueryData.ts | 12 ++++++++----
 .../src/airflow/ui/openapi-gen/queries/prefetch.ts    | 12 ++++++++----
 .../src/airflow/ui/openapi-gen/queries/queries.ts     | 12 ++++++++----
 .../src/airflow/ui/openapi-gen/queries/suspense.ts    | 12 ++++++++----
 .../airflow/ui/openapi-gen/requests/services.gen.ts   |  4 ++++
 .../src/airflow/ui/openapi-gen/requests/types.gen.ts  |  2 ++
 .../airflow/ui/src/layouts/Details/Gantt/Gantt.tsx    |  3 ++-
 .../core_api/routes/public/test_task_instances.py     | 19 +++++++++++++++++++
 12 files changed, 95 insertions(+), 21 deletions(-)

diff --git a/airflow-core/src/airflow/api_fastapi/common/parameters.py 
b/airflow-core/src/airflow/api_fastapi/common/parameters.py
index c6ff8aa6f46..f1439fd2031 100644
--- a/airflow-core/src/airflow/api_fastapi/common/parameters.py
+++ b/airflow-core/src/airflow/api_fastapi/common/parameters.py
@@ -901,6 +901,15 @@ QueryTIOperatorFilter = Annotated[
     ),
 ]
 
+QueryTIMapIndexFilter = Annotated[
+    FilterParam[list[int]],
+    Depends(
+        filter_param_factory(
+            TaskInstance.map_index, list[int], FilterOptionEnum.ANY_EQUAL, 
default_factory=list
+        )
+    ),
+]
+
 # XCom
 QueryXComKeyPatternSearch = Annotated[
     _SearchParam, Depends(search_param_factory(XComModel.key, 
"xcom_key_pattern"))
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 196118213aa..fae82994628 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
@@ -5715,6 +5715,14 @@ paths:
           items:
             type: string
           title: Operator
+      - name: map_index
+        in: query
+        required: false
+        schema:
+          type: array
+          items:
+            type: integer
+          title: Map Index
       - name: limit
         in: query
         required: false
@@ -6515,6 +6523,14 @@ paths:
           items:
             type: string
           title: Operator
+      - name: map_index
+        in: query
+        required: false
+        schema:
+          type: array
+          items:
+            type: integer
+          title: Map Index
       - name: limit
         in: query
         required: false
diff --git 
a/airflow-core/src/airflow/api_fastapi/core_api/routes/public/task_instances.py 
b/airflow-core/src/airflow/api_fastapi/core_api/routes/public/task_instances.py
index 87d76fedc92..28831ac01e6 100644
--- 
a/airflow-core/src/airflow/api_fastapi/core_api/routes/public/task_instances.py
+++ 
b/airflow-core/src/airflow/api_fastapi/core_api/routes/public/task_instances.py
@@ -42,6 +42,7 @@ from airflow.api_fastapi.common.parameters import (
     QueryOffset,
     QueryTIDagVersionFilter,
     QueryTIExecutorFilter,
+    QueryTIMapIndexFilter,
     QueryTIOperatorFilter,
     QueryTIPoolFilter,
     QueryTIQueueFilter,
@@ -149,6 +150,7 @@ def get_mapped_task_instances(
     version_number: QueryTIDagVersionFilter,
     try_number: QueryTITryNumberFilter,
     operator: QueryTIOperatorFilter,
+    map_index: QueryTIMapIndexFilter,
     limit: QueryLimit,
     offset: QueryOffset,
     order_by: Annotated[
@@ -220,6 +222,7 @@ def get_mapped_task_instances(
             version_number,
             try_number,
             operator,
+            map_index,
         ],
         order_by=order_by,
         offset=offset,
@@ -412,6 +415,7 @@ def get_task_instances(
     version_number: QueryTIDagVersionFilter,
     try_number: QueryTITryNumberFilter,
     operator: QueryTIOperatorFilter,
+    map_index: QueryTIMapIndexFilter,
     limit: QueryLimit,
     offset: QueryOffset,
     order_by: Annotated[
@@ -491,6 +495,7 @@ def get_task_instances(
             readable_ti_filter,
             try_number,
             operator,
+            map_index,
         ],
         order_by=order_by,
         offset=offset,
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 5b4eb43217c..32cfd2a202e 100644
--- a/airflow-core/src/airflow/ui/openapi-gen/queries/common.ts
+++ b/airflow-core/src/airflow/ui/openapi-gen/queries/common.ts
@@ -383,7 +383,7 @@ export const UseTaskInstanceServiceGetTaskInstanceKeyFn = 
({ dagId, dagRunId, ta
 export type TaskInstanceServiceGetMappedTaskInstancesDefaultResponse = 
Awaited<ReturnType<typeof TaskInstanceService.getMappedTaskInstances>>;
 export type TaskInstanceServiceGetMappedTaskInstancesQueryResult<TData = 
TaskInstanceServiceGetMappedTaskInstancesDefaultResponse, TError = unknown> = 
UseQueryResult<TData, TError>;
 export const useTaskInstanceServiceGetMappedTaskInstancesKey = 
"TaskInstanceServiceGetMappedTaskInstances";
-export const UseTaskInstanceServiceGetMappedTaskInstancesKeyFn = ({ dagId, 
dagRunId, durationGt, durationGte, durationLt, durationLte, endDateGt, 
endDateGte, endDateLt, endDateLte, executor, limit, logicalDateGt, 
logicalDateGte, logicalDateLt, logicalDateLte, offset, operator, orderBy, pool, 
queue, runAfterGt, runAfterGte, runAfterLt, runAfterLte, startDateGt, 
startDateGte, startDateLt, startDateLte, state, taskId, tryNumber, updatedAtGt, 
updatedAtGte, updatedAtLt, updatedAtLte, versionN [...]
+export const UseTaskInstanceServiceGetMappedTaskInstancesKeyFn = ({ dagId, 
dagRunId, durationGt, durationGte, durationLt, durationLte, endDateGt, 
endDateGte, endDateLt, endDateLte, executor, limit, logicalDateGt, 
logicalDateGte, logicalDateLt, logicalDateLte, mapIndex, offset, operator, 
orderBy, pool, queue, runAfterGt, runAfterGte, runAfterLt, runAfterLte, 
startDateGt, startDateGte, startDateLt, startDateLte, state, taskId, tryNumber, 
updatedAtGt, updatedAtGte, updatedAtLt, updatedAtLte [...]
   dagId: string;
   dagRunId: string;
   durationGt?: number;
@@ -400,6 +400,7 @@ export const 
UseTaskInstanceServiceGetMappedTaskInstancesKeyFn = ({ dagId, dagRu
   logicalDateGte?: string;
   logicalDateLt?: string;
   logicalDateLte?: string;
+  mapIndex?: number[];
   offset?: number;
   operator?: string[];
   orderBy?: string[];
@@ -421,7 +422,7 @@ export const 
UseTaskInstanceServiceGetMappedTaskInstancesKeyFn = ({ dagId, dagRu
   updatedAtLt?: string;
   updatedAtLte?: string;
   versionNumber?: number[];
-}, queryKey?: Array<unknown>) => 
[useTaskInstanceServiceGetMappedTaskInstancesKey, ...(queryKey ?? [{ dagId, 
dagRunId, durationGt, durationGte, durationLt, durationLte, endDateGt, 
endDateGte, endDateLt, endDateLte, executor, limit, logicalDateGt, 
logicalDateGte, logicalDateLt, logicalDateLte, offset, operator, orderBy, pool, 
queue, runAfterGt, runAfterGte, runAfterLt, runAfterLte, startDateGt, 
startDateGte, startDateLt, startDateLte, state, taskId, tryNumber, updatedAtGt, 
updatedAtGte, u [...]
+}, queryKey?: Array<unknown>) => 
[useTaskInstanceServiceGetMappedTaskInstancesKey, ...(queryKey ?? [{ dagId, 
dagRunId, durationGt, durationGte, durationLt, durationLte, endDateGt, 
endDateGte, endDateLt, endDateLte, executor, limit, logicalDateGt, 
logicalDateGte, logicalDateLt, logicalDateLte, mapIndex, offset, operator, 
orderBy, pool, queue, runAfterGt, runAfterGte, runAfterLt, runAfterLte, 
startDateGt, startDateGte, startDateLt, startDateLte, state, taskId, tryNumber, 
updatedAtGt, updat [...]
 export type 
TaskInstanceServiceGetTaskInstanceDependenciesByMapIndexDefaultResponse = 
Awaited<ReturnType<typeof 
TaskInstanceService.getTaskInstanceDependenciesByMapIndex>>;
 export type 
TaskInstanceServiceGetTaskInstanceDependenciesByMapIndexQueryResult<TData = 
TaskInstanceServiceGetTaskInstanceDependenciesByMapIndexDefaultResponse, TError 
= unknown> = UseQueryResult<TData, TError>;
 export const useTaskInstanceServiceGetTaskInstanceDependenciesByMapIndexKey = 
"TaskInstanceServiceGetTaskInstanceDependenciesByMapIndex";
@@ -470,7 +471,7 @@ export const 
UseTaskInstanceServiceGetMappedTaskInstanceKeyFn = ({ dagId, dagRun
 export type TaskInstanceServiceGetTaskInstancesDefaultResponse = 
Awaited<ReturnType<typeof TaskInstanceService.getTaskInstances>>;
 export type TaskInstanceServiceGetTaskInstancesQueryResult<TData = 
TaskInstanceServiceGetTaskInstancesDefaultResponse, TError = unknown> = 
UseQueryResult<TData, TError>;
 export const useTaskInstanceServiceGetTaskInstancesKey = 
"TaskInstanceServiceGetTaskInstances";
-export const UseTaskInstanceServiceGetTaskInstancesKeyFn = ({ dagId, dagRunId, 
durationGt, durationGte, durationLt, durationLte, endDateGt, endDateGte, 
endDateLt, endDateLte, executor, limit, logicalDateGt, logicalDateGte, 
logicalDateLt, logicalDateLte, offset, operator, orderBy, pool, queue, 
runAfterGt, runAfterGte, runAfterLt, runAfterLte, startDateGt, startDateGte, 
startDateLt, startDateLte, state, taskDisplayNamePattern, taskId, tryNumber, 
updatedAtGt, updatedAtGte, updatedAtLt, upda [...]
+export const UseTaskInstanceServiceGetTaskInstancesKeyFn = ({ dagId, dagRunId, 
durationGt, durationGte, durationLt, durationLte, endDateGt, endDateGte, 
endDateLt, endDateLte, executor, limit, logicalDateGt, logicalDateGte, 
logicalDateLt, logicalDateLte, mapIndex, offset, operator, orderBy, pool, 
queue, runAfterGt, runAfterGte, runAfterLt, runAfterLte, startDateGt, 
startDateGte, startDateLt, startDateLte, state, taskDisplayNamePattern, taskId, 
tryNumber, updatedAtGt, updatedAtGte, updated [...]
   dagId: string;
   dagRunId: string;
   durationGt?: number;
@@ -487,6 +488,7 @@ export const UseTaskInstanceServiceGetTaskInstancesKeyFn = 
({ dagId, dagRunId, d
   logicalDateGte?: string;
   logicalDateLt?: string;
   logicalDateLte?: string;
+  mapIndex?: number[];
   offset?: number;
   operator?: string[];
   orderBy?: string[];
@@ -509,7 +511,7 @@ export const UseTaskInstanceServiceGetTaskInstancesKeyFn = 
({ dagId, dagRunId, d
   updatedAtLt?: string;
   updatedAtLte?: string;
   versionNumber?: number[];
-}, queryKey?: Array<unknown>) => [useTaskInstanceServiceGetTaskInstancesKey, 
...(queryKey ?? [{ dagId, dagRunId, durationGt, durationGte, durationLt, 
durationLte, endDateGt, endDateGte, endDateLt, endDateLte, executor, limit, 
logicalDateGt, logicalDateGte, logicalDateLt, logicalDateLte, offset, operator, 
orderBy, pool, queue, runAfterGt, runAfterGte, runAfterLt, runAfterLte, 
startDateGt, startDateGte, startDateLt, startDateLte, state, 
taskDisplayNamePattern, taskId, tryNumber, updatedAtG [...]
+}, queryKey?: Array<unknown>) => [useTaskInstanceServiceGetTaskInstancesKey, 
...(queryKey ?? [{ dagId, dagRunId, durationGt, durationGte, durationLt, 
durationLte, endDateGt, endDateGte, endDateLt, endDateLte, executor, limit, 
logicalDateGt, logicalDateGte, logicalDateLt, logicalDateLte, mapIndex, offset, 
operator, orderBy, pool, queue, runAfterGt, runAfterGte, runAfterLt, 
runAfterLte, startDateGt, startDateGte, startDateLt, startDateLte, state, 
taskDisplayNamePattern, taskId, tryNumber,  [...]
 export type TaskInstanceServiceGetTaskInstanceTryDetailsDefaultResponse = 
Awaited<ReturnType<typeof TaskInstanceService.getTaskInstanceTryDetails>>;
 export type TaskInstanceServiceGetTaskInstanceTryDetailsQueryResult<TData = 
TaskInstanceServiceGetTaskInstanceTryDetailsDefaultResponse, TError = unknown> 
= UseQueryResult<TData, TError>;
 export const useTaskInstanceServiceGetTaskInstanceTryDetailsKey = 
"TaskInstanceServiceGetTaskInstanceTryDetails";
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 f5ce4870386..a2f0b0aa4f7 100644
--- a/airflow-core/src/airflow/ui/openapi-gen/queries/ensureQueryData.ts
+++ b/airflow-core/src/airflow/ui/openapi-gen/queries/ensureQueryData.ts
@@ -752,13 +752,14 @@ export const 
ensureUseTaskInstanceServiceGetTaskInstanceData = (queryClient: Que
 * @param data.versionNumber
 * @param data.tryNumber
 * @param data.operator
+* @param data.mapIndex
 * @param data.limit
 * @param data.offset
 * @param data.orderBy
 * @returns TaskInstanceCollectionResponse Successful Response
 * @throws ApiError
 */
-export const ensureUseTaskInstanceServiceGetMappedTaskInstancesData = 
(queryClient: QueryClient, { dagId, dagRunId, durationGt, durationGte, 
durationLt, durationLte, endDateGt, endDateGte, endDateLt, endDateLte, 
executor, limit, logicalDateGt, logicalDateGte, logicalDateLt, logicalDateLte, 
offset, operator, orderBy, pool, queue, runAfterGt, runAfterGte, runAfterLt, 
runAfterLte, startDateGt, startDateGte, startDateLt, startDateLte, state, 
taskId, tryNumber, updatedAtGt, updatedAtGte, upda [...]
+export const ensureUseTaskInstanceServiceGetMappedTaskInstancesData = 
(queryClient: QueryClient, { dagId, dagRunId, durationGt, durationGte, 
durationLt, durationLte, endDateGt, endDateGte, endDateLt, endDateLte, 
executor, limit, logicalDateGt, logicalDateGte, logicalDateLt, logicalDateLte, 
mapIndex, offset, operator, orderBy, pool, queue, runAfterGt, runAfterGte, 
runAfterLt, runAfterLte, startDateGt, startDateGte, startDateLt, startDateLte, 
state, taskId, tryNumber, updatedAtGt, updatedA [...]
   dagId: string;
   dagRunId: string;
   durationGt?: number;
@@ -775,6 +776,7 @@ export const 
ensureUseTaskInstanceServiceGetMappedTaskInstancesData = (queryClie
   logicalDateGte?: string;
   logicalDateLt?: string;
   logicalDateLte?: string;
+  mapIndex?: number[];
   offset?: number;
   operator?: string[];
   orderBy?: string[];
@@ -796,7 +798,7 @@ export const 
ensureUseTaskInstanceServiceGetMappedTaskInstancesData = (queryClie
   updatedAtLt?: string;
   updatedAtLte?: string;
   versionNumber?: number[];
-}) => queryClient.ensureQueryData({ queryKey: 
Common.UseTaskInstanceServiceGetMappedTaskInstancesKeyFn({ dagId, dagRunId, 
durationGt, durationGte, durationLt, durationLte, endDateGt, endDateGte, 
endDateLt, endDateLte, executor, limit, logicalDateGt, logicalDateGte, 
logicalDateLt, logicalDateLte, offset, operator, orderBy, pool, queue, 
runAfterGt, runAfterGte, runAfterLt, runAfterLte, startDateGt, startDateGte, 
startDateLt, startDateLte, state, taskId, tryNumber, updatedAtGt, updatedAtGte 
[...]
+}) => queryClient.ensureQueryData({ queryKey: 
Common.UseTaskInstanceServiceGetMappedTaskInstancesKeyFn({ dagId, dagRunId, 
durationGt, durationGte, durationLt, durationLte, endDateGt, endDateGte, 
endDateLt, endDateLte, executor, limit, logicalDateGt, logicalDateGte, 
logicalDateLt, logicalDateLte, mapIndex, offset, operator, orderBy, pool, 
queue, runAfterGt, runAfterGte, runAfterLt, runAfterLte, startDateGt, 
startDateGte, startDateLt, startDateLte, state, taskId, tryNumber, updatedAtGt, 
up [...]
 /**
 * Get Task Instance Dependencies
 * Get dependencies blocking task from getting scheduled.
@@ -923,13 +925,14 @@ export const 
ensureUseTaskInstanceServiceGetMappedTaskInstanceData = (queryClien
 * @param data.versionNumber
 * @param data.tryNumber
 * @param data.operator
+* @param data.mapIndex
 * @param data.limit
 * @param data.offset
 * @param data.orderBy
 * @returns TaskInstanceCollectionResponse Successful Response
 * @throws ApiError
 */
-export const ensureUseTaskInstanceServiceGetTaskInstancesData = (queryClient: 
QueryClient, { dagId, dagRunId, durationGt, durationGte, durationLt, 
durationLte, endDateGt, endDateGte, endDateLt, endDateLte, executor, limit, 
logicalDateGt, logicalDateGte, logicalDateLt, logicalDateLte, offset, operator, 
orderBy, pool, queue, runAfterGt, runAfterGte, runAfterLt, runAfterLte, 
startDateGt, startDateGte, startDateLt, startDateLte, state, 
taskDisplayNamePattern, taskId, tryNumber, updatedAtGt,  [...]
+export const ensureUseTaskInstanceServiceGetTaskInstancesData = (queryClient: 
QueryClient, { dagId, dagRunId, durationGt, durationGte, durationLt, 
durationLte, endDateGt, endDateGte, endDateLt, endDateLte, executor, limit, 
logicalDateGt, logicalDateGte, logicalDateLt, logicalDateLte, mapIndex, offset, 
operator, orderBy, pool, queue, runAfterGt, runAfterGte, runAfterLt, 
runAfterLte, startDateGt, startDateGte, startDateLt, startDateLte, state, 
taskDisplayNamePattern, taskId, tryNumber, upd [...]
   dagId: string;
   dagRunId: string;
   durationGt?: number;
@@ -946,6 +949,7 @@ export const 
ensureUseTaskInstanceServiceGetTaskInstancesData = (queryClient: Qu
   logicalDateGte?: string;
   logicalDateLt?: string;
   logicalDateLte?: string;
+  mapIndex?: number[];
   offset?: number;
   operator?: string[];
   orderBy?: string[];
@@ -968,7 +972,7 @@ export const 
ensureUseTaskInstanceServiceGetTaskInstancesData = (queryClient: Qu
   updatedAtLt?: string;
   updatedAtLte?: string;
   versionNumber?: number[];
-}) => queryClient.ensureQueryData({ queryKey: 
Common.UseTaskInstanceServiceGetTaskInstancesKeyFn({ dagId, dagRunId, 
durationGt, durationGte, durationLt, durationLte, endDateGt, endDateGte, 
endDateLt, endDateLte, executor, limit, logicalDateGt, logicalDateGte, 
logicalDateLt, logicalDateLte, offset, operator, orderBy, pool, queue, 
runAfterGt, runAfterGte, runAfterLt, runAfterLte, startDateGt, startDateGte, 
startDateLt, startDateLte, state, taskDisplayNamePattern, taskId, tryNumber, 
updated [...]
+}) => queryClient.ensureQueryData({ queryKey: 
Common.UseTaskInstanceServiceGetTaskInstancesKeyFn({ dagId, dagRunId, 
durationGt, durationGte, durationLt, durationLte, endDateGt, endDateGte, 
endDateLt, endDateLte, executor, limit, logicalDateGt, logicalDateGte, 
logicalDateLt, logicalDateLte, mapIndex, offset, operator, orderBy, pool, 
queue, runAfterGt, runAfterGte, runAfterLt, runAfterLte, startDateGt, 
startDateGte, startDateLt, startDateLte, state, taskDisplayNamePattern, taskId, 
tryNumbe [...]
 /**
 * Get Task Instance Try Details
 * Get task instance details by try number.
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 18257b18637..8e6e3b25478 100644
--- a/airflow-core/src/airflow/ui/openapi-gen/queries/prefetch.ts
+++ b/airflow-core/src/airflow/ui/openapi-gen/queries/prefetch.ts
@@ -752,13 +752,14 @@ export const 
prefetchUseTaskInstanceServiceGetTaskInstance = (queryClient: Query
 * @param data.versionNumber
 * @param data.tryNumber
 * @param data.operator
+* @param data.mapIndex
 * @param data.limit
 * @param data.offset
 * @param data.orderBy
 * @returns TaskInstanceCollectionResponse Successful Response
 * @throws ApiError
 */
-export const prefetchUseTaskInstanceServiceGetMappedTaskInstances = 
(queryClient: QueryClient, { dagId, dagRunId, durationGt, durationGte, 
durationLt, durationLte, endDateGt, endDateGte, endDateLt, endDateLte, 
executor, limit, logicalDateGt, logicalDateGte, logicalDateLt, logicalDateLte, 
offset, operator, orderBy, pool, queue, runAfterGt, runAfterGte, runAfterLt, 
runAfterLte, startDateGt, startDateGte, startDateLt, startDateLte, state, 
taskId, tryNumber, updatedAtGt, updatedAtGte, update [...]
+export const prefetchUseTaskInstanceServiceGetMappedTaskInstances = 
(queryClient: QueryClient, { dagId, dagRunId, durationGt, durationGte, 
durationLt, durationLte, endDateGt, endDateGte, endDateLt, endDateLte, 
executor, limit, logicalDateGt, logicalDateGte, logicalDateLt, logicalDateLte, 
mapIndex, offset, operator, orderBy, pool, queue, runAfterGt, runAfterGte, 
runAfterLt, runAfterLte, startDateGt, startDateGte, startDateLt, startDateLte, 
state, taskId, tryNumber, updatedAtGt, updatedAtG [...]
   dagId: string;
   dagRunId: string;
   durationGt?: number;
@@ -775,6 +776,7 @@ export const 
prefetchUseTaskInstanceServiceGetMappedTaskInstances = (queryClient
   logicalDateGte?: string;
   logicalDateLt?: string;
   logicalDateLte?: string;
+  mapIndex?: number[];
   offset?: number;
   operator?: string[];
   orderBy?: string[];
@@ -796,7 +798,7 @@ export const 
prefetchUseTaskInstanceServiceGetMappedTaskInstances = (queryClient
   updatedAtLt?: string;
   updatedAtLte?: string;
   versionNumber?: number[];
-}) => queryClient.prefetchQuery({ queryKey: 
Common.UseTaskInstanceServiceGetMappedTaskInstancesKeyFn({ dagId, dagRunId, 
durationGt, durationGte, durationLt, durationLte, endDateGt, endDateGte, 
endDateLt, endDateLte, executor, limit, logicalDateGt, logicalDateGte, 
logicalDateLt, logicalDateLte, offset, operator, orderBy, pool, queue, 
runAfterGt, runAfterGte, runAfterLt, runAfterLte, startDateGt, startDateGte, 
startDateLt, startDateLte, state, taskId, tryNumber, updatedAtGt, updatedAtGte, 
 [...]
+}) => queryClient.prefetchQuery({ queryKey: 
Common.UseTaskInstanceServiceGetMappedTaskInstancesKeyFn({ dagId, dagRunId, 
durationGt, durationGte, durationLt, durationLte, endDateGt, endDateGte, 
endDateLt, endDateLte, executor, limit, logicalDateGt, logicalDateGte, 
logicalDateLt, logicalDateLte, mapIndex, offset, operator, orderBy, pool, 
queue, runAfterGt, runAfterGte, runAfterLt, runAfterLte, startDateGt, 
startDateGte, startDateLt, startDateLte, state, taskId, tryNumber, updatedAtGt, 
upda [...]
 /**
 * Get Task Instance Dependencies
 * Get dependencies blocking task from getting scheduled.
@@ -923,13 +925,14 @@ export const 
prefetchUseTaskInstanceServiceGetMappedTaskInstance = (queryClient:
 * @param data.versionNumber
 * @param data.tryNumber
 * @param data.operator
+* @param data.mapIndex
 * @param data.limit
 * @param data.offset
 * @param data.orderBy
 * @returns TaskInstanceCollectionResponse Successful Response
 * @throws ApiError
 */
-export const prefetchUseTaskInstanceServiceGetTaskInstances = (queryClient: 
QueryClient, { dagId, dagRunId, durationGt, durationGte, durationLt, 
durationLte, endDateGt, endDateGte, endDateLt, endDateLte, executor, limit, 
logicalDateGt, logicalDateGte, logicalDateLt, logicalDateLte, offset, operator, 
orderBy, pool, queue, runAfterGt, runAfterGte, runAfterLt, runAfterLte, 
startDateGt, startDateGte, startDateLt, startDateLte, state, 
taskDisplayNamePattern, taskId, tryNumber, updatedAtGt, up [...]
+export const prefetchUseTaskInstanceServiceGetTaskInstances = (queryClient: 
QueryClient, { dagId, dagRunId, durationGt, durationGte, durationLt, 
durationLte, endDateGt, endDateGte, endDateLt, endDateLte, executor, limit, 
logicalDateGt, logicalDateGte, logicalDateLt, logicalDateLte, mapIndex, offset, 
operator, orderBy, pool, queue, runAfterGt, runAfterGte, runAfterLt, 
runAfterLte, startDateGt, startDateGte, startDateLt, startDateLte, state, 
taskDisplayNamePattern, taskId, tryNumber, updat [...]
   dagId: string;
   dagRunId: string;
   durationGt?: number;
@@ -946,6 +949,7 @@ export const prefetchUseTaskInstanceServiceGetTaskInstances 
= (queryClient: Quer
   logicalDateGte?: string;
   logicalDateLt?: string;
   logicalDateLte?: string;
+  mapIndex?: number[];
   offset?: number;
   operator?: string[];
   orderBy?: string[];
@@ -968,7 +972,7 @@ export const prefetchUseTaskInstanceServiceGetTaskInstances 
= (queryClient: Quer
   updatedAtLt?: string;
   updatedAtLte?: string;
   versionNumber?: number[];
-}) => queryClient.prefetchQuery({ queryKey: 
Common.UseTaskInstanceServiceGetTaskInstancesKeyFn({ dagId, dagRunId, 
durationGt, durationGte, durationLt, durationLte, endDateGt, endDateGte, 
endDateLt, endDateLte, executor, limit, logicalDateGt, logicalDateGte, 
logicalDateLt, logicalDateLte, offset, operator, orderBy, pool, queue, 
runAfterGt, runAfterGte, runAfterLt, runAfterLte, startDateGt, startDateGte, 
startDateLt, startDateLte, state, taskDisplayNamePattern, taskId, tryNumber, 
updatedAt [...]
+}) => queryClient.prefetchQuery({ queryKey: 
Common.UseTaskInstanceServiceGetTaskInstancesKeyFn({ dagId, dagRunId, 
durationGt, durationGte, durationLt, durationLte, endDateGt, endDateGte, 
endDateLt, endDateLte, executor, limit, logicalDateGt, logicalDateGte, 
logicalDateLt, logicalDateLte, mapIndex, offset, operator, orderBy, pool, 
queue, runAfterGt, runAfterGte, runAfterLt, runAfterLte, startDateGt, 
startDateGte, startDateLt, startDateLte, state, taskDisplayNamePattern, taskId, 
tryNumber, [...]
 /**
 * Get Task Instance Try Details
 * Get task instance details by try number.
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 2328d79cd87..0d4d22ab57f 100644
--- a/airflow-core/src/airflow/ui/openapi-gen/queries/queries.ts
+++ b/airflow-core/src/airflow/ui/openapi-gen/queries/queries.ts
@@ -752,13 +752,14 @@ export const useTaskInstanceServiceGetTaskInstance = 
<TData = Common.TaskInstanc
 * @param data.versionNumber
 * @param data.tryNumber
 * @param data.operator
+* @param data.mapIndex
 * @param data.limit
 * @param data.offset
 * @param data.orderBy
 * @returns TaskInstanceCollectionResponse Successful Response
 * @throws ApiError
 */
-export const useTaskInstanceServiceGetMappedTaskInstances = <TData = 
Common.TaskInstanceServiceGetMappedTaskInstancesDefaultResponse, TError = 
unknown, TQueryKey extends Array<unknown> = unknown[]>({ dagId, dagRunId, 
durationGt, durationGte, durationLt, durationLte, endDateGt, endDateGte, 
endDateLt, endDateLte, executor, limit, logicalDateGt, logicalDateGte, 
logicalDateLt, logicalDateLte, offset, operator, orderBy, pool, queue, 
runAfterGt, runAfterGte, runAfterLt, runAfterLte, startDateG [...]
+export const useTaskInstanceServiceGetMappedTaskInstances = <TData = 
Common.TaskInstanceServiceGetMappedTaskInstancesDefaultResponse, TError = 
unknown, TQueryKey extends Array<unknown> = unknown[]>({ dagId, dagRunId, 
durationGt, durationGte, durationLt, durationLte, endDateGt, endDateGte, 
endDateLt, endDateLte, executor, limit, logicalDateGt, logicalDateGte, 
logicalDateLt, logicalDateLte, mapIndex, offset, operator, orderBy, pool, 
queue, runAfterGt, runAfterGte, runAfterLt, runAfterLte,  [...]
   dagId: string;
   dagRunId: string;
   durationGt?: number;
@@ -775,6 +776,7 @@ export const useTaskInstanceServiceGetMappedTaskInstances = 
<TData = Common.Task
   logicalDateGte?: string;
   logicalDateLt?: string;
   logicalDateLte?: string;
+  mapIndex?: number[];
   offset?: number;
   operator?: string[];
   orderBy?: string[];
@@ -796,7 +798,7 @@ export const useTaskInstanceServiceGetMappedTaskInstances = 
<TData = Common.Task
   updatedAtLt?: string;
   updatedAtLte?: string;
   versionNumber?: number[];
-}, queryKey?: TQueryKey, options?: Omit<UseQueryOptions<TData, TError>, 
"queryKey" | "queryFn">) => useQuery<TData, TError>({ queryKey: 
Common.UseTaskInstanceServiceGetMappedTaskInstancesKeyFn({ dagId, dagRunId, 
durationGt, durationGte, durationLt, durationLte, endDateGt, endDateGte, 
endDateLt, endDateLte, executor, limit, logicalDateGt, logicalDateGte, 
logicalDateLt, logicalDateLte, offset, operator, orderBy, pool, queue, 
runAfterGt, runAfterGte, runAfterLt, runAfterLte, startDateGt, st [...]
+}, queryKey?: TQueryKey, options?: Omit<UseQueryOptions<TData, TError>, 
"queryKey" | "queryFn">) => useQuery<TData, TError>({ queryKey: 
Common.UseTaskInstanceServiceGetMappedTaskInstancesKeyFn({ dagId, dagRunId, 
durationGt, durationGte, durationLt, durationLte, endDateGt, endDateGte, 
endDateLt, endDateLte, executor, limit, logicalDateGt, logicalDateGte, 
logicalDateLt, logicalDateLte, mapIndex, offset, operator, orderBy, pool, 
queue, runAfterGt, runAfterGte, runAfterLt, runAfterLte, start [...]
 /**
 * Get Task Instance Dependencies
 * Get dependencies blocking task from getting scheduled.
@@ -923,13 +925,14 @@ export const useTaskInstanceServiceGetMappedTaskInstance 
= <TData = Common.TaskI
 * @param data.versionNumber
 * @param data.tryNumber
 * @param data.operator
+* @param data.mapIndex
 * @param data.limit
 * @param data.offset
 * @param data.orderBy
 * @returns TaskInstanceCollectionResponse Successful Response
 * @throws ApiError
 */
-export const useTaskInstanceServiceGetTaskInstances = <TData = 
Common.TaskInstanceServiceGetTaskInstancesDefaultResponse, TError = unknown, 
TQueryKey extends Array<unknown> = unknown[]>({ dagId, dagRunId, durationGt, 
durationGte, durationLt, durationLte, endDateGt, endDateGte, endDateLt, 
endDateLte, executor, limit, logicalDateGt, logicalDateGte, logicalDateLt, 
logicalDateLte, offset, operator, orderBy, pool, queue, runAfterGt, 
runAfterGte, runAfterLt, runAfterLte, startDateGt, startDate [...]
+export const useTaskInstanceServiceGetTaskInstances = <TData = 
Common.TaskInstanceServiceGetTaskInstancesDefaultResponse, TError = unknown, 
TQueryKey extends Array<unknown> = unknown[]>({ dagId, dagRunId, durationGt, 
durationGte, durationLt, durationLte, endDateGt, endDateGte, endDateLt, 
endDateLte, executor, limit, logicalDateGt, logicalDateGte, logicalDateLt, 
logicalDateLte, mapIndex, offset, operator, orderBy, pool, queue, runAfterGt, 
runAfterGte, runAfterLt, runAfterLte, startDateGt, [...]
   dagId: string;
   dagRunId: string;
   durationGt?: number;
@@ -946,6 +949,7 @@ export const useTaskInstanceServiceGetTaskInstances = 
<TData = Common.TaskInstan
   logicalDateGte?: string;
   logicalDateLt?: string;
   logicalDateLte?: string;
+  mapIndex?: number[];
   offset?: number;
   operator?: string[];
   orderBy?: string[];
@@ -968,7 +972,7 @@ export const useTaskInstanceServiceGetTaskInstances = 
<TData = Common.TaskInstan
   updatedAtLt?: string;
   updatedAtLte?: string;
   versionNumber?: number[];
-}, queryKey?: TQueryKey, options?: Omit<UseQueryOptions<TData, TError>, 
"queryKey" | "queryFn">) => useQuery<TData, TError>({ queryKey: 
Common.UseTaskInstanceServiceGetTaskInstancesKeyFn({ dagId, dagRunId, 
durationGt, durationGte, durationLt, durationLte, endDateGt, endDateGte, 
endDateLt, endDateLte, executor, limit, logicalDateGt, logicalDateGte, 
logicalDateLt, logicalDateLte, offset, operator, orderBy, pool, queue, 
runAfterGt, runAfterGte, runAfterLt, runAfterLte, startDateGt, startDat [...]
+}, queryKey?: TQueryKey, options?: Omit<UseQueryOptions<TData, TError>, 
"queryKey" | "queryFn">) => useQuery<TData, TError>({ queryKey: 
Common.UseTaskInstanceServiceGetTaskInstancesKeyFn({ dagId, dagRunId, 
durationGt, durationGte, durationLt, durationLte, endDateGt, endDateGte, 
endDateLt, endDateLte, executor, limit, logicalDateGt, logicalDateGte, 
logicalDateLt, logicalDateLte, mapIndex, offset, operator, orderBy, pool, 
queue, runAfterGt, runAfterGte, runAfterLt, runAfterLte, startDateGt [...]
 /**
 * Get Task Instance Try Details
 * Get task instance details by try number.
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 4a2e25e606b..087deefbe3f 100644
--- a/airflow-core/src/airflow/ui/openapi-gen/queries/suspense.ts
+++ b/airflow-core/src/airflow/ui/openapi-gen/queries/suspense.ts
@@ -752,13 +752,14 @@ export const 
useTaskInstanceServiceGetTaskInstanceSuspense = <TData = Common.Tas
 * @param data.versionNumber
 * @param data.tryNumber
 * @param data.operator
+* @param data.mapIndex
 * @param data.limit
 * @param data.offset
 * @param data.orderBy
 * @returns TaskInstanceCollectionResponse Successful Response
 * @throws ApiError
 */
-export const useTaskInstanceServiceGetMappedTaskInstancesSuspense = <TData = 
Common.TaskInstanceServiceGetMappedTaskInstancesDefaultResponse, TError = 
unknown, TQueryKey extends Array<unknown> = unknown[]>({ dagId, dagRunId, 
durationGt, durationGte, durationLt, durationLte, endDateGt, endDateGte, 
endDateLt, endDateLte, executor, limit, logicalDateGt, logicalDateGte, 
logicalDateLt, logicalDateLte, offset, operator, orderBy, pool, queue, 
runAfterGt, runAfterGte, runAfterLt, runAfterLte, st [...]
+export const useTaskInstanceServiceGetMappedTaskInstancesSuspense = <TData = 
Common.TaskInstanceServiceGetMappedTaskInstancesDefaultResponse, TError = 
unknown, TQueryKey extends Array<unknown> = unknown[]>({ dagId, dagRunId, 
durationGt, durationGte, durationLt, durationLte, endDateGt, endDateGte, 
endDateLt, endDateLte, executor, limit, logicalDateGt, logicalDateGte, 
logicalDateLt, logicalDateLte, mapIndex, offset, operator, orderBy, pool, 
queue, runAfterGt, runAfterGte, runAfterLt, runAf [...]
   dagId: string;
   dagRunId: string;
   durationGt?: number;
@@ -775,6 +776,7 @@ export const 
useTaskInstanceServiceGetMappedTaskInstancesSuspense = <TData = Com
   logicalDateGte?: string;
   logicalDateLt?: string;
   logicalDateLte?: string;
+  mapIndex?: number[];
   offset?: number;
   operator?: string[];
   orderBy?: string[];
@@ -796,7 +798,7 @@ export const 
useTaskInstanceServiceGetMappedTaskInstancesSuspense = <TData = Com
   updatedAtLt?: string;
   updatedAtLte?: string;
   versionNumber?: number[];
-}, queryKey?: TQueryKey, options?: Omit<UseQueryOptions<TData, TError>, 
"queryKey" | "queryFn">) => useSuspenseQuery<TData, TError>({ queryKey: 
Common.UseTaskInstanceServiceGetMappedTaskInstancesKeyFn({ dagId, dagRunId, 
durationGt, durationGte, durationLt, durationLte, endDateGt, endDateGte, 
endDateLt, endDateLte, executor, limit, logicalDateGt, logicalDateGte, 
logicalDateLt, logicalDateLte, offset, operator, orderBy, pool, queue, 
runAfterGt, runAfterGte, runAfterLt, runAfterLte, startDa [...]
+}, queryKey?: TQueryKey, options?: Omit<UseQueryOptions<TData, TError>, 
"queryKey" | "queryFn">) => useSuspenseQuery<TData, TError>({ queryKey: 
Common.UseTaskInstanceServiceGetMappedTaskInstancesKeyFn({ dagId, dagRunId, 
durationGt, durationGte, durationLt, durationLte, endDateGt, endDateGte, 
endDateLt, endDateLte, executor, limit, logicalDateGt, logicalDateGte, 
logicalDateLt, logicalDateLte, mapIndex, offset, operator, orderBy, pool, 
queue, runAfterGt, runAfterGte, runAfterLt, runAfterLt [...]
 /**
 * Get Task Instance Dependencies
 * Get dependencies blocking task from getting scheduled.
@@ -923,13 +925,14 @@ export const 
useTaskInstanceServiceGetMappedTaskInstanceSuspense = <TData = Comm
 * @param data.versionNumber
 * @param data.tryNumber
 * @param data.operator
+* @param data.mapIndex
 * @param data.limit
 * @param data.offset
 * @param data.orderBy
 * @returns TaskInstanceCollectionResponse Successful Response
 * @throws ApiError
 */
-export const useTaskInstanceServiceGetTaskInstancesSuspense = <TData = 
Common.TaskInstanceServiceGetTaskInstancesDefaultResponse, TError = unknown, 
TQueryKey extends Array<unknown> = unknown[]>({ dagId, dagRunId, durationGt, 
durationGte, durationLt, durationLte, endDateGt, endDateGte, endDateLt, 
endDateLte, executor, limit, logicalDateGt, logicalDateGte, logicalDateLt, 
logicalDateLte, offset, operator, orderBy, pool, queue, runAfterGt, 
runAfterGte, runAfterLt, runAfterLte, startDateGt, s [...]
+export const useTaskInstanceServiceGetTaskInstancesSuspense = <TData = 
Common.TaskInstanceServiceGetTaskInstancesDefaultResponse, TError = unknown, 
TQueryKey extends Array<unknown> = unknown[]>({ dagId, dagRunId, durationGt, 
durationGte, durationLt, durationLte, endDateGt, endDateGte, endDateLt, 
endDateLte, executor, limit, logicalDateGt, logicalDateGte, logicalDateLt, 
logicalDateLte, mapIndex, offset, operator, orderBy, pool, queue, runAfterGt, 
runAfterGte, runAfterLt, runAfterLte, star [...]
   dagId: string;
   dagRunId: string;
   durationGt?: number;
@@ -946,6 +949,7 @@ export const useTaskInstanceServiceGetTaskInstancesSuspense 
= <TData = Common.Ta
   logicalDateGte?: string;
   logicalDateLt?: string;
   logicalDateLte?: string;
+  mapIndex?: number[];
   offset?: number;
   operator?: string[];
   orderBy?: string[];
@@ -968,7 +972,7 @@ export const useTaskInstanceServiceGetTaskInstancesSuspense 
= <TData = Common.Ta
   updatedAtLt?: string;
   updatedAtLte?: string;
   versionNumber?: number[];
-}, queryKey?: TQueryKey, options?: Omit<UseQueryOptions<TData, TError>, 
"queryKey" | "queryFn">) => useSuspenseQuery<TData, TError>({ queryKey: 
Common.UseTaskInstanceServiceGetTaskInstancesKeyFn({ dagId, dagRunId, 
durationGt, durationGte, durationLt, durationLte, endDateGt, endDateGte, 
endDateLt, endDateLte, executor, limit, logicalDateGt, logicalDateGte, 
logicalDateLt, logicalDateLte, offset, operator, orderBy, pool, queue, 
runAfterGt, runAfterGte, runAfterLt, runAfterLte, startDateGt,  [...]
+}, queryKey?: TQueryKey, options?: Omit<UseQueryOptions<TData, TError>, 
"queryKey" | "queryFn">) => useSuspenseQuery<TData, TError>({ queryKey: 
Common.UseTaskInstanceServiceGetTaskInstancesKeyFn({ dagId, dagRunId, 
durationGt, durationGte, durationLt, durationLte, endDateGt, endDateGte, 
endDateLt, endDateLte, executor, limit, logicalDateGt, logicalDateGte, 
logicalDateLt, logicalDateLte, mapIndex, offset, operator, orderBy, pool, 
queue, runAfterGt, runAfterGte, runAfterLt, runAfterLte, sta [...]
 /**
 * Get Task Instance Try Details
 * Get task instance details by try number.
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 a9c1a84e22a..3fc3c07388c 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
@@ -2055,6 +2055,7 @@ export class TaskInstanceService {
      * @param data.versionNumber
      * @param data.tryNumber
      * @param data.operator
+     * @param data.mapIndex
      * @param data.limit
      * @param data.offset
      * @param data.orderBy
@@ -2102,6 +2103,7 @@ export class TaskInstanceService {
                 version_number: data.versionNumber,
                 try_number: data.tryNumber,
                 operator: data.operator,
+                map_index: data.mapIndex,
                 limit: data.limit,
                 offset: data.offset,
                 order_by: data.orderBy
@@ -2349,6 +2351,7 @@ export class TaskInstanceService {
      * @param data.versionNumber
      * @param data.tryNumber
      * @param data.operator
+     * @param data.mapIndex
      * @param data.limit
      * @param data.offset
      * @param data.orderBy
@@ -2397,6 +2400,7 @@ export class TaskInstanceService {
                 version_number: data.versionNumber,
                 try_number: data.tryNumber,
                 operator: data.operator,
+                map_index: data.mapIndex,
                 limit: data.limit,
                 offset: data.offset,
                 order_by: data.orderBy
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 1e94eb66522..92a222c9ee2 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
@@ -2616,6 +2616,7 @@ export type GetMappedTaskInstancesData = {
     logicalDateGte?: string | null;
     logicalDateLt?: string | null;
     logicalDateLte?: string | null;
+    mapIndex?: Array<(number)>;
     offset?: number;
     operator?: Array<(string)>;
     orderBy?: Array<(string)>;
@@ -2714,6 +2715,7 @@ export type GetTaskInstancesData = {
     logicalDateGte?: string | null;
     logicalDateLt?: string | null;
     logicalDateLte?: string | null;
+    mapIndex?: Array<(number)>;
     offset?: number;
     operator?: Array<(string)>;
     orderBy?: Array<(string)>;
diff --git a/airflow-core/src/airflow/ui/src/layouts/Details/Gantt/Gantt.tsx 
b/airflow-core/src/airflow/ui/src/layouts/Details/Gantt/Gantt.tsx
index 4e11f390224..154b6e016cd 100644
--- a/airflow-core/src/airflow/ui/src/layouts/Details/Gantt/Gantt.tsx
+++ b/airflow-core/src/airflow/ui/src/layouts/Details/Gantt/Gantt.tsx
@@ -106,11 +106,12 @@ export const Gantt = ({ limit }: Props) => {
     state: selectedRun?.state,
   });
 
-  // Get individual task instances for tasks (which have start/end times)
+  // Get non mapped task instances for tasks (which have start/end times)
   const { data: taskInstancesData, isLoading: tiLoading } = 
useTaskInstanceServiceGetTaskInstances(
     {
       dagId,
       dagRunId: runId,
+      mapIndex: [-1],
     },
     undefined,
     {
diff --git 
a/airflow-core/tests/unit/api_fastapi/core_api/routes/public/test_task_instances.py
 
b/airflow-core/tests/unit/api_fastapi/core_api/routes/public/test_task_instances.py
index 2c10ef1e341..191276ea74b 100644
--- 
a/airflow-core/tests/unit/api_fastapi/core_api/routes/public/test_task_instances.py
+++ 
b/airflow-core/tests/unit/api_fastapi/core_api/routes/public/test_task_instances.py
@@ -884,6 +884,8 @@ class TestGetMappedTaskInstances:
             ({"queue": "test_queue"}, 0, 0),
             ({"executor": "default"}, 3, 3),
             ({"executor": "no_exec"}, 0, 0),
+            ({"map_index": [0, 1]}, 2, 2),
+            ({"map_index": [5]}, 0, 0),
         ],
     )
     def test_mapped_task_instances_filters(
@@ -1225,6 +1227,23 @@ class TestGetTaskInstances(TestTaskInstanceEndpoint):
                 5,
                 id="test operator type filter filter",
             ),
+            pytest.param(
+                [
+                    {"map_index": 0},
+                    {"map_index": 1},
+                    {"map_index": 2},
+                    {"map_index": 3},
+                    {"map_index": 4},
+                    {"map_index": 5},
+                    {"map_index": 6},
+                    {"map_index": 7},
+                ],
+                True,
+                ("/dags/~/dagRuns/~/taskInstances"),
+                {"map_index": [0, 1]},
+                2,
+                id="test map_index filter",
+            ),
         ],
     )
     @pytest.mark.usefixtures("make_dag_with_multiple_versions")


Reply via email to