From 818c1582fa5123f50298fca0157570027b96ed00 Mon Sep 17 00:00:00 2001 From: qweeze Date: Sun, 15 Oct 2023 00:51:12 +0400 Subject: [PATCH] chore(openrpc): Support for errors data model --- fastapi_jsonrpc/__init__.py | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/fastapi_jsonrpc/__init__.py b/fastapi_jsonrpc/__init__.py index a0ce443..3906eea 100644 --- a/fastapi_jsonrpc/__init__.py +++ b/fastapi_jsonrpc/__init__.py @@ -1338,6 +1338,20 @@ def openrpc(self): result_model = create_model(f'{route.name}_Result', result=(route.result_model or Any, ...)) result_schema = result_model.schema(ref_template=ref_template) + errors_spec = [] + for error in route.errors: + spec = { + 'code': error.CODE, + 'message': error.MESSAGE, + } + error_model = error.get_data_model() + if error_model is not None: + error_schema = error_model.schema(ref_template=ref_template) + schemas_spec.update(error_schema.pop('definitions', {})) + spec['data'] = error_schema + + errors_spec.append(spec) + method_spec = { 'name': route.name, 'summary': route.summary, @@ -1359,13 +1373,7 @@ def openrpc(self): } for tag in route.tags ], - 'errors': [ - { - 'code': error.CODE, - 'message': error.MESSAGE, - } - for error in route.errors - ], + 'errors': errors_spec, } methods_spec.append(method_spec) schemas_spec.update(params_schema.get('definitions', {}))