X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=capifcore%2Fdocs%2Fdiagrams%2Fclassdiagram.plantuml;h=b21ae2f6c61317f0f04b3c8251934b2eb91dd20c;hb=refs%2Fchanges%2F97%2F9897%2F5;hp=8700d972acdd34e7df4dd82b4cd58648442a43ba;hpb=cf1b587eba848c3500c4ffa020d1665f3fc7021f;p=nonrtric%2Fplt%2Fsme.git diff --git a/capifcore/docs/diagrams/classdiagram.plantuml b/capifcore/docs/diagrams/classdiagram.plantuml index 8700d97..b21ae2f 100644 --- a/capifcore/docs/diagrams/classdiagram.plantuml +++ b/capifcore/docs/diagrams/classdiagram.plantuml @@ -1,106 +1,158 @@ @startuml Information in rApp registration -struct APIProviderEnrolmentDetails #palegreen { - string apiProvDomId - string apiProvDomInfo - []APIProviderFunctionDetails apiProvFuncs +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) + } } -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 -note right of APIProviderFunctionDetails::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. -end note -struct RegistrationInformation #palegreen { - string apiProvCert - atring apiProvPubKey (required) -} -APIProviderEnrolmentDetails::apiProvFuncs o-- APIProviderFunctionDetails -APIProviderFunctionDetails::regInfo o-- RegistrationInformation +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 +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 + } } -note bottom 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) -} -note left of AefProfile::dataFormat - - JSON: JavaScript Object Notation -end note -note left of AefProfile::protocol - - HTTP_1_1: HTTP version 1.1 - - HTTP_2: HTTP version 2 -end note -note left of AefProfile::securityMethods - - PSK: Security method 1 (Using TLS-PSK) - - PKI: Security method 2 (Using PKI) - - OAUTH: Security method 3 (TLS with OAuth token) -end note -note "From APIProviderFunctionDetails" as aefIdRel -APIProviderFunctionDetails::apiProvFuncId .. aefIdRel -aefIdRel .. AefProfile::aefId -struct InterfaceDescription #lightblue { - string ipv4Address - string ipv6Address - []Operation operations - []SecurityMethod securityMethods -} -note right of InterfaceDescription - 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 { - string apiVersion - []Resource resources -} -note right of Version::resources - - REQUEST_RESPONSE - - SUBSCRIBE_NOTIFY -end note -ServiceAPIDescription::aefProfiles o-- AefProfile -AefProfile::interfaceDescriptions o-- InterfaceDescription -AefProfile::versions o-- Version +ServiceAPIDescription::aefProfiles "1" o-- "1..N" AefProfile +AefProfile::interfaceDescriptions "1" o-- "1..N" InterfaceDescription +AefProfile::protocol "0..1" o-- "0..1" Protocol +AefProfile::securityMethods "1" o-- "1..N" SecurityMethod +AefProfile::dataFormat "0..1" o-- "0..N" DataFormat +InterfaceDescription::securityMethods "1" o-- "1..N" SecurityMethod +AefProfile::versions "1" o-- "1..N" Version +Version::resources "1..N" o-- "1..N" Resource +Version::custOperations "0..1" o-- "0..N" CustomOperation +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 -} -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 end note -note right of APIInvokerEnrolmentDetails::apiInvokerId +note left of APIInvokerEnrolmentDetails::apiInvokerId Id provided by CAPIF Core end note -APIInvokerEnrolmentDetails::apiList o-- ServiceAPIDescription : APIList -APIInvokerEnrolmentDetails::onboardingInformation o-- OnboardingInformation -@enduml +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 + +@enduml \ No newline at end of file