Add the rest of the apis to the diagrams
[nonrtric/plt/sme.git] / capifcore / docs / diagrams / classdiagram.plantuml
index f46d920..5fcd498 100644 (file)
@@ -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