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

kaxilnaik pushed a commit to branch v3-0-test
in repository https://gitbox.apache.org/repos/asf/airflow.git


The following commit(s) were added to refs/heads/v3-0-test by this push:
     new 377160cfb30 Rename operation IDs for task instance endpoints to 
include map index… (#49608)
377160cfb30 is described below

commit 377160cfb30f20f2a65abfc46d55caaeee4a51c9
Author: Abhishek <abhishek.bha...@hotmail.com>
AuthorDate: Thu Apr 24 17:42:59 2025 +0530

    Rename operation IDs for task instance endpoints to include map index… 
(#49608)
    
    * Rename operation IDs for task instance endpoints to include map index for 
openapi spec validator
    
    * refactor: Update TaskInstanceService methods and types to use map index 
for dependencies
    
    * Add OpenAPI validation to FastAPI spec generation script
    
    * refactor: streamline OpenAPI validation process by removing redundant 
exit checks
    
    (cherry picked from commit 1cd86146eecf93128ca354d7c88f8ad2c1212a20)
---
 .pre-commit-config.yaml                            |  2 +-
 .../core_api/openapi/v1-rest-api-generated.yaml    |  6 ++--
 .../core_api/routes/public/task_instances.py       |  6 ++++
 .../src/airflow/ui/openapi-gen/queries/common.ts   | 42 +++++++++++-----------
 .../ui/openapi-gen/queries/ensureQueryData.ts      | 13 +++----
 .../src/airflow/ui/openapi-gen/queries/prefetch.ts | 13 +++----
 .../src/airflow/ui/openapi-gen/queries/queries.ts  | 39 +++++++++++---------
 .../src/airflow/ui/openapi-gen/queries/suspense.ts | 21 ++++++-----
 .../ui/openapi-gen/requests/services.gen.ts        | 42 +++++++++++-----------
 .../airflow/ui/openapi-gen/requests/types.gen.ts   | 30 ++++++++--------
 .../in_container/run_update_fastapi_api_spec.py    | 18 ++++++++++
 11 files changed, 134 insertions(+), 98 deletions(-)

diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 1fc3e81f2ad..42a4675dab1 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -1313,7 +1313,7 @@ repos:
         pass_filenames: false
         files: 
^airflow-core/src/airflow/api_fastapi/.*\.py$|^airflow-core/src/airflow/api_fastapi/auth/managers/simple/.*\.py$|^providers/fab/src/airflow/providers/fab/auth_manager/api_fastapi/.*\.py$
         exclude: ^airflow-core/src/airflow/api_fastapi/execution_api/.*
-        additional_dependencies: ['rich>=12.4.4']
+        additional_dependencies: ['rich>=12.4.4', 
'openapi-spec-validator>=0.7.1']
       - id: ts-compile-format-lint-ui
         name: Compile / format / lint UI
         description: TS types generation / ESLint / Prettier new UI files
diff --git 
a/airflow-core/src/airflow/api_fastapi/core_api/openapi/v1-rest-api-generated.yaml
 
b/airflow-core/src/airflow/api_fastapi/core_api/openapi/v1-rest-api-generated.yaml
index b14b51fe415..b596b3f9fab 100644
--- 
a/airflow-core/src/airflow/api_fastapi/core_api/openapi/v1-rest-api-generated.yaml
+++ 
b/airflow-core/src/airflow/api_fastapi/core_api/openapi/v1-rest-api-generated.yaml
@@ -4781,7 +4781,7 @@ paths:
       - Task Instance
       summary: Get Task Instance Dependencies
       description: Get dependencies blocking task from getting scheduled.
-      operationId: get_task_instance_dependencies
+      operationId: get_task_instance_dependencies_by_map_index
       security:
       - OAuth2PasswordBearer: []
       parameters:
@@ -5106,7 +5106,7 @@ paths:
       - Task Instance
       summary: Patch Task Instance
       description: Update a task instance.
-      operationId: patch_task_instance
+      operationId: patch_task_instance_by_map_index
       security:
       - OAuth2PasswordBearer: []
       parameters:
@@ -5701,7 +5701,7 @@ paths:
       - Task Instance
       summary: Patch Task Instance Dry Run
       description: Update a task instance dry_run mode.
-      operationId: patch_task_instance_dry_run
+      operationId: patch_task_instance_dry_run_by_map_index
       security:
       - OAuth2PasswordBearer: []
       parameters:
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 4a39921eedd..715c15ed4e1 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
@@ -221,11 +221,13 @@ def get_mapped_task_instances(
     task_instances_prefix + "/{task_id}/dependencies",
     responses=create_openapi_http_exception_doc([status.HTTP_404_NOT_FOUND]),
     dependencies=[Depends(requires_access_dag(method="GET", 
access_entity=DagAccessEntity.TASK_INSTANCE))],
+    operation_id="get_task_instance_dependencies",
 )
 @task_instances_router.get(
     task_instances_prefix + "/{task_id}/{map_index}/dependencies",
     responses=create_openapi_http_exception_doc([status.HTTP_404_NOT_FOUND]),
     dependencies=[Depends(requires_access_dag(method="GET", 
access_entity=DagAccessEntity.TASK_INSTANCE))],
+    operation_id="get_task_instance_dependencies_by_map_index",
 )
 def get_task_instance_dependencies(
     dag_id: str,
@@ -775,6 +777,7 @@ def _patch_ti_validate_request(
         [status.HTTP_404_NOT_FOUND, status.HTTP_400_BAD_REQUEST],
     ),
     dependencies=[Depends(requires_access_dag(method="PUT", 
access_entity=DagAccessEntity.TASK_INSTANCE))],
+    operation_id="patch_task_instance_dry_run",
 )
 @task_instances_router.patch(
     task_instances_prefix + "/{task_id}/{map_index}/dry_run",
@@ -782,6 +785,7 @@ def _patch_ti_validate_request(
         [status.HTTP_404_NOT_FOUND, status.HTTP_400_BAD_REQUEST],
     ),
     dependencies=[Depends(requires_access_dag(method="PUT", 
access_entity=DagAccessEntity.TASK_INSTANCE))],
+    operation_id="patch_task_instance_dry_run_by_map_index",
 )
 def patch_task_instance_dry_run(
     dag_id: str,
@@ -843,6 +847,7 @@ def patch_task_instance_dry_run(
         Depends(action_logging()),
         Depends(requires_access_dag(method="PUT", 
access_entity=DagAccessEntity.TASK_INSTANCE)),
     ],
+    operation_id="patch_task_instance",
 )
 @task_instances_router.patch(
     task_instances_prefix + "/{task_id}/{map_index}",
@@ -853,6 +858,7 @@ def patch_task_instance_dry_run(
         Depends(action_logging()),
         Depends(requires_access_dag(method="PUT", 
access_entity=DagAccessEntity.TASK_INSTANCE)),
     ],
+    operation_id="patch_task_instance_by_map_index",
 )
 def patch_task_instance(
     dag_id: str,
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 a59e98c888b..b623f927865 100644
--- a/airflow-core/src/airflow/ui/openapi-gen/queries/common.ts
+++ b/airflow-core/src/airflow/ui/openapi-gen/queries/common.ts
@@ -921,16 +921,16 @@ export const 
UseTaskInstanceServiceGetMappedTaskInstancesKeyFn = (
     },
   ]),
 ];
-export type TaskInstanceServiceGetTaskInstanceDependenciesDefaultResponse = 
Awaited<
-  ReturnType<typeof TaskInstanceService.getTaskInstanceDependencies>
+export type 
TaskInstanceServiceGetTaskInstanceDependenciesByMapIndexDefaultResponse = 
Awaited<
+  ReturnType<typeof TaskInstanceService.getTaskInstanceDependenciesByMapIndex>
 >;
-export type TaskInstanceServiceGetTaskInstanceDependenciesQueryResult<
-  TData = TaskInstanceServiceGetTaskInstanceDependenciesDefaultResponse,
+export type 
TaskInstanceServiceGetTaskInstanceDependenciesByMapIndexQueryResult<
+  TData = 
TaskInstanceServiceGetTaskInstanceDependenciesByMapIndexDefaultResponse,
   TError = unknown,
 > = UseQueryResult<TData, TError>;
-export const useTaskInstanceServiceGetTaskInstanceDependenciesKey =
-  "TaskInstanceServiceGetTaskInstanceDependencies";
-export const UseTaskInstanceServiceGetTaskInstanceDependenciesKeyFn = (
+export const useTaskInstanceServiceGetTaskInstanceDependenciesByMapIndexKey =
+  "TaskInstanceServiceGetTaskInstanceDependenciesByMapIndex";
+export const UseTaskInstanceServiceGetTaskInstanceDependenciesByMapIndexKeyFn 
= (
   {
     dagId,
     dagRunId,
@@ -944,19 +944,19 @@ export const 
UseTaskInstanceServiceGetTaskInstanceDependenciesKeyFn = (
   },
   queryKey?: Array<unknown>,
 ) => [
-  useTaskInstanceServiceGetTaskInstanceDependenciesKey,
+  useTaskInstanceServiceGetTaskInstanceDependenciesByMapIndexKey,
   ...(queryKey ?? [{ dagId, dagRunId, mapIndex, taskId }]),
 ];
-export type TaskInstanceServiceGetTaskInstanceDependencies1DefaultResponse = 
Awaited<
-  ReturnType<typeof TaskInstanceService.getTaskInstanceDependencies1>
+export type TaskInstanceServiceGetTaskInstanceDependenciesDefaultResponse = 
Awaited<
+  ReturnType<typeof TaskInstanceService.getTaskInstanceDependencies>
 >;
-export type TaskInstanceServiceGetTaskInstanceDependencies1QueryResult<
-  TData = TaskInstanceServiceGetTaskInstanceDependencies1DefaultResponse,
+export type TaskInstanceServiceGetTaskInstanceDependenciesQueryResult<
+  TData = TaskInstanceServiceGetTaskInstanceDependenciesDefaultResponse,
   TError = unknown,
 > = UseQueryResult<TData, TError>;
-export const useTaskInstanceServiceGetTaskInstanceDependencies1Key =
-  "TaskInstanceServiceGetTaskInstanceDependencies1";
-export const UseTaskInstanceServiceGetTaskInstanceDependencies1KeyFn = (
+export const useTaskInstanceServiceGetTaskInstanceDependenciesKey =
+  "TaskInstanceServiceGetTaskInstanceDependencies";
+export const UseTaskInstanceServiceGetTaskInstanceDependenciesKeyFn = (
   {
     dagId,
     dagRunId,
@@ -970,7 +970,7 @@ export const 
UseTaskInstanceServiceGetTaskInstanceDependencies1KeyFn = (
   },
   queryKey?: Array<unknown>,
 ) => [
-  useTaskInstanceServiceGetTaskInstanceDependencies1Key,
+  useTaskInstanceServiceGetTaskInstanceDependenciesKey,
   ...(queryKey ?? [{ dagId, dagRunId, mapIndex, taskId }]),
 ];
 export type TaskInstanceServiceGetTaskInstanceTriesDefaultResponse = Awaited<
@@ -1872,15 +1872,15 @@ export type DagServicePatchDagMutationResult = 
Awaited<ReturnType<typeof DagServ
 export type TaskInstanceServicePatchTaskInstanceMutationResult = Awaited<
   ReturnType<typeof TaskInstanceService.patchTaskInstance>
 >;
-export type TaskInstanceServicePatchTaskInstance1MutationResult = Awaited<
-  ReturnType<typeof TaskInstanceService.patchTaskInstance1>
+export type TaskInstanceServicePatchTaskInstanceByMapIndexMutationResult = 
Awaited<
+  ReturnType<typeof TaskInstanceService.patchTaskInstanceByMapIndex>
+>;
+export type TaskInstanceServicePatchTaskInstanceDryRunByMapIndexMutationResult 
= Awaited<
+  ReturnType<typeof TaskInstanceService.patchTaskInstanceDryRunByMapIndex>
 >;
 export type TaskInstanceServicePatchTaskInstanceDryRunMutationResult = Awaited<
   ReturnType<typeof TaskInstanceService.patchTaskInstanceDryRun>
 >;
-export type TaskInstanceServicePatchTaskInstanceDryRun1MutationResult = 
Awaited<
-  ReturnType<typeof TaskInstanceService.patchTaskInstanceDryRun1>
->;
 export type PoolServicePatchPoolMutationResult = Awaited<ReturnType<typeof 
PoolService.patchPool>>;
 export type PoolServiceBulkPoolsMutationResult = Awaited<ReturnType<typeof 
PoolService.bulkPools>>;
 export type XcomServiceUpdateXcomEntryMutationResult = Awaited<
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 c97c8ac5c66..fa4c7e0a31d 100644
--- a/airflow-core/src/airflow/ui/openapi-gen/queries/ensureQueryData.ts
+++ b/airflow-core/src/airflow/ui/openapi-gen/queries/ensureQueryData.ts
@@ -1263,7 +1263,7 @@ export const 
ensureUseTaskInstanceServiceGetMappedTaskInstancesData = (
  * @returns TaskDependencyCollectionResponse Successful Response
  * @throws ApiError
  */
-export const ensureUseTaskInstanceServiceGetTaskInstanceDependenciesData = (
+export const 
ensureUseTaskInstanceServiceGetTaskInstanceDependenciesByMapIndexData = (
   queryClient: QueryClient,
   {
     dagId,
@@ -1278,13 +1278,14 @@ export const 
ensureUseTaskInstanceServiceGetTaskInstanceDependenciesData = (
   },
 ) =>
   queryClient.ensureQueryData({
-    queryKey: Common.UseTaskInstanceServiceGetTaskInstanceDependenciesKeyFn({
+    queryKey: 
Common.UseTaskInstanceServiceGetTaskInstanceDependenciesByMapIndexKeyFn({
       dagId,
       dagRunId,
       mapIndex,
       taskId,
     }),
-    queryFn: () => TaskInstanceService.getTaskInstanceDependencies({ dagId, 
dagRunId, mapIndex, taskId }),
+    queryFn: () =>
+      TaskInstanceService.getTaskInstanceDependenciesByMapIndex({ dagId, 
dagRunId, mapIndex, taskId }),
   });
 /**
  * Get Task Instance Dependencies
@@ -1297,7 +1298,7 @@ export const 
ensureUseTaskInstanceServiceGetTaskInstanceDependenciesData = (
  * @returns TaskDependencyCollectionResponse Successful Response
  * @throws ApiError
  */
-export const ensureUseTaskInstanceServiceGetTaskInstanceDependencies1Data = (
+export const ensureUseTaskInstanceServiceGetTaskInstanceDependenciesData = (
   queryClient: QueryClient,
   {
     dagId,
@@ -1312,13 +1313,13 @@ export const 
ensureUseTaskInstanceServiceGetTaskInstanceDependencies1Data = (
   },
 ) =>
   queryClient.ensureQueryData({
-    queryKey: Common.UseTaskInstanceServiceGetTaskInstanceDependencies1KeyFn({
+    queryKey: Common.UseTaskInstanceServiceGetTaskInstanceDependenciesKeyFn({
       dagId,
       dagRunId,
       mapIndex,
       taskId,
     }),
-    queryFn: () => TaskInstanceService.getTaskInstanceDependencies1({ dagId, 
dagRunId, mapIndex, taskId }),
+    queryFn: () => TaskInstanceService.getTaskInstanceDependencies({ dagId, 
dagRunId, mapIndex, taskId }),
   });
 /**
  * Get Task Instance Tries
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 c9f715befa4..191e76bc274 100644
--- a/airflow-core/src/airflow/ui/openapi-gen/queries/prefetch.ts
+++ b/airflow-core/src/airflow/ui/openapi-gen/queries/prefetch.ts
@@ -1263,7 +1263,7 @@ export const 
prefetchUseTaskInstanceServiceGetMappedTaskInstances = (
  * @returns TaskDependencyCollectionResponse Successful Response
  * @throws ApiError
  */
-export const prefetchUseTaskInstanceServiceGetTaskInstanceDependencies = (
+export const 
prefetchUseTaskInstanceServiceGetTaskInstanceDependenciesByMapIndex = (
   queryClient: QueryClient,
   {
     dagId,
@@ -1278,13 +1278,14 @@ export const 
prefetchUseTaskInstanceServiceGetTaskInstanceDependencies = (
   },
 ) =>
   queryClient.prefetchQuery({
-    queryKey: Common.UseTaskInstanceServiceGetTaskInstanceDependenciesKeyFn({
+    queryKey: 
Common.UseTaskInstanceServiceGetTaskInstanceDependenciesByMapIndexKeyFn({
       dagId,
       dagRunId,
       mapIndex,
       taskId,
     }),
-    queryFn: () => TaskInstanceService.getTaskInstanceDependencies({ dagId, 
dagRunId, mapIndex, taskId }),
+    queryFn: () =>
+      TaskInstanceService.getTaskInstanceDependenciesByMapIndex({ dagId, 
dagRunId, mapIndex, taskId }),
   });
 /**
  * Get Task Instance Dependencies
@@ -1297,7 +1298,7 @@ export const 
prefetchUseTaskInstanceServiceGetTaskInstanceDependencies = (
  * @returns TaskDependencyCollectionResponse Successful Response
  * @throws ApiError
  */
-export const prefetchUseTaskInstanceServiceGetTaskInstanceDependencies1 = (
+export const prefetchUseTaskInstanceServiceGetTaskInstanceDependencies = (
   queryClient: QueryClient,
   {
     dagId,
@@ -1312,13 +1313,13 @@ export const 
prefetchUseTaskInstanceServiceGetTaskInstanceDependencies1 = (
   },
 ) =>
   queryClient.prefetchQuery({
-    queryKey: Common.UseTaskInstanceServiceGetTaskInstanceDependencies1KeyFn({
+    queryKey: Common.UseTaskInstanceServiceGetTaskInstanceDependenciesKeyFn({
       dagId,
       dagRunId,
       mapIndex,
       taskId,
     }),
-    queryFn: () => TaskInstanceService.getTaskInstanceDependencies1({ dagId, 
dagRunId, mapIndex, taskId }),
+    queryFn: () => TaskInstanceService.getTaskInstanceDependencies({ dagId, 
dagRunId, mapIndex, taskId }),
   });
 /**
  * Get Task Instance Tries
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 92d6b15d7d8..e1b770b8e7d 100644
--- a/airflow-core/src/airflow/ui/openapi-gen/queries/queries.ts
+++ b/airflow-core/src/airflow/ui/openapi-gen/queries/queries.ts
@@ -1530,8 +1530,8 @@ export const useTaskInstanceServiceGetMappedTaskInstances 
= <
  * @returns TaskDependencyCollectionResponse Successful Response
  * @throws ApiError
  */
-export const useTaskInstanceServiceGetTaskInstanceDependencies = <
-  TData = Common.TaskInstanceServiceGetTaskInstanceDependenciesDefaultResponse,
+export const useTaskInstanceServiceGetTaskInstanceDependenciesByMapIndex = <
+  TData = 
Common.TaskInstanceServiceGetTaskInstanceDependenciesByMapIndexDefaultResponse,
   TError = unknown,
   TQueryKey extends Array<unknown> = unknown[],
 >(
@@ -1550,12 +1550,17 @@ export const 
useTaskInstanceServiceGetTaskInstanceDependencies = <
   options?: Omit<UseQueryOptions<TData, TError>, "queryKey" | "queryFn">,
 ) =>
   useQuery<TData, TError>({
-    queryKey: Common.UseTaskInstanceServiceGetTaskInstanceDependenciesKeyFn(
+    queryKey: 
Common.UseTaskInstanceServiceGetTaskInstanceDependenciesByMapIndexKeyFn(
       { dagId, dagRunId, mapIndex, taskId },
       queryKey,
     ),
     queryFn: () =>
-      TaskInstanceService.getTaskInstanceDependencies({ dagId, dagRunId, 
mapIndex, taskId }) as TData,
+      TaskInstanceService.getTaskInstanceDependenciesByMapIndex({
+        dagId,
+        dagRunId,
+        mapIndex,
+        taskId,
+      }) as TData,
     ...options,
   });
 /**
@@ -1569,8 +1574,8 @@ export const 
useTaskInstanceServiceGetTaskInstanceDependencies = <
  * @returns TaskDependencyCollectionResponse Successful Response
  * @throws ApiError
  */
-export const useTaskInstanceServiceGetTaskInstanceDependencies1 = <
-  TData = 
Common.TaskInstanceServiceGetTaskInstanceDependencies1DefaultResponse,
+export const useTaskInstanceServiceGetTaskInstanceDependencies = <
+  TData = Common.TaskInstanceServiceGetTaskInstanceDependenciesDefaultResponse,
   TError = unknown,
   TQueryKey extends Array<unknown> = unknown[],
 >(
@@ -1589,12 +1594,12 @@ export const 
useTaskInstanceServiceGetTaskInstanceDependencies1 = <
   options?: Omit<UseQueryOptions<TData, TError>, "queryKey" | "queryFn">,
 ) =>
   useQuery<TData, TError>({
-    queryKey: Common.UseTaskInstanceServiceGetTaskInstanceDependencies1KeyFn(
+    queryKey: Common.UseTaskInstanceServiceGetTaskInstanceDependenciesKeyFn(
       { dagId, dagRunId, mapIndex, taskId },
       queryKey,
     ),
     queryFn: () =>
-      TaskInstanceService.getTaskInstanceDependencies1({ dagId, dagRunId, 
mapIndex, taskId }) as TData,
+      TaskInstanceService.getTaskInstanceDependencies({ dagId, dagRunId, 
mapIndex, taskId }) as TData,
     ...options,
   });
 /**
@@ -4063,8 +4068,8 @@ export const useTaskInstanceServicePatchTaskInstance = <
  * @returns TaskInstanceCollectionResponse Successful Response
  * @throws ApiError
  */
-export const useTaskInstanceServicePatchTaskInstance1 = <
-  TData = Common.TaskInstanceServicePatchTaskInstance1MutationResult,
+export const useTaskInstanceServicePatchTaskInstanceByMapIndex = <
+  TData = Common.TaskInstanceServicePatchTaskInstanceByMapIndexMutationResult,
   TError = unknown,
   TContext = unknown,
 >(
@@ -4099,7 +4104,7 @@ export const useTaskInstanceServicePatchTaskInstance1 = <
     TContext
   >({
     mutationFn: ({ dagId, dagRunId, mapIndex, requestBody, taskId, updateMask 
}) =>
-      TaskInstanceService.patchTaskInstance1({
+      TaskInstanceService.patchTaskInstanceByMapIndex({
         dagId,
         dagRunId,
         mapIndex,
@@ -4122,8 +4127,8 @@ export const useTaskInstanceServicePatchTaskInstance1 = <
  * @returns TaskInstanceCollectionResponse Successful Response
  * @throws ApiError
  */
-export const useTaskInstanceServicePatchTaskInstanceDryRun = <
-  TData = Common.TaskInstanceServicePatchTaskInstanceDryRunMutationResult,
+export const useTaskInstanceServicePatchTaskInstanceDryRunByMapIndex = <
+  TData = 
Common.TaskInstanceServicePatchTaskInstanceDryRunByMapIndexMutationResult,
   TError = unknown,
   TContext = unknown,
 >(
@@ -4158,7 +4163,7 @@ export const 
useTaskInstanceServicePatchTaskInstanceDryRun = <
     TContext
   >({
     mutationFn: ({ dagId, dagRunId, mapIndex, requestBody, taskId, updateMask 
}) =>
-      TaskInstanceService.patchTaskInstanceDryRun({
+      TaskInstanceService.patchTaskInstanceDryRunByMapIndex({
         dagId,
         dagRunId,
         mapIndex,
@@ -4181,8 +4186,8 @@ export const 
useTaskInstanceServicePatchTaskInstanceDryRun = <
  * @returns TaskInstanceCollectionResponse Successful Response
  * @throws ApiError
  */
-export const useTaskInstanceServicePatchTaskInstanceDryRun1 = <
-  TData = Common.TaskInstanceServicePatchTaskInstanceDryRun1MutationResult,
+export const useTaskInstanceServicePatchTaskInstanceDryRun = <
+  TData = Common.TaskInstanceServicePatchTaskInstanceDryRunMutationResult,
   TError = unknown,
   TContext = unknown,
 >(
@@ -4217,7 +4222,7 @@ export const 
useTaskInstanceServicePatchTaskInstanceDryRun1 = <
     TContext
   >({
     mutationFn: ({ dagId, dagRunId, mapIndex, requestBody, taskId, updateMask 
}) =>
-      TaskInstanceService.patchTaskInstanceDryRun1({
+      TaskInstanceService.patchTaskInstanceDryRun({
         dagId,
         dagRunId,
         mapIndex,
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 00cd46c9d0e..405a2093211 100644
--- a/airflow-core/src/airflow/ui/openapi-gen/queries/suspense.ts
+++ b/airflow-core/src/airflow/ui/openapi-gen/queries/suspense.ts
@@ -1507,8 +1507,8 @@ export const 
useTaskInstanceServiceGetMappedTaskInstancesSuspense = <
  * @returns TaskDependencyCollectionResponse Successful Response
  * @throws ApiError
  */
-export const useTaskInstanceServiceGetTaskInstanceDependenciesSuspense = <
-  TData = Common.TaskInstanceServiceGetTaskInstanceDependenciesDefaultResponse,
+export const 
useTaskInstanceServiceGetTaskInstanceDependenciesByMapIndexSuspense = <
+  TData = 
Common.TaskInstanceServiceGetTaskInstanceDependenciesByMapIndexDefaultResponse,
   TError = unknown,
   TQueryKey extends Array<unknown> = unknown[],
 >(
@@ -1527,12 +1527,17 @@ export const 
useTaskInstanceServiceGetTaskInstanceDependenciesSuspense = <
   options?: Omit<UseQueryOptions<TData, TError>, "queryKey" | "queryFn">,
 ) =>
   useSuspenseQuery<TData, TError>({
-    queryKey: Common.UseTaskInstanceServiceGetTaskInstanceDependenciesKeyFn(
+    queryKey: 
Common.UseTaskInstanceServiceGetTaskInstanceDependenciesByMapIndexKeyFn(
       { dagId, dagRunId, mapIndex, taskId },
       queryKey,
     ),
     queryFn: () =>
-      TaskInstanceService.getTaskInstanceDependencies({ dagId, dagRunId, 
mapIndex, taskId }) as TData,
+      TaskInstanceService.getTaskInstanceDependenciesByMapIndex({
+        dagId,
+        dagRunId,
+        mapIndex,
+        taskId,
+      }) as TData,
     ...options,
   });
 /**
@@ -1546,8 +1551,8 @@ export const 
useTaskInstanceServiceGetTaskInstanceDependenciesSuspense = <
  * @returns TaskDependencyCollectionResponse Successful Response
  * @throws ApiError
  */
-export const useTaskInstanceServiceGetTaskInstanceDependencies1Suspense = <
-  TData = 
Common.TaskInstanceServiceGetTaskInstanceDependencies1DefaultResponse,
+export const useTaskInstanceServiceGetTaskInstanceDependenciesSuspense = <
+  TData = Common.TaskInstanceServiceGetTaskInstanceDependenciesDefaultResponse,
   TError = unknown,
   TQueryKey extends Array<unknown> = unknown[],
 >(
@@ -1566,12 +1571,12 @@ export const 
useTaskInstanceServiceGetTaskInstanceDependencies1Suspense = <
   options?: Omit<UseQueryOptions<TData, TError>, "queryKey" | "queryFn">,
 ) =>
   useSuspenseQuery<TData, TError>({
-    queryKey: Common.UseTaskInstanceServiceGetTaskInstanceDependencies1KeyFn(
+    queryKey: Common.UseTaskInstanceServiceGetTaskInstanceDependenciesKeyFn(
       { dagId, dagRunId, mapIndex, taskId },
       queryKey,
     ),
     queryFn: () =>
-      TaskInstanceService.getTaskInstanceDependencies1({ dagId, dagRunId, 
mapIndex, taskId }) as TData,
+      TaskInstanceService.getTaskInstanceDependencies({ dagId, dagRunId, 
mapIndex, taskId }) as TData,
     ...options,
   });
 /**
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 c4c6b7bb544..711c91093d8 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
@@ -118,18 +118,18 @@ import type {
   PatchTaskInstanceResponse,
   GetMappedTaskInstancesData,
   GetMappedTaskInstancesResponse,
+  GetTaskInstanceDependenciesByMapIndexData,
+  GetTaskInstanceDependenciesByMapIndexResponse,
   GetTaskInstanceDependenciesData,
   GetTaskInstanceDependenciesResponse,
-  GetTaskInstanceDependencies1Data,
-  GetTaskInstanceDependencies1Response,
   GetTaskInstanceTriesData,
   GetTaskInstanceTriesResponse,
   GetMappedTaskInstanceTriesData,
   GetMappedTaskInstanceTriesResponse,
   GetMappedTaskInstanceData,
   GetMappedTaskInstanceResponse,
-  PatchTaskInstance1Data,
-  PatchTaskInstance1Response,
+  PatchTaskInstanceByMapIndexData,
+  PatchTaskInstanceByMapIndexResponse,
   GetTaskInstancesData,
   GetTaskInstancesResponse,
   GetTaskInstancesBatchData,
@@ -140,10 +140,10 @@ import type {
   GetMappedTaskInstanceTryDetailsResponse,
   PostClearTaskInstancesData,
   PostClearTaskInstancesResponse,
+  PatchTaskInstanceDryRunByMapIndexData,
+  PatchTaskInstanceDryRunByMapIndexResponse,
   PatchTaskInstanceDryRunData,
   PatchTaskInstanceDryRunResponse,
-  PatchTaskInstanceDryRun1Data,
-  PatchTaskInstanceDryRun1Response,
   GetLogData,
   GetLogResponse,
   GetImportErrorData,
@@ -2030,9 +2030,9 @@ export class TaskInstanceService {
    * @returns TaskDependencyCollectionResponse Successful Response
    * @throws ApiError
    */
-  public static getTaskInstanceDependencies(
-    data: GetTaskInstanceDependenciesData,
-  ): CancelablePromise<GetTaskInstanceDependenciesResponse> {
+  public static getTaskInstanceDependenciesByMapIndex(
+    data: GetTaskInstanceDependenciesByMapIndexData,
+  ): CancelablePromise<GetTaskInstanceDependenciesByMapIndexResponse> {
     return __request(OpenAPI, {
       method: "GET",
       url: 
"/api/v2/dags/{dag_id}/dagRuns/{dag_run_id}/taskInstances/{task_id}/{map_index}/dependencies",
@@ -2062,9 +2062,9 @@ export class TaskInstanceService {
    * @returns TaskDependencyCollectionResponse Successful Response
    * @throws ApiError
    */
-  public static getTaskInstanceDependencies1(
-    data: GetTaskInstanceDependencies1Data,
-  ): CancelablePromise<GetTaskInstanceDependencies1Response> {
+  public static getTaskInstanceDependencies(
+    data: GetTaskInstanceDependenciesData,
+  ): CancelablePromise<GetTaskInstanceDependenciesResponse> {
     return __request(OpenAPI, {
       method: "GET",
       url: 
"/api/v2/dags/{dag_id}/dagRuns/{dag_run_id}/taskInstances/{task_id}/dependencies",
@@ -2195,9 +2195,9 @@ export class TaskInstanceService {
    * @returns TaskInstanceCollectionResponse Successful Response
    * @throws ApiError
    */
-  public static patchTaskInstance1(
-    data: PatchTaskInstance1Data,
-  ): CancelablePromise<PatchTaskInstance1Response> {
+  public static patchTaskInstanceByMapIndex(
+    data: PatchTaskInstanceByMapIndexData,
+  ): CancelablePromise<PatchTaskInstanceByMapIndexResponse> {
     return __request(OpenAPI, {
       method: "PATCH",
       url: 
"/api/v2/dags/{dag_id}/dagRuns/{dag_run_id}/taskInstances/{task_id}/{map_index}",
@@ -2440,9 +2440,9 @@ export class TaskInstanceService {
    * @returns TaskInstanceCollectionResponse Successful Response
    * @throws ApiError
    */
-  public static patchTaskInstanceDryRun(
-    data: PatchTaskInstanceDryRunData,
-  ): CancelablePromise<PatchTaskInstanceDryRunResponse> {
+  public static patchTaskInstanceDryRunByMapIndex(
+    data: PatchTaskInstanceDryRunByMapIndexData,
+  ): CancelablePromise<PatchTaskInstanceDryRunByMapIndexResponse> {
     return __request(OpenAPI, {
       method: "PATCH",
       url: 
"/api/v2/dags/{dag_id}/dagRuns/{dag_run_id}/taskInstances/{task_id}/{map_index}/dry_run",
@@ -2480,9 +2480,9 @@ export class TaskInstanceService {
    * @returns TaskInstanceCollectionResponse Successful Response
    * @throws ApiError
    */
-  public static patchTaskInstanceDryRun1(
-    data: PatchTaskInstanceDryRun1Data,
-  ): CancelablePromise<PatchTaskInstanceDryRun1Response> {
+  public static patchTaskInstanceDryRun(
+    data: PatchTaskInstanceDryRunData,
+  ): CancelablePromise<PatchTaskInstanceDryRunResponse> {
     return __request(OpenAPI, {
       method: "PATCH",
       url: 
"/api/v2/dags/{dag_id}/dagRuns/{dag_run_id}/taskInstances/{task_id}/dry_run",
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 6348899d0f9..ba8bbb28d2d 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
@@ -2236,23 +2236,23 @@ export type GetMappedTaskInstancesData = {
 
 export type GetMappedTaskInstancesResponse = TaskInstanceCollectionResponse;
 
-export type GetTaskInstanceDependenciesData = {
+export type GetTaskInstanceDependenciesByMapIndexData = {
   dagId: string;
   dagRunId: string;
   mapIndex: number;
   taskId: string;
 };
 
-export type GetTaskInstanceDependenciesResponse = 
TaskDependencyCollectionResponse;
+export type GetTaskInstanceDependenciesByMapIndexResponse = 
TaskDependencyCollectionResponse;
 
-export type GetTaskInstanceDependencies1Data = {
+export type GetTaskInstanceDependenciesData = {
   dagId: string;
   dagRunId: string;
   mapIndex?: number;
   taskId: string;
 };
 
-export type GetTaskInstanceDependencies1Response = 
TaskDependencyCollectionResponse;
+export type GetTaskInstanceDependenciesResponse = 
TaskDependencyCollectionResponse;
 
 export type GetTaskInstanceTriesData = {
   dagId: string;
@@ -2281,7 +2281,7 @@ export type GetMappedTaskInstanceData = {
 
 export type GetMappedTaskInstanceResponse = TaskInstanceResponse;
 
-export type PatchTaskInstance1Data = {
+export type PatchTaskInstanceByMapIndexData = {
   dagId: string;
   dagRunId: string;
   mapIndex: number | null;
@@ -2290,7 +2290,7 @@ export type PatchTaskInstance1Data = {
   updateMask?: Array<string> | null;
 };
 
-export type PatchTaskInstance1Response = TaskInstanceCollectionResponse;
+export type PatchTaskInstanceByMapIndexResponse = 
TaskInstanceCollectionResponse;
 
 export type GetTaskInstancesData = {
   dagId: string;
@@ -2356,7 +2356,7 @@ export type PostClearTaskInstancesData = {
 
 export type PostClearTaskInstancesResponse = TaskInstanceCollectionResponse;
 
-export type PatchTaskInstanceDryRunData = {
+export type PatchTaskInstanceDryRunByMapIndexData = {
   dagId: string;
   dagRunId: string;
   mapIndex: number | null;
@@ -2365,9 +2365,9 @@ export type PatchTaskInstanceDryRunData = {
   updateMask?: Array<string> | null;
 };
 
-export type PatchTaskInstanceDryRunResponse = TaskInstanceCollectionResponse;
+export type PatchTaskInstanceDryRunByMapIndexResponse = 
TaskInstanceCollectionResponse;
 
-export type PatchTaskInstanceDryRun1Data = {
+export type PatchTaskInstanceDryRunData = {
   dagId: string;
   dagRunId: string;
   mapIndex?: number | null;
@@ -2376,7 +2376,7 @@ export type PatchTaskInstanceDryRun1Data = {
   updateMask?: Array<string> | null;
 };
 
-export type PatchTaskInstanceDryRun1Response = TaskInstanceCollectionResponse;
+export type PatchTaskInstanceDryRunResponse = TaskInstanceCollectionResponse;
 
 export type GetLogData = {
   accept?: "application/json" | "text/plain" | "*/*";
@@ -4258,7 +4258,7 @@ export type $OpenApiTs = {
   };
   
"/api/v2/dags/{dag_id}/dagRuns/{dag_run_id}/taskInstances/{task_id}/{map_index}/dependencies":
 {
     get: {
-      req: GetTaskInstanceDependenciesData;
+      req: GetTaskInstanceDependenciesByMapIndexData;
       res: {
         /**
          * Successful Response
@@ -4285,7 +4285,7 @@ export type $OpenApiTs = {
   };
   
"/api/v2/dags/{dag_id}/dagRuns/{dag_run_id}/taskInstances/{task_id}/dependencies":
 {
     get: {
-      req: GetTaskInstanceDependencies1Data;
+      req: GetTaskInstanceDependenciesData;
       res: {
         /**
          * Successful Response
@@ -4391,7 +4391,7 @@ export type $OpenApiTs = {
       };
     };
     patch: {
-      req: PatchTaskInstance1Data;
+      req: PatchTaskInstanceByMapIndexData;
       res: {
         /**
          * Successful Response
@@ -4561,7 +4561,7 @@ export type $OpenApiTs = {
   };
   
"/api/v2/dags/{dag_id}/dagRuns/{dag_run_id}/taskInstances/{task_id}/{map_index}/dry_run":
 {
     patch: {
-      req: PatchTaskInstanceDryRunData;
+      req: PatchTaskInstanceDryRunByMapIndexData;
       res: {
         /**
          * Successful Response
@@ -4592,7 +4592,7 @@ export type $OpenApiTs = {
   };
   
"/api/v2/dags/{dag_id}/dagRuns/{dag_run_id}/taskInstances/{task_id}/dry_run": {
     patch: {
-      req: PatchTaskInstanceDryRun1Data;
+      req: PatchTaskInstanceDryRunData;
       res: {
         /**
          * Successful Response
diff --git a/scripts/in_container/run_update_fastapi_api_spec.py 
b/scripts/in_container/run_update_fastapi_api_spec.py
index 8e4b18fc0ed..1dd692280c4 100755
--- a/scripts/in_container/run_update_fastapi_api_spec.py
+++ b/scripts/in_container/run_update_fastapi_api_spec.py
@@ -17,12 +17,14 @@
 # under the License.
 from __future__ import annotations
 
+import sys
 from pathlib import Path
 from typing import TYPE_CHECKING
 
 import yaml
 from fastapi.openapi.utils import get_openapi
 from fastapi.routing import APIRoute
+from openapi_spec_validator import validate_spec
 
 from airflow.api_fastapi.app import AUTH_MANAGER_FASTAPI_APP_PREFIX, create_app
 from airflow.api_fastapi.auth.managers.simple import __file__ as 
SIMPLE_AUTH_MANAGER_PATH
@@ -73,9 +75,23 @@ def generate_file(app: FastAPI, file_path: Path, prefix: str 
= "", only_ui: bool
         )
 
 
+def validate_openapi_file(file_path: Path) -> bool:
+    with file_path.open() as f:
+        openapi_schema = yaml.safe_load(f)
+    try:
+        validate_spec(openapi_schema)
+    except Exception as e:
+        print(f"[ERROR] OpenAPI validation failed for {file_path}: {e}", 
file=sys.stderr)
+        sys.exit(1)
+    return True
+
+
 # Generate main application openapi spec
 generate_file(app=create_app(), file_path=OPENAPI_SPEC_FILE)
+validate_openapi_file(OPENAPI_SPEC_FILE)
+
 generate_file(app=create_app(), file_path=OPENAPI_UI_SPEC_FILE, only_ui=True)
+validate_openapi_file(OPENAPI_UI_SPEC_FILE)
 
 # Generate simple auth manager openapi spec
 simple_auth_manager_app = SimpleAuthManager().get_fastapi_app()
@@ -85,8 +101,10 @@ if simple_auth_manager_app:
         file_path=SIMPLE_AUTH_MANAGER_OPENAPI_SPEC_FILE,
         prefix=AUTH_MANAGER_FASTAPI_APP_PREFIX,
     )
+    validate_openapi_file(SIMPLE_AUTH_MANAGER_OPENAPI_SPEC_FILE)
 
 # Generate FAB auth manager openapi spec
 fab_auth_manager_app = FabAuthManager().get_fastapi_app()
 if fab_auth_manager_app:
     generate_file(app=fab_auth_manager_app, 
file_path=FAB_AUTH_MANAGER_OPENAPI_SPEC_FILE)
+    validate_openapi_file(FAB_AUTH_MANAGER_OPENAPI_SPEC_FILE)


Reply via email to