This is an automated email from the ASF dual-hosted git repository.
pierrejeambrun 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 d1eeb8334e2 add has_import_errors filter to Core API GET /dags
endpoint (#54563)
d1eeb8334e2 is described below
commit d1eeb8334e22426c379c3a692f397f4595cf2565
Author: Guangyang Li <[email protected]>
AuthorDate: Fri Sep 5 09:07:03 2025 -0400
add has_import_errors filter to Core API GET /dags endpoint (#54563)
* add has_import_errors filter
* add unit tests
* update test
* add description
* Update airflow-core/src/airflow/api_fastapi/common/parameters.py
Change DAGs to Dags
Co-authored-by: LIU ZHE YOU <[email protected]>
* empty commit
* Change DAGs to dags
* Change DAGs to dags
---------
Co-authored-by: Guangyang Li <[email protected]>
Co-authored-by: LIU ZHE YOU <[email protected]>
---
.../src/airflow/api_fastapi/common/parameters.py | 11 +++++++++++
.../api_fastapi/core_api/openapi/_private_ui.yaml | 12 ++++++++++++
.../core_api/openapi/v2-rest-api-generated.yaml | 12 ++++++++++++
.../airflow/api_fastapi/core_api/routes/public/dags.py | 3 +++
.../src/airflow/api_fastapi/core_api/routes/ui/dags.py | 3 +++
.../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 | 8 ++++++++
.../api_fastapi/core_api/routes/public/test_dags.py | 18 ++++++++++++++++++
13 files changed, 109 insertions(+), 20 deletions(-)
diff --git a/airflow-core/src/airflow/api_fastapi/common/parameters.py
b/airflow-core/src/airflow/api_fastapi/common/parameters.py
index 23f35cb999c..cae6bdac0f0 100644
--- a/airflow-core/src/airflow/api_fastapi/common/parameters.py
+++ b/airflow-core/src/airflow/api_fastapi/common/parameters.py
@@ -616,6 +616,17 @@ QueryPausedFilter = Annotated[
FilterParam[bool | None],
Depends(filter_param_factory(DagModel.is_paused, bool | None,
filter_name="paused")),
]
+QueryHasImportErrorsFilter = Annotated[
+ FilterParam[bool | None],
+ Depends(
+ filter_param_factory(
+ DagModel.has_import_errors,
+ bool | None,
+ filter_name="has_import_errors",
+ description="Filter Dags by having import errors. Only Dags that
have been successfully loaded before will be returned.",
+ )
+ ),
+]
QueryFavoriteFilter = Annotated[_FavoriteFilter,
Depends(_FavoriteFilter.depends)]
QueryExcludeStaleFilter = Annotated[_ExcludeStaleFilter,
Depends(_ExcludeStaleFilter.depends)]
QueryDagIdPatternSearch = Annotated[
diff --git
a/airflow-core/src/airflow/api_fastapi/core_api/openapi/_private_ui.yaml
b/airflow-core/src/airflow/api_fastapi/core_api/openapi/_private_ui.yaml
index 94b34e2bcbd..03c056d1da0 100644
--- a/airflow-core/src/airflow/api_fastapi/core_api/openapi/_private_ui.yaml
+++ b/airflow-core/src/airflow/api_fastapi/core_api/openapi/_private_ui.yaml
@@ -208,6 +208,18 @@ paths:
- type: boolean
- type: 'null'
title: Paused
+ - name: has_import_errors
+ in: query
+ required: false
+ schema:
+ anyOf:
+ - type: boolean
+ - type: 'null'
+ description: Filter Dags by having import errors. Only Dags that
have been
+ successfully loaded before will be returned.
+ title: Has Import Errors
+ description: Filter Dags by having import errors. Only Dags that have
been
+ successfully loaded before will be returned.
- name: last_dag_run_state
in: query
required: false
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 aeaf57f661e..a3f1de4e73e 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
@@ -2988,6 +2988,18 @@ paths:
- type: boolean
- type: 'null'
title: Paused
+ - name: has_import_errors
+ in: query
+ required: false
+ schema:
+ anyOf:
+ - type: boolean
+ - type: 'null'
+ description: Filter Dags by having import errors. Only Dags that
have been
+ successfully loaded before will be returned.
+ title: Has Import Errors
+ description: Filter Dags by having import errors. Only Dags that have
been
+ successfully loaded before will be returned.
- name: last_dag_run_state
in: query
required: false
diff --git
a/airflow-core/src/airflow/api_fastapi/core_api/routes/public/dags.py
b/airflow-core/src/airflow/api_fastapi/core_api/routes/public/dags.py
index 87260dee00e..e62c12c5ecb 100644
--- a/airflow-core/src/airflow/api_fastapi/core_api/routes/public/dags.py
+++ b/airflow-core/src/airflow/api_fastapi/core_api/routes/public/dags.py
@@ -43,6 +43,7 @@ from airflow.api_fastapi.common.parameters import (
QueryExcludeStaleFilter,
QueryFavoriteFilter,
QueryHasAssetScheduleFilter,
+ QueryHasImportErrorsFilter,
QueryLastDagRunStateFilter,
QueryLimit,
QueryOffset,
@@ -88,6 +89,7 @@ def get_dags(
dag_display_name_pattern: QueryDagDisplayNamePatternSearch,
exclude_stale: QueryExcludeStaleFilter,
paused: QueryPausedFilter,
+ has_import_errors: QueryHasImportErrorsFilter,
last_dag_run_state: QueryLastDagRunStateFilter,
bundle_name: QueryBundleNameFilter,
bundle_version: QueryBundleVersionFilter,
@@ -142,6 +144,7 @@ def get_dags(
filters=[
exclude_stale,
paused,
+ has_import_errors,
dag_id_pattern,
dag_display_name_pattern,
tags,
diff --git a/airflow-core/src/airflow/api_fastapi/core_api/routes/ui/dags.py
b/airflow-core/src/airflow/api_fastapi/core_api/routes/ui/dags.py
index 6a4d96f9bdc..e953017a56b 100644
--- a/airflow-core/src/airflow/api_fastapi/core_api/routes/ui/dags.py
+++ b/airflow-core/src/airflow/api_fastapi/core_api/routes/ui/dags.py
@@ -40,6 +40,7 @@ from airflow.api_fastapi.common.parameters import (
QueryExcludeStaleFilter,
QueryFavoriteFilter,
QueryHasAssetScheduleFilter,
+ QueryHasImportErrorsFilter,
QueryLastDagRunStateFilter,
QueryLimit,
QueryOffset,
@@ -92,6 +93,7 @@ def get_dags(
dag_display_name_pattern: QueryDagDisplayNamePatternSearch,
exclude_stale: QueryExcludeStaleFilter,
paused: QueryPausedFilter,
+ has_import_errors: QueryHasImportErrorsFilter,
last_dag_run_state: QueryLastDagRunStateFilter,
bundle_name: QueryBundleNameFilter,
bundle_version: QueryBundleVersionFilter,
@@ -127,6 +129,7 @@ def get_dags(
filters=[
exclude_stale,
paused,
+ has_import_errors,
dag_id_pattern,
dag_ids,
dag_display_name_pattern,
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 9dc12bd20dc..6322b959a38 100644
--- a/airflow-core/src/airflow/ui/openapi-gen/queries/common.ts
+++ b/airflow-core/src/airflow/ui/openapi-gen/queries/common.ts
@@ -243,7 +243,7 @@ export const UseDagWarningServiceListDagWarningsKeyFn = ({
dagId, limit, offset,
export type DagServiceGetDagsDefaultResponse = Awaited<ReturnType<typeof
DagService.getDags>>;
export type DagServiceGetDagsQueryResult<TData =
DagServiceGetDagsDefaultResponse, TError = unknown> = UseQueryResult<TData,
TError>;
export const useDagServiceGetDagsKey = "DagServiceGetDags";
-export const UseDagServiceGetDagsKeyFn = ({ assetDependency, bundleName,
bundleVersion, dagDisplayNamePattern, dagIdPattern, dagRunEndDateGt,
dagRunEndDateGte, dagRunEndDateLt, dagRunEndDateLte, dagRunStartDateGt,
dagRunStartDateGte, dagRunStartDateLt, dagRunStartDateLte, dagRunState,
excludeStale, hasAssetSchedule, isFavorite, lastDagRunState, limit, offset,
orderBy, owners, paused, tags, tagsMatchMode }: {
+export const UseDagServiceGetDagsKeyFn = ({ assetDependency, bundleName,
bundleVersion, dagDisplayNamePattern, dagIdPattern, dagRunEndDateGt,
dagRunEndDateGte, dagRunEndDateLt, dagRunEndDateLte, dagRunStartDateGt,
dagRunStartDateGte, dagRunStartDateLt, dagRunStartDateLte, dagRunState,
excludeStale, hasAssetSchedule, hasImportErrors, isFavorite, lastDagRunState,
limit, offset, orderBy, owners, paused, tags, tagsMatchMode }: {
assetDependency?: string;
bundleName?: string;
bundleVersion?: string;
@@ -260,6 +260,7 @@ export const UseDagServiceGetDagsKeyFn = ({
assetDependency, bundleName, bundleV
dagRunState?: string[];
excludeStale?: boolean;
hasAssetSchedule?: boolean;
+ hasImportErrors?: boolean;
isFavorite?: boolean;
lastDagRunState?: DagRunState;
limit?: number;
@@ -269,7 +270,7 @@ export const UseDagServiceGetDagsKeyFn = ({
assetDependency, bundleName, bundleV
paused?: boolean;
tags?: string[];
tagsMatchMode?: "any" | "all";
-} = {}, queryKey?: Array<unknown>) => [useDagServiceGetDagsKey, ...(queryKey
?? [{ assetDependency, bundleName, bundleVersion, dagDisplayNamePattern,
dagIdPattern, dagRunEndDateGt, dagRunEndDateGte, dagRunEndDateLt,
dagRunEndDateLte, dagRunStartDateGt, dagRunStartDateGte, dagRunStartDateLt,
dagRunStartDateLte, dagRunState, excludeStale, hasAssetSchedule, isFavorite,
lastDagRunState, limit, offset, orderBy, owners, paused, tags, tagsMatchMode
}])];
+} = {}, queryKey?: Array<unknown>) => [useDagServiceGetDagsKey, ...(queryKey
?? [{ assetDependency, bundleName, bundleVersion, dagDisplayNamePattern,
dagIdPattern, dagRunEndDateGt, dagRunEndDateGte, dagRunEndDateLt,
dagRunEndDateLte, dagRunStartDateGt, dagRunStartDateGte, dagRunStartDateLt,
dagRunStartDateLte, dagRunState, excludeStale, hasAssetSchedule,
hasImportErrors, isFavorite, lastDagRunState, limit, offset, orderBy, owners,
paused, tags, tagsMatchMode }])];
export type DagServiceGetDagDefaultResponse = Awaited<ReturnType<typeof
DagService.getDag>>;
export type DagServiceGetDagQueryResult<TData =
DagServiceGetDagDefaultResponse, TError = unknown> = UseQueryResult<TData,
TError>;
export const useDagServiceGetDagKey = "DagServiceGetDag";
@@ -294,7 +295,7 @@ export const UseDagServiceGetDagTagsKeyFn = ({ limit,
offset, orderBy, tagNamePa
export type DagServiceGetDagsUiDefaultResponse = Awaited<ReturnType<typeof
DagService.getDagsUi>>;
export type DagServiceGetDagsUiQueryResult<TData =
DagServiceGetDagsUiDefaultResponse, TError = unknown> = UseQueryResult<TData,
TError>;
export const useDagServiceGetDagsUiKey = "DagServiceGetDagsUi";
-export const UseDagServiceGetDagsUiKeyFn = ({ assetDependency, bundleName,
bundleVersion, dagDisplayNamePattern, dagIdPattern, dagIds, dagRunsLimit,
excludeStale, hasAssetSchedule, hasPendingActions, isFavorite, lastDagRunState,
limit, offset, orderBy, owners, paused, tags, tagsMatchMode }: {
+export const UseDagServiceGetDagsUiKeyFn = ({ assetDependency, bundleName,
bundleVersion, dagDisplayNamePattern, dagIdPattern, dagIds, dagRunsLimit,
excludeStale, hasAssetSchedule, hasImportErrors, hasPendingActions, isFavorite,
lastDagRunState, limit, offset, orderBy, owners, paused, tags, tagsMatchMode }:
{
assetDependency?: string;
bundleName?: string;
bundleVersion?: string;
@@ -304,6 +305,7 @@ export const UseDagServiceGetDagsUiKeyFn = ({
assetDependency, bundleName, bundl
dagRunsLimit?: number;
excludeStale?: boolean;
hasAssetSchedule?: boolean;
+ hasImportErrors?: boolean;
hasPendingActions?: boolean;
isFavorite?: boolean;
lastDagRunState?: DagRunState;
@@ -314,7 +316,7 @@ export const UseDagServiceGetDagsUiKeyFn = ({
assetDependency, bundleName, bundl
paused?: boolean;
tags?: string[];
tagsMatchMode?: "any" | "all";
-} = {}, queryKey?: Array<unknown>) => [useDagServiceGetDagsUiKey, ...(queryKey
?? [{ assetDependency, bundleName, bundleVersion, dagDisplayNamePattern,
dagIdPattern, dagIds, dagRunsLimit, excludeStale, hasAssetSchedule,
hasPendingActions, isFavorite, lastDagRunState, limit, offset, orderBy, owners,
paused, tags, tagsMatchMode }])];
+} = {}, queryKey?: Array<unknown>) => [useDagServiceGetDagsUiKey, ...(queryKey
?? [{ assetDependency, bundleName, bundleVersion, dagDisplayNamePattern,
dagIdPattern, dagIds, dagRunsLimit, excludeStale, hasAssetSchedule,
hasImportErrors, hasPendingActions, isFavorite, lastDagRunState, limit, offset,
orderBy, owners, paused, tags, tagsMatchMode }])];
export type DagServiceGetLatestRunInfoDefaultResponse =
Awaited<ReturnType<typeof DagService.getLatestRunInfo>>;
export type DagServiceGetLatestRunInfoQueryResult<TData =
DagServiceGetLatestRunInfoDefaultResponse, TError = unknown> =
UseQueryResult<TData, TError>;
export const useDagServiceGetLatestRunInfoKey = "DagServiceGetLatestRunInfo";
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 ae6a52073bc..1f3e5dc4e3e 100644
--- a/airflow-core/src/airflow/ui/openapi-gen/queries/ensureQueryData.ts
+++ b/airflow-core/src/airflow/ui/openapi-gen/queries/ensureQueryData.ts
@@ -459,6 +459,7 @@ export const ensureUseDagWarningServiceListDagWarningsData
= (queryClient: Query
* @param data.dagDisplayNamePattern SQL LIKE expression — use `%` / `_`
wildcards (e.g. `%customer_%`). Regular expressions are **not** supported.
* @param data.excludeStale
* @param data.paused
+* @param data.hasImportErrors Filter Dags by having import errors. Only Dags
that have been successfully loaded before will be returned.
* @param data.lastDagRunState
* @param data.bundleName
* @param data.bundleVersion
@@ -478,7 +479,7 @@ export const ensureUseDagWarningServiceListDagWarningsData
= (queryClient: Query
* @returns DAGCollectionResponse Successful Response
* @throws ApiError
*/
-export const ensureUseDagServiceGetDagsData = (queryClient: QueryClient, {
assetDependency, bundleName, bundleVersion, dagDisplayNamePattern,
dagIdPattern, dagRunEndDateGt, dagRunEndDateGte, dagRunEndDateLt,
dagRunEndDateLte, dagRunStartDateGt, dagRunStartDateGte, dagRunStartDateLt,
dagRunStartDateLte, dagRunState, excludeStale, hasAssetSchedule, isFavorite,
lastDagRunState, limit, offset, orderBy, owners, paused, tags, tagsMatchMode }:
{
+export const ensureUseDagServiceGetDagsData = (queryClient: QueryClient, {
assetDependency, bundleName, bundleVersion, dagDisplayNamePattern,
dagIdPattern, dagRunEndDateGt, dagRunEndDateGte, dagRunEndDateLt,
dagRunEndDateLte, dagRunStartDateGt, dagRunStartDateGte, dagRunStartDateLt,
dagRunStartDateLte, dagRunState, excludeStale, hasAssetSchedule,
hasImportErrors, isFavorite, lastDagRunState, limit, offset, orderBy, owners,
paused, tags, tagsMatchMode }: {
assetDependency?: string;
bundleName?: string;
bundleVersion?: string;
@@ -495,6 +496,7 @@ export const ensureUseDagServiceGetDagsData = (queryClient:
QueryClient, { asset
dagRunState?: string[];
excludeStale?: boolean;
hasAssetSchedule?: boolean;
+ hasImportErrors?: boolean;
isFavorite?: boolean;
lastDagRunState?: DagRunState;
limit?: number;
@@ -504,7 +506,7 @@ export const ensureUseDagServiceGetDagsData = (queryClient:
QueryClient, { asset
paused?: boolean;
tags?: string[];
tagsMatchMode?: "any" | "all";
-} = {}) => queryClient.ensureQueryData({ queryKey:
Common.UseDagServiceGetDagsKeyFn({ assetDependency, bundleName, bundleVersion,
dagDisplayNamePattern, dagIdPattern, dagRunEndDateGt, dagRunEndDateGte,
dagRunEndDateLt, dagRunEndDateLte, dagRunStartDateGt, dagRunStartDateGte,
dagRunStartDateLt, dagRunStartDateLte, dagRunState, excludeStale,
hasAssetSchedule, isFavorite, lastDagRunState, limit, offset, orderBy, owners,
paused, tags, tagsMatchMode }), queryFn: () => DagService.getDags({ ass [...]
+} = {}) => queryClient.ensureQueryData({ queryKey:
Common.UseDagServiceGetDagsKeyFn({ assetDependency, bundleName, bundleVersion,
dagDisplayNamePattern, dagIdPattern, dagRunEndDateGt, dagRunEndDateGte,
dagRunEndDateLt, dagRunEndDateLte, dagRunStartDateGt, dagRunStartDateGte,
dagRunStartDateLt, dagRunStartDateLte, dagRunState, excludeStale,
hasAssetSchedule, hasImportErrors, isFavorite, lastDagRunState, limit, offset,
orderBy, owners, paused, tags, tagsMatchMode }), queryFn: () => DagServ [...]
/**
* Get Dag
* Get basic information about a DAG.
@@ -559,6 +561,7 @@ export const ensureUseDagServiceGetDagTagsData =
(queryClient: QueryClient, { li
* @param data.dagDisplayNamePattern SQL LIKE expression — use `%` / `_`
wildcards (e.g. `%customer_%`). Regular expressions are **not** supported.
* @param data.excludeStale
* @param data.paused
+* @param data.hasImportErrors Filter Dags by having import errors. Only Dags
that have been successfully loaded before will be returned.
* @param data.lastDagRunState
* @param data.bundleName
* @param data.bundleVersion
@@ -570,7 +573,7 @@ export const ensureUseDagServiceGetDagTagsData =
(queryClient: QueryClient, { li
* @returns DAGWithLatestDagRunsCollectionResponse Successful Response
* @throws ApiError
*/
-export const ensureUseDagServiceGetDagsUiData = (queryClient: QueryClient, {
assetDependency, bundleName, bundleVersion, dagDisplayNamePattern,
dagIdPattern, dagIds, dagRunsLimit, excludeStale, hasAssetSchedule,
hasPendingActions, isFavorite, lastDagRunState, limit, offset, orderBy, owners,
paused, tags, tagsMatchMode }: {
+export const ensureUseDagServiceGetDagsUiData = (queryClient: QueryClient, {
assetDependency, bundleName, bundleVersion, dagDisplayNamePattern,
dagIdPattern, dagIds, dagRunsLimit, excludeStale, hasAssetSchedule,
hasImportErrors, hasPendingActions, isFavorite, lastDagRunState, limit, offset,
orderBy, owners, paused, tags, tagsMatchMode }: {
assetDependency?: string;
bundleName?: string;
bundleVersion?: string;
@@ -580,6 +583,7 @@ export const ensureUseDagServiceGetDagsUiData =
(queryClient: QueryClient, { ass
dagRunsLimit?: number;
excludeStale?: boolean;
hasAssetSchedule?: boolean;
+ hasImportErrors?: boolean;
hasPendingActions?: boolean;
isFavorite?: boolean;
lastDagRunState?: DagRunState;
@@ -590,7 +594,7 @@ export const ensureUseDagServiceGetDagsUiData =
(queryClient: QueryClient, { ass
paused?: boolean;
tags?: string[];
tagsMatchMode?: "any" | "all";
-} = {}) => queryClient.ensureQueryData({ queryKey:
Common.UseDagServiceGetDagsUiKeyFn({ assetDependency, bundleName,
bundleVersion, dagDisplayNamePattern, dagIdPattern, dagIds, dagRunsLimit,
excludeStale, hasAssetSchedule, hasPendingActions, isFavorite, lastDagRunState,
limit, offset, orderBy, owners, paused, tags, tagsMatchMode }), queryFn: () =>
DagService.getDagsUi({ assetDependency, bundleName, bundleVersion,
dagDisplayNamePattern, dagIdPattern, dagIds, dagRunsLimit, excludeStale, ha
[...]
+} = {}) => queryClient.ensureQueryData({ queryKey:
Common.UseDagServiceGetDagsUiKeyFn({ assetDependency, bundleName,
bundleVersion, dagDisplayNamePattern, dagIdPattern, dagIds, dagRunsLimit,
excludeStale, hasAssetSchedule, hasImportErrors, hasPendingActions, isFavorite,
lastDagRunState, limit, offset, orderBy, owners, paused, tags, tagsMatchMode
}), queryFn: () => DagService.getDagsUi({ assetDependency, bundleName,
bundleVersion, dagDisplayNamePattern, dagIdPattern, dagIds, dagRunsLimit, [...]
/**
* Get Latest Run Info
* Get latest run.
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 c681eeb4fdc..304b6e37d17 100644
--- a/airflow-core/src/airflow/ui/openapi-gen/queries/prefetch.ts
+++ b/airflow-core/src/airflow/ui/openapi-gen/queries/prefetch.ts
@@ -459,6 +459,7 @@ export const prefetchUseDagWarningServiceListDagWarnings =
(queryClient: QueryCl
* @param data.dagDisplayNamePattern SQL LIKE expression — use `%` / `_`
wildcards (e.g. `%customer_%`). Regular expressions are **not** supported.
* @param data.excludeStale
* @param data.paused
+* @param data.hasImportErrors Filter Dags by having import errors. Only Dags
that have been successfully loaded before will be returned.
* @param data.lastDagRunState
* @param data.bundleName
* @param data.bundleVersion
@@ -478,7 +479,7 @@ export const prefetchUseDagWarningServiceListDagWarnings =
(queryClient: QueryCl
* @returns DAGCollectionResponse Successful Response
* @throws ApiError
*/
-export const prefetchUseDagServiceGetDags = (queryClient: QueryClient, {
assetDependency, bundleName, bundleVersion, dagDisplayNamePattern,
dagIdPattern, dagRunEndDateGt, dagRunEndDateGte, dagRunEndDateLt,
dagRunEndDateLte, dagRunStartDateGt, dagRunStartDateGte, dagRunStartDateLt,
dagRunStartDateLte, dagRunState, excludeStale, hasAssetSchedule, isFavorite,
lastDagRunState, limit, offset, orderBy, owners, paused, tags, tagsMatchMode }:
{
+export const prefetchUseDagServiceGetDags = (queryClient: QueryClient, {
assetDependency, bundleName, bundleVersion, dagDisplayNamePattern,
dagIdPattern, dagRunEndDateGt, dagRunEndDateGte, dagRunEndDateLt,
dagRunEndDateLte, dagRunStartDateGt, dagRunStartDateGte, dagRunStartDateLt,
dagRunStartDateLte, dagRunState, excludeStale, hasAssetSchedule,
hasImportErrors, isFavorite, lastDagRunState, limit, offset, orderBy, owners,
paused, tags, tagsMatchMode }: {
assetDependency?: string;
bundleName?: string;
bundleVersion?: string;
@@ -495,6 +496,7 @@ export const prefetchUseDagServiceGetDags = (queryClient:
QueryClient, { assetDe
dagRunState?: string[];
excludeStale?: boolean;
hasAssetSchedule?: boolean;
+ hasImportErrors?: boolean;
isFavorite?: boolean;
lastDagRunState?: DagRunState;
limit?: number;
@@ -504,7 +506,7 @@ export const prefetchUseDagServiceGetDags = (queryClient:
QueryClient, { assetDe
paused?: boolean;
tags?: string[];
tagsMatchMode?: "any" | "all";
-} = {}) => queryClient.prefetchQuery({ queryKey:
Common.UseDagServiceGetDagsKeyFn({ assetDependency, bundleName, bundleVersion,
dagDisplayNamePattern, dagIdPattern, dagRunEndDateGt, dagRunEndDateGte,
dagRunEndDateLt, dagRunEndDateLte, dagRunStartDateGt, dagRunStartDateGte,
dagRunStartDateLt, dagRunStartDateLte, dagRunState, excludeStale,
hasAssetSchedule, isFavorite, lastDagRunState, limit, offset, orderBy, owners,
paused, tags, tagsMatchMode }), queryFn: () => DagService.getDags({ asset [...]
+} = {}) => queryClient.prefetchQuery({ queryKey:
Common.UseDagServiceGetDagsKeyFn({ assetDependency, bundleName, bundleVersion,
dagDisplayNamePattern, dagIdPattern, dagRunEndDateGt, dagRunEndDateGte,
dagRunEndDateLt, dagRunEndDateLte, dagRunStartDateGt, dagRunStartDateGte,
dagRunStartDateLt, dagRunStartDateLte, dagRunState, excludeStale,
hasAssetSchedule, hasImportErrors, isFavorite, lastDagRunState, limit, offset,
orderBy, owners, paused, tags, tagsMatchMode }), queryFn: () => DagServic [...]
/**
* Get Dag
* Get basic information about a DAG.
@@ -559,6 +561,7 @@ export const prefetchUseDagServiceGetDagTags =
(queryClient: QueryClient, { limi
* @param data.dagDisplayNamePattern SQL LIKE expression — use `%` / `_`
wildcards (e.g. `%customer_%`). Regular expressions are **not** supported.
* @param data.excludeStale
* @param data.paused
+* @param data.hasImportErrors Filter Dags by having import errors. Only Dags
that have been successfully loaded before will be returned.
* @param data.lastDagRunState
* @param data.bundleName
* @param data.bundleVersion
@@ -570,7 +573,7 @@ export const prefetchUseDagServiceGetDagTags =
(queryClient: QueryClient, { limi
* @returns DAGWithLatestDagRunsCollectionResponse Successful Response
* @throws ApiError
*/
-export const prefetchUseDagServiceGetDagsUi = (queryClient: QueryClient, {
assetDependency, bundleName, bundleVersion, dagDisplayNamePattern,
dagIdPattern, dagIds, dagRunsLimit, excludeStale, hasAssetSchedule,
hasPendingActions, isFavorite, lastDagRunState, limit, offset, orderBy, owners,
paused, tags, tagsMatchMode }: {
+export const prefetchUseDagServiceGetDagsUi = (queryClient: QueryClient, {
assetDependency, bundleName, bundleVersion, dagDisplayNamePattern,
dagIdPattern, dagIds, dagRunsLimit, excludeStale, hasAssetSchedule,
hasImportErrors, hasPendingActions, isFavorite, lastDagRunState, limit, offset,
orderBy, owners, paused, tags, tagsMatchMode }: {
assetDependency?: string;
bundleName?: string;
bundleVersion?: string;
@@ -580,6 +583,7 @@ export const prefetchUseDagServiceGetDagsUi = (queryClient:
QueryClient, { asset
dagRunsLimit?: number;
excludeStale?: boolean;
hasAssetSchedule?: boolean;
+ hasImportErrors?: boolean;
hasPendingActions?: boolean;
isFavorite?: boolean;
lastDagRunState?: DagRunState;
@@ -590,7 +594,7 @@ export const prefetchUseDagServiceGetDagsUi = (queryClient:
QueryClient, { asset
paused?: boolean;
tags?: string[];
tagsMatchMode?: "any" | "all";
-} = {}) => queryClient.prefetchQuery({ queryKey:
Common.UseDagServiceGetDagsUiKeyFn({ assetDependency, bundleName,
bundleVersion, dagDisplayNamePattern, dagIdPattern, dagIds, dagRunsLimit,
excludeStale, hasAssetSchedule, hasPendingActions, isFavorite, lastDagRunState,
limit, offset, orderBy, owners, paused, tags, tagsMatchMode }), queryFn: () =>
DagService.getDagsUi({ assetDependency, bundleName, bundleVersion,
dagDisplayNamePattern, dagIdPattern, dagIds, dagRunsLimit, excludeStale, hasA
[...]
+} = {}) => queryClient.prefetchQuery({ queryKey:
Common.UseDagServiceGetDagsUiKeyFn({ assetDependency, bundleName,
bundleVersion, dagDisplayNamePattern, dagIdPattern, dagIds, dagRunsLimit,
excludeStale, hasAssetSchedule, hasImportErrors, hasPendingActions, isFavorite,
lastDagRunState, limit, offset, orderBy, owners, paused, tags, tagsMatchMode
}), queryFn: () => DagService.getDagsUi({ assetDependency, bundleName,
bundleVersion, dagDisplayNamePattern, dagIdPattern, dagIds, dagRunsLimit, e
[...]
/**
* Get Latest Run Info
* Get latest run.
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 e55011531b0..f727dcdbd4f 100644
--- a/airflow-core/src/airflow/ui/openapi-gen/queries/queries.ts
+++ b/airflow-core/src/airflow/ui/openapi-gen/queries/queries.ts
@@ -459,6 +459,7 @@ export const useDagWarningServiceListDagWarnings = <TData =
Common.DagWarningSer
* @param data.dagDisplayNamePattern SQL LIKE expression — use `%` / `_`
wildcards (e.g. `%customer_%`). Regular expressions are **not** supported.
* @param data.excludeStale
* @param data.paused
+* @param data.hasImportErrors Filter Dags by having import errors. Only Dags
that have been successfully loaded before will be returned.
* @param data.lastDagRunState
* @param data.bundleName
* @param data.bundleVersion
@@ -478,7 +479,7 @@ export const useDagWarningServiceListDagWarnings = <TData =
Common.DagWarningSer
* @returns DAGCollectionResponse Successful Response
* @throws ApiError
*/
-export const useDagServiceGetDags = <TData =
Common.DagServiceGetDagsDefaultResponse, TError = unknown, TQueryKey extends
Array<unknown> = unknown[]>({ assetDependency, bundleName, bundleVersion,
dagDisplayNamePattern, dagIdPattern, dagRunEndDateGt, dagRunEndDateGte,
dagRunEndDateLt, dagRunEndDateLte, dagRunStartDateGt, dagRunStartDateGte,
dagRunStartDateLt, dagRunStartDateLte, dagRunState, excludeStale,
hasAssetSchedule, isFavorite, lastDagRunState, limit, offset, orderBy, owners,
pause [...]
+export const useDagServiceGetDags = <TData =
Common.DagServiceGetDagsDefaultResponse, TError = unknown, TQueryKey extends
Array<unknown> = unknown[]>({ assetDependency, bundleName, bundleVersion,
dagDisplayNamePattern, dagIdPattern, dagRunEndDateGt, dagRunEndDateGte,
dagRunEndDateLt, dagRunEndDateLte, dagRunStartDateGt, dagRunStartDateGte,
dagRunStartDateLt, dagRunStartDateLte, dagRunState, excludeStale,
hasAssetSchedule, hasImportErrors, isFavorite, lastDagRunState, limit, offset,
order [...]
assetDependency?: string;
bundleName?: string;
bundleVersion?: string;
@@ -495,6 +496,7 @@ export const useDagServiceGetDags = <TData =
Common.DagServiceGetDagsDefaultResp
dagRunState?: string[];
excludeStale?: boolean;
hasAssetSchedule?: boolean;
+ hasImportErrors?: boolean;
isFavorite?: boolean;
lastDagRunState?: DagRunState;
limit?: number;
@@ -504,7 +506,7 @@ export const useDagServiceGetDags = <TData =
Common.DagServiceGetDagsDefaultResp
paused?: boolean;
tags?: string[];
tagsMatchMode?: "any" | "all";
-} = {}, queryKey?: TQueryKey, options?: Omit<UseQueryOptions<TData, TError>,
"queryKey" | "queryFn">) => useQuery<TData, TError>({ queryKey:
Common.UseDagServiceGetDagsKeyFn({ assetDependency, bundleName, bundleVersion,
dagDisplayNamePattern, dagIdPattern, dagRunEndDateGt, dagRunEndDateGte,
dagRunEndDateLt, dagRunEndDateLte, dagRunStartDateGt, dagRunStartDateGte,
dagRunStartDateLt, dagRunStartDateLte, dagRunState, excludeStale,
hasAssetSchedule, isFavorite, lastDagRunState, limit, offset [...]
+} = {}, queryKey?: TQueryKey, options?: Omit<UseQueryOptions<TData, TError>,
"queryKey" | "queryFn">) => useQuery<TData, TError>({ queryKey:
Common.UseDagServiceGetDagsKeyFn({ assetDependency, bundleName, bundleVersion,
dagDisplayNamePattern, dagIdPattern, dagRunEndDateGt, dagRunEndDateGte,
dagRunEndDateLt, dagRunEndDateLte, dagRunStartDateGt, dagRunStartDateGte,
dagRunStartDateLt, dagRunStartDateLte, dagRunState, excludeStale,
hasAssetSchedule, hasImportErrors, isFavorite, lastDagRunSta [...]
/**
* Get Dag
* Get basic information about a DAG.
@@ -559,6 +561,7 @@ export const useDagServiceGetDagTags = <TData =
Common.DagServiceGetDagTagsDefau
* @param data.dagDisplayNamePattern SQL LIKE expression — use `%` / `_`
wildcards (e.g. `%customer_%`). Regular expressions are **not** supported.
* @param data.excludeStale
* @param data.paused
+* @param data.hasImportErrors Filter Dags by having import errors. Only Dags
that have been successfully loaded before will be returned.
* @param data.lastDagRunState
* @param data.bundleName
* @param data.bundleVersion
@@ -570,7 +573,7 @@ export const useDagServiceGetDagTags = <TData =
Common.DagServiceGetDagTagsDefau
* @returns DAGWithLatestDagRunsCollectionResponse Successful Response
* @throws ApiError
*/
-export const useDagServiceGetDagsUi = <TData =
Common.DagServiceGetDagsUiDefaultResponse, TError = unknown, TQueryKey extends
Array<unknown> = unknown[]>({ assetDependency, bundleName, bundleVersion,
dagDisplayNamePattern, dagIdPattern, dagIds, dagRunsLimit, excludeStale,
hasAssetSchedule, hasPendingActions, isFavorite, lastDagRunState, limit,
offset, orderBy, owners, paused, tags, tagsMatchMode }: {
+export const useDagServiceGetDagsUi = <TData =
Common.DagServiceGetDagsUiDefaultResponse, TError = unknown, TQueryKey extends
Array<unknown> = unknown[]>({ assetDependency, bundleName, bundleVersion,
dagDisplayNamePattern, dagIdPattern, dagIds, dagRunsLimit, excludeStale,
hasAssetSchedule, hasImportErrors, hasPendingActions, isFavorite,
lastDagRunState, limit, offset, orderBy, owners, paused, tags, tagsMatchMode }:
{
assetDependency?: string;
bundleName?: string;
bundleVersion?: string;
@@ -580,6 +583,7 @@ export const useDagServiceGetDagsUi = <TData =
Common.DagServiceGetDagsUiDefault
dagRunsLimit?: number;
excludeStale?: boolean;
hasAssetSchedule?: boolean;
+ hasImportErrors?: boolean;
hasPendingActions?: boolean;
isFavorite?: boolean;
lastDagRunState?: DagRunState;
@@ -590,7 +594,7 @@ export const useDagServiceGetDagsUi = <TData =
Common.DagServiceGetDagsUiDefault
paused?: boolean;
tags?: string[];
tagsMatchMode?: "any" | "all";
-} = {}, queryKey?: TQueryKey, options?: Omit<UseQueryOptions<TData, TError>,
"queryKey" | "queryFn">) => useQuery<TData, TError>({ queryKey:
Common.UseDagServiceGetDagsUiKeyFn({ assetDependency, bundleName,
bundleVersion, dagDisplayNamePattern, dagIdPattern, dagIds, dagRunsLimit,
excludeStale, hasAssetSchedule, hasPendingActions, isFavorite, lastDagRunState,
limit, offset, orderBy, owners, paused, tags, tagsMatchMode }, queryKey),
queryFn: () => DagService.getDagsUi({ assetDependency, bu [...]
+} = {}, queryKey?: TQueryKey, options?: Omit<UseQueryOptions<TData, TError>,
"queryKey" | "queryFn">) => useQuery<TData, TError>({ queryKey:
Common.UseDagServiceGetDagsUiKeyFn({ assetDependency, bundleName,
bundleVersion, dagDisplayNamePattern, dagIdPattern, dagIds, dagRunsLimit,
excludeStale, hasAssetSchedule, hasImportErrors, hasPendingActions, isFavorite,
lastDagRunState, limit, offset, orderBy, owners, paused, tags, tagsMatchMode },
queryKey), queryFn: () => DagService.getDagsUi({ as [...]
/**
* Get Latest Run Info
* Get latest run.
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 8982708376e..35d89616172 100644
--- a/airflow-core/src/airflow/ui/openapi-gen/queries/suspense.ts
+++ b/airflow-core/src/airflow/ui/openapi-gen/queries/suspense.ts
@@ -459,6 +459,7 @@ export const useDagWarningServiceListDagWarningsSuspense =
<TData = Common.DagWa
* @param data.dagDisplayNamePattern SQL LIKE expression — use `%` / `_`
wildcards (e.g. `%customer_%`). Regular expressions are **not** supported.
* @param data.excludeStale
* @param data.paused
+* @param data.hasImportErrors Filter Dags by having import errors. Only Dags
that have been successfully loaded before will be returned.
* @param data.lastDagRunState
* @param data.bundleName
* @param data.bundleVersion
@@ -478,7 +479,7 @@ export const useDagWarningServiceListDagWarningsSuspense =
<TData = Common.DagWa
* @returns DAGCollectionResponse Successful Response
* @throws ApiError
*/
-export const useDagServiceGetDagsSuspense = <TData =
Common.DagServiceGetDagsDefaultResponse, TError = unknown, TQueryKey extends
Array<unknown> = unknown[]>({ assetDependency, bundleName, bundleVersion,
dagDisplayNamePattern, dagIdPattern, dagRunEndDateGt, dagRunEndDateGte,
dagRunEndDateLt, dagRunEndDateLte, dagRunStartDateGt, dagRunStartDateGte,
dagRunStartDateLt, dagRunStartDateLte, dagRunState, excludeStale,
hasAssetSchedule, isFavorite, lastDagRunState, limit, offset, orderBy, owner
[...]
+export const useDagServiceGetDagsSuspense = <TData =
Common.DagServiceGetDagsDefaultResponse, TError = unknown, TQueryKey extends
Array<unknown> = unknown[]>({ assetDependency, bundleName, bundleVersion,
dagDisplayNamePattern, dagIdPattern, dagRunEndDateGt, dagRunEndDateGte,
dagRunEndDateLt, dagRunEndDateLte, dagRunStartDateGt, dagRunStartDateGte,
dagRunStartDateLt, dagRunStartDateLte, dagRunState, excludeStale,
hasAssetSchedule, hasImportErrors, isFavorite, lastDagRunState, limit, offse
[...]
assetDependency?: string;
bundleName?: string;
bundleVersion?: string;
@@ -495,6 +496,7 @@ export const useDagServiceGetDagsSuspense = <TData =
Common.DagServiceGetDagsDef
dagRunState?: string[];
excludeStale?: boolean;
hasAssetSchedule?: boolean;
+ hasImportErrors?: boolean;
isFavorite?: boolean;
lastDagRunState?: DagRunState;
limit?: number;
@@ -504,7 +506,7 @@ export const useDagServiceGetDagsSuspense = <TData =
Common.DagServiceGetDagsDef
paused?: boolean;
tags?: string[];
tagsMatchMode?: "any" | "all";
-} = {}, queryKey?: TQueryKey, options?: Omit<UseQueryOptions<TData, TError>,
"queryKey" | "queryFn">) => useSuspenseQuery<TData, TError>({ queryKey:
Common.UseDagServiceGetDagsKeyFn({ assetDependency, bundleName, bundleVersion,
dagDisplayNamePattern, dagIdPattern, dagRunEndDateGt, dagRunEndDateGte,
dagRunEndDateLt, dagRunEndDateLte, dagRunStartDateGt, dagRunStartDateGte,
dagRunStartDateLt, dagRunStartDateLte, dagRunState, excludeStale,
hasAssetSchedule, isFavorite, lastDagRunState, limit [...]
+} = {}, queryKey?: TQueryKey, options?: Omit<UseQueryOptions<TData, TError>,
"queryKey" | "queryFn">) => useSuspenseQuery<TData, TError>({ queryKey:
Common.UseDagServiceGetDagsKeyFn({ assetDependency, bundleName, bundleVersion,
dagDisplayNamePattern, dagIdPattern, dagRunEndDateGt, dagRunEndDateGte,
dagRunEndDateLt, dagRunEndDateLte, dagRunStartDateGt, dagRunStartDateGte,
dagRunStartDateLt, dagRunStartDateLte, dagRunState, excludeStale,
hasAssetSchedule, hasImportErrors, isFavorite, lastD [...]
/**
* Get Dag
* Get basic information about a DAG.
@@ -559,6 +561,7 @@ export const useDagServiceGetDagTagsSuspense = <TData =
Common.DagServiceGetDagT
* @param data.dagDisplayNamePattern SQL LIKE expression — use `%` / `_`
wildcards (e.g. `%customer_%`). Regular expressions are **not** supported.
* @param data.excludeStale
* @param data.paused
+* @param data.hasImportErrors Filter Dags by having import errors. Only Dags
that have been successfully loaded before will be returned.
* @param data.lastDagRunState
* @param data.bundleName
* @param data.bundleVersion
@@ -570,7 +573,7 @@ export const useDagServiceGetDagTagsSuspense = <TData =
Common.DagServiceGetDagT
* @returns DAGWithLatestDagRunsCollectionResponse Successful Response
* @throws ApiError
*/
-export const useDagServiceGetDagsUiSuspense = <TData =
Common.DagServiceGetDagsUiDefaultResponse, TError = unknown, TQueryKey extends
Array<unknown> = unknown[]>({ assetDependency, bundleName, bundleVersion,
dagDisplayNamePattern, dagIdPattern, dagIds, dagRunsLimit, excludeStale,
hasAssetSchedule, hasPendingActions, isFavorite, lastDagRunState, limit,
offset, orderBy, owners, paused, tags, tagsMatchMode }: {
+export const useDagServiceGetDagsUiSuspense = <TData =
Common.DagServiceGetDagsUiDefaultResponse, TError = unknown, TQueryKey extends
Array<unknown> = unknown[]>({ assetDependency, bundleName, bundleVersion,
dagDisplayNamePattern, dagIdPattern, dagIds, dagRunsLimit, excludeStale,
hasAssetSchedule, hasImportErrors, hasPendingActions, isFavorite,
lastDagRunState, limit, offset, orderBy, owners, paused, tags, tagsMatchMode }:
{
assetDependency?: string;
bundleName?: string;
bundleVersion?: string;
@@ -580,6 +583,7 @@ export const useDagServiceGetDagsUiSuspense = <TData =
Common.DagServiceGetDagsU
dagRunsLimit?: number;
excludeStale?: boolean;
hasAssetSchedule?: boolean;
+ hasImportErrors?: boolean;
hasPendingActions?: boolean;
isFavorite?: boolean;
lastDagRunState?: DagRunState;
@@ -590,7 +594,7 @@ export const useDagServiceGetDagsUiSuspense = <TData =
Common.DagServiceGetDagsU
paused?: boolean;
tags?: string[];
tagsMatchMode?: "any" | "all";
-} = {}, queryKey?: TQueryKey, options?: Omit<UseQueryOptions<TData, TError>,
"queryKey" | "queryFn">) => useSuspenseQuery<TData, TError>({ queryKey:
Common.UseDagServiceGetDagsUiKeyFn({ assetDependency, bundleName,
bundleVersion, dagDisplayNamePattern, dagIdPattern, dagIds, dagRunsLimit,
excludeStale, hasAssetSchedule, hasPendingActions, isFavorite, lastDagRunState,
limit, offset, orderBy, owners, paused, tags, tagsMatchMode }, queryKey),
queryFn: () => DagService.getDagsUi({ assetDepend [...]
+} = {}, queryKey?: TQueryKey, options?: Omit<UseQueryOptions<TData, TError>,
"queryKey" | "queryFn">) => useSuspenseQuery<TData, TError>({ queryKey:
Common.UseDagServiceGetDagsUiKeyFn({ assetDependency, bundleName,
bundleVersion, dagDisplayNamePattern, dagIdPattern, dagIds, dagRunsLimit,
excludeStale, hasAssetSchedule, hasImportErrors, hasPendingActions, isFavorite,
lastDagRunState, limit, offset, orderBy, owners, paused, tags, tagsMatchMode },
queryKey), queryFn: () => DagService.getDag [...]
/**
* Get Latest Run Info
* Get latest run.
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 8a6c09b8eb4..99d6bbb7591 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
@@ -1391,6 +1391,7 @@ export class DagService {
* @param data.dagDisplayNamePattern SQL LIKE expression — use `%` / `_`
wildcards (e.g. `%customer_%`). Regular expressions are **not** supported.
* @param data.excludeStale
* @param data.paused
+ * @param data.hasImportErrors Filter Dags by having import errors. Only
Dags that have been successfully loaded before will be returned.
* @param data.lastDagRunState
* @param data.bundleName
* @param data.bundleVersion
@@ -1424,6 +1425,7 @@ export class DagService {
dag_display_name_pattern: data.dagDisplayNamePattern,
exclude_stale: data.excludeStale,
paused: data.paused,
+ has_import_errors: data.hasImportErrors,
last_dag_run_state: data.lastDagRunState,
bundle_name: data.bundleName,
bundle_version: data.bundleVersion,
@@ -1693,6 +1695,7 @@ export class DagService {
* @param data.dagDisplayNamePattern SQL LIKE expression — use `%` / `_`
wildcards (e.g. `%customer_%`). Regular expressions are **not** supported.
* @param data.excludeStale
* @param data.paused
+ * @param data.hasImportErrors Filter Dags by having import errors. Only
Dags that have been successfully loaded before will be returned.
* @param data.lastDagRunState
* @param data.bundleName
* @param data.bundleVersion
@@ -1720,6 +1723,7 @@ export class DagService {
dag_display_name_pattern: data.dagDisplayNamePattern,
exclude_stale: data.excludeStale,
paused: data.paused,
+ has_import_errors: data.hasImportErrors,
last_dag_run_state: data.lastDagRunState,
bundle_name: data.bundleName,
bundle_version: data.bundleVersion,
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 414dbc8f12e..f286bdd205f 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
@@ -2373,6 +2373,10 @@ export type GetDagsData = {
* Filter Dags with asset-based scheduling
*/
hasAssetSchedule?: boolean | null;
+ /**
+ * Filter Dags by having import errors. Only Dags that have been
successfully loaded before will be returned.
+ */
+ hasImportErrors?: boolean | null;
isFavorite?: boolean | null;
lastDagRunState?: DagRunState | null;
limit?: number;
@@ -2476,6 +2480,10 @@ export type GetDagsUiData = {
* Filter Dags with asset-based scheduling
*/
hasAssetSchedule?: boolean | null;
+ /**
+ * Filter Dags by having import errors. Only Dags that have been
successfully loaded before will be returned.
+ */
+ hasImportErrors?: boolean | null;
hasPendingActions?: boolean | null;
isFavorite?: boolean | null;
lastDagRunState?: DagRunState | null;
diff --git
a/airflow-core/tests/unit/api_fastapi/core_api/routes/public/test_dags.py
b/airflow-core/tests/unit/api_fastapi/core_api/routes/public/test_dags.py
index b49e5bb6b3e..7612edebadc 100644
--- a/airflow-core/tests/unit/api_fastapi/core_api/routes/public/test_dags.py
+++ b/airflow-core/tests/unit/api_fastapi/core_api/routes/public/test_dags.py
@@ -490,6 +490,24 @@ class TestGetDags(TestDagEndpoint):
response = unauthorized_test_client.get("/dags")
assert response.status_code == 403
+ @pytest.mark.parametrize(
+ "filter_value, expected_ids",
+ [
+ (True, [DAG1_ID]),
+ (False, [DAG2_ID]),
+ ],
+ )
+ def test_get_dags_filter_has_import_errors(self, session, test_client,
filter_value, expected_ids):
+ dag = session.get(DagModel, DAG1_ID)
+ dag.has_import_errors = True
+ session.commit()
+
+ response = test_client.get("/dags", params={"has_import_errors":
filter_value})
+ assert response.status_code == 200
+ body = response.json()
+ assert body["total_entries"] == 1
+ assert [dag["dag_id"] for dag in body["dags"]] == expected_ids
+
class TestPatchDag(TestDagEndpoint):
"""Unit tests for Patch DAG."""