-@startuml Information in rApp registration
+@startuml Information model for CAPIF
' Provider Service
package "Provider Service" #palegreen {
struct APIProviderEnrolmentDetails {
string apiProvDomInfo
[]APIProviderFunctionDetails apiProvFuncs
string regSec (required)
+ SupportedFeatures suppFeats
}
note right of APIProviderEnrolmentDetails::apiProvDomId
Id provided by CAPIF Core
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
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 {
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 {
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
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
DurationSec repPeriod
SamplingRation sampRatio
}
+ struct EventNotification {
+ CAPIFEventDetail eventDetail
+ CAPIFEvent events (required)
+ string subscriptionId (required)
+ }
struct CAPIFEventDetail {
AccessControlPolicyListExt accCtrlPolList
[]string apiIds
AccessControlPolicyList accessControlPolicyList
string apiId
}
+ note right of EventNotification::subscriptionId
+ subscriptionId generated
+ by CAPIF Core when
+ subscription was created
+ end note
}
EventSubscription::eventFilters "0..N" o-- "0..N" CAPIFEventFilter
EventSubscription::events "1" o-- "1..N" CAPIFEvent
CAPIFEventFilter::aefIds .. APIProviderFunctionDetails::apiProvFuncId
CAPIFEventFilter::apiIds .. ServiceAPIDescription::apiId
CAPIFEventFilter::apiInvokerIds .. APIInvokerEnrolmentDetails::apiInvokerId
+EventNotification::eventDetail "0..1" o-- "0..N" CAPIFEventDetail
+EventNotification::events "1" o-- "1" CAPIFEvent
CAPIFEventDetail::apiIds .. ServiceAPIDescription::apiId
CAPIFEventDetail::apiInvokerIds .. APIInvokerEnrolmentDetails::apiInvokerId
CAPIFEventDetail::accCtrlPolList "0..N" o-- "0..N" AccessControlPolicyListExt
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 RoutingInfo" as routingRel
+ GetServiceApisServiceApiIdParams .. routingRel
+ routingRel .. RoutingInfo
+}
@enduml
\ No newline at end of file