From 2985249efa82fb7bb7b60d4411f1aad3d103bafb Mon Sep 17 00:00:00 2001 From: Afonso Castanheta Date: Wed, 25 Feb 2026 11:36:24 +0000 Subject: [PATCH 1/2] Add unauthorized error handling for missing client certificate header --- ...ividual_on_boarded_api_invoker_document_controller.py | 8 +++++++- .../api_invoker_management/core/responses.py | 7 +++++++ .../controllers/default_controller.py | 8 +++++++- ...dividual_api_provider_enrolment_details_controller.py | 8 +++++++- .../api_provider_management/core/responses.py | 7 +++++++ .../capif_acl/controllers/default_controller.py | 8 +++++++- .../capif_acl/core/responses.py | 9 ++++++++- .../logs/controllers/default_controller.py | 8 +++++++- .../TS29222_CAPIF_Auditing_API/logs/core/responses.py | 9 ++++++++- .../service_apis/controllers/default_controller.py | 8 +++++++- .../service_apis/core/responses.py | 9 ++++++++- .../capifs_events_subscriptions_collection_controller.py | 8 +++++++- ...ual_capifs_events_subscription_document_controller.py | 8 +++++++- .../capif_events/core/responses.py | 9 ++++++++- .../controllers/default_controller.py | 8 +++++++- .../published_apis/controllers/default_controller.py | 8 +++++++- .../individual_apf_published_api_controller.py | 8 +++++++- .../capif_security/controllers/default_controller.py | 8 +++++++- 18 files changed, 130 insertions(+), 16 deletions(-) diff --git a/services/TS29222_CAPIF_API_Invoker_Management_API/api_invoker_management/controllers/individual_on_boarded_api_invoker_document_controller.py b/services/TS29222_CAPIF_API_Invoker_Management_API/api_invoker_management/controllers/individual_on_boarded_api_invoker_document_controller.py index 69c78c3d..aaff12d0 100644 --- a/services/TS29222_CAPIF_API_Invoker_Management_API/api_invoker_management/controllers/individual_on_boarded_api_invoker_document_controller.py +++ b/services/TS29222_CAPIF_API_Invoker_Management_API/api_invoker_management/controllers/individual_on_boarded_api_invoker_document_controller.py @@ -6,6 +6,8 @@ from cryptography import x509 from cryptography.hazmat.backends import default_backend from flask import current_app, request +from ..core.responses import unauthorized_error + from ..core.apiinvokerenrolmentdetails import InvokerManagementOperations from ..core.validate_user import ControlAccess from ..models.api_invoker_enrolment_details import \ @@ -20,7 +22,11 @@ def cert_validation(): def __cert_validation(*args, **kwargs): args = request.view_args - cert_tmp = request.headers['X-Ssl-Client-Cert'] + cert_tmp = request.headers.get('X-Ssl-Client-Cert') + + if not cert_tmp: + return unauthorized_error("Client certificate required", "X-Ssl-Client-Cert header is missing") + cert_raw = cert_tmp.replace('\t', '') cert = x509.load_pem_x509_certificate(str.encode(cert_raw), default_backend()) diff --git a/services/TS29222_CAPIF_API_Invoker_Management_API/api_invoker_management/core/responses.py b/services/TS29222_CAPIF_API_Invoker_Management_API/api_invoker_management/core/responses.py index ad4e191d..7e983407 100644 --- a/services/TS29222_CAPIF_API_Invoker_Management_API/api_invoker_management/core/responses.py +++ b/services/TS29222_CAPIF_API_Invoker_Management_API/api_invoker_management/core/responses.py @@ -41,3 +41,10 @@ def not_found_error(detail, cause): prob = serialize_clean_camel_case(prob) return Response(json.dumps(prob, cls=CustomJSONEncoder), status=404, mimetype=mimetype) + + +def unauthorized_error(detail, cause): + prob = ProblemDetails(title="Unauthorized", status=401, detail=detail, cause=cause) + prob = serialize_clean_camel_case(prob) + + return Response(json.dumps(prob, cls=CustomJSONEncoder), status=401, mimetype=mimetype) diff --git a/services/TS29222_CAPIF_API_Provider_Management_API/api_provider_management/controllers/default_controller.py b/services/TS29222_CAPIF_API_Provider_Management_API/api_provider_management/controllers/default_controller.py index 4a58db7f..cbe36042 100644 --- a/services/TS29222_CAPIF_API_Provider_Management_API/api_provider_management/controllers/default_controller.py +++ b/services/TS29222_CAPIF_API_Provider_Management_API/api_provider_management/controllers/default_controller.py @@ -9,6 +9,8 @@ from cryptography.hazmat.backends import default_backend from flask import current_app, request from flask_jwt_extended import get_jwt_identity, jwt_required +from ..core.responses import unauthorized_error + from ..core.provider_enrolment_details_api import ProviderManagementOperations from ..core.validate_user import ControlAccess @@ -21,7 +23,11 @@ def cert_validation(): def __cert_validation(*args, **kwargs): args = request.view_args - cert_tmp = request.headers['X-Ssl-Client-Cert'] + cert_tmp = request.headers.get('X-Ssl-Client-Cert') + + if not cert_tmp: + return unauthorized_error("Client certificate required", "X-Ssl-Client-Cert header is missing") + cert_raw = cert_tmp.replace('\t', '') cert = x509.load_pem_x509_certificate(str.encode(cert_raw), default_backend()) diff --git a/services/TS29222_CAPIF_API_Provider_Management_API/api_provider_management/controllers/individual_api_provider_enrolment_details_controller.py b/services/TS29222_CAPIF_API_Provider_Management_API/api_provider_management/controllers/individual_api_provider_enrolment_details_controller.py index bb76af31..9305c73b 100644 --- a/services/TS29222_CAPIF_API_Provider_Management_API/api_provider_management/controllers/individual_api_provider_enrolment_details_controller.py +++ b/services/TS29222_CAPIF_API_Provider_Management_API/api_provider_management/controllers/individual_api_provider_enrolment_details_controller.py @@ -3,6 +3,8 @@ from flask import current_app, request from cryptography import x509 from cryptography.hazmat.backends import default_backend +from ..core.responses import unauthorized_error + from ..core.provider_enrolment_details_api import ProviderManagementOperations from ..core.validate_user import ControlAccess from ..models.api_provider_enrolment_details_patch import \ @@ -17,7 +19,11 @@ def cert_validation(): def __cert_validation(*args, **kwargs): args = request.view_args - cert_tmp = request.headers['X-Ssl-Client-Cert'] + cert_tmp = request.headers.get('X-Ssl-Client-Cert') + + if not cert_tmp: + return unauthorized_error("Client certificate required", "X-Ssl-Client-Cert header is missing") + cert_raw = cert_tmp.replace('\t', '') cert = x509.load_pem_x509_certificate(str.encode(cert_raw), default_backend()) diff --git a/services/TS29222_CAPIF_API_Provider_Management_API/api_provider_management/core/responses.py b/services/TS29222_CAPIF_API_Provider_Management_API/api_provider_management/core/responses.py index ad4e191d..7e983407 100644 --- a/services/TS29222_CAPIF_API_Provider_Management_API/api_provider_management/core/responses.py +++ b/services/TS29222_CAPIF_API_Provider_Management_API/api_provider_management/core/responses.py @@ -41,3 +41,10 @@ def not_found_error(detail, cause): prob = serialize_clean_camel_case(prob) return Response(json.dumps(prob, cls=CustomJSONEncoder), status=404, mimetype=mimetype) + + +def unauthorized_error(detail, cause): + prob = ProblemDetails(title="Unauthorized", status=401, detail=detail, cause=cause) + prob = serialize_clean_camel_case(prob) + + return Response(json.dumps(prob, cls=CustomJSONEncoder), status=401, mimetype=mimetype) diff --git a/services/TS29222_CAPIF_Access_Control_Policy_API/capif_acl/controllers/default_controller.py b/services/TS29222_CAPIF_Access_Control_Policy_API/capif_acl/controllers/default_controller.py index 256c17d8..ed6cb97b 100644 --- a/services/TS29222_CAPIF_Access_Control_Policy_API/capif_acl/controllers/default_controller.py +++ b/services/TS29222_CAPIF_Access_Control_Policy_API/capif_acl/controllers/default_controller.py @@ -7,6 +7,8 @@ from cryptography import x509 from cryptography.hazmat.backends import default_backend from flask import current_app, request +from ..core.responses import unauthorized_error + from ..core.accesscontrolpolicyapi import accessControlPolicyApi @@ -16,7 +18,11 @@ def cert_validation(): def __cert_validation(*args, **kwargs): request.view_args - cert_tmp = request.headers['X-Ssl-Client-Cert'] + cert_tmp = request.headers.get('X-Ssl-Client-Cert') + + if not cert_tmp: + return unauthorized_error("Client certificate required", "X-Ssl-Client-Cert header is missing") + cert_raw = cert_tmp.replace('\t', '') x509.load_pem_x509_certificate(str.encode(cert_raw), default_backend()) diff --git a/services/TS29222_CAPIF_Access_Control_Policy_API/capif_acl/core/responses.py b/services/TS29222_CAPIF_Access_Control_Policy_API/capif_acl/core/responses.py index 8f975cbf..1f0302f6 100644 --- a/services/TS29222_CAPIF_Access_Control_Policy_API/capif_acl/core/responses.py +++ b/services/TS29222_CAPIF_Access_Control_Policy_API/capif_acl/core/responses.py @@ -40,4 +40,11 @@ def not_found_error(detail, cause): prob = ProblemDetails(title="Not Found", status=404, detail=detail, cause=cause) prob = serialize_clean_camel_case(prob) - return Response(json.dumps(prob, cls=CustomJSONEncoder), status=404, mimetype=mimetype) \ No newline at end of file + return Response(json.dumps(prob, cls=CustomJSONEncoder), status=404, mimetype=mimetype) + + +def unauthorized_error(detail, cause): + prob = ProblemDetails(title="Unauthorized", status=401, detail=detail, cause=cause) + prob = serialize_clean_camel_case(prob) + + return Response(json.dumps(prob, cls=CustomJSONEncoder), status=401, mimetype=mimetype) \ No newline at end of file diff --git a/services/TS29222_CAPIF_Auditing_API/logs/controllers/default_controller.py b/services/TS29222_CAPIF_Auditing_API/logs/controllers/default_controller.py index acf154aa..e5ac1ef7 100644 --- a/services/TS29222_CAPIF_Auditing_API/logs/controllers/default_controller.py +++ b/services/TS29222_CAPIF_Auditing_API/logs/controllers/default_controller.py @@ -3,6 +3,8 @@ from functools import wraps from cryptography import x509 from cryptography.hazmat.backends import default_backend from flask import current_app, request + +from ..core.responses import bad_request_error, unauthorized_error from logs import util from logs.models.interface_description import \ InterfaceDescription # noqa: E501 @@ -27,7 +29,11 @@ def cert_validation(): def __cert_validation(*args, **kwargs): request.view_args - cert_tmp = request.headers['X-Ssl-Client-Cert'] + cert_tmp = request.headers.get('X-Ssl-Client-Cert') + + if not cert_tmp: + return unauthorized_error("Client certificate required", "X-Ssl-Client-Cert header is missing") + cert_raw = cert_tmp.replace('\t', '') cert = x509.load_pem_x509_certificate(str.encode(cert_raw), default_backend()) diff --git a/services/TS29222_CAPIF_Auditing_API/logs/core/responses.py b/services/TS29222_CAPIF_Auditing_API/logs/core/responses.py index 8f975cbf..1f0302f6 100644 --- a/services/TS29222_CAPIF_Auditing_API/logs/core/responses.py +++ b/services/TS29222_CAPIF_Auditing_API/logs/core/responses.py @@ -40,4 +40,11 @@ def not_found_error(detail, cause): prob = ProblemDetails(title="Not Found", status=404, detail=detail, cause=cause) prob = serialize_clean_camel_case(prob) - return Response(json.dumps(prob, cls=CustomJSONEncoder), status=404, mimetype=mimetype) \ No newline at end of file + return Response(json.dumps(prob, cls=CustomJSONEncoder), status=404, mimetype=mimetype) + + +def unauthorized_error(detail, cause): + prob = ProblemDetails(title="Unauthorized", status=401, detail=detail, cause=cause) + prob = serialize_clean_camel_case(prob) + + return Response(json.dumps(prob, cls=CustomJSONEncoder), status=401, mimetype=mimetype) \ No newline at end of file diff --git a/services/TS29222_CAPIF_Discover_Service_API/service_apis/controllers/default_controller.py b/services/TS29222_CAPIF_Discover_Service_API/service_apis/controllers/default_controller.py index a9c52362..457716d5 100644 --- a/services/TS29222_CAPIF_Discover_Service_API/service_apis/controllers/default_controller.py +++ b/services/TS29222_CAPIF_Discover_Service_API/service_apis/controllers/default_controller.py @@ -14,6 +14,8 @@ from service_apis.models.net_slice_id import NetSliceId # noqa: E501 from service_apis.models.o_auth_grant_type import OAuthGrantType # noqa: E501 from service_apis.models.problem_details import ProblemDetails # noqa: E501 from service_apis.models.protocol import Protocol # noqa: E501 + +from ..core.responses import unauthorized_error from service_apis.models.res_oper_info import ResOperInfo # noqa: E501 from service_apis.models.service_kpis import ServiceKpis # noqa: E501 @@ -30,7 +32,11 @@ def cert_validation(): def __cert_validation(*args, **kwargs): request.view_args - cert_tmp = request.headers['X-Ssl-Client-Cert'] + cert_tmp = request.headers.get('X-Ssl-Client-Cert') + + if not cert_tmp: + return unauthorized_error("Client certificate required", "X-Ssl-Client-Cert header is missing") + cert_raw = cert_tmp.replace('\t', '') cert = x509.load_pem_x509_certificate(str.encode(cert_raw), default_backend()) diff --git a/services/TS29222_CAPIF_Discover_Service_API/service_apis/core/responses.py b/services/TS29222_CAPIF_Discover_Service_API/service_apis/core/responses.py index 0aafcc67..849e7f86 100644 --- a/services/TS29222_CAPIF_Discover_Service_API/service_apis/core/responses.py +++ b/services/TS29222_CAPIF_Discover_Service_API/service_apis/core/responses.py @@ -40,4 +40,11 @@ def not_found_error(detail, cause): prob = ProblemDetails(title="Not Found", status=404, detail=detail, cause=cause) prob = serialize_clean_camel_case(prob) - return Response(json.dumps(prob, cls=CustomJSONEncoder), status=404, mimetype=mimetype) \ No newline at end of file + return Response(json.dumps(prob, cls=CustomJSONEncoder), status=404, mimetype=mimetype) + + +def unauthorized_error(detail, cause): + prob = ProblemDetails(title="Unauthorized", status=401, detail=detail, cause=cause) + prob = serialize_clean_camel_case(prob) + + return Response(json.dumps(prob, cls=CustomJSONEncoder), status=401, mimetype=mimetype) \ No newline at end of file diff --git a/services/TS29222_CAPIF_Events_API/capif_events/controllers/capifs_events_subscriptions_collection_controller.py b/services/TS29222_CAPIF_Events_API/capif_events/controllers/capifs_events_subscriptions_collection_controller.py index 59d82a7b..d4fc1c3a 100644 --- a/services/TS29222_CAPIF_Events_API/capif_events/controllers/capifs_events_subscriptions_collection_controller.py +++ b/services/TS29222_CAPIF_Events_API/capif_events/controllers/capifs_events_subscriptions_collection_controller.py @@ -7,6 +7,8 @@ from cryptography import x509 from cryptography.hazmat.backends import default_backend from flask import current_app, request +from ..core.responses import unauthorized_error + from ..core.events_apis import EventSubscriptionsOperations from ..core.validate_user import ControlAccess @@ -19,7 +21,11 @@ def cert_validation(): def __cert_validation(*args, **kwargs): args = request.view_args - cert_tmp = request.headers['X-Ssl-Client-Cert'] + cert_tmp = request.headers.get('X-Ssl-Client-Cert') + + if not cert_tmp: + return unauthorized_error("Client certificate required", "X-Ssl-Client-Cert header is missing") + cert_raw = cert_tmp.replace('\t', '') cert = x509.load_pem_x509_certificate(str.encode(cert_raw), default_backend()) diff --git a/services/TS29222_CAPIF_Events_API/capif_events/controllers/individual_capifs_events_subscription_document_controller.py b/services/TS29222_CAPIF_Events_API/capif_events/controllers/individual_capifs_events_subscription_document_controller.py index cac833f9..3339992a 100644 --- a/services/TS29222_CAPIF_Events_API/capif_events/controllers/individual_capifs_events_subscription_document_controller.py +++ b/services/TS29222_CAPIF_Events_API/capif_events/controllers/individual_capifs_events_subscription_document_controller.py @@ -9,6 +9,8 @@ from cryptography import x509 from cryptography.hazmat.backends import default_backend from flask import current_app, request +from ..core.responses import unauthorized_error + from ..core.events_apis import EventSubscriptionsOperations from ..core.validate_user import ControlAccess @@ -21,7 +23,11 @@ def cert_validation(): def __cert_validation(*args, **kwargs): args = request.view_args - cert_tmp = request.headers['X-Ssl-Client-Cert'] + cert_tmp = request.headers.get('X-Ssl-Client-Cert') + + if not cert_tmp: + return unauthorized_error("Client certificate required", "X-Ssl-Client-Cert header is missing") + cert_raw = cert_tmp.replace('\t', '') cert = x509.load_pem_x509_certificate(str.encode(cert_raw), default_backend()) diff --git a/services/TS29222_CAPIF_Events_API/capif_events/core/responses.py b/services/TS29222_CAPIF_Events_API/capif_events/core/responses.py index 8f975cbf..1f0302f6 100644 --- a/services/TS29222_CAPIF_Events_API/capif_events/core/responses.py +++ b/services/TS29222_CAPIF_Events_API/capif_events/core/responses.py @@ -40,4 +40,11 @@ def not_found_error(detail, cause): prob = ProblemDetails(title="Not Found", status=404, detail=detail, cause=cause) prob = serialize_clean_camel_case(prob) - return Response(json.dumps(prob, cls=CustomJSONEncoder), status=404, mimetype=mimetype) \ No newline at end of file + return Response(json.dumps(prob, cls=CustomJSONEncoder), status=404, mimetype=mimetype) + + +def unauthorized_error(detail, cause): + prob = ProblemDetails(title="Unauthorized", status=401, detail=detail, cause=cause) + prob = serialize_clean_camel_case(prob) + + return Response(json.dumps(prob, cls=CustomJSONEncoder), status=401, mimetype=mimetype) \ No newline at end of file diff --git a/services/TS29222_CAPIF_Logging_API_Invocation_API/api_invocation_logs/controllers/default_controller.py b/services/TS29222_CAPIF_Logging_API_Invocation_API/api_invocation_logs/controllers/default_controller.py index dc120879..ce62116b 100644 --- a/services/TS29222_CAPIF_Logging_API_Invocation_API/api_invocation_logs/controllers/default_controller.py +++ b/services/TS29222_CAPIF_Logging_API_Invocation_API/api_invocation_logs/controllers/default_controller.py @@ -8,6 +8,8 @@ from cryptography import x509 from cryptography.hazmat.backends import default_backend from flask import current_app, request +from ..core.responses import unauthorized_error + from ..core.invocationlogs import LoggingInvocationOperations from ..core.validate_user import ControlAccess @@ -22,7 +24,11 @@ def cert_validation(): def __cert_validation(*args, **kwargs): args = request.view_args - cert_tmp = request.headers['X-Ssl-Client-Cert'] + cert_tmp = request.headers.get('X-Ssl-Client-Cert') + + if not cert_tmp: + return unauthorized_error("Client certificate required", "X-Ssl-Client-Cert header is missing") + cert_raw = cert_tmp.replace('\t', '') cert = x509.load_pem_x509_certificate(str.encode(cert_raw), default_backend()) diff --git a/services/TS29222_CAPIF_Publish_Service_API/published_apis/controllers/default_controller.py b/services/TS29222_CAPIF_Publish_Service_API/published_apis/controllers/default_controller.py index a7c06cdd..7908b28e 100644 --- a/services/TS29222_CAPIF_Publish_Service_API/published_apis/controllers/default_controller.py +++ b/services/TS29222_CAPIF_Publish_Service_API/published_apis/controllers/default_controller.py @@ -3,6 +3,8 @@ from functools import wraps from cryptography import x509 from cryptography.hazmat.backends import default_backend from flask import current_app, request + +from ..core.responses import bad_request_error, unauthorized_error from published_apis.models.problem_details import ProblemDetails # noqa: E501 from published_apis.vendor_specific import (find_attribute_in_body, vendor_specific_key_n_value) @@ -24,7 +26,11 @@ def cert_validation(): def __cert_validation(*args, **kwargs): args = request.view_args - cert_tmp = request.headers['X-Ssl-Client-Cert'] + cert_tmp = request.headers.get('X-Ssl-Client-Cert') + + if not cert_tmp: + return unauthorized_error("Client certificate required", "X-Ssl-Client-Cert header is missing") + cert_raw = cert_tmp.replace('\t', '') cert = x509.load_pem_x509_certificate( diff --git a/services/TS29222_CAPIF_Publish_Service_API/published_apis/controllers/individual_apf_published_api_controller.py b/services/TS29222_CAPIF_Publish_Service_API/published_apis/controllers/individual_apf_published_api_controller.py index d8098277..291ca99c 100644 --- a/services/TS29222_CAPIF_Publish_Service_API/published_apis/controllers/individual_apf_published_api_controller.py +++ b/services/TS29222_CAPIF_Publish_Service_API/published_apis/controllers/individual_apf_published_api_controller.py @@ -3,6 +3,8 @@ from functools import wraps from cryptography import x509 from cryptography.hazmat.backends import default_backend from flask import current_app, request + +from ..core.responses import unauthorized_error from published_apis.models.service_api_description_patch import \ ServiceAPIDescriptionPatch # noqa: E501 @@ -18,7 +20,11 @@ def cert_validation(): def __cert_validation(*args, **kwargs): args = request.view_args - cert_tmp = request.headers['X-Ssl-Client-Cert'] + cert_tmp = request.headers.get('X-Ssl-Client-Cert') + + if not cert_tmp: + return unauthorized_error("Client certificate required", "X-Ssl-Client-Cert header is missing") + cert_raw = cert_tmp.replace('\t', '') cert = x509.load_pem_x509_certificate( diff --git a/services/TS29222_CAPIF_Security_API/capif_security/controllers/default_controller.py b/services/TS29222_CAPIF_Security_API/capif_security/controllers/default_controller.py index 21a51cfc..7a65eb7d 100644 --- a/services/TS29222_CAPIF_Security_API/capif_security/controllers/default_controller.py +++ b/services/TS29222_CAPIF_Security_API/capif_security/controllers/default_controller.py @@ -9,6 +9,8 @@ from cryptography import x509 from cryptography.hazmat.backends import default_backend from flask import current_app, request +from ..core.responses import unauthorized_error + from ..core.publisher import Publisher from ..core.redis_internal_event import RedisInternalEvent from ..core.servicesecurity import SecurityOperations @@ -25,7 +27,11 @@ def cert_validation(): def __cert_validation(*args, **kwargs): args = request.view_args - cert_tmp = request.headers['X-Ssl-Client-Cert'] + cert_tmp = request.headers.get('X-Ssl-Client-Cert') + + if not cert_tmp: + return unauthorized_error("Client certificate required", "X-Ssl-Client-Cert header is missing") + cert_raw = cert_tmp.replace('\t', '') cert = x509.load_pem_x509_certificate( -- GitLab From efa2f244e114c629abec48456f762cd4e7b06a1a Mon Sep 17 00:00:00 2001 From: Afonso Castanheta Date: Wed, 25 Feb 2026 11:54:16 +0000 Subject: [PATCH 2/2] Fix bad_request_error response mimetype handling across multiple APIs --- .../api_invoker_management/core/responses.py | 2 +- .../api_provider_management/core/responses.py | 2 +- .../capif_acl/core/responses.py | 2 +- services/TS29222_CAPIF_Auditing_API/logs/core/responses.py | 2 +- .../service_apis/core/responses.py | 2 +- .../TS29222_CAPIF_Events_API/capif_events/core/responses.py | 2 +- .../api_invocation_logs/core/responses.py | 2 +- .../published_apis/core/responses.py | 2 +- .../TS29222_CAPIF_Security_API/capif_security/core/responses.py | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/services/TS29222_CAPIF_API_Invoker_Management_API/api_invoker_management/core/responses.py b/services/TS29222_CAPIF_API_Invoker_Management_API/api_invoker_management/core/responses.py index 7e983407..82305f4b 100644 --- a/services/TS29222_CAPIF_API_Invoker_Management_API/api_invoker_management/core/responses.py +++ b/services/TS29222_CAPIF_API_Invoker_Management_API/api_invoker_management/core/responses.py @@ -33,7 +33,7 @@ def bad_request_error(detail, cause, invalid_params): prob = ProblemDetails(title="Bad Request", status=400, detail=detail, cause=cause, invalid_params=invalid_params) prob = serialize_clean_camel_case(prob) - return Response(json.dumps(prob, cls=CustomJSONEncoder), status=400, mimetype=cause) + return Response(json.dumps(prob, cls=CustomJSONEncoder), status=400, mimetype=mimetype) def not_found_error(detail, cause): diff --git a/services/TS29222_CAPIF_API_Provider_Management_API/api_provider_management/core/responses.py b/services/TS29222_CAPIF_API_Provider_Management_API/api_provider_management/core/responses.py index 7e983407..82305f4b 100644 --- a/services/TS29222_CAPIF_API_Provider_Management_API/api_provider_management/core/responses.py +++ b/services/TS29222_CAPIF_API_Provider_Management_API/api_provider_management/core/responses.py @@ -33,7 +33,7 @@ def bad_request_error(detail, cause, invalid_params): prob = ProblemDetails(title="Bad Request", status=400, detail=detail, cause=cause, invalid_params=invalid_params) prob = serialize_clean_camel_case(prob) - return Response(json.dumps(prob, cls=CustomJSONEncoder), status=400, mimetype=cause) + return Response(json.dumps(prob, cls=CustomJSONEncoder), status=400, mimetype=mimetype) def not_found_error(detail, cause): diff --git a/services/TS29222_CAPIF_Access_Control_Policy_API/capif_acl/core/responses.py b/services/TS29222_CAPIF_Access_Control_Policy_API/capif_acl/core/responses.py index 1f0302f6..8ba055f9 100644 --- a/services/TS29222_CAPIF_Access_Control_Policy_API/capif_acl/core/responses.py +++ b/services/TS29222_CAPIF_Access_Control_Policy_API/capif_acl/core/responses.py @@ -33,7 +33,7 @@ def bad_request_error(detail, cause, invalid_params): prob = ProblemDetails(title="Bad Request", status=400, detail=detail, cause=cause, invalid_params=invalid_params) prob = serialize_clean_camel_case(prob) - return Response(json.dumps(prob, cls=CustomJSONEncoder), status=400, mimetype=cause) + return Response(json.dumps(prob, cls=CustomJSONEncoder), status=400, mimetype=mimetype) def not_found_error(detail, cause): diff --git a/services/TS29222_CAPIF_Auditing_API/logs/core/responses.py b/services/TS29222_CAPIF_Auditing_API/logs/core/responses.py index 1f0302f6..8ba055f9 100644 --- a/services/TS29222_CAPIF_Auditing_API/logs/core/responses.py +++ b/services/TS29222_CAPIF_Auditing_API/logs/core/responses.py @@ -33,7 +33,7 @@ def bad_request_error(detail, cause, invalid_params): prob = ProblemDetails(title="Bad Request", status=400, detail=detail, cause=cause, invalid_params=invalid_params) prob = serialize_clean_camel_case(prob) - return Response(json.dumps(prob, cls=CustomJSONEncoder), status=400, mimetype=cause) + return Response(json.dumps(prob, cls=CustomJSONEncoder), status=400, mimetype=mimetype) def not_found_error(detail, cause): diff --git a/services/TS29222_CAPIF_Discover_Service_API/service_apis/core/responses.py b/services/TS29222_CAPIF_Discover_Service_API/service_apis/core/responses.py index 849e7f86..1de771cd 100644 --- a/services/TS29222_CAPIF_Discover_Service_API/service_apis/core/responses.py +++ b/services/TS29222_CAPIF_Discover_Service_API/service_apis/core/responses.py @@ -33,7 +33,7 @@ def bad_request_error(detail, cause, invalid_params): prob = ProblemDetails(title="Bad Request", status=400, detail=detail, cause=cause, invalid_params=invalid_params) prob = serialize_clean_camel_case(prob) - return Response(json.dumps(prob, cls=CustomJSONEncoder), status=400, mimetype=cause) + return Response(json.dumps(prob, cls=CustomJSONEncoder), status=400, mimetype=mimetype) def not_found_error(detail, cause): diff --git a/services/TS29222_CAPIF_Events_API/capif_events/core/responses.py b/services/TS29222_CAPIF_Events_API/capif_events/core/responses.py index 1f0302f6..8ba055f9 100644 --- a/services/TS29222_CAPIF_Events_API/capif_events/core/responses.py +++ b/services/TS29222_CAPIF_Events_API/capif_events/core/responses.py @@ -33,7 +33,7 @@ def bad_request_error(detail, cause, invalid_params): prob = ProblemDetails(title="Bad Request", status=400, detail=detail, cause=cause, invalid_params=invalid_params) prob = serialize_clean_camel_case(prob) - return Response(json.dumps(prob, cls=CustomJSONEncoder), status=400, mimetype=cause) + return Response(json.dumps(prob, cls=CustomJSONEncoder), status=400, mimetype=mimetype) def not_found_error(detail, cause): diff --git a/services/TS29222_CAPIF_Logging_API_Invocation_API/api_invocation_logs/core/responses.py b/services/TS29222_CAPIF_Logging_API_Invocation_API/api_invocation_logs/core/responses.py index 1f0302f6..8ba055f9 100644 --- a/services/TS29222_CAPIF_Logging_API_Invocation_API/api_invocation_logs/core/responses.py +++ b/services/TS29222_CAPIF_Logging_API_Invocation_API/api_invocation_logs/core/responses.py @@ -33,7 +33,7 @@ def bad_request_error(detail, cause, invalid_params): prob = ProblemDetails(title="Bad Request", status=400, detail=detail, cause=cause, invalid_params=invalid_params) prob = serialize_clean_camel_case(prob) - return Response(json.dumps(prob, cls=CustomJSONEncoder), status=400, mimetype=cause) + return Response(json.dumps(prob, cls=CustomJSONEncoder), status=400, mimetype=mimetype) def not_found_error(detail, cause): diff --git a/services/TS29222_CAPIF_Publish_Service_API/published_apis/core/responses.py b/services/TS29222_CAPIF_Publish_Service_API/published_apis/core/responses.py index 1f0302f6..8ba055f9 100644 --- a/services/TS29222_CAPIF_Publish_Service_API/published_apis/core/responses.py +++ b/services/TS29222_CAPIF_Publish_Service_API/published_apis/core/responses.py @@ -33,7 +33,7 @@ def bad_request_error(detail, cause, invalid_params): prob = ProblemDetails(title="Bad Request", status=400, detail=detail, cause=cause, invalid_params=invalid_params) prob = serialize_clean_camel_case(prob) - return Response(json.dumps(prob, cls=CustomJSONEncoder), status=400, mimetype=cause) + return Response(json.dumps(prob, cls=CustomJSONEncoder), status=400, mimetype=mimetype) def not_found_error(detail, cause): diff --git a/services/TS29222_CAPIF_Security_API/capif_security/core/responses.py b/services/TS29222_CAPIF_Security_API/capif_security/core/responses.py index 849e7f86..1de771cd 100644 --- a/services/TS29222_CAPIF_Security_API/capif_security/core/responses.py +++ b/services/TS29222_CAPIF_Security_API/capif_security/core/responses.py @@ -33,7 +33,7 @@ def bad_request_error(detail, cause, invalid_params): prob = ProblemDetails(title="Bad Request", status=400, detail=detail, cause=cause, invalid_params=invalid_params) prob = serialize_clean_camel_case(prob) - return Response(json.dumps(prob, cls=CustomJSONEncoder), status=400, mimetype=cause) + return Response(json.dumps(prob, cls=CustomJSONEncoder), status=400, mimetype=mimetype) def not_found_error(detail, cause): -- GitLab