diff --git a/airflow/api_fastapi/core_api/openapi/v1-generated.yaml b/airflow/api_fastapi/core_api/openapi/v1-generated.yaml index 3542430176bb9..2d26571b1e374 100644 --- a/airflow/api_fastapi/core_api/openapi/v1-generated.yaml +++ b/airflow/api_fastapi/core_api/openapi/v1-generated.yaml @@ -768,7 +768,7 @@ paths: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' - /public/backfills/: + /public/backfills: get: tags: - Backfill @@ -1219,7 +1219,7 @@ paths: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' - /public/connections/: + /public/connections: get: tags: - Connection @@ -1736,7 +1736,7 @@ paths: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' - /public/dagStats/: + /public/dagStats: get: tags: - DagStats @@ -2018,7 +2018,7 @@ paths: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' - /public/dags/: + /public/dags: get: tags: - DAG @@ -2577,7 +2577,7 @@ paths: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' - /public/eventLogs/: + /public/eventLogs: get: tags: - Event Log @@ -2772,7 +2772,7 @@ paths: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' - /public/importErrors/: + /public/importErrors: get: tags: - Import Error @@ -2828,7 +2828,7 @@ paths: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' - /public/plugins/: + /public/plugins: get: tags: - Plugin @@ -3033,7 +3033,7 @@ paths: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' - /public/pools/: + /public/pools: get: tags: - Pool @@ -3095,7 +3095,6 @@ paths: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' - /public/pools: post: tags: - Pool @@ -3103,11 +3102,11 @@ paths: description: Create a Pool. operationId: post_pool requestBody: + required: true content: application/json: schema: $ref: '#/components/schemas/PoolPostBody' - required: true responses: '201': description: Successful Response @@ -3116,24 +3115,24 @@ paths: schema: $ref: '#/components/schemas/PoolResponse' '401': - description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/HTTPExceptionResponse' + description: Unauthorized '403': - description: Forbidden content: application/json: schema: $ref: '#/components/schemas/HTTPExceptionResponse' + description: Forbidden '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' - /public/providers/: + /public/providers: get: tags: - Provider @@ -4030,7 +4029,7 @@ paths: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' - /public/dags/{dag_id}/tasks/: + /public/dags/{dag_id}/tasks: get: tags: - Task @@ -4295,7 +4294,7 @@ paths: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' - /public/variables/: + /public/variables: get: tags: - Variable @@ -4495,7 +4494,7 @@ paths: application/json: schema: $ref: '#/components/schemas/HealthInfoSchema' - /public/version/: + /public/version: get: tags: - Version diff --git a/airflow/api_fastapi/core_api/routes/public/backfills.py b/airflow/api_fastapi/core_api/routes/public/backfills.py index 5eb265243c047..5adddc12a4d15 100644 --- a/airflow/api_fastapi/core_api/routes/public/backfills.py +++ b/airflow/api_fastapi/core_api/routes/public/backfills.py @@ -47,7 +47,7 @@ @backfills_router.get( - path="/", + path="", ) def list_backfills( dag_id: str, @@ -176,7 +176,7 @@ def cancel_backfill(backfill_id, session: Annotated[Session, Depends(get_session @backfills_router.post( - path="/", + path="", responses=create_openapi_http_exception_doc( [ status.HTTP_404_NOT_FOUND, diff --git a/airflow/api_fastapi/core_api/routes/public/connections.py b/airflow/api_fastapi/core_api/routes/public/connections.py index 22a23cdb65540..c79174bd2cca7 100644 --- a/airflow/api_fastapi/core_api/routes/public/connections.py +++ b/airflow/api_fastapi/core_api/routes/public/connections.py @@ -82,7 +82,7 @@ def get_connection( @connections_router.get( - "/", + "", responses=create_openapi_http_exception_doc([status.HTTP_404_NOT_FOUND]), ) def get_connections( @@ -119,7 +119,7 @@ def get_connections( @connections_router.post( - "/", + "", status_code=status.HTTP_201_CREATED, responses=create_openapi_http_exception_doc([status.HTTP_409_CONFLICT]), ) diff --git a/airflow/api_fastapi/core_api/routes/public/dag_stats.py b/airflow/api_fastapi/core_api/routes/public/dag_stats.py index 574760f17c571..49c5e7ec48f94 100644 --- a/airflow/api_fastapi/core_api/routes/public/dag_stats.py +++ b/airflow/api_fastapi/core_api/routes/public/dag_stats.py @@ -41,7 +41,7 @@ @dag_stats_router.get( - "/", + "", responses=create_openapi_http_exception_doc( [ status.HTTP_400_BAD_REQUEST, diff --git a/airflow/api_fastapi/core_api/routes/public/dags.py b/airflow/api_fastapi/core_api/routes/public/dags.py index e97ad24d832cc..f44f2f7e8a5f3 100644 --- a/airflow/api_fastapi/core_api/routes/public/dags.py +++ b/airflow/api_fastapi/core_api/routes/public/dags.py @@ -58,7 +58,7 @@ dags_router = AirflowRouter(tags=["DAG"], prefix="/dags") -@dags_router.get("/") +@dags_router.get("") def get_dags( limit: QueryLimit, offset: QueryOffset, @@ -223,7 +223,7 @@ def patch_dag( @dags_router.patch( - "/", + "", responses=create_openapi_http_exception_doc( [ status.HTTP_400_BAD_REQUEST, diff --git a/airflow/api_fastapi/core_api/routes/public/event_logs.py b/airflow/api_fastapi/core_api/routes/public/event_logs.py index 6c1117bebbe36..abe0371a735b7 100644 --- a/airflow/api_fastapi/core_api/routes/public/event_logs.py +++ b/airflow/api_fastapi/core_api/routes/public/event_logs.py @@ -61,7 +61,7 @@ def get_event_log( @event_logs_router.get( - "/", + "", ) def get_event_logs( limit: QueryLimit, diff --git a/airflow/api_fastapi/core_api/routes/public/import_error.py b/airflow/api_fastapi/core_api/routes/public/import_error.py index abccdf163c2ee..3db8cf178f049 100644 --- a/airflow/api_fastapi/core_api/routes/public/import_error.py +++ b/airflow/api_fastapi/core_api/routes/public/import_error.py @@ -65,7 +65,7 @@ def get_import_error( @import_error_router.get( - "/", + "", ) def get_import_errors( limit: QueryLimit, diff --git a/airflow/api_fastapi/core_api/routes/public/plugins.py b/airflow/api_fastapi/core_api/routes/public/plugins.py index d0028b7025082..717d073636c19 100644 --- a/airflow/api_fastapi/core_api/routes/public/plugins.py +++ b/airflow/api_fastapi/core_api/routes/public/plugins.py @@ -25,7 +25,7 @@ plugins_router = AirflowRouter(tags=["Plugin"], prefix="/plugins") -@plugins_router.get("/") +@plugins_router.get("") def get_plugins( limit: QueryLimit, offset: QueryOffset, diff --git a/airflow/api_fastapi/core_api/routes/public/pools.py b/airflow/api_fastapi/core_api/routes/public/pools.py index 1e5cf47b1b248..79b055b07447f 100644 --- a/airflow/api_fastapi/core_api/routes/public/pools.py +++ b/airflow/api_fastapi/core_api/routes/public/pools.py @@ -81,7 +81,7 @@ def get_pool( @pools_router.get( - "/", + "", responses=create_openapi_http_exception_doc([status.HTTP_404_NOT_FOUND]), ) def get_pools( diff --git a/airflow/api_fastapi/core_api/routes/public/providers.py b/airflow/api_fastapi/core_api/routes/public/providers.py index 45f3b9a7a1f08..28b4682dc3e55 100644 --- a/airflow/api_fastapi/core_api/routes/public/providers.py +++ b/airflow/api_fastapi/core_api/routes/public/providers.py @@ -39,7 +39,7 @@ def _provider_mapper(provider: ProviderInfo) -> ProviderResponse: ) -@providers_router.get("/") +@providers_router.get("") def get_providers( limit: QueryLimit, offset: QueryOffset, diff --git a/airflow/api_fastapi/core_api/routes/public/tasks.py b/airflow/api_fastapi/core_api/routes/public/tasks.py index a8a366cf6df00..be1fdc7324d8f 100644 --- a/airflow/api_fastapi/core_api/routes/public/tasks.py +++ b/airflow/api_fastapi/core_api/routes/public/tasks.py @@ -31,7 +31,7 @@ @tasks_router.get( - "/", + "", responses=create_openapi_http_exception_doc( [ status.HTTP_400_BAD_REQUEST, diff --git a/airflow/api_fastapi/core_api/routes/public/variables.py b/airflow/api_fastapi/core_api/routes/public/variables.py index 6c9dccc5ea7ad..fe966deda0b6b 100644 --- a/airflow/api_fastapi/core_api/routes/public/variables.py +++ b/airflow/api_fastapi/core_api/routes/public/variables.py @@ -72,7 +72,7 @@ def get_variable( @variables_router.get( - "/", + "", ) def get_variables( limit: QueryLimit, @@ -144,7 +144,7 @@ def patch_variable( @variables_router.post( - "/", + "", status_code=status.HTTP_201_CREATED, ) def post_variable( diff --git a/airflow/api_fastapi/core_api/routes/public/version.py b/airflow/api_fastapi/core_api/routes/public/version.py index a53fdb2029a6f..0e784fbfd8694 100644 --- a/airflow/api_fastapi/core_api/routes/public/version.py +++ b/airflow/api_fastapi/core_api/routes/public/version.py @@ -25,7 +25,7 @@ version_router = AirflowRouter(tags=["Version"], prefix="/version") -@version_router.get("/") +@version_router.get("") def get_version() -> VersionInfo: """Get version information.""" airflow_version = airflow.__version__ diff --git a/airflow/ui/openapi-gen/requests/services.gen.ts b/airflow/ui/openapi-gen/requests/services.gen.ts index 09eb2432d77ad..467c2961420e5 100644 --- a/airflow/ui/openapi-gen/requests/services.gen.ts +++ b/airflow/ui/openapi-gen/requests/services.gen.ts @@ -568,7 +568,7 @@ export class BackfillService { ): CancelablePromise { return __request(OpenAPI, { method: "GET", - url: "/public/backfills/", + url: "/public/backfills", query: { dag_id: data.dagId, limit: data.limit, @@ -595,7 +595,7 @@ export class BackfillService { ): CancelablePromise { return __request(OpenAPI, { method: "POST", - url: "/public/backfills/", + url: "/public/backfills", body: data.requestBody, mediaType: "application/json", errors: { @@ -814,7 +814,7 @@ export class ConnectionService { ): CancelablePromise { return __request(OpenAPI, { method: "GET", - url: "/public/connections/", + url: "/public/connections", query: { limit: data.limit, offset: data.offset, @@ -842,7 +842,7 @@ export class ConnectionService { ): CancelablePromise { return __request(OpenAPI, { method: "POST", - url: "/public/connections/", + url: "/public/connections", body: data.requestBody, mediaType: "application/json", errors: { @@ -1087,7 +1087,7 @@ export class DagStatsService { ): CancelablePromise { return __request(OpenAPI, { method: "GET", - url: "/public/dagStats/", + url: "/public/dagStats", query: { dag_ids: data.dagIds, }, @@ -1224,7 +1224,7 @@ export class DagService { ): CancelablePromise { return __request(OpenAPI, { method: "GET", - url: "/public/dags/", + url: "/public/dags", query: { limit: data.limit, offset: data.offset, @@ -1267,7 +1267,7 @@ export class DagService { ): CancelablePromise { return __request(OpenAPI, { method: "PATCH", - url: "/public/dags/", + url: "/public/dags", query: { update_mask: data.updateMask, limit: data.limit, @@ -1488,7 +1488,7 @@ export class EventLogService { ): CancelablePromise { return __request(OpenAPI, { method: "GET", - url: "/public/eventLogs/", + url: "/public/eventLogs", query: { dag_id: data.dagId, task_id: data.taskId, @@ -1556,7 +1556,7 @@ export class ImportErrorService { ): CancelablePromise { return __request(OpenAPI, { method: "GET", - url: "/public/importErrors/", + url: "/public/importErrors", query: { limit: data.limit, offset: data.offset, @@ -1585,7 +1585,7 @@ export class PluginService { ): CancelablePromise { return __request(OpenAPI, { method: "GET", - url: "/public/plugins/", + url: "/public/plugins", query: { limit: data.limit, offset: data.offset, @@ -1700,7 +1700,7 @@ export class PoolService { ): CancelablePromise { return __request(OpenAPI, { method: "GET", - url: "/public/pools/", + url: "/public/pools", query: { limit: data.limit, offset: data.offset, @@ -1755,7 +1755,7 @@ export class ProviderService { ): CancelablePromise { return __request(OpenAPI, { method: "GET", - url: "/public/providers/", + url: "/public/providers", query: { limit: data.limit, offset: data.offset, @@ -2147,7 +2147,7 @@ export class TaskService { ): CancelablePromise { return __request(OpenAPI, { method: "GET", - url: "/public/dags/{dag_id}/tasks/", + url: "/public/dags/{dag_id}/tasks", path: { dag_id: data.dagId, }, @@ -2294,7 +2294,7 @@ export class VariableService { ): CancelablePromise { return __request(OpenAPI, { method: "GET", - url: "/public/variables/", + url: "/public/variables", query: { limit: data.limit, offset: data.offset, @@ -2321,7 +2321,7 @@ export class VariableService { ): CancelablePromise { return __request(OpenAPI, { method: "POST", - url: "/public/variables/", + url: "/public/variables", body: data.requestBody, mediaType: "application/json", errors: { @@ -2400,7 +2400,7 @@ export class VersionService { public static getVersion(): CancelablePromise { return __request(OpenAPI, { method: "GET", - url: "/public/version/", + url: "/public/version", }); } } diff --git a/airflow/ui/openapi-gen/requests/types.gen.ts b/airflow/ui/openapi-gen/requests/types.gen.ts index 71a94d534d326..21ad2839bc80b 100644 --- a/airflow/ui/openapi-gen/requests/types.gen.ts +++ b/airflow/ui/openapi-gen/requests/types.gen.ts @@ -1992,7 +1992,7 @@ export type $OpenApiTs = { }; }; }; - "/public/backfills/": { + "/public/backfills": { get: { req: ListBackfillsData; res: { @@ -2245,7 +2245,7 @@ export type $OpenApiTs = { }; }; }; - "/public/connections/": { + "/public/connections": { get: { req: GetConnectionsData; res: { @@ -2494,7 +2494,7 @@ export type $OpenApiTs = { }; }; }; - "/public/dagStats/": { + "/public/dagStats": { get: { req: GetDagStatsData; res: { @@ -2610,7 +2610,7 @@ export type $OpenApiTs = { }; }; }; - "/public/dags/": { + "/public/dags": { get: { req: GetDagsData; res: { @@ -2832,7 +2832,7 @@ export type $OpenApiTs = { }; }; }; - "/public/eventLogs/": { + "/public/eventLogs": { get: { req: GetEventLogsData; res: { @@ -2882,7 +2882,7 @@ export type $OpenApiTs = { }; }; }; - "/public/importErrors/": { + "/public/importErrors": { get: { req: GetImportErrorsData; res: { @@ -2905,7 +2905,7 @@ export type $OpenApiTs = { }; }; }; - "/public/plugins/": { + "/public/plugins": { get: { req: GetPluginsData; res: { @@ -3013,7 +3013,7 @@ export type $OpenApiTs = { }; }; }; - "/public/pools/": { + "/public/pools": { get: { req: GetPoolsData; res: { @@ -3039,8 +3039,6 @@ export type $OpenApiTs = { 422: HTTPValidationError; }; }; - }; - "/public/pools": { post: { req: PostPoolData; res: { @@ -3063,7 +3061,7 @@ export type $OpenApiTs = { }; }; }; - "/public/providers/": { + "/public/providers": { get: { req: GetProvidersData; res: { @@ -3329,7 +3327,7 @@ export type $OpenApiTs = { }; }; }; - "/public/dags/{dag_id}/tasks/": { + "/public/dags/{dag_id}/tasks": { get: { req: GetTasksData; res: { @@ -3472,7 +3470,7 @@ export type $OpenApiTs = { }; }; }; - "/public/variables/": { + "/public/variables": { get: { req: GetVariablesData; res: { @@ -3557,7 +3555,7 @@ export type $OpenApiTs = { }; }; }; - "/public/version/": { + "/public/version": { get: { res: { /** diff --git a/tests/api_fastapi/core_api/routes/test_routes.py b/tests/api_fastapi/core_api/routes/test_routes.py index 6258a5f30ca75..1930815a0f08b 100644 --- a/tests/api_fastapi/core_api/routes/test_routes.py +++ b/tests/api_fastapi/core_api/routes/test_routes.py @@ -20,7 +20,7 @@ # Set of paths that are allowed to be accessible without authentication NO_AUTH_PATHS = { - "/public/version/", + "/public/version", "/public/monitor/health", }