This is an automated email from the ASF dual-hosted git repository. kaxilnaik pushed a commit to branch v3-1-test in repository https://gitbox.apache.org/repos/asf/airflow.git
commit 6b41467ce4834305ee01ea6a8975a8a3e3cb0be0 Author: Wei Lee <[email protected]> AuthorDate: Thu Sep 18 18:19:00 2025 +0800 feat(hitl): add map_index filter to get_hitl_details endpoint (#55776) (cherry picked from commit e5083a187efe44375408f640de231c219ce7b83e) --- 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 7497456b84a..edba09a374b 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 @@ -8208,6 +8208,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 6a237a0c8bb..974f97e752b 100644 --- a/airflow-core/src/airflow/ui/openapi-gen/queries/common.ts +++ b/airflow-core/src/airflow/ui/openapi-gen/queries/common.ts @@ -566,7 +566,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; @@ -576,6 +576,7 @@ export const UseTaskInstanceServiceGetHitlDetailsKeyFn = ({ bodySearch, createdA dagIdPattern?: string; dagRunId: string; limit?: number; + mapIndex?: number; offset?: number; orderBy?: string[]; respondedByUserId?: string[]; @@ -585,7 +586,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 b18892b9799..3208901e3ff 100644 --- a/airflow-core/src/airflow/ui/openapi-gen/queries/ensureQueryData.ts +++ b/airflow-core/src/airflow/ui/openapi-gen/queries/ensureQueryData.ts @@ -1081,6 +1081,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 @@ -1094,7 +1095,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; @@ -1104,6 +1105,7 @@ export const ensureUseTaskInstanceServiceGetHitlDetailsData = (queryClient: Quer dagIdPattern?: string; dagRunId: string; limit?: number; + mapIndex?: number; offset?: number; orderBy?: string[]; respondedByUserId?: string[]; @@ -1113,7 +1115,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 4921d78c74a..6b8755a48c8 100644 --- a/airflow-core/src/airflow/ui/openapi-gen/queries/prefetch.ts +++ b/airflow-core/src/airflow/ui/openapi-gen/queries/prefetch.ts @@ -1081,6 +1081,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 @@ -1094,7 +1095,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; @@ -1104,6 +1105,7 @@ export const prefetchUseTaskInstanceServiceGetHitlDetails = (queryClient: QueryC dagIdPattern?: string; dagRunId: string; limit?: number; + mapIndex?: number; offset?: number; orderBy?: string[]; respondedByUserId?: string[]; @@ -1113,7 +1115,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 87263738664..484d68f3fde 100644 --- a/airflow-core/src/airflow/ui/openapi-gen/queries/queries.ts +++ b/airflow-core/src/airflow/ui/openapi-gen/queries/queries.ts @@ -1081,6 +1081,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 @@ -1094,7 +1095,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; @@ -1104,6 +1105,7 @@ export const useTaskInstanceServiceGetHitlDetails = <TData = Common.TaskInstance dagIdPattern?: string; dagRunId: string; limit?: number; + mapIndex?: number; offset?: number; orderBy?: string[]; respondedByUserId?: string[]; @@ -1113,7 +1115,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 a2c61b40231..3c3a61def57 100644 --- a/airflow-core/src/airflow/ui/openapi-gen/queries/suspense.ts +++ b/airflow-core/src/airflow/ui/openapi-gen/queries/suspense.ts @@ -1081,6 +1081,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 @@ -1094,7 +1095,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; @@ -1104,6 +1105,7 @@ export const useTaskInstanceServiceGetHitlDetailsSuspense = <TData = Common.Task dagIdPattern?: string; dagRunId: string; limit?: number; + mapIndex?: number; offset?: number; orderBy?: string[]; respondedByUserId?: string[]; @@ -1113,7 +1115,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 7bf0a9aede3..ab13ef32449 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 @@ -2790,6 +2790,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 @@ -2818,6 +2819,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 49ecfb4a71a..1f4f7a8ab3e 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 @@ -2865,6 +2865,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",
