diff --git a/services/TS29222_CAPIF_Security_API/.openapi-generator/FILES b/services/TS29222_CAPIF_Security_API/.openapi-generator/FILES index 1fd34c24a0763985d9f135288f82a424d7f4c66d..a3947acd44363fa560ce0e5e3c34285ccf95a204 100644 --- a/services/TS29222_CAPIF_Security_API/.openapi-generator/FILES +++ b/services/TS29222_CAPIF_Security_API/.openapi-generator/FILES @@ -22,9 +22,11 @@ capif_security/models/cause.py capif_security/models/interface_description.py capif_security/models/invalid_param.py capif_security/models/invalid_param1.py +capif_security/models/ml_model_inter_ind.py capif_security/models/nf_type.py capif_security/models/no_profile_match_info.py capif_security/models/no_profile_match_reason.py +capif_security/models/nwdaf_event.py capif_security/models/o_auth_grant_type.py capif_security/models/plmn_id.py capif_security/models/plmn_id_nid.py diff --git a/services/TS29222_CAPIF_Security_API/.openapi-generator/VERSION b/services/TS29222_CAPIF_Security_API/.openapi-generator/VERSION index 18bb4182dd01428f1d4c3c2145501ee5d40455a3..b23eb27529e2bacf6c8c06f725c323d9fb87f042 100644 --- a/services/TS29222_CAPIF_Security_API/.openapi-generator/VERSION +++ b/services/TS29222_CAPIF_Security_API/.openapi-generator/VERSION @@ -1 +1 @@ -7.5.0 +7.11.0 diff --git a/services/TS29222_CAPIF_Security_API/README.md b/services/TS29222_CAPIF_Security_API/README.md index 6534bceb3d41c0580fba545343824b1629f05bd8..66df10994ad85cbdf33b6eda4b8bfcf0d0ca940b 100644 --- a/services/TS29222_CAPIF_Security_API/README.md +++ b/services/TS29222_CAPIF_Security_API/README.md @@ -15,7 +15,7 @@ To run the server, please execute the following from the root directory: ``` pip3 install -r requirements.txt -python3 -m openapi_server +python3 -m capif_security ``` and open your browser to here: 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 3609bd8f17bb6f3267fa72750280e82c61ef5d04..8f371687d7cd4699f7d05d4eb1bbd17746527bd8 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 @@ -17,7 +17,6 @@ publish_ops = Publisher() valid_user = ControlAccess() - def cert_validation(): def _cert_validation(f): @wraps(f) @@ -51,7 +50,6 @@ def cert_validation(): return __cert_validation return _cert_validation - @cert_validation() def securities_security_id_token_post(security_id, body): # noqa: E501 """securities_security_id_token_post @@ -111,7 +109,6 @@ def trusted_invokers_api_invoker_id_delete(api_invoker_id): # noqa: E501 current_app.logger.info("Removing security context") return service_security_ops.delete_servicesecurity(api_invoker_id) - @cert_validation() def trusted_invokers_api_invoker_id_delete_post(api_invoker_id, body): # noqa: E501 """trusted_invokers_api_invoker_id_delete_post @@ -125,7 +122,6 @@ def trusted_invokers_api_invoker_id_delete_post(api_invoker_id, body): # noqa: :rtype: Union[None, Tuple[None, int], Tuple[None, int, Dict[str, str]] """ - if request.is_json: body = SecurityNotification.from_dict(request.get_json()) # noqa: E501 @@ -134,7 +130,6 @@ def trusted_invokers_api_invoker_id_delete_post(api_invoker_id, body): # noqa: return res - @cert_validation() def trusted_invokers_api_invoker_id_get(api_invoker_id, authentication_info=None, authorization_info=None): # noqa: E501 """trusted_invokers_api_invoker_id_get @@ -156,7 +151,6 @@ def trusted_invokers_api_invoker_id_get(api_invoker_id, authentication_info=None return res - @cert_validation() def trusted_invokers_api_invoker_id_put(api_invoker_id, body): # noqa: E501 """trusted_invokers_api_invoker_id_put @@ -188,7 +182,6 @@ def trusted_invokers_api_invoker_id_put(api_invoker_id, body): # noqa: E501 return res - @cert_validation() def trusted_invokers_api_invoker_id_update_post(api_invoker_id, body): # noqa: E501 """trusted_invokers_api_invoker_id_update_post diff --git a/services/TS29222_CAPIF_Security_API/capif_security/controllers/security_controller.py b/services/TS29222_CAPIF_Security_API/capif_security/controllers/security_controller.py index 139597f9cb07c5d48bed18984ec4747f4b4f3438..8b137891791fe96927ad78e64b0aad7bded08bdc 100644 --- a/services/TS29222_CAPIF_Security_API/capif_security/controllers/security_controller.py +++ b/services/TS29222_CAPIF_Security_API/capif_security/controllers/security_controller.py @@ -1,2 +1 @@ - diff --git a/services/TS29222_CAPIF_Security_API/capif_security/models/__init__.py b/services/TS29222_CAPIF_Security_API/capif_security/models/__init__.py index d036df693ea41dfaa3debffffad0462c1fcd8e4a..f4510143124526bc5e8c1c5af85f77a6fb8e7c07 100644 --- a/services/TS29222_CAPIF_Security_API/capif_security/models/__init__.py +++ b/services/TS29222_CAPIF_Security_API/capif_security/models/__init__.py @@ -1,2 +1,30 @@ # flake8: noqa # import models into model package +from capif_security.models.access_token_claims import AccessTokenClaims +from capif_security.models.access_token_err import AccessTokenErr +from capif_security.models.access_token_err1 import AccessTokenErr1 +from capif_security.models.access_token_req1 import AccessTokenReq1 +from capif_security.models.access_token_rsp import AccessTokenRsp +from capif_security.models.cause import Cause +from capif_security.models.interface_description import InterfaceDescription +from capif_security.models.invalid_param import InvalidParam +from capif_security.models.invalid_param1 import InvalidParam1 +from capif_security.models.ml_model_inter_ind import MlModelInterInd +from capif_security.models.nf_type import NFType +from capif_security.models.no_profile_match_info import NoProfileMatchInfo +from capif_security.models.no_profile_match_reason import NoProfileMatchReason +from capif_security.models.nwdaf_event import NwdafEvent +from capif_security.models.o_auth_grant_type import OAuthGrantType +from capif_security.models.plmn_id import PlmnId +from capif_security.models.plmn_id_nid import PlmnIdNid +from capif_security.models.problem_details import ProblemDetails +from capif_security.models.problem_details1 import ProblemDetails1 +from capif_security.models.query_param_combination import QueryParamCombination +from capif_security.models.query_parameter import QueryParameter +from capif_security.models.res_owner_id import ResOwnerId +from capif_security.models.security_information import SecurityInformation +from capif_security.models.security_method import SecurityMethod +from capif_security.models.security_notification import SecurityNotification +from capif_security.models.service_security import ServiceSecurity +from capif_security.models.snssai import Snssai +from capif_security.models.websock_notif_config import WebsockNotifConfig diff --git a/services/TS29222_CAPIF_Security_API/capif_security/models/access_token_claims.py b/services/TS29222_CAPIF_Security_API/capif_security/models/access_token_claims.py index 71d49c28b2f01a003dc9bdda6cd25a43f8bc2899..46593ae68fcfbe9d6480dd172e0897af49742cdc 100644 --- a/services/TS29222_CAPIF_Security_API/capif_security/models/access_token_claims.py +++ b/services/TS29222_CAPIF_Security_API/capif_security/models/access_token_claims.py @@ -1,10 +1,12 @@ from datetime import date, datetime # noqa: F401 + from typing import List, Dict # noqa: F401 -from capif_security import util from capif_security.models.base_model import Model -from capif_security.models.res_owner_id import ResOwnerId # noqa: E501 +from capif_security.models.res_owner_id import ResOwnerId +from capif_security import util +from capif_security.models.res_owner_id import ResOwnerId # noqa: E501 class AccessTokenClaims(Model): """NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/services/TS29222_CAPIF_Security_API/capif_security/models/access_token_err.py b/services/TS29222_CAPIF_Security_API/capif_security/models/access_token_err.py index b5d7f6f8e415d419bd42e9a819f7c73952adc860..c60023025e6a3f29890e846c535d7a242816ab7e 100644 --- a/services/TS29222_CAPIF_Security_API/capif_security/models/access_token_err.py +++ b/services/TS29222_CAPIF_Security_API/capif_security/models/access_token_err.py @@ -1,8 +1,9 @@ from datetime import date, datetime # noqa: F401 + from typing import List, Dict # noqa: F401 -from capif_security import util from capif_security.models.base_model import Model +from capif_security import util class AccessTokenErr(Model): diff --git a/services/TS29222_CAPIF_Security_API/capif_security/models/access_token_err1.py b/services/TS29222_CAPIF_Security_API/capif_security/models/access_token_err1.py index 325b219770cb2e32fdaff49e727994030b09b5d8..23007798721d0fe9fce79a3e10900002a78ce5a6 100644 --- a/services/TS29222_CAPIF_Security_API/capif_security/models/access_token_err1.py +++ b/services/TS29222_CAPIF_Security_API/capif_security/models/access_token_err1.py @@ -1,8 +1,9 @@ from datetime import date, datetime # noqa: F401 + from typing import List, Dict # noqa: F401 -from capif_security import util from capif_security.models.base_model import Model +from capif_security import util class AccessTokenErr1(Model): diff --git a/services/TS29222_CAPIF_Security_API/capif_security/models/access_token_req1.py b/services/TS29222_CAPIF_Security_API/capif_security/models/access_token_req1.py index b9e4ff408db15c09cd03ecf79f6a76e8b03a67a2..d82703e33abdfe489ec934ebaef1173b3463a2cc 100644 --- a/services/TS29222_CAPIF_Security_API/capif_security/models/access_token_req1.py +++ b/services/TS29222_CAPIF_Security_API/capif_security/models/access_token_req1.py @@ -1,14 +1,24 @@ -import re # noqa: E501 from datetime import date, datetime # noqa: F401 + from typing import List, Dict # noqa: F401 -from capif_security import util from capif_security.models.base_model import Model +from capif_security.models.ml_model_inter_ind import MlModelInterInd +from capif_security.models.nf_type import NFType +from capif_security.models.nwdaf_event import NwdafEvent +from capif_security.models.plmn_id import PlmnId +from capif_security.models.plmn_id_nid import PlmnIdNid +from capif_security.models.snssai import Snssai +import re +from capif_security import util + +from capif_security.models.ml_model_inter_ind import MlModelInterInd # noqa: E501 from capif_security.models.nf_type import NFType # noqa: E501 +from capif_security.models.nwdaf_event import NwdafEvent # noqa: E501 from capif_security.models.plmn_id import PlmnId # noqa: E501 from capif_security.models.plmn_id_nid import PlmnIdNid # noqa: E501 from capif_security.models.snssai import Snssai # noqa: E501 - +import re # noqa: E501 class AccessTokenReq1(Model): """NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). @@ -16,7 +26,7 @@ class AccessTokenReq1(Model): Do not edit the class manually. """ - def __init__(self, grant_type=None, nf_instance_id=None, nf_type=None, target_nf_type=None, scope=None, target_nf_instance_id=None, requester_plmn=None, requester_plmn_list=None, requester_snssai_list=None, requester_fqdn=None, requester_snpn_list=None, target_plmn=None, target_snpn=None, target_snssai_list=None, target_nsi_list=None, target_nf_set_id=None, target_nf_service_set_id=None, hnrf_access_token_uri=None, source_nf_instance_id=None): # noqa: E501 + def __init__(self, grant_type=None, nf_instance_id=None, nf_type=None, target_nf_type=None, scope=None, target_nf_instance_id=None, requester_plmn=None, requester_plmn_list=None, requester_snssai_list=None, requester_fqdn=None, requester_snpn_list=None, target_plmn=None, target_snpn=None, target_snssai_list=None, target_nsi_list=None, target_nf_set_id=None, target_nf_service_set_id=None, hnrf_access_token_uri=None, source_nf_instance_id=None, vendor_id=None, analytics_ids=None, requester_inter_ind_list=None, source_vendor_id=None): # noqa: E501 """AccessTokenReq1 - a model defined in OpenAPI :param grant_type: The grant_type of this AccessTokenReq1. # noqa: E501 @@ -57,6 +67,14 @@ class AccessTokenReq1(Model): :type hnrf_access_token_uri: str :param source_nf_instance_id: The source_nf_instance_id of this AccessTokenReq1. # noqa: E501 :type source_nf_instance_id: str + :param vendor_id: The vendor_id of this AccessTokenReq1. # noqa: E501 + :type vendor_id: str + :param analytics_ids: The analytics_ids of this AccessTokenReq1. # noqa: E501 + :type analytics_ids: List[NwdafEvent] + :param requester_inter_ind_list: The requester_inter_ind_list of this AccessTokenReq1. # noqa: E501 + :type requester_inter_ind_list: List[MlModelInterInd] + :param source_vendor_id: The source_vendor_id of this AccessTokenReq1. # noqa: E501 + :type source_vendor_id: str """ self.openapi_types = { 'grant_type': str, @@ -77,7 +95,11 @@ class AccessTokenReq1(Model): 'target_nf_set_id': str, 'target_nf_service_set_id': str, 'hnrf_access_token_uri': str, - 'source_nf_instance_id': str + 'source_nf_instance_id': str, + 'vendor_id': str, + 'analytics_ids': List[NwdafEvent], + 'requester_inter_ind_list': List[MlModelInterInd], + 'source_vendor_id': str } self.attribute_map = { @@ -99,7 +121,11 @@ class AccessTokenReq1(Model): 'target_nf_set_id': 'targetNfSetId', 'target_nf_service_set_id': 'targetNfServiceSetId', 'hnrf_access_token_uri': 'hnrfAccessTokenUri', - 'source_nf_instance_id': 'sourceNfInstanceId' + 'source_nf_instance_id': 'sourceNfInstanceId', + 'vendor_id': 'vendorId', + 'analytics_ids': 'analyticsIds', + 'requester_inter_ind_list': 'requesterInterIndList', + 'source_vendor_id': 'sourceVendorId' } self._grant_type = grant_type @@ -121,6 +147,10 @@ class AccessTokenReq1(Model): self._target_nf_service_set_id = target_nf_service_set_id self._hnrf_access_token_uri = hnrf_access_token_uri self._source_nf_instance_id = source_nf_instance_id + self._vendor_id = vendor_id + self._analytics_ids = analytics_ids + self._requester_inter_ind_list = requester_inter_ind_list + self._source_vendor_id = source_vendor_id @classmethod def from_dict(cls, dikt) -> 'AccessTokenReq1': @@ -248,7 +278,7 @@ class AccessTokenReq1(Model): if scope is None: raise ValueError("Invalid value for `scope`, must not be `None`") # noqa: E501 if scope is not None and not re.search(r'^([a-zA-Z0-9_:-]+)( [a-zA-Z0-9_:-]+)*$', scope): # noqa: E501 - raise ValueError("Invalid value for `scope`, must be a follow pattern or equal to `/^([a-zA-Z0-9_:-]+)( [a-zA-Z0-9_:-]+)*$/`") # noqa: E501 + raise ValueError(r"Invalid value for `scope`, must be a follow pattern or equal to `/^([a-zA-Z0-9_:-]+)( [a-zA-Z0-9_:-]+)*$/`") # noqa: E501 self._scope = scope @@ -367,7 +397,7 @@ class AccessTokenReq1(Model): if requester_fqdn is not None and len(requester_fqdn) < 4: raise ValueError("Invalid value for `requester_fqdn`, length must be greater than or equal to `4`") # noqa: E501 if requester_fqdn is not None and not re.search(r'^([0-9A-Za-z]([-0-9A-Za-z]{0,61}[0-9A-Za-z])?\.)+[A-Za-z]{2,63}\.?$', requester_fqdn): # noqa: E501 - raise ValueError("Invalid value for `requester_fqdn`, must be a follow pattern or equal to `/^([0-9A-Za-z]([-0-9A-Za-z]{0,61}[0-9A-Za-z])?\.)+[A-Za-z]{2,63}\.?$/`") # noqa: E501 + raise ValueError(r"Invalid value for `requester_fqdn`, must be a follow pattern or equal to `/^([0-9A-Za-z]([-0-9A-Za-z]{0,61}[0-9A-Za-z])?\.)+[A-Za-z]{2,63}\.?$/`") # noqa: E501 self._requester_fqdn = requester_fqdn @@ -573,3 +603,99 @@ class AccessTokenReq1(Model): """ self._source_nf_instance_id = source_nf_instance_id + + @property + def vendor_id(self) -> str: + """Gets the vendor_id of this AccessTokenReq1. + + Vendor ID of the NF Service instance (Private Enterprise Number assigned by IANA) # noqa: E501 + + :return: The vendor_id of this AccessTokenReq1. + :rtype: str + """ + return self._vendor_id + + @vendor_id.setter + def vendor_id(self, vendor_id: str): + """Sets the vendor_id of this AccessTokenReq1. + + Vendor ID of the NF Service instance (Private Enterprise Number assigned by IANA) # noqa: E501 + + :param vendor_id: The vendor_id of this AccessTokenReq1. + :type vendor_id: str + """ + if vendor_id is not None and not re.search(r'^[0-9]{6}$', vendor_id): # noqa: E501 + raise ValueError(r"Invalid value for `vendor_id`, must be a follow pattern or equal to `/^[0-9]{6}$/`") # noqa: E501 + + self._vendor_id = vendor_id + + @property + def analytics_ids(self) -> List[NwdafEvent]: + """Gets the analytics_ids of this AccessTokenReq1. + + + :return: The analytics_ids of this AccessTokenReq1. + :rtype: List[NwdafEvent] + """ + return self._analytics_ids + + @analytics_ids.setter + def analytics_ids(self, analytics_ids: List[NwdafEvent]): + """Sets the analytics_ids of this AccessTokenReq1. + + + :param analytics_ids: The analytics_ids of this AccessTokenReq1. + :type analytics_ids: List[NwdafEvent] + """ + if analytics_ids is not None and len(analytics_ids) < 1: + raise ValueError("Invalid value for `analytics_ids`, number of items must be greater than or equal to `1`") # noqa: E501 + + self._analytics_ids = analytics_ids + + @property + def requester_inter_ind_list(self) -> List[MlModelInterInd]: + """Gets the requester_inter_ind_list of this AccessTokenReq1. + + + :return: The requester_inter_ind_list of this AccessTokenReq1. + :rtype: List[MlModelInterInd] + """ + return self._requester_inter_ind_list + + @requester_inter_ind_list.setter + def requester_inter_ind_list(self, requester_inter_ind_list: List[MlModelInterInd]): + """Sets the requester_inter_ind_list of this AccessTokenReq1. + + + :param requester_inter_ind_list: The requester_inter_ind_list of this AccessTokenReq1. + :type requester_inter_ind_list: List[MlModelInterInd] + """ + if requester_inter_ind_list is not None and len(requester_inter_ind_list) < 1: + raise ValueError("Invalid value for `requester_inter_ind_list`, number of items must be greater than or equal to `1`") # noqa: E501 + + self._requester_inter_ind_list = requester_inter_ind_list + + @property + def source_vendor_id(self) -> str: + """Gets the source_vendor_id of this AccessTokenReq1. + + Vendor ID of the NF Service instance (Private Enterprise Number assigned by IANA) # noqa: E501 + + :return: The source_vendor_id of this AccessTokenReq1. + :rtype: str + """ + return self._source_vendor_id + + @source_vendor_id.setter + def source_vendor_id(self, source_vendor_id: str): + """Sets the source_vendor_id of this AccessTokenReq1. + + Vendor ID of the NF Service instance (Private Enterprise Number assigned by IANA) # noqa: E501 + + :param source_vendor_id: The source_vendor_id of this AccessTokenReq1. + :type source_vendor_id: str + """ + if source_vendor_id is not None and not re.search(r'^[0-9]{6}$', source_vendor_id): # noqa: E501 + raise ValueError(r"Invalid value for `source_vendor_id`, must be a follow pattern or equal to `/^[0-9]{6}$/`") # noqa: E501 + + self._source_vendor_id = source_vendor_id diff --git a/services/TS29222_CAPIF_Security_API/capif_security/models/access_token_rsp.py b/services/TS29222_CAPIF_Security_API/capif_security/models/access_token_rsp.py index deaf22ecf4b0582fa2ae0e8139f9d581c5c2b963..f8e524db70285676d4c45d1db6298187c375d420 100644 --- a/services/TS29222_CAPIF_Security_API/capif_security/models/access_token_rsp.py +++ b/services/TS29222_CAPIF_Security_API/capif_security/models/access_token_rsp.py @@ -1,8 +1,9 @@ from datetime import date, datetime # noqa: F401 + from typing import List, Dict # noqa: F401 -from capif_security import util from capif_security.models.base_model import Model +from capif_security import util class AccessTokenRsp(Model): diff --git a/services/TS29222_CAPIF_Security_API/capif_security/models/base_model.py b/services/TS29222_CAPIF_Security_API/capif_security/models/base_model.py index 32a1219f8ac147ba8f4c8501d11a6eb8debd9124..4bf9315514313624382fa63da3b41b9e8290c7c4 100644 --- a/services/TS29222_CAPIF_Security_API/capif_security/models/base_model.py +++ b/services/TS29222_CAPIF_Security_API/capif_security/models/base_model.py @@ -1,4 +1,5 @@ import pprint + import typing from capif_security import util diff --git a/services/TS29222_CAPIF_Security_API/capif_security/models/cause.py b/services/TS29222_CAPIF_Security_API/capif_security/models/cause.py index 1b57bf4d57b05f9341e1b65c78a1adbc776e3222..227ba1077096ad9251e7b08939612d762611b14f 100644 --- a/services/TS29222_CAPIF_Security_API/capif_security/models/cause.py +++ b/services/TS29222_CAPIF_Security_API/capif_security/models/cause.py @@ -1,8 +1,9 @@ from datetime import date, datetime # noqa: F401 + from typing import List, Dict # noqa: F401 -from capif_security import util from capif_security.models.base_model import Model +from capif_security import util class Cause(Model): diff --git a/services/TS29222_CAPIF_Security_API/capif_security/models/interface_description.py b/services/TS29222_CAPIF_Security_API/capif_security/models/interface_description.py index 47458b7bbdf994962f8c666b802e57a440ce8f37..ade7fc6924584236e3df51ed761cf166ad769367 100644 --- a/services/TS29222_CAPIF_Security_API/capif_security/models/interface_description.py +++ b/services/TS29222_CAPIF_Security_API/capif_security/models/interface_description.py @@ -1,11 +1,16 @@ -import re # noqa: E501 from datetime import date, datetime # noqa: F401 + from typing import List, Dict # noqa: F401 -from capif_security import util from capif_security.models.base_model import Model -from capif_security.models.security_method import SecurityMethod # noqa: E501 +from capif_security.models.o_auth_grant_type import OAuthGrantType +from capif_security.models.security_method import SecurityMethod +import re +from capif_security import util +from capif_security.models.o_auth_grant_type import OAuthGrantType # noqa: E501 +from capif_security.models.security_method import SecurityMethod # noqa: E501 +import re # noqa: E501 class InterfaceDescription(Model): """NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). @@ -13,7 +18,7 @@ class InterfaceDescription(Model): Do not edit the class manually. """ - def __init__(self, ipv4_addr=None, ipv6_addr=None, fqdn=None, port=None, api_prefix=None, security_methods=None): # noqa: E501 + def __init__(self, ipv4_addr=None, ipv6_addr=None, fqdn=None, port=None, api_prefix=None, security_methods=None, grant_types=None): # noqa: E501 """InterfaceDescription - a model defined in OpenAPI :param ipv4_addr: The ipv4_addr of this InterfaceDescription. # noqa: E501 @@ -28,6 +33,8 @@ class InterfaceDescription(Model): :type api_prefix: str :param security_methods: The security_methods of this InterfaceDescription. # noqa: E501 :type security_methods: List[SecurityMethod] + :param grant_types: The grant_types of this InterfaceDescription. # noqa: E501 + :type grant_types: List[OAuthGrantType] """ self.openapi_types = { 'ipv4_addr': str, @@ -35,7 +42,8 @@ class InterfaceDescription(Model): 'fqdn': str, 'port': int, 'api_prefix': str, - 'security_methods': List[SecurityMethod] + 'security_methods': List[SecurityMethod], + 'grant_types': List[OAuthGrantType] } self.attribute_map = { @@ -44,7 +52,8 @@ class InterfaceDescription(Model): 'fqdn': 'fqdn', 'port': 'port', 'api_prefix': 'apiPrefix', - 'security_methods': 'securityMethods' + 'security_methods': 'securityMethods', + 'grant_types': 'grantTypes' } self._ipv4_addr = ipv4_addr @@ -53,6 +62,7 @@ class InterfaceDescription(Model): self._port = port self._api_prefix = api_prefix self._security_methods = security_methods + self._grant_types = grant_types @classmethod def from_dict(cls, dikt) -> 'InterfaceDescription': @@ -136,7 +146,7 @@ class InterfaceDescription(Model): if fqdn is not None and len(fqdn) < 4: raise ValueError("Invalid value for `fqdn`, length must be greater than or equal to `4`") # noqa: E501 if fqdn is not None and not re.search(r'^([0-9A-Za-z]([-0-9A-Za-z]{0,61}[0-9A-Za-z])?\.)+[A-Za-z]{2,63}\.?$', fqdn): # noqa: E501 - raise ValueError("Invalid value for `fqdn`, must be a follow pattern or equal to `/^([0-9A-Za-z]([-0-9A-Za-z]{0,61}[0-9A-Za-z])?\.)+[A-Za-z]{2,63}\.?$/`") # noqa: E501 + raise ValueError(r"Invalid value for `fqdn`, must be a follow pattern or equal to `/^([0-9A-Za-z]([-0-9A-Za-z]{0,61}[0-9A-Za-z])?\.)+[A-Za-z]{2,63}\.?$/`") # noqa: E501 self._fqdn = fqdn @@ -214,3 +224,26 @@ class InterfaceDescription(Model): raise ValueError("Invalid value for `security_methods`, number of items must be greater than or equal to `1`") # noqa: E501 self._security_methods = security_methods + + @property + def grant_types(self) -> List[OAuthGrantType]: + """Gets the grant_types of this InterfaceDescription. + + + :return: The grant_types of this InterfaceDescription. + :rtype: List[OAuthGrantType] + """ + return self._grant_types + + @grant_types.setter + def grant_types(self, grant_types: List[OAuthGrantType]): + """Sets the grant_types of this InterfaceDescription. + + + :param grant_types: The grant_types of this InterfaceDescription. + :type grant_types: List[OAuthGrantType] + """ + if grant_types is not None and len(grant_types) < 1: + raise ValueError("Invalid value for `grant_types`, number of items must be greater than or equal to `1`") # noqa: E501 + + self._grant_types = grant_types diff --git a/services/TS29222_CAPIF_Security_API/capif_security/models/invalid_param.py b/services/TS29222_CAPIF_Security_API/capif_security/models/invalid_param.py index ca4a094e20c698002c86403d02fe7f7a42f337d5..f86b208627fc9dfce59c1e3184b8571350113cc0 100644 --- a/services/TS29222_CAPIF_Security_API/capif_security/models/invalid_param.py +++ b/services/TS29222_CAPIF_Security_API/capif_security/models/invalid_param.py @@ -1,8 +1,9 @@ from datetime import date, datetime # noqa: F401 + from typing import List, Dict # noqa: F401 -from capif_security import util from capif_security.models.base_model import Model +from capif_security import util class InvalidParam(Model): diff --git a/services/TS29222_CAPIF_Security_API/capif_security/models/invalid_param1.py b/services/TS29222_CAPIF_Security_API/capif_security/models/invalid_param1.py index 3546df8df11b34d800c60a77027a211d4a1e2bb6..77919000e05633287a6cf37c1d812e598b4090af 100644 --- a/services/TS29222_CAPIF_Security_API/capif_security/models/invalid_param1.py +++ b/services/TS29222_CAPIF_Security_API/capif_security/models/invalid_param1.py @@ -1,8 +1,9 @@ from datetime import date, datetime # noqa: F401 + from typing import List, Dict # noqa: F401 -from capif_security import util from capif_security.models.base_model import Model +from capif_security import util class InvalidParam1(Model): diff --git a/services/TS29222_CAPIF_Security_API/capif_security/models/ml_model_inter_ind.py b/services/TS29222_CAPIF_Security_API/capif_security/models/ml_model_inter_ind.py new file mode 100644 index 0000000000000000000000000000000000000000..3e87273d935ded919fa7ae4f3745b3fd876ac6cf --- /dev/null +++ b/services/TS29222_CAPIF_Security_API/capif_security/models/ml_model_inter_ind.py @@ -0,0 +1,95 @@ +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from capif_security.models.base_model import Model +from capif_security.models.nwdaf_event import NwdafEvent +from capif_security import util + +from capif_security.models.nwdaf_event import NwdafEvent # noqa: E501 + +class MlModelInterInd(Model): + """NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + + Do not edit the class manually. + """ + + def __init__(self, analytics_id=None, vendor_list=None): # noqa: E501 + """MlModelInterInd - a model defined in OpenAPI + + :param analytics_id: The analytics_id of this MlModelInterInd. # noqa: E501 + :type analytics_id: NwdafEvent + :param vendor_list: The vendor_list of this MlModelInterInd. # noqa: E501 + :type vendor_list: List[str] + """ + self.openapi_types = { + 'analytics_id': NwdafEvent, + 'vendor_list': List[str] + } + + self.attribute_map = { + 'analytics_id': 'analyticsId', + 'vendor_list': 'vendorList' + } + + self._analytics_id = analytics_id + self._vendor_list = vendor_list + + @classmethod + def from_dict(cls, dikt) -> 'MlModelInterInd': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The MlModelInterInd of this MlModelInterInd. # noqa: E501 + :rtype: MlModelInterInd + """ + return util.deserialize_model(dikt, cls) + + @property + def analytics_id(self) -> NwdafEvent: + """Gets the analytics_id of this MlModelInterInd. + + + :return: The analytics_id of this MlModelInterInd. + :rtype: NwdafEvent + """ + return self._analytics_id + + @analytics_id.setter + def analytics_id(self, analytics_id: NwdafEvent): + """Sets the analytics_id of this MlModelInterInd. + + + :param analytics_id: The analytics_id of this MlModelInterInd. + :type analytics_id: NwdafEvent + """ + if analytics_id is None: + raise ValueError("Invalid value for `analytics_id`, must not be `None`") # noqa: E501 + + self._analytics_id = analytics_id + + @property + def vendor_list(self) -> List[str]: + """Gets the vendor_list of this MlModelInterInd. + + + :return: The vendor_list of this MlModelInterInd. + :rtype: List[str] + """ + return self._vendor_list + + @vendor_list.setter + def vendor_list(self, vendor_list: List[str]): + """Sets the vendor_list of this MlModelInterInd. + + + :param vendor_list: The vendor_list of this MlModelInterInd. + :type vendor_list: List[str] + """ + if vendor_list is None: + raise ValueError("Invalid value for `vendor_list`, must not be `None`") # noqa: E501 + if vendor_list is not None and len(vendor_list) < 1: + raise ValueError("Invalid value for `vendor_list`, number of items must be greater than or equal to `1`") # noqa: E501 + + self._vendor_list = vendor_list diff --git a/services/TS29222_CAPIF_Security_API/capif_security/models/nf_type.py b/services/TS29222_CAPIF_Security_API/capif_security/models/nf_type.py index 0f2e09b2e0bab651339f2cd65f494f889375bced..184a7c0d6493cd38d83d653e85651df21df8f402 100644 --- a/services/TS29222_CAPIF_Security_API/capif_security/models/nf_type.py +++ b/services/TS29222_CAPIF_Security_API/capif_security/models/nf_type.py @@ -1,8 +1,9 @@ from datetime import date, datetime # noqa: F401 + from typing import List, Dict # noqa: F401 -from capif_security import util from capif_security.models.base_model import Model +from capif_security import util class NFType(Model): diff --git a/services/TS29222_CAPIF_Security_API/capif_security/models/no_profile_match_info.py b/services/TS29222_CAPIF_Security_API/capif_security/models/no_profile_match_info.py index c374ddeb15a33b92ff8c90e3f0127b1ccc5b7b8d..4d8885b5f87a503a9ef37c017830a6f2b2ec5079 100644 --- a/services/TS29222_CAPIF_Security_API/capif_security/models/no_profile_match_info.py +++ b/services/TS29222_CAPIF_Security_API/capif_security/models/no_profile_match_info.py @@ -1,12 +1,15 @@ from datetime import date, datetime # noqa: F401 + from typing import List, Dict # noqa: F401 -from capif_security import util from capif_security.models.base_model import Model +from capif_security.models.no_profile_match_reason import NoProfileMatchReason +from capif_security.models.query_param_combination import QueryParamCombination +from capif_security import util + from capif_security.models.no_profile_match_reason import NoProfileMatchReason # noqa: E501 from capif_security.models.query_param_combination import QueryParamCombination # noqa: E501 - class NoProfileMatchInfo(Model): """NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/services/TS29222_CAPIF_Security_API/capif_security/models/no_profile_match_reason.py b/services/TS29222_CAPIF_Security_API/capif_security/models/no_profile_match_reason.py index 511afb65c55e3578646cb99d2cd2a1cc29a952ed..ccec0b37c0900d5176750d37d423a7b50dbc9d08 100644 --- a/services/TS29222_CAPIF_Security_API/capif_security/models/no_profile_match_reason.py +++ b/services/TS29222_CAPIF_Security_API/capif_security/models/no_profile_match_reason.py @@ -1,8 +1,9 @@ from datetime import date, datetime # noqa: F401 + from typing import List, Dict # noqa: F401 -from capif_security import util from capif_security.models.base_model import Model +from capif_security import util class NoProfileMatchReason(Model): diff --git a/services/TS29222_CAPIF_Security_API/capif_security/models/nwdaf_event.py b/services/TS29222_CAPIF_Security_API/capif_security/models/nwdaf_event.py new file mode 100644 index 0000000000000000000000000000000000000000..f07de0c3e156a19931b49e516b0c970a2c18da0d --- /dev/null +++ b/services/TS29222_CAPIF_Security_API/capif_security/models/nwdaf_event.py @@ -0,0 +1,34 @@ +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from capif_security.models.base_model import Model +from capif_security import util + + +class NwdafEvent(Model): + """NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + + Do not edit the class manually. + """ + + def __init__(self): # noqa: E501 + """NwdafEvent - a model defined in OpenAPI + + """ + self.openapi_types = { + } + + self.attribute_map = { + } + + @classmethod + def from_dict(cls, dikt) -> 'NwdafEvent': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The NwdafEvent of this NwdafEvent. # noqa: E501 + :rtype: NwdafEvent + """ + return util.deserialize_model(dikt, cls) diff --git a/services/TS29222_CAPIF_Security_API/capif_security/models/o_auth_grant_type.py b/services/TS29222_CAPIF_Security_API/capif_security/models/o_auth_grant_type.py index 9420cc5b79b8d444095b0f61c03bce8cff7d2c38..8bace2b9fde752c103469c590b5829d8510a3acc 100644 --- a/services/TS29222_CAPIF_Security_API/capif_security/models/o_auth_grant_type.py +++ b/services/TS29222_CAPIF_Security_API/capif_security/models/o_auth_grant_type.py @@ -1,8 +1,9 @@ from datetime import date, datetime # noqa: F401 + from typing import List, Dict # noqa: F401 -from capif_security import util from capif_security.models.base_model import Model +from capif_security import util class OAuthGrantType(Model): diff --git a/services/TS29222_CAPIF_Security_API/capif_security/models/plmn_id.py b/services/TS29222_CAPIF_Security_API/capif_security/models/plmn_id.py index 82696e45abb6eb48a4294cb3aae537561027c1e5..74dd8bf05a8fac1b3eb7d87b50ac9a6752a5dbfa 100644 --- a/services/TS29222_CAPIF_Security_API/capif_security/models/plmn_id.py +++ b/services/TS29222_CAPIF_Security_API/capif_security/models/plmn_id.py @@ -1,10 +1,12 @@ -import re # noqa: E501 from datetime import date, datetime # noqa: F401 + from typing import List, Dict # noqa: F401 -from capif_security import util from capif_security.models.base_model import Model +import re +from capif_security import util +import re # noqa: E501 class PlmnId(Model): """NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). @@ -67,7 +69,7 @@ class PlmnId(Model): if mcc is None: raise ValueError("Invalid value for `mcc`, must not be `None`") # noqa: E501 if mcc is not None and not re.search(r'^\d{3}$', mcc): # noqa: E501 - raise ValueError("Invalid value for `mcc`, must be a follow pattern or equal to `/^\d{3}$/`") # noqa: E501 + raise ValueError(r"Invalid value for `mcc`, must be a follow pattern or equal to `/^\d{3}$/`") # noqa: E501 self._mcc = mcc @@ -94,6 +96,6 @@ class PlmnId(Model): if mnc is None: raise ValueError("Invalid value for `mnc`, must not be `None`") # noqa: E501 if mnc is not None and not re.search(r'^\d{2,3}$', mnc): # noqa: E501 - raise ValueError("Invalid value for `mnc`, must be a follow pattern or equal to `/^\d{2,3}$/`") # noqa: E501 + raise ValueError(r"Invalid value for `mnc`, must be a follow pattern or equal to `/^\d{2,3}$/`") # noqa: E501 self._mnc = mnc diff --git a/services/TS29222_CAPIF_Security_API/capif_security/models/plmn_id_nid.py b/services/TS29222_CAPIF_Security_API/capif_security/models/plmn_id_nid.py index eb9d1e25fb1ad0aae8e7b3d20b62633b6b77e2d7..02bfde85377cd788d79248453f25ff4b1737e154 100644 --- a/services/TS29222_CAPIF_Security_API/capif_security/models/plmn_id_nid.py +++ b/services/TS29222_CAPIF_Security_API/capif_security/models/plmn_id_nid.py @@ -1,10 +1,12 @@ -import re # noqa: E501 from datetime import date, datetime # noqa: F401 + from typing import List, Dict # noqa: F401 -from capif_security import util from capif_security.models.base_model import Model +import re +from capif_security import util +import re # noqa: E501 class PlmnIdNid(Model): """NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). @@ -72,7 +74,7 @@ class PlmnIdNid(Model): if mcc is None: raise ValueError("Invalid value for `mcc`, must not be `None`") # noqa: E501 if mcc is not None and not re.search(r'^\d{3}$', mcc): # noqa: E501 - raise ValueError("Invalid value for `mcc`, must be a follow pattern or equal to `/^\d{3}$/`") # noqa: E501 + raise ValueError(r"Invalid value for `mcc`, must be a follow pattern or equal to `/^\d{3}$/`") # noqa: E501 self._mcc = mcc @@ -99,7 +101,7 @@ class PlmnIdNid(Model): if mnc is None: raise ValueError("Invalid value for `mnc`, must not be `None`") # noqa: E501 if mnc is not None and not re.search(r'^\d{2,3}$', mnc): # noqa: E501 - raise ValueError("Invalid value for `mnc`, must be a follow pattern or equal to `/^\d{2,3}$/`") # noqa: E501 + raise ValueError(r"Invalid value for `mnc`, must be a follow pattern or equal to `/^\d{2,3}$/`") # noqa: E501 self._mnc = mnc @@ -124,6 +126,6 @@ class PlmnIdNid(Model): :type nid: str """ if nid is not None and not re.search(r'^[A-Fa-f0-9]{11}$', nid): # noqa: E501 - raise ValueError("Invalid value for `nid`, must be a follow pattern or equal to `/^[A-Fa-f0-9]{11}$/`") # noqa: E501 + raise ValueError(r"Invalid value for `nid`, must be a follow pattern or equal to `/^[A-Fa-f0-9]{11}$/`") # noqa: E501 self._nid = nid diff --git a/services/TS29222_CAPIF_Security_API/capif_security/models/problem_details.py b/services/TS29222_CAPIF_Security_API/capif_security/models/problem_details.py index 50003d8edc6738e6cc4f2869ed5ee81bb135dd02..f24710e4e1be5146392748adcc32b9fa4a34bddd 100644 --- a/services/TS29222_CAPIF_Security_API/capif_security/models/problem_details.py +++ b/services/TS29222_CAPIF_Security_API/capif_security/models/problem_details.py @@ -1,11 +1,14 @@ -import re # noqa: E501 from datetime import date, datetime # noqa: F401 + from typing import List, Dict # noqa: F401 -from capif_security import util from capif_security.models.base_model import Model -from capif_security.models.invalid_param import InvalidParam # noqa: E501 +from capif_security.models.invalid_param import InvalidParam +import re +from capif_security import util +from capif_security.models.invalid_param import InvalidParam # noqa: E501 +import re # noqa: E501 class ProblemDetails(Model): """NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). @@ -259,6 +262,6 @@ class ProblemDetails(Model): :type supported_features: str """ if supported_features is not None and not re.search(r'^[A-Fa-f0-9]*$', supported_features): # noqa: E501 - raise ValueError("Invalid value for `supported_features`, must be a follow pattern or equal to `/^[A-Fa-f0-9]*$/`") # noqa: E501 + raise ValueError(r"Invalid value for `supported_features`, must be a follow pattern or equal to `/^[A-Fa-f0-9]*$/`") # noqa: E501 self._supported_features = supported_features diff --git a/services/TS29222_CAPIF_Security_API/capif_security/models/problem_details1.py b/services/TS29222_CAPIF_Security_API/capif_security/models/problem_details1.py index 777afe0d157acb199a51f88eb6e4c214e06af679..27b782fc3b21390ab6e316b954a0db737d86640c 100644 --- a/services/TS29222_CAPIF_Security_API/capif_security/models/problem_details1.py +++ b/services/TS29222_CAPIF_Security_API/capif_security/models/problem_details1.py @@ -1,14 +1,20 @@ -import re # noqa: E501 from datetime import date, datetime # noqa: F401 + from typing import List, Dict # noqa: F401 +from capif_security.models.base_model import Model +from capif_security.models.access_token_err1 import AccessTokenErr1 +from capif_security.models.access_token_req1 import AccessTokenReq1 +from capif_security.models.invalid_param1 import InvalidParam1 +from capif_security.models.no_profile_match_info import NoProfileMatchInfo +import re from capif_security import util + from capif_security.models.access_token_err1 import AccessTokenErr1 # noqa: E501 from capif_security.models.access_token_req1 import AccessTokenReq1 # noqa: E501 -from capif_security.models.base_model import Model from capif_security.models.invalid_param1 import InvalidParam1 # noqa: E501 from capif_security.models.no_profile_match_info import NoProfileMatchInfo # noqa: E501 - +import re # noqa: E501 class ProblemDetails1(Model): """NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). @@ -281,7 +287,7 @@ class ProblemDetails1(Model): :type supported_features: str """ if supported_features is not None and not re.search(r'^[A-Fa-f0-9]*$', supported_features): # noqa: E501 - raise ValueError("Invalid value for `supported_features`, must be a follow pattern or equal to `/^[A-Fa-f0-9]*$/`") # noqa: E501 + raise ValueError(r"Invalid value for `supported_features`, must be a follow pattern or equal to `/^[A-Fa-f0-9]*$/`") # noqa: E501 self._supported_features = supported_features @@ -352,7 +358,7 @@ class ProblemDetails1(Model): if nrf_id is not None and len(nrf_id) < 4: raise ValueError("Invalid value for `nrf_id`, length must be greater than or equal to `4`") # noqa: E501 if nrf_id is not None and not re.search(r'^([0-9A-Za-z]([-0-9A-Za-z]{0,61}[0-9A-Za-z])?\.)+[A-Za-z]{2,63}\.?$', nrf_id): # noqa: E501 - raise ValueError("Invalid value for `nrf_id`, must be a follow pattern or equal to `/^([0-9A-Za-z]([-0-9A-Za-z]{0,61}[0-9A-Za-z])?\.)+[A-Za-z]{2,63}\.?$/`") # noqa: E501 + raise ValueError(r"Invalid value for `nrf_id`, must be a follow pattern or equal to `/^([0-9A-Za-z]([-0-9A-Za-z]{0,61}[0-9A-Za-z])?\.)+[A-Za-z]{2,63}\.?$/`") # noqa: E501 self._nrf_id = nrf_id diff --git a/services/TS29222_CAPIF_Security_API/capif_security/models/query_param_combination.py b/services/TS29222_CAPIF_Security_API/capif_security/models/query_param_combination.py index 962b251cb3f11966fca13593ed83108837b6c405..a28fb4add0e28adfa4155fbe2749b6f8fc215439 100644 --- a/services/TS29222_CAPIF_Security_API/capif_security/models/query_param_combination.py +++ b/services/TS29222_CAPIF_Security_API/capif_security/models/query_param_combination.py @@ -1,10 +1,12 @@ from datetime import date, datetime # noqa: F401 + from typing import List, Dict # noqa: F401 -from capif_security import util from capif_security.models.base_model import Model -from capif_security.models.query_parameter import QueryParameter # noqa: E501 +from capif_security.models.query_parameter import QueryParameter +from capif_security import util +from capif_security.models.query_parameter import QueryParameter # noqa: E501 class QueryParamCombination(Model): """NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/services/TS29222_CAPIF_Security_API/capif_security/models/query_parameter.py b/services/TS29222_CAPIF_Security_API/capif_security/models/query_parameter.py index b5d0a01d55a408f7c0d03c0c63f7d9c35e1b7c83..183bb32533db25ef131c86ee2b827233453142c2 100644 --- a/services/TS29222_CAPIF_Security_API/capif_security/models/query_parameter.py +++ b/services/TS29222_CAPIF_Security_API/capif_security/models/query_parameter.py @@ -1,8 +1,9 @@ from datetime import date, datetime # noqa: F401 + from typing import List, Dict # noqa: F401 -from capif_security import util from capif_security.models.base_model import Model +from capif_security import util class QueryParameter(Model): diff --git a/services/TS29222_CAPIF_Security_API/capif_security/models/res_owner_id.py b/services/TS29222_CAPIF_Security_API/capif_security/models/res_owner_id.py index d59b5a482b015d29981607583c6dd281adc22ba9..0229dd1f3d4f735e1e34efc8a5a55f4edc3a014d 100644 --- a/services/TS29222_CAPIF_Security_API/capif_security/models/res_owner_id.py +++ b/services/TS29222_CAPIF_Security_API/capif_security/models/res_owner_id.py @@ -1,10 +1,12 @@ -import re # noqa: E501 from datetime import date, datetime # noqa: F401 + from typing import List, Dict # noqa: F401 -from capif_security import util from capif_security.models.base_model import Model +import re +from capif_security import util +import re # noqa: E501 class ResOwnerId(Model): """NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). @@ -60,6 +62,6 @@ class ResOwnerId(Model): :type gpsi: str """ if gpsi is not None and not re.search(r'^(msisdn-[0-9]{5,15}|extid-[^@]+@[^@]+|.+)$', gpsi): # noqa: E501 - raise ValueError("Invalid value for `gpsi`, must be a follow pattern or equal to `/^(msisdn-[0-9]{5,15}|extid-[^@]+@[^@]+|.+)$/`") # noqa: E501 + raise ValueError(r"Invalid value for `gpsi`, must be a follow pattern or equal to `/^(msisdn-[0-9]{5,15}|extid-[^@]+@[^@]+|.+)$/`") # noqa: E501 self._gpsi = gpsi diff --git a/services/TS29222_CAPIF_Security_API/capif_security/models/security_information.py b/services/TS29222_CAPIF_Security_API/capif_security/models/security_information.py index e678a36274780d48ed837600b989c242a24ed646..10e85193d594bb1ba15389855230dbcc93e290fd 100644 --- a/services/TS29222_CAPIF_Security_API/capif_security/models/security_information.py +++ b/services/TS29222_CAPIF_Security_API/capif_security/models/security_information.py @@ -1,13 +1,17 @@ from datetime import date, datetime # noqa: F401 + from typing import List, Dict # noqa: F401 -from capif_security import util from capif_security.models.base_model import Model +from capif_security.models.interface_description import InterfaceDescription +from capif_security.models.o_auth_grant_type import OAuthGrantType +from capif_security.models.security_method import SecurityMethod +from capif_security import util + from capif_security.models.interface_description import InterfaceDescription # noqa: E501 from capif_security.models.o_auth_grant_type import OAuthGrantType # noqa: E501 from capif_security.models.security_method import SecurityMethod # noqa: E501 - class SecurityInformation(Model): """NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/services/TS29222_CAPIF_Security_API/capif_security/models/security_method.py b/services/TS29222_CAPIF_Security_API/capif_security/models/security_method.py index 1d5bfae95a2a73e568e4eeb368352c08c3eeed13..c319a38a44ed09c7124257a56ab3a8e18091b3d5 100644 --- a/services/TS29222_CAPIF_Security_API/capif_security/models/security_method.py +++ b/services/TS29222_CAPIF_Security_API/capif_security/models/security_method.py @@ -1,8 +1,9 @@ from datetime import date, datetime # noqa: F401 + from typing import List, Dict # noqa: F401 -from capif_security import util from capif_security.models.base_model import Model +from capif_security import util class SecurityMethod(Model): diff --git a/services/TS29222_CAPIF_Security_API/capif_security/models/security_notification.py b/services/TS29222_CAPIF_Security_API/capif_security/models/security_notification.py index 90e4e803465c61955773367a6849cfff1cc73ea4..538c655f0a9a3c70d87e32dacae8a4f2e3879b95 100644 --- a/services/TS29222_CAPIF_Security_API/capif_security/models/security_notification.py +++ b/services/TS29222_CAPIF_Security_API/capif_security/models/security_notification.py @@ -1,10 +1,12 @@ from datetime import date, datetime # noqa: F401 + from typing import List, Dict # noqa: F401 -from capif_security import util from capif_security.models.base_model import Model -from capif_security.models.cause import Cause # noqa: E501 +from capif_security.models.cause import Cause +from capif_security import util +from capif_security.models.cause import Cause # noqa: E501 class SecurityNotification(Model): """NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/services/TS29222_CAPIF_Security_API/capif_security/models/service_security.py b/services/TS29222_CAPIF_Security_API/capif_security/models/service_security.py index 7556c8e730f0eace96c78c784bb89ff36f9012c4..c0bae73eac1bdd842618def7ae6d50fc3d72806c 100644 --- a/services/TS29222_CAPIF_Security_API/capif_security/models/service_security.py +++ b/services/TS29222_CAPIF_Security_API/capif_security/models/service_security.py @@ -1,12 +1,16 @@ -import re # noqa: E501 from datetime import date, datetime # noqa: F401 + from typing import List, Dict # noqa: F401 -from capif_security import util from capif_security.models.base_model import Model +from capif_security.models.security_information import SecurityInformation +from capif_security.models.websock_notif_config import WebsockNotifConfig +import re +from capif_security import util + from capif_security.models.security_information import SecurityInformation # noqa: E501 from capif_security.models.websock_notif_config import WebsockNotifConfig # noqa: E501 - +import re # noqa: E501 class ServiceSecurity(Model): """NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). @@ -174,6 +178,6 @@ class ServiceSecurity(Model): :type supported_features: str """ if supported_features is not None and not re.search(r'^[A-Fa-f0-9]*$', supported_features): # noqa: E501 - raise ValueError("Invalid value for `supported_features`, must be a follow pattern or equal to `/^[A-Fa-f0-9]*$/`") # noqa: E501 + raise ValueError(r"Invalid value for `supported_features`, must be a follow pattern or equal to `/^[A-Fa-f0-9]*$/`") # noqa: E501 self._supported_features = supported_features diff --git a/services/TS29222_CAPIF_Security_API/capif_security/models/snssai.py b/services/TS29222_CAPIF_Security_API/capif_security/models/snssai.py index 557c4bdefee53cd918a12740970fffc2f7b89542..1d00dd90eaecb497abc26c0e3e0c089dc7e027db 100644 --- a/services/TS29222_CAPIF_Security_API/capif_security/models/snssai.py +++ b/services/TS29222_CAPIF_Security_API/capif_security/models/snssai.py @@ -1,10 +1,12 @@ -import re # noqa: E501 from datetime import date, datetime # noqa: F401 + from typing import List, Dict # noqa: F401 -from capif_security import util from capif_security.models.base_model import Model +import re +from capif_security import util +import re # noqa: E501 class Snssai(Model): """NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). @@ -94,6 +96,6 @@ class Snssai(Model): :type sd: str """ if sd is not None and not re.search(r'^[A-Fa-f0-9]{6}$', sd): # noqa: E501 - raise ValueError("Invalid value for `sd`, must be a follow pattern or equal to `/^[A-Fa-f0-9]{6}$/`") # noqa: E501 + raise ValueError(r"Invalid value for `sd`, must be a follow pattern or equal to `/^[A-Fa-f0-9]{6}$/`") # noqa: E501 self._sd = sd diff --git a/services/TS29222_CAPIF_Security_API/capif_security/models/websock_notif_config.py b/services/TS29222_CAPIF_Security_API/capif_security/models/websock_notif_config.py index b72b264f4c1411234828bd2a2af341459d59609a..1482ee7d7f07ad258b9a104ece1e851528925cbf 100644 --- a/services/TS29222_CAPIF_Security_API/capif_security/models/websock_notif_config.py +++ b/services/TS29222_CAPIF_Security_API/capif_security/models/websock_notif_config.py @@ -1,8 +1,9 @@ from datetime import date, datetime # noqa: F401 + from typing import List, Dict # noqa: F401 -from capif_security import util from capif_security.models.base_model import Model +from capif_security import util class WebsockNotifConfig(Model): diff --git a/services/TS29222_CAPIF_Security_API/capif_security/openapi/openapi.yaml b/services/TS29222_CAPIF_Security_API/capif_security/openapi/openapi.yaml index fe88c19931162b07c8de7a6f7a956eb55f96951b..19377498b498005ac80e632bad913f021f0f990c 100644 --- a/services/TS29222_CAPIF_Security_API/capif_security/openapi/openapi.yaml +++ b/services/TS29222_CAPIF_Security_API/capif_security/openapi/openapi.yaml @@ -3,9 +3,9 @@ info: description: "API for CAPIF security management. \n© 2024, 3GPP Organizational\ \ Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). \nAll rights reserved.\n" title: CAPIF_Security_API - version: 1.3.0-alpha.4 + version: 1.3.0 externalDocs: - description: 3GPP TS 29.222 V18.5.0 Common API Framework for 3GPP Northbound APIs + description: 3GPP TS 29.222 V18.6.0 Common API Framework for 3GPP Northbound APIs url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.222/ servers: - url: "{apiRoot}/capif-security/v1" @@ -307,9 +307,9 @@ paths: put: callbacks: notificationDestination: - '{request.body#/notificationDestination}': + '{$request.body#/notificationDestination}': post: - operationId: notificationDestination_request_bodyNotificationDestinationPost + operationId: notification_destination_post requestBody: content: application/json: @@ -805,6 +805,9 @@ components: authorizationInfo: authorizationInfo interfaceDetails: ipv6Addr: ipv6Addr + grantTypes: + - CLIENT_CREDENTIALS + - CLIENT_CREDENTIALS securityMethods: - PSK - PSK @@ -817,14 +820,17 @@ components: - null aefId: aefId grantType: - - CLIENT_CREDENTIALS - - CLIENT_CREDENTIALS + - null + - null apiId: apiId - selSecurityMethod: null authenticationInfo: authenticationInfo authorizationInfo: authorizationInfo interfaceDetails: ipv6Addr: ipv6Addr + grantTypes: + - CLIENT_CREDENTIALS + - CLIENT_CREDENTIALS securityMethods: - PSK - PSK @@ -837,8 +843,8 @@ components: - null aefId: aefId grantType: - - CLIENT_CREDENTIALS - - CLIENT_CREDENTIALS + - null + - null apiId: apiId websockNotifConfig: requestWebsocketUri: true @@ -881,6 +887,9 @@ components: authorizationInfo: authorizationInfo interfaceDetails: ipv6Addr: ipv6Addr + grantTypes: + - CLIENT_CREDENTIALS + - CLIENT_CREDENTIALS securityMethods: - PSK - PSK @@ -893,15 +902,13 @@ components: - null aefId: aefId grantType: - - CLIENT_CREDENTIALS - - CLIENT_CREDENTIALS + - null + - null apiId: apiId nullable: true - oneOf: - - required: - - aefId - - required: - - interfaceDetails + oneOf: + - required: ["aefId"] + - required: ["interfaceDetails"] properties: interfaceDetails: $ref: '#/components/schemas/InterfaceDescription' @@ -1097,6 +1104,8 @@ components: - enum: - OVERLIMIT_USAGE - UNEXPECTED_REASON + - AUTHORIZATION_ISSUE + - OTHER_REASON type: string - description: | This string provides forward-compatibility with future extensions to the enumeration but is not used to encode content defined in the present version of this API. @@ -1105,7 +1114,11 @@ components: \ to the service API. \nPossible values are:\n- OVERLIMIT_USAGE:\n The\ \ revocation of the authorization of the API invoker is due to the overlimit\n\ \ usage of the service API\n- UNEXPECTED_REASON:\n The revocation\ - \ of the authorization of the API invoker is due to unexpected reason.\n" + \ of the authorization of the API invoker is due to unexpected reason.\n-\ + \ AUTHORIZATION_ISSUE:\n The revocation of the authorization of the API\ + \ invoker is due to API Invoker\n not being authorized anymore by the\ + \ API Provider.\n- OTHER_REASON:\n The revocation of the authorization\ + \ of the API invoker is due to other reason.\n" title: Cause OAuthGrantType: anyOf: @@ -1308,6 +1321,9 @@ components: description: Represents the description of an API's interface. example: ipv6Addr: ipv6Addr + grantTypes: + - CLIENT_CREDENTIALS + - CLIENT_CREDENTIALS securityMethods: - PSK - PSK @@ -1316,13 +1332,10 @@ components: apiPrefix: apiPrefix ipv4Addr: ipv4Addr nullable: true - oneOf: - - required: - - ipv4Addr - - required: - - ipv6Addr - - required: - - fqdn + oneOf: + - required: ["fqdn"] + - required: ["ipv4Addr"] + - required: ["ipv6Addr"] properties: ipv4Addr: description: | @@ -1361,6 +1374,12 @@ components: minItems: 1 title: securityMethods type: array + grantTypes: + items: + $ref: '#/components/schemas/OAuthGrantType' + minItems: 1 + title: grantTypes + type: array title: InterfaceDescription type: object SecurityMethod: @@ -1530,12 +1549,52 @@ components: format: uuid title: NfInstanceId type: string + vendorId: + description: Vendor ID of the NF Service instance (Private Enterprise Number + assigned by IANA) + pattern: "^[0-9]{6}$" + title: VendorId + type: string + analyticsIds: + items: + $ref: '#/components/schemas/NwdafEvent' + minItems: 1 + title: analyticsIds + type: array + requesterInterIndList: + items: + $ref: '#/components/schemas/MlModelInterInd' + minItems: 1 + title: requesterInterIndList + type: array + sourceVendorId: + description: Vendor ID of the NF Service instance (Private Enterprise Number + assigned by IANA) + pattern: "^[0-9]{6}$" + title: VendorId + type: string required: - grant_type - nfInstanceId - scope title: AccessTokenReq_1 type: object + MlModelInterInd: + description: ML Model Interoperability Indicator per Analytics Id + properties: + analyticsId: + $ref: '#/components/schemas/NwdafEvent' + vendorList: + items: + $ref: '#/components/schemas/VendorId' + minItems: 1 + title: vendorList + type: array + required: + - analyticsId + - vendorList + title: MlModelInterInd + type: object NoProfileMatchInfo: description: Provides the reason for not finding NF matching the search criteria properties: @@ -1809,3 +1868,66 @@ components: \ an alphabetic character or a digit.\n" title: NfServiceSetId type: string + VendorId: + description: Vendor ID of the NF Service instance (Private Enterprise Number + assigned by IANA) + pattern: "^[0-9]{6}$" + title: VendorId + type: string + NwdafEvent: + anyOf: + - enum: + - SLICE_LOAD_LEVEL + - NETWORK_PERFORMANCE + - NF_LOAD + - SERVICE_EXPERIENCE + - UE_MOBILITY + - UE_COMMUNICATION + - QOS_SUSTAINABILITY + - ABNORMAL_BEHAVIOUR + - USER_DATA_CONGESTION + - NSI_LOAD_LEVEL + - DN_PERFORMANCE + - DISPERSION + - RED_TRANS_EXP + - WLAN_PERFORMANCE + - SM_CONGESTION + - PFD_DETERMINATION + - PDU_SESSION_TRAFFIC + - E2E_DATA_VOL_TRANS_TIME + - MOVEMENT_BEHAVIOUR + - LOC_ACCURACY + - RELATIVE_PROXIMITY + type: string + - description: | + This string provides forward-compatibility with future extensions to the enumeration but is not used to encode content defined in the present version of this API. + type: string + description: "Describes the NWDAF Events. \nPossible values are:\n- SLICE_LOAD_LEVEL:\ + \ Indicates that the event subscribed is load level information of Network\n\ + \ Slice.\n- NETWORK_PERFORMANCE: Indicates that the event subscribed is network\ + \ performance\n information.\n- NF_LOAD: Indicates that the event subscribed\ + \ is load level and status of one or several\n Network Functions.\n- SERVICE_EXPERIENCE:\ + \ Indicates that the event subscribed is service experience.\n- UE_MOBILITY:\ + \ Indicates that the event subscribed is UE mobility information.\n- UE_COMMUNICATION:\ + \ Indicates that the event subscribed is UE communication information.\n-\ + \ QOS_SUSTAINABILITY: Indicates that the event subscribed is QoS sustainability.\n\ + - ABNORMAL_BEHAVIOUR: Indicates that the event subscribed is abnormal behaviour.\n\ + - USER_DATA_CONGESTION: Indicates that the event subscribed is user data congestion\n\ + \ information.\n- NSI_LOAD_LEVEL: Indicates that the event subscribed is\ + \ load level information of Network\n Slice and the optionally associated\ + \ Network Slice Instance.\n- DN_PERFORMANCE: Indicates that the event subscribed\ + \ is DN performance information.\n- DISPERSION: Indicates that the event subscribed\ + \ is dispersion information.\n- RED_TRANS_EXP: Indicates that the event subscribed\ + \ is redundant transmission experience.\n- WLAN_PERFORMANCE: Indicates that\ + \ the event subscribed is WLAN performance.\n- SM_CONGESTION: Indicates the\ + \ Session Management Congestion Control Experience information\n for specific\ + \ DNN and/or S-NSSAI.\n- PFD_DETERMINATION: Indicates that the event subscribed\ + \ is the PFD Determination nformation\n for known application identifier(s).\n\ + - PDU_SESSION_TRAFFIC: Indicates that the event subscribed is the PDU Session\ + \ traffic\n information.\n- E2E_DATA_VOL_TRANS_TIME: Indicates that the event\ + \ subscribed is of E2E data volume \n transfer time.\n- MOVEMENT_BEHAVIOUR:\ + \ Indicates that the event subscribed is the Movement Behaviour\n information.\n\ + - LOC_ACCURACY: Indicates that the event subscribed is of location accuracy.\n\ + - RELATIVE_PROXIMITY: Indicates that the event subscribed is the Relative\ + \ Proximity\n information.\n" + title: NwdafEvent diff --git a/services/TS29222_CAPIF_Security_API/capif_security/test/__init__.py b/services/TS29222_CAPIF_Security_API/capif_security/test/__init__.py index aa37efef619673b5e4713f602e7b9b157f1d6f76..d3c5dca11850558162e0feafd352cc70eeb0bfd5 100644 --- a/services/TS29222_CAPIF_Security_API/capif_security/test/__init__.py +++ b/services/TS29222_CAPIF_Security_API/capif_security/test/__init__.py @@ -1,9 +1,10 @@ import logging import connexion -from capif_security.encoder import JSONEncoder from flask_testing import TestCase +from capif_security.encoder import JSONEncoder + class BaseTestCase(TestCase): diff --git a/services/TS29222_CAPIF_Security_API/capif_security/test/test_default_controller.py b/services/TS29222_CAPIF_Security_API/capif_security/test/test_default_controller.py index 0fbd10e62626ed8f593c420322c65483c246f5ff..f89c1c511cb12daaf97748359d59639ced890ece 100644 --- a/services/TS29222_CAPIF_Security_API/capif_security/test/test_default_controller.py +++ b/services/TS29222_CAPIF_Security_API/capif_security/test/test_default_controller.py @@ -1,8 +1,15 @@ import unittest -from capif_security.test import BaseTestCase from flask import json +from capif_security.models.access_token_err import AccessTokenErr # noqa: E501 +from capif_security.models.access_token_rsp import AccessTokenRsp # noqa: E501 +from capif_security.models.problem_details import ProblemDetails # noqa: E501 +from capif_security.models.res_owner_id import ResOwnerId # noqa: E501 +from capif_security.models.security_notification import SecurityNotification # noqa: E501 +from capif_security.models.service_security import ServiceSecurity # noqa: E501 +from capif_security.test import BaseTestCase + class TestDefaultController(BaseTestCase): """DefaultController integration test stubs""" @@ -90,7 +97,7 @@ class TestDefaultController(BaseTestCase): """ - service_security = {"notificationDestination":"notificationDestination","supportedFeatures":"supportedFeatures","securityInfo":[{"authenticationInfo":"authenticationInfo","authorizationInfo":"authorizationInfo","interfaceDetails":{"ipv6Addr":"ipv6Addr","securityMethods":["PSK","PSK"],"fqdn":"fqdn","port":5248,"apiPrefix":"apiPrefix","ipv4Addr":"ipv4Addr"},"prefSecurityMethods":[null,null],"aefId":"aefId","grantType":["CLIENT_CREDENTIALS","CLIENT_CREDENTIALS"],"apiId":"apiId"},{"authenticationInfo":"authenticationInfo","authorizationInfo":"authorizationInfo","interfaceDetails":{"ipv6Addr":"ipv6Addr","securityMethods":["PSK","PSK"],"fqdn":"fqdn","port":5248,"apiPrefix":"apiPrefix","ipv4Addr":"ipv4Addr"},"prefSecurityMethods":[null,null],"aefId":"aefId","grantType":["CLIENT_CREDENTIALS","CLIENT_CREDENTIALS"],"apiId":"apiId"}],"websockNotifConfig":{"requestWebsocketUri":True,"websocketUri":"websocketUri"},"requestTestNotification":True} + service_security = {"notificationDestination":"notificationDestination","supportedFeatures":"supportedFeatures","securityInfo":[{"authenticationInfo":"authenticationInfo","authorizationInfo":"authorizationInfo","interfaceDetails":{"ipv6Addr":"ipv6Addr","grantTypes":["CLIENT_CREDENTIALS","CLIENT_CREDENTIALS"],"securityMethods":["PSK","PSK"],"fqdn":"fqdn","port":5248,"apiPrefix":"apiPrefix","ipv4Addr":"ipv4Addr"},"prefSecurityMethods":[null,null],"aefId":"aefId","grantType":[null,null],"apiId":"apiId"},{"authenticationInfo":"authenticationInfo","authorizationInfo":"authorizationInfo","interfaceDetails":{"ipv6Addr":"ipv6Addr","grantTypes":["CLIENT_CREDENTIALS","CLIENT_CREDENTIALS"],"securityMethods":["PSK","PSK"],"fqdn":"fqdn","port":5248,"apiPrefix":"apiPrefix","ipv4Addr":"ipv4Addr"},"prefSecurityMethods":[null,null],"aefId":"aefId","grantType":[null,null],"apiId":"apiId"}],"websockNotifConfig":{"requestWebsocketUri":True,"websocketUri":"websocketUri"},"requestTestNotification":True} headers = { 'Accept': 'application/json', 'Content-Type': 'application/json', @@ -109,7 +116,7 @@ class TestDefaultController(BaseTestCase): """ - service_security = {"notificationDestination":"notificationDestination","supportedFeatures":"supportedFeatures","securityInfo":[{"authenticationInfo":"authenticationInfo","authorizationInfo":"authorizationInfo","interfaceDetails":{"ipv6Addr":"ipv6Addr","securityMethods":["PSK","PSK"],"fqdn":"fqdn","port":5248,"apiPrefix":"apiPrefix","ipv4Addr":"ipv4Addr"},"prefSecurityMethods":[null,null],"aefId":"aefId","grantType":["CLIENT_CREDENTIALS","CLIENT_CREDENTIALS"],"apiId":"apiId"},{"authenticationInfo":"authenticationInfo","authorizationInfo":"authorizationInfo","interfaceDetails":{"ipv6Addr":"ipv6Addr","securityMethods":["PSK","PSK"],"fqdn":"fqdn","port":5248,"apiPrefix":"apiPrefix","ipv4Addr":"ipv4Addr"},"prefSecurityMethods":[null,null],"aefId":"aefId","grantType":["CLIENT_CREDENTIALS","CLIENT_CREDENTIALS"],"apiId":"apiId"}],"websockNotifConfig":{"requestWebsocketUri":True,"websocketUri":"websocketUri"},"requestTestNotification":True} + service_security = {"notificationDestination":"notificationDestination","supportedFeatures":"supportedFeatures","securityInfo":[{"authenticationInfo":"authenticationInfo","authorizationInfo":"authorizationInfo","interfaceDetails":{"ipv6Addr":"ipv6Addr","grantTypes":["CLIENT_CREDENTIALS","CLIENT_CREDENTIALS"],"securityMethods":["PSK","PSK"],"fqdn":"fqdn","port":5248,"apiPrefix":"apiPrefix","ipv4Addr":"ipv4Addr"},"prefSecurityMethods":[null,null],"aefId":"aefId","grantType":[null,null],"apiId":"apiId"},{"authenticationInfo":"authenticationInfo","authorizationInfo":"authorizationInfo","interfaceDetails":{"ipv6Addr":"ipv6Addr","grantTypes":["CLIENT_CREDENTIALS","CLIENT_CREDENTIALS"],"securityMethods":["PSK","PSK"],"fqdn":"fqdn","port":5248,"apiPrefix":"apiPrefix","ipv4Addr":"ipv4Addr"},"prefSecurityMethods":[null,null],"aefId":"aefId","grantType":[null,null],"apiId":"apiId"}],"websockNotifConfig":{"requestWebsocketUri":True,"websocketUri":"websocketUri"},"requestTestNotification":True} headers = { 'Accept': 'application/json', 'Content-Type': 'application/json', diff --git a/services/TS29222_CAPIF_Security_API/capif_security/typing_utils.py b/services/TS29222_CAPIF_Security_API/capif_security/typing_utils.py index d21c4f633653a0eae75d04b2f6eff684ff9d200d..74e3c913a7db6246bc765f147ca872996112c6bb 100644 --- a/services/TS29222_CAPIF_Security_API/capif_security/typing_utils.py +++ b/services/TS29222_CAPIF_Security_API/capif_security/typing_utils.py @@ -1,6 +1,7 @@ import sys if sys.version_info < (3, 7): + import typing def is_generic(klass): """ Determine whether klass is a generic class """ diff --git a/services/TS29222_CAPIF_Security_API/setup.py b/services/TS29222_CAPIF_Security_API/setup.py index fc9b23b7d53422ce54abd698b7c191c2396b4fd2..9653f405eb80c7ce18475c0d604f967eff1c3c57 100644 --- a/services/TS29222_CAPIF_Security_API/setup.py +++ b/services/TS29222_CAPIF_Security_API/setup.py @@ -1,3 +1,4 @@ +import sys from setuptools import setup, find_packages NAME = "capif_security"