From 5e8c51cdc7c4b84ae056b24fd1887c9677510a26 Mon Sep 17 00:00:00 2001 From: Werner Van Geit Date: Thu, 4 Sep 2025 13:21:01 +0200 Subject: [PATCH 1/3] Fix python client wrt function job status --- services/api-server/openapi.json | 255 ++++++++++++------ .../api/routes/function_jobs_routes.py | 33 +-- .../models/domain/functions.py | 15 +- 3 files changed, 199 insertions(+), 104 deletions(-) diff --git a/services/api-server/openapi.json b/services/api-server/openapi.json index 4bd02be61c35..ba07de7ec424 100644 --- a/services/api-server/openapi.json +++ b/services/api-server/openapi.json @@ -5567,7 +5567,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Page_Union_Annotated_Union_RegisteredProjectFunctionJobWithStatus__RegisteredPythonCodeFunctionJobWithStatus__RegisteredSolverFunctionJobWithStatus___FieldInfo_annotation_NoneType__required_True__discriminator__function_class_____Annotated_Union_RegisteredProjectFunctionJob__RegisteredPythonCodeFunctionJob__RegisteredSolverFunctionJob___FieldInfo_annotation_NoneType__required_True__discriminator__function_class_____" + "$ref": "#/components/schemas/PageRegisteredFunctionJobWithorWithoutStatus" } } } @@ -9946,29 +9946,54 @@ ], "title": "OnePage[StudyPort]" }, - "Page_Annotated_Union_RegisteredProjectFunctionJob__RegisteredPythonCodeFunctionJob__RegisteredSolverFunctionJob___FieldInfo_annotation_NoneType__required_True__discriminator__function_class____": { + "PageRegisteredFunctionJobWithorWithoutStatus": { "properties": { "items": { "items": { - "oneOf": [ - { - "$ref": "#/components/schemas/RegisteredProjectFunctionJob" - }, + "anyOf": [ { - "$ref": "#/components/schemas/RegisteredPythonCodeFunctionJob" + "oneOf": [ + { + "$ref": "#/components/schemas/RegisteredProjectFunctionJob" + }, + { + "$ref": "#/components/schemas/RegisteredPythonCodeFunctionJob" + }, + { + "$ref": "#/components/schemas/RegisteredSolverFunctionJob" + } + ], + "discriminator": { + "propertyName": "function_class", + "mapping": { + "PROJECT": "#/components/schemas/RegisteredProjectFunctionJob", + "PYTHON_CODE": "#/components/schemas/RegisteredPythonCodeFunctionJob", + "SOLVER": "#/components/schemas/RegisteredSolverFunctionJob" + } + } }, { - "$ref": "#/components/schemas/RegisteredSolverFunctionJob" - } - ], - "discriminator": { - "propertyName": "function_class", - "mapping": { - "PROJECT": "#/components/schemas/RegisteredProjectFunctionJob", - "PYTHON_CODE": "#/components/schemas/RegisteredPythonCodeFunctionJob", - "SOLVER": "#/components/schemas/RegisteredSolverFunctionJob" + "oneOf": [ + { + "$ref": "#/components/schemas/RegisteredProjectFunctionJobWithStatus" + }, + { + "$ref": "#/components/schemas/RegisteredPythonCodeFunctionJobWithStatus" + }, + { + "$ref": "#/components/schemas/RegisteredSolverFunctionJobWithStatus" + } + ], + "discriminator": { + "propertyName": "function_class", + "mapping": { + "PROJECT": "#/components/schemas/RegisteredProjectFunctionJobWithStatus", + "PYTHON_CODE": "#/components/schemas/RegisteredPythonCodeFunctionJobWithStatus", + "SOLVER": "#/components/schemas/RegisteredSolverFunctionJobWithStatus" + } + } } - } + ] }, "type": "array", "title": "Items" @@ -10021,29 +10046,29 @@ "offset", "links" ], - "title": "Page[Annotated[Union[RegisteredProjectFunctionJob, RegisteredPythonCodeFunctionJob, RegisteredSolverFunctionJob], FieldInfo(annotation=NoneType, required=True, discriminator='function_class')]]" + "title": "PageRegisteredFunctionJobWithorWithoutStatus" }, - "Page_Annotated_Union_RegisteredProjectFunction__RegisteredPythonCodeFunction__RegisteredSolverFunction___FieldInfo_annotation_NoneType__required_True__discriminator__function_class____": { + "Page_Annotated_Union_RegisteredProjectFunctionJob__RegisteredPythonCodeFunctionJob__RegisteredSolverFunctionJob___FieldInfo_annotation_NoneType__required_True__discriminator__function_class____": { "properties": { "items": { "items": { "oneOf": [ { - "$ref": "#/components/schemas/RegisteredProjectFunction" + "$ref": "#/components/schemas/RegisteredProjectFunctionJob" }, { - "$ref": "#/components/schemas/RegisteredPythonCodeFunction" + "$ref": "#/components/schemas/RegisteredPythonCodeFunctionJob" }, { - "$ref": "#/components/schemas/RegisteredSolverFunction" + "$ref": "#/components/schemas/RegisteredSolverFunctionJob" } ], "discriminator": { "propertyName": "function_class", "mapping": { - "PROJECT": "#/components/schemas/RegisteredProjectFunction", - "PYTHON_CODE": "#/components/schemas/RegisteredPythonCodeFunction", - "SOLVER": "#/components/schemas/RegisteredSolverFunction" + "PROJECT": "#/components/schemas/RegisteredProjectFunctionJob", + "PYTHON_CODE": "#/components/schemas/RegisteredPythonCodeFunctionJob", + "SOLVER": "#/components/schemas/RegisteredSolverFunctionJob" } } }, @@ -10098,13 +10123,31 @@ "offset", "links" ], - "title": "Page[Annotated[Union[RegisteredProjectFunction, RegisteredPythonCodeFunction, RegisteredSolverFunction], FieldInfo(annotation=NoneType, required=True, discriminator='function_class')]]" + "title": "Page[Annotated[Union[RegisteredProjectFunctionJob, RegisteredPythonCodeFunctionJob, RegisteredSolverFunctionJob], FieldInfo(annotation=NoneType, required=True, discriminator='function_class')]]" }, - "Page_File_": { + "Page_Annotated_Union_RegisteredProjectFunction__RegisteredPythonCodeFunction__RegisteredSolverFunction___FieldInfo_annotation_NoneType__required_True__discriminator__function_class____": { "properties": { "items": { "items": { - "$ref": "#/components/schemas/File" + "oneOf": [ + { + "$ref": "#/components/schemas/RegisteredProjectFunction" + }, + { + "$ref": "#/components/schemas/RegisteredPythonCodeFunction" + }, + { + "$ref": "#/components/schemas/RegisteredSolverFunction" + } + ], + "discriminator": { + "propertyName": "function_class", + "mapping": { + "PROJECT": "#/components/schemas/RegisteredProjectFunction", + "PYTHON_CODE": "#/components/schemas/RegisteredPythonCodeFunction", + "SOLVER": "#/components/schemas/RegisteredSolverFunction" + } + } }, "type": "array", "title": "Items" @@ -10157,13 +10200,13 @@ "offset", "links" ], - "title": "Page[File]" + "title": "Page[Annotated[Union[RegisteredProjectFunction, RegisteredPythonCodeFunction, RegisteredSolverFunction], FieldInfo(annotation=NoneType, required=True, discriminator='function_class')]]" }, - "Page_Job_": { + "Page_File_": { "properties": { "items": { "items": { - "$ref": "#/components/schemas/Job" + "$ref": "#/components/schemas/File" }, "type": "array", "title": "Items" @@ -10216,13 +10259,13 @@ "offset", "links" ], - "title": "Page[Job]" + "title": "Page[File]" }, - "Page_LicensedItemGet_": { + "Page_Job_": { "properties": { "items": { "items": { - "$ref": "#/components/schemas/LicensedItemGet" + "$ref": "#/components/schemas/Job" }, "type": "array", "title": "Items" @@ -10275,13 +10318,13 @@ "offset", "links" ], - "title": "Page[LicensedItemGet]" + "title": "Page[Job]" }, - "Page_RegisteredFunctionJobCollection_": { + "Page_LicensedItemGet_": { "properties": { "items": { "items": { - "$ref": "#/components/schemas/RegisteredFunctionJobCollection" + "$ref": "#/components/schemas/LicensedItemGet" }, "type": "array", "title": "Items" @@ -10334,13 +10377,13 @@ "offset", "links" ], - "title": "Page[RegisteredFunctionJobCollection]" + "title": "Page[LicensedItemGet]" }, - "Page_Study_": { + "Page_RegisteredFunctionJobCollection_": { "properties": { "items": { "items": { - "$ref": "#/components/schemas/Study" + "$ref": "#/components/schemas/RegisteredFunctionJobCollection" }, "type": "array", "title": "Items" @@ -10393,56 +10436,13 @@ "offset", "links" ], - "title": "Page[Study]" + "title": "Page[RegisteredFunctionJobCollection]" }, - "Page_Union_Annotated_Union_RegisteredProjectFunctionJobWithStatus__RegisteredPythonCodeFunctionJobWithStatus__RegisteredSolverFunctionJobWithStatus___FieldInfo_annotation_NoneType__required_True__discriminator__function_class_____Annotated_Union_RegisteredProjectFunctionJob__RegisteredPythonCodeFunctionJob__RegisteredSolverFunctionJob___FieldInfo_annotation_NoneType__required_True__discriminator__function_class_____": { + "Page_Study_": { "properties": { "items": { "items": { - "anyOf": [ - { - "oneOf": [ - { - "$ref": "#/components/schemas/RegisteredProjectFunctionJobWithStatus" - }, - { - "$ref": "#/components/schemas/RegisteredPythonCodeFunctionJobWithStatus" - }, - { - "$ref": "#/components/schemas/RegisteredSolverFunctionJobWithStatus" - } - ], - "discriminator": { - "propertyName": "function_class", - "mapping": { - "PROJECT": "#/components/schemas/RegisteredProjectFunctionJobWithStatus", - "PYTHON_CODE": "#/components/schemas/RegisteredPythonCodeFunctionJobWithStatus", - "SOLVER": "#/components/schemas/RegisteredSolverFunctionJobWithStatus" - } - } - }, - { - "oneOf": [ - { - "$ref": "#/components/schemas/RegisteredProjectFunctionJob" - }, - { - "$ref": "#/components/schemas/RegisteredPythonCodeFunctionJob" - }, - { - "$ref": "#/components/schemas/RegisteredSolverFunctionJob" - } - ], - "discriminator": { - "propertyName": "function_class", - "mapping": { - "PROJECT": "#/components/schemas/RegisteredProjectFunctionJob", - "PYTHON_CODE": "#/components/schemas/RegisteredPythonCodeFunctionJob", - "SOLVER": "#/components/schemas/RegisteredSolverFunctionJob" - } - } - } - ] + "$ref": "#/components/schemas/Study" }, "type": "array", "title": "Items" @@ -10495,7 +10495,7 @@ "offset", "links" ], - "title": "Page[Union[Annotated[Union[RegisteredProjectFunctionJobWithStatus, RegisteredPythonCodeFunctionJobWithStatus, RegisteredSolverFunctionJobWithStatus], FieldInfo(annotation=NoneType, required=True, discriminator='function_class')], Annotated[Union[RegisteredProjectFunctionJob, RegisteredPythonCodeFunctionJob, RegisteredSolverFunctionJob], FieldInfo(annotation=NoneType, required=True, discriminator='function_class')]]]" + "title": "Page[Study]" }, "PricingPlanClassification": { "type": "string", @@ -10862,6 +10862,15 @@ "title": "Function Class", "default": "PROJECT" }, + "has_state": { + "type": "boolean", + "enum": [ + true, + false + ], + "title": "Has State", + "default": false + }, "project_job_id": { "anyOf": [ { @@ -11014,6 +11023,15 @@ "const": "PYTHON_CODE", "title": "Function Class", "default": "PYTHON_CODE" + }, + "has_state": { + "type": "boolean", + "enum": [ + true, + false + ], + "title": "Has State", + "default": false } }, "type": "object", @@ -11201,6 +11219,15 @@ "title": "Function Class", "default": "PROJECT" }, + "has_state": { + "type": "boolean", + "enum": [ + true, + false + ], + "title": "Has State", + "default": false + }, "uid": { "type": "string", "format": "uuid", @@ -11294,6 +11321,15 @@ "title": "Function Class", "default": "PROJECT" }, + "has_state": { + "type": "boolean", + "enum": [ + true, + false + ], + "title": "Has State", + "default": false + }, "uid": { "type": "string", "format": "uuid", @@ -11481,6 +11517,15 @@ "title": "Function Class", "default": "PYTHON_CODE" }, + "has_state": { + "type": "boolean", + "enum": [ + true, + false + ], + "title": "Has State", + "default": false + }, "uid": { "type": "string", "format": "uuid", @@ -11549,6 +11594,15 @@ "title": "Function Class", "default": "PYTHON_CODE" }, + "has_state": { + "type": "boolean", + "enum": [ + true, + false + ], + "title": "Has State", + "default": false + }, "uid": { "type": "string", "format": "uuid", @@ -11718,6 +11772,15 @@ "title": "Function Class", "default": "SOLVER" }, + "has_state": { + "type": "boolean", + "enum": [ + true, + false + ], + "title": "Has State", + "default": false + }, "uid": { "type": "string", "format": "uuid", @@ -11811,6 +11874,15 @@ "title": "Function Class", "default": "SOLVER" }, + "has_state": { + "type": "boolean", + "enum": [ + true, + false + ], + "title": "Has State", + "default": false + }, "uid": { "type": "string", "format": "uuid", @@ -12137,6 +12209,15 @@ "title": "Function Class", "default": "SOLVER" }, + "has_state": { + "type": "boolean", + "enum": [ + true, + false + ], + "title": "Has State", + "default": false + }, "solver_job_id": { "anyOf": [ { diff --git a/services/api-server/src/simcore_service_api_server/api/routes/function_jobs_routes.py b/services/api-server/src/simcore_service_api_server/api/routes/function_jobs_routes.py index f578d8243d42..3af6904637df 100644 --- a/services/api-server/src/simcore_service_api_server/api/routes/function_jobs_routes.py +++ b/services/api-server/src/simcore_service_api_server/api/routes/function_jobs_routes.py @@ -1,4 +1,3 @@ -from collections.abc import Sequence from logging import getLogger from typing import Annotated, Final @@ -14,7 +13,7 @@ FunctionOutputs, RegisteredFunctionJob, ) -from models_library.functions import RegisteredFunction, RegisteredFunctionJobWithStatus +from models_library.functions import RegisteredFunction from models_library.functions_errors import ( UnsupportedFunctionClassError, UnsupportedFunctionFunctionJobClassCombinationError, @@ -31,7 +30,8 @@ from ..._service_functions import FunctionService from ..._service_jobs import JobService from ...exceptions.function_errors import FunctionJobProjectMissingError -from ...models.pagination import Page, PaginationParams +from ...models.domain.functions import PageRegisteredFunctionJobWithorWithoutStatus +from ...models.pagination import PaginationParams from ...models.schemas.errors import ErrorGet from ...models.schemas.functions_filters import FunctionJobsListFilters from ...services_rpc.wb_api_server import WbApiRpcClient @@ -116,9 +116,7 @@ @function_job_router.get( "", - response_model=Page[ - RegisteredFunctionJobWithStatus | RegisteredFunctionJob - ], # left-right order is important here + response_model=PageRegisteredFunctionJobWithorWithoutStatus, description=create_route_description( base="List function jobs", changelog=CHANGE_LOGS["list_function_jobs"] ), @@ -138,9 +136,6 @@ async def list_function_jobs( bool, Query(description="Include job status in response") ] = False, ): - function_jobs_list: Sequence[ - RegisteredFunctionJobWithStatus | RegisteredFunctionJob - ] = [] if include_status: function_jobs_list, meta = ( await function_job_service.list_function_jobs_with_status( @@ -183,15 +178,21 @@ async def list_function_jobs( async_pg_engine=async_pg_engine, ) ) - else: - function_jobs_list, meta = await function_job_service.list_function_jobs( - pagination_offset=page_params.offset, - pagination_limit=page_params.limit, - filter_by_function_job_ids=filters.function_job_ids, - filter_by_function_job_collection_id=filters.function_job_collection_id, - filter_by_function_id=filters.function_id, + + return create_page( + function_jobs_list, + total=meta.total, + params=page_params, ) + function_jobs_list, meta = await function_job_service.list_function_jobs( + pagination_offset=page_params.offset, + pagination_limit=page_params.limit, + filter_by_function_job_ids=filters.function_job_ids, + filter_by_function_job_collection_id=filters.function_job_collection_id, + filter_by_function_id=filters.function_id, + ) + return create_page( function_jobs_list, total=meta.total, diff --git a/services/api-server/src/simcore_service_api_server/models/domain/functions.py b/services/api-server/src/simcore_service_api_server/models/domain/functions.py index ff4e56ba34b4..c7601bd42900 100644 --- a/services/api-server/src/simcore_service_api_server/models/domain/functions.py +++ b/services/api-server/src/simcore_service_api_server/models/domain/functions.py @@ -1,9 +1,22 @@ -from models_library.functions import FunctionJobID +from models_library.functions import ( + FunctionJobID, + RegisteredFunctionJob, + RegisteredFunctionJobWithStatus, +) from pydantic import BaseModel +from ...models.pagination import Page from ...models.schemas.jobs import JobInputs class PreRegisteredFunctionJobData(BaseModel): function_job_id: FunctionJobID job_inputs: JobInputs + + +class PageRegisteredFunctionJobWithorWithoutStatus( + Page[RegisteredFunctionJob | RegisteredFunctionJobWithStatus] +): + # This class is created specifically to provide a name for this in openapi.json. + # When using an alias the python-client generates too long file name + pass From 2c1df3cd8882c2150b8b1f9c586c4568f24d4f14 Mon Sep 17 00:00:00 2001 From: Werner Van Geit Date: Thu, 4 Sep 2025 13:26:15 +0200 Subject: [PATCH 2/3] Update openapi json --- services/api-server/openapi.json | 81 -------------------------------- 1 file changed, 81 deletions(-) diff --git a/services/api-server/openapi.json b/services/api-server/openapi.json index ba07de7ec424..6fb0c4f6763d 100644 --- a/services/api-server/openapi.json +++ b/services/api-server/openapi.json @@ -10862,15 +10862,6 @@ "title": "Function Class", "default": "PROJECT" }, - "has_state": { - "type": "boolean", - "enum": [ - true, - false - ], - "title": "Has State", - "default": false - }, "project_job_id": { "anyOf": [ { @@ -11023,15 +11014,6 @@ "const": "PYTHON_CODE", "title": "Function Class", "default": "PYTHON_CODE" - }, - "has_state": { - "type": "boolean", - "enum": [ - true, - false - ], - "title": "Has State", - "default": false } }, "type": "object", @@ -11219,15 +11201,6 @@ "title": "Function Class", "default": "PROJECT" }, - "has_state": { - "type": "boolean", - "enum": [ - true, - false - ], - "title": "Has State", - "default": false - }, "uid": { "type": "string", "format": "uuid", @@ -11321,15 +11294,6 @@ "title": "Function Class", "default": "PROJECT" }, - "has_state": { - "type": "boolean", - "enum": [ - true, - false - ], - "title": "Has State", - "default": false - }, "uid": { "type": "string", "format": "uuid", @@ -11517,15 +11481,6 @@ "title": "Function Class", "default": "PYTHON_CODE" }, - "has_state": { - "type": "boolean", - "enum": [ - true, - false - ], - "title": "Has State", - "default": false - }, "uid": { "type": "string", "format": "uuid", @@ -11594,15 +11549,6 @@ "title": "Function Class", "default": "PYTHON_CODE" }, - "has_state": { - "type": "boolean", - "enum": [ - true, - false - ], - "title": "Has State", - "default": false - }, "uid": { "type": "string", "format": "uuid", @@ -11772,15 +11718,6 @@ "title": "Function Class", "default": "SOLVER" }, - "has_state": { - "type": "boolean", - "enum": [ - true, - false - ], - "title": "Has State", - "default": false - }, "uid": { "type": "string", "format": "uuid", @@ -11874,15 +11811,6 @@ "title": "Function Class", "default": "SOLVER" }, - "has_state": { - "type": "boolean", - "enum": [ - true, - false - ], - "title": "Has State", - "default": false - }, "uid": { "type": "string", "format": "uuid", @@ -12209,15 +12137,6 @@ "title": "Function Class", "default": "SOLVER" }, - "has_state": { - "type": "boolean", - "enum": [ - true, - false - ], - "title": "Has State", - "default": false - }, "solver_job_id": { "anyOf": [ { From bff182a4598149d7582e662ff03490dd97257ebe Mon Sep 17 00:00:00 2001 From: Werner Van Geit Date: Thu, 4 Sep 2025 14:11:18 +0200 Subject: [PATCH 3/3] Fix tests --- services/api-server/openapi.json | 24 +++++++++---------- .../api/routes/function_jobs_routes.py | 6 ++--- .../models/domain/functions.py | 2 +- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/services/api-server/openapi.json b/services/api-server/openapi.json index 6fb0c4f6763d..57c07b5e4c45 100644 --- a/services/api-server/openapi.json +++ b/services/api-server/openapi.json @@ -9954,42 +9954,42 @@ { "oneOf": [ { - "$ref": "#/components/schemas/RegisteredProjectFunctionJob" + "$ref": "#/components/schemas/RegisteredProjectFunctionJobWithStatus" }, { - "$ref": "#/components/schemas/RegisteredPythonCodeFunctionJob" + "$ref": "#/components/schemas/RegisteredPythonCodeFunctionJobWithStatus" }, { - "$ref": "#/components/schemas/RegisteredSolverFunctionJob" + "$ref": "#/components/schemas/RegisteredSolverFunctionJobWithStatus" } ], "discriminator": { "propertyName": "function_class", "mapping": { - "PROJECT": "#/components/schemas/RegisteredProjectFunctionJob", - "PYTHON_CODE": "#/components/schemas/RegisteredPythonCodeFunctionJob", - "SOLVER": "#/components/schemas/RegisteredSolverFunctionJob" + "PROJECT": "#/components/schemas/RegisteredProjectFunctionJobWithStatus", + "PYTHON_CODE": "#/components/schemas/RegisteredPythonCodeFunctionJobWithStatus", + "SOLVER": "#/components/schemas/RegisteredSolverFunctionJobWithStatus" } } }, { "oneOf": [ { - "$ref": "#/components/schemas/RegisteredProjectFunctionJobWithStatus" + "$ref": "#/components/schemas/RegisteredProjectFunctionJob" }, { - "$ref": "#/components/schemas/RegisteredPythonCodeFunctionJobWithStatus" + "$ref": "#/components/schemas/RegisteredPythonCodeFunctionJob" }, { - "$ref": "#/components/schemas/RegisteredSolverFunctionJobWithStatus" + "$ref": "#/components/schemas/RegisteredSolverFunctionJob" } ], "discriminator": { "propertyName": "function_class", "mapping": { - "PROJECT": "#/components/schemas/RegisteredProjectFunctionJobWithStatus", - "PYTHON_CODE": "#/components/schemas/RegisteredPythonCodeFunctionJobWithStatus", - "SOLVER": "#/components/schemas/RegisteredSolverFunctionJobWithStatus" + "PROJECT": "#/components/schemas/RegisteredProjectFunctionJob", + "PYTHON_CODE": "#/components/schemas/RegisteredPythonCodeFunctionJob", + "SOLVER": "#/components/schemas/RegisteredSolverFunctionJob" } } } diff --git a/services/api-server/src/simcore_service_api_server/api/routes/function_jobs_routes.py b/services/api-server/src/simcore_service_api_server/api/routes/function_jobs_routes.py index 3af6904637df..0421f8ae8ad2 100644 --- a/services/api-server/src/simcore_service_api_server/api/routes/function_jobs_routes.py +++ b/services/api-server/src/simcore_service_api_server/api/routes/function_jobs_routes.py @@ -137,7 +137,7 @@ async def list_function_jobs( ] = False, ): if include_status: - function_jobs_list, meta = ( + function_jobs_list_ws, meta = ( await function_job_service.list_function_jobs_with_status( pagination_offset=page_params.offset, pagination_limit=page_params.limit, @@ -148,7 +148,7 @@ async def list_function_jobs( ) # the code below should ideally be in the service layer, but this can only be done if the # celery status resolution is done in the service layer too - for function_job_wso in function_jobs_list: + for function_job_wso in function_jobs_list_ws: if ( function_job_wso.status.status not in ( @@ -180,7 +180,7 @@ async def list_function_jobs( ) return create_page( - function_jobs_list, + function_jobs_list_ws, total=meta.total, params=page_params, ) diff --git a/services/api-server/src/simcore_service_api_server/models/domain/functions.py b/services/api-server/src/simcore_service_api_server/models/domain/functions.py index c7601bd42900..1f75f7441f29 100644 --- a/services/api-server/src/simcore_service_api_server/models/domain/functions.py +++ b/services/api-server/src/simcore_service_api_server/models/domain/functions.py @@ -15,7 +15,7 @@ class PreRegisteredFunctionJobData(BaseModel): class PageRegisteredFunctionJobWithorWithoutStatus( - Page[RegisteredFunctionJob | RegisteredFunctionJobWithStatus] + Page[RegisteredFunctionJobWithStatus | RegisteredFunctionJob] # order is important ): # This class is created specifically to provide a name for this in openapi.json. # When using an alias the python-client generates too long file name