X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=capifcore%2Fdocs%2Fdiagrams%2Fclassdiagram.plantuml;h=54965b97ca24226dd18df449525d97fdfea4a851;hb=54040b6e750abc6353805d8b427c027c23d5adf7;hp=0f33a3e5de2a1b5a3157d908ae2c06b8285b251a;hpb=faeeb4bfe079a2f20ac1639fc394a363306411c9;p=nonrtric%2Fplt%2Fsme.git diff --git a/capifcore/docs/diagrams/classdiagram.plantuml b/capifcore/docs/diagrams/classdiagram.plantuml index 0f33a3e..54965b9 100644 --- a/capifcore/docs/diagrams/classdiagram.plantuml +++ b/capifcore/docs/diagrams/classdiagram.plantuml @@ -1,107 +1,114 @@ @startuml Information in rApp registration -struct APIProviderEnrolmentDetails #palegreen { - string apiProvDomId - string apiProvDomInfo - []APIProviderFunctionDetails apiProvFuncs - string regSec (required) -} -note right of APIProviderEnrolmentDetails::apiProvDomId - Id provided by CAPIF Core -end note -struct APIProviderFunctionDetails #palegreen { - string apiProvFuncId - string apiProvFuncInfo - ApiProviderFuncRole apiProviderFuncRole (required) - RegistrationInformation regInfo (required) -} -note right of APIProviderFunctionDetails::apiProvFuncId - Id provided by CAPIF Core -end note -enum ApiProviderFuncRole #palegreen { - AEF: API provider function is API Exposing Function. - APF: API provider function is API Publishing Function. - AMF: API Provider function is API Management Function. -} -struct RegistrationInformation #palegreen { - string apiProvCert - string apiProvPubKey (required) +package "Provider Service" #palegreen { + struct APIProviderEnrolmentDetails { + string apiProvDomId + string apiProvDomInfo + []APIProviderFunctionDetails apiProvFuncs + string regSec (required) + } + note right of APIProviderEnrolmentDetails::apiProvDomId + Id provided by CAPIF Core + end note + struct APIProviderFunctionDetails { + string apiProvFuncId + string apiProvFuncInfo + ApiProviderFuncRole apiProviderFuncRole (required) + RegistrationInformation regInfo (required) + } + note right of APIProviderFunctionDetails::apiProvFuncId + Id provided by CAPIF Core + end note + enum ApiProviderFuncRole { + AEF: API provider function is API Exposing Function. + APF: API provider function is API Publishing Function. + AMF: API Provider function is API Management Function. + } + struct RegistrationInformation { + string apiProvCert + string apiProvPubKey (required) + } } APIProviderEnrolmentDetails::apiProvFuncs "1" o-- "1..N" APIProviderFunctionDetails APIProviderFunctionDetails::regInfo "1" o-- "1" RegistrationInformation APIProviderFunctionDetails::apiProviderFuncRole "1" o-- "1" ApiProviderFuncRole -struct ServiceAPIDescription #lightblue { - string apiId - string apiName (required) - string description - []AefProfile aefProfiles -} -note right of ServiceAPIDescription - Id provided by CAPIF Core -end note -struct AefProfile #lightblue { - string aefId (required) - DataFormat dataFormat - string domainName - []InterfaceDescription interfaceDescriptions - Protocol protocol - []SecurityMethod securityMethods - []Version versions (required) -} -enum DataFormat #lightblue { - JSON -} -enum Protocol #lightblue { - HTTP_1_1 - HTTP_2 -} -note "AefProfile::aefId should match\n APIProviderFunctionDetails::apiProvFuncId" as aefIdRel -APIProviderFunctionDetails::apiProvFuncId .. aefIdRel -aefIdRel .. AefProfile::aefId -struct InterfaceDescription #lightblue { - string ipv4Address - string ipv6Address - int port - []SecurityMethod securityMethods -} -note left of InterfaceDescription::securityMethods - Security methods supported by the interface, - it take precedence over the security methods - provided in AefProfile, for this specific interface. -end note -struct Version #lightblue { - []CustomOperation custOperations - DateTime expiry - []Resource resources - string apiVersion (required) -} -struct CustomOperation #lightblue { - CommunicationType commType (required) - string custOpName (required) - string description - []Operation operations -} -enum Operation #lightblue { - GET - POST - PUT - PATCH - DELETE -} -enum SecurityMethod #lightblue { - PSK - PKI - OAUTH -} -struct Resource #lightblue { - string resourceName (required) - string uri (required) - CommunicationType commType (required) - string description -} -enum CommunicationType #lightblue { - REQUEST_RESPONSE - SUBSCRIBE_NOTIFY +package "Publish Service" #lightblue { + struct ServiceAPIDescription { + string apiId + string apiName (required) + string description + []AefProfile aefProfiles + } + note left of ServiceAPIDescription::apiId + Id provided by CAPIF Core + end note + note "apfId matching\n APIProviderFunctionDetails::apiProvFuncId\n must be provided when publishing" as publishProviderRel + ServiceAPIDescription .. publishProviderRel + publishProviderRel .. APIProviderFunctionDetails::apiProvFuncId + struct AefProfile { + string aefId (required) + DataFormat dataFormat + string domainName + []InterfaceDescription interfaceDescriptions + Protocol protocol + []SecurityMethod securityMethods + []Version versions (required) + } + enum DataFormat { + JSON + } + enum Protocol { + HTTP_1_1 + HTTP_2 + } + note "AefProfile::aefId should match\n APIProviderFunctionDetails::apiProvFuncId" as aefIdRel + APIProviderFunctionDetails::apiProvFuncId .. aefIdRel + aefIdRel .. AefProfile::aefId + struct InterfaceDescription { + string ipv4Address + string ipv6Address + int port + []SecurityMethod securityMethods + } + note left of InterfaceDescription::securityMethods + Security methods supported by the interface, + it take precedence over the security methods + provided in AefProfile, for this specific interface. + end note + struct Version { + []CustomOperation custOperations + DateTime expiry + []Resource resources + string apiVersion (required) + } + struct CustomOperation { + CommunicationType commType (required) + string custOpName (required) + string description + []Operation operations + } + enum Operation { + GET + POST + PUT + PATCH + DELETE + } + enum SecurityMethod { + PSK + PKI + OAUTH + } + struct Resource { + string resourceName (required) + string uri (required) + CommunicationType commType (required) + string description + } + enum CommunicationType { + REQUEST_RESPONSE + SUBSCRIBE_NOTIFY + } } ServiceAPIDescription::aefProfiles "1" o-- "1..N" AefProfile AefProfile::interfaceDescriptions "1" o-- "1..N" InterfaceDescription @@ -116,16 +123,18 @@ CustomOperation::CommunicationType "1" o-- "1" CommunicationType CustomOperation::operations "0..N" o-- "0..N" Operation Resource::commType "1" o-- "1" CommunicationType -struct APIInvokerEnrolmentDetails #coral { - string apiInvokerId - string apiInvokerInformation - APIList apiList - OnboardingInformation onboardingInformation (required) -} -struct OnboardingInformation #coral { - string apiInvokerCertificate - string ApiInvokerPublicKey (required) - string onboardingSecret +package "Invoker Management" #coral { + struct APIInvokerEnrolmentDetails { + string apiInvokerId + string apiInvokerInformation + APIList apiList + OnboardingInformation onboardingInformation (required) + } + struct OnboardingInformation { + string apiInvokerCertificate + string ApiInvokerPublicKey (required) + string onboardingSecret + } } note right of OnboardingInformation::onboardingSecret Secret provided by CAPIF Core @@ -133,6 +142,40 @@ end note note left of APIInvokerEnrolmentDetails::apiInvokerId Id provided by CAPIF Core end note -APIInvokerEnrolmentDetails::apiList "1" o-- "1..N" ServiceAPIDescription : APIList +APIInvokerEnrolmentDetails::apiList "1" o-- "1..N" ServiceAPIDescription : APIList containing services\n available for the invoker.\n Provided by capifcore APIInvokerEnrolmentDetails::onboardingInformation "1" o-- "1" OnboardingInformation + +package "Discover Service" #Yellow { + struct DiscoveredAPIs { + []ServiceAPIDescription serviceAPIDescriptions + } +} +DiscoveredAPIs::serviceAPIDescriptions "0..N" o-- "0..N" ServiceAPIDescription +note "Services can only be discovered\n for an onboarded invoker through\n APIInvokerEnrolmentDetails::apiId" as invokerDiscoverRel +DiscoveredAPIs .. invokerDiscoverRel +invokerDiscoverRel .. APIInvokerEnrolmentDetails::apiInvokerId + +package "Security Service" #Pink { + struct AccessTokenReq { + string grant_type (required) + string client_id (required) + string client_secret + string scope + } + struct AccessTokenRsp { + string access_token (required) + string token_type (required) + DurationSec expires_in (required) + string scope + } +} +note "AccessTokenReq::client_id and\n AccessTokenReq::client_secret\n must match registered invoker" as accessInvokerRel +AccessTokenReq::client_id .. accessInvokerRel +accessInvokerRel .. APIInvokerEnrolmentDetails::apiInvokerId +note "Function provided in\n AccessTokenReq:scope\n must be registered for a provider" as accessProviderRel +AccessTokenReq::scope .. accessProviderRel +accessProviderRel .. APIProviderFunctionDetails::apiProvFuncId +note "API provided in\n AccessTokenReq:scope\n must be published" as accessPublishRel +AccessTokenReq::scope .. accessPublishRel +accessPublishRel .. AefProfile::aefId @enduml \ No newline at end of file