X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=capifcore%2Fdocs%2Fdiagrams%2Fclassdiagram.plantuml;h=5fcd498c86e8c021da7a7ac000b9538f753e06ea;hb=refs%2Fchanges%2F74%2F9974%2F1;hp=f46d9200d01060a404b1f78c1d0048698508c0e9;hpb=86b2798a9b7dd2ac07eed563d1acbb26c0e5c2be;p=nonrtric%2Fplt%2Fsme.git diff --git a/capifcore/docs/diagrams/classdiagram.plantuml b/capifcore/docs/diagrams/classdiagram.plantuml index f46d920..5fcd498 100644 --- a/capifcore/docs/diagrams/classdiagram.plantuml +++ b/capifcore/docs/diagrams/classdiagram.plantuml @@ -1,4 +1,4 @@ -@startuml Information in rApp registration +@startuml Information model for CAPIF ' Provider Service package "Provider Service" #palegreen { struct APIProviderEnrolmentDetails { @@ -6,6 +6,7 @@ package "Provider Service" #palegreen { string apiProvDomInfo []APIProviderFunctionDetails apiProvFuncs string regSec (required) + SupportedFeatures suppFeats } note right of APIProviderEnrolmentDetails::apiProvDomId Id provided by CAPIF Core @@ -28,18 +29,20 @@ package "Provider Service" #palegreen { string apiProvCert string apiProvPubKey (required) } + APIProviderEnrolmentDetails::apiProvFuncs "1" o-- "1..N" APIProviderFunctionDetails + APIProviderFunctionDetails::regInfo "1" o-- "1" RegistrationInformation + APIProviderFunctionDetails::apiProviderFuncRole "1" o-- "1" ApiProviderFuncRole } -APIProviderEnrolmentDetails::apiProvFuncs "1" o-- "1..N" APIProviderFunctionDetails -APIProviderFunctionDetails::regInfo "1" o-- "1" RegistrationInformation -APIProviderFunctionDetails::apiProviderFuncRole "1" o-- "1" ApiProviderFuncRole ' Publish Service -package "Publish Service" as publishservice #lightblue { +package "Publish Service" #lightblue { struct ServiceAPIDescription { string apiId string apiName (required) string description []AefProfile aefProfiles + SupportedFeatures apiSuppFeat + SupportedFeatures supportedFeatures } note left of ServiceAPIDescription::apiId Id provided by CAPIF Core @@ -111,19 +114,19 @@ package "Publish Service" as publishservice #lightblue { REQUEST_RESPONSE SUBSCRIBE_NOTIFY } + 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 } -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 ' Invoker Management package "Invoker Management" #coral { @@ -132,21 +135,27 @@ package "Invoker Management" #coral { string apiInvokerInformation APIList apiList OnboardingInformation onboardingInformation (required) + SupportedFeatures supportedFeatures } + note right of APIInvokerEnrolmentDetails::apiInvokerId + Id provided by + CAPIF Core + end note struct OnboardingInformation { string apiInvokerCertificate string ApiInvokerPublicKey (required) string onboardingSecret } + note right of OnboardingInformation::Secret + Secret provided + by CAPIF Core + end note + APIInvokerEnrolmentDetails::apiList "1" o-- "1..N" ServiceAPIDescription + APIInvokerEnrolmentDetails::onboardingInformation "1" o-- "1" OnboardingInformation } -note right of APIInvokerEnrolmentDetails::apiInvokerId - Id provided by CAPIF Core -end note -note right of OnboardingInformation::onboardingSecret - Secret provided by CAPIF Core -end note -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 +note "APIList containing services\n available for the invoker.\n Provided by capifcore" as invServiceRel +APIInvokerEnrolmentDetails::apiList .. invServiceRel +invServiceRel .. ServiceAPIDescription ' Discover Service package "Discover Service" #Yellow { @@ -173,7 +182,26 @@ package "Security Service" #Pink { DurationSec expires_in (required) string scope } + struct ServiceSecurity { + []SecurityInformation securityInfo (required) + SupportedFeatures supportedFeatures + } + struct SecurityInformation { + string aefId + string apiId + string authenticationInfo + string authorizationInfo + InterfaceDescription interfaceDetails + []SecurityMethod prefSecurityMethods + []SecurityMethod selSecurityMethods + } + ServiceSecurity::securityInfo "1" o-- "1..N" SecurityInformation + SecurityInformation::interfaceDetails "0..1" o-- "0..N" InterfaceDescription + SecurityInformation::prefSecurityMethods "1" o-- "1..N" SecurityMethod + SecurityInformation::selSecurityMethods "0..1" o-- "0..N" SecurityMethod } +SecurityInformation::aefId .. APIProviderFunctionDetails::apiProvFuncId +SecurityInformation::apiId .. ServiceAPIDescription::apiId note "AccessTokenReq::client_id and\n AccessTokenReq::client_secret\n must match registered invoker" as accessInvokerRel AccessTokenReq::client_id .. accessInvokerRel accessInvokerRel .. APIInvokerEnrolmentDetails::apiInvokerId @@ -185,12 +213,13 @@ AccessTokenReq::scope .. accessPublishRel accessPublishRel .. AefProfile::aefId ' Event Service -package "Event Service" as eventservice #Orange { +package "Event Service" #Orange { struct EventSubscription { []CAPIFEvent events (required) Uri notificationDestination (required) ReportingInformation eventReq []CAPIFEventFilter eventFilters + SupportedFeatures supportedFeatures } struct CAPIFEventFilter { []string aefIds @@ -265,5 +294,88 @@ AccessControlPolicyList::apiInvokerPolicies "0..N" o-- "0..N" ApiInvokerPolicy ApiInvokerPolicy::allowedInvocationTimeRangeList "0..N" o-- "0..N" TimeRangeList AccessControlPolicyListExt::accessControlPolicyList "0..N" o-- "0..N" AccessControlPolicyList ApiInvokerPolicy::apiInvokerId .. APIInvokerEnrolmentDetails::apiInvokerId -ApiInvokerPolicy::apiInvokerId .. APIInvokerEnrolmentDetails::apiInvokerId + +' Logging Service +package "Logging Service" #Silver { + struct InvocationLog { + string aefId (required) + string apiInvokerId (required) + []Log logs (required) + SupportedFeatures supportedFeatures + } + struct Log { + string apiId (required) + string apiName (required) + string apiVersion (required) + InterfaceDescription destInterface + string fwdInterface + interface inputParameters + DurationMs invocationLatency + DateTime invocationTime + Operation operation + interface outputParameters + Protocol protocol (required) + string resourceName (required) + string result (required) + InterfaceDescription srcInterface + Uri uri + } +} +InvocationLog::logs "1" o-- "1..N" Log +InvocationLog::aefId .. APIProviderFunctionDetails::apiProvFuncId +InvocationLog::apiInvokerId .. APIInvokerEnrolmentDetails::apiInvokerId +Log::apiId .. ServiceAPIDescription::apiId +Log::destInterface "0..1" o-- "0..N" InterfaceDescription +Log::srcInterface "0..1" o-- "0..N" InterfaceDescription +Log::protocol "0..1" o-- "0..N" Protocol +Log::operation "0..1" o-- "0..N" Operation + +' Auditing Service +package "Auditing Servive" #PaleVioletRed { + struct GetApiInvocationLogsParams { + string aefId + string apiInvokerId + DateTime timeRangeStart + DateTime timeRangeEnd + string apiId + string apiName + string apiVersion + Protocol protocol + Operation operation + string result + string resourceName + InterfaceDescription srcInterface + } +} +GetApiInvocationLogsParams::aefId .. APIProviderFunctionDetails::apiProvFuncId +GetApiInvocationLogsParams::apiInvokerId .. APIInvokerEnrolmentDetails::apiInvokerId +GetApiInvocationLogsParams::apiId .. ServiceAPIDescription::apiId +GetApiInvocationLogsParams::protocol "0..1" o-- "0..1" Protocol +GetApiInvocationLogsParams::operation "0..1" o-- "0..1" Operation +GetApiInvocationLogsParams::srcInterface "0..1" o-- "0..1" InterfaceDescription +note "A call with\n GetApiInvocationLogsParams\n returns an InvocationLog" as auditLogRel +GetApiInvocationLogsParams .. auditLogRel +auditLogRel .. InvocationLog + +' Routing Service +package "Routing Service" { + struct RoutingInfo { + []RoutingRule routingRules (required) + } + struct RoutingRule { + AefProfile aefProfile (required) + []Ipv4AddressRange ipv4AddrRanges + []Ipv6AddressRange ipv6AddrRanges + } + struct GetServiceApisServiceApiIdParams { + string aefId (required) + SupportedFeatures suppFeat + } + RoutingInfo::routingRules "1" o-- "1..N" RoutingRule + RoutingRule::aefProfile "1" o-- "1" AefProfile + GetServiceApisServiceApiIdParams::aefId .. APIProviderFunctionDetails::apiProvFuncId + note "A call with\n GetServiceApisServiceApiIdParams\n returns a RoutingRule" as routingRel + GetServiceApisServiceApiIdParams .. routingRel + routingRel .. RoutingInfo +} @enduml \ No newline at end of file