1 @startuml Information in rApp registration
3 package "Provider Service" #palegreen {
4 struct APIProviderEnrolmentDetails {
7 []APIProviderFunctionDetails apiProvFuncs
8 string regSec (required)
10 note right of APIProviderEnrolmentDetails::apiProvDomId
11 Id provided by CAPIF Core
13 struct APIProviderFunctionDetails {
15 string apiProvFuncInfo
16 ApiProviderFuncRole apiProviderFuncRole (required)
17 RegistrationInformation regInfo (required)
19 note right of APIProviderFunctionDetails::apiProvFuncId
20 Id provided by CAPIF Core
22 enum ApiProviderFuncRole {
23 AEF: API provider function is API Exposing Function.
24 APF: API provider function is API Publishing Function.
25 AMF: API Provider function is API Management Function.
27 struct RegistrationInformation {
29 string apiProvPubKey (required)
32 APIProviderEnrolmentDetails::apiProvFuncs "1" o-- "1..N" APIProviderFunctionDetails
33 APIProviderFunctionDetails::regInfo "1" o-- "1" RegistrationInformation
34 APIProviderFunctionDetails::apiProviderFuncRole "1" o-- "1" ApiProviderFuncRole
37 package "Publish Service" as publishservice #lightblue {
38 struct ServiceAPIDescription {
40 string apiName (required)
42 []AefProfile aefProfiles
44 note left of ServiceAPIDescription::apiId
45 Id provided by CAPIF Core
47 note "apfId matching\n APIProviderFunctionDetails::apiProvFuncId\n must be provided when publishing" as publishProviderRel
48 ServiceAPIDescription .. publishProviderRel
49 publishProviderRel .. APIProviderFunctionDetails::apiProvFuncId
51 string aefId (required)
54 []InterfaceDescription interfaceDescriptions
56 []SecurityMethod securityMethods
57 []Version versions (required)
66 note "AefProfile::aefId should match\n APIProviderFunctionDetails::apiProvFuncId" as aefIdRel
67 APIProviderFunctionDetails::apiProvFuncId .. aefIdRel
68 aefIdRel .. AefProfile::aefId
69 struct InterfaceDescription {
73 []SecurityMethod securityMethods
75 note left of InterfaceDescription::securityMethods
76 Security methods supported by the interface,
77 it take precedence over the security methods
78 provided in AefProfile, for this specific interface.
81 []CustomOperation custOperations
84 string apiVersion (required)
86 struct CustomOperation {
87 CommunicationType commType (required)
88 string custOpName (required)
90 []Operation operations
105 string resourceName (required)
106 string uri (required)
107 CommunicationType commType (required)
110 enum CommunicationType {
115 ServiceAPIDescription::aefProfiles "1" o-- "1..N" AefProfile
116 AefProfile::interfaceDescriptions "1" o-- "1..N" InterfaceDescription
117 AefProfile::protocol "0..1" o-- "0..1" Protocol
118 AefProfile::securityMethods "1" o-- "1..N" SecurityMethod
119 AefProfile::dataFormat "0..1" o-- "0..N" DataFormat
120 InterfaceDescription::securityMethods "1" o-- "1..N" SecurityMethod
121 AefProfile::versions "1" o-- "1..N" Version
122 Version::resources "1..N" o-- "1..N" Resource
123 Version::custOperations "0..1" o-- "0..N" CustomOperation
124 CustomOperation::CommunicationType "1" o-- "1" CommunicationType
125 CustomOperation::operations "0..N" o-- "0..N" Operation
126 Resource::commType "1" o-- "1" CommunicationType
129 package "Invoker Management" #coral {
130 struct APIInvokerEnrolmentDetails {
132 string apiInvokerInformation
134 OnboardingInformation onboardingInformation (required)
136 struct OnboardingInformation {
137 string apiInvokerCertificate
138 string ApiInvokerPublicKey (required)
139 string onboardingSecret
142 note right of APIInvokerEnrolmentDetails::apiInvokerId
143 Id provided by CAPIF Core
145 note right of OnboardingInformation::onboardingSecret
146 Secret provided by CAPIF Core
148 APIInvokerEnrolmentDetails::apiList "1" o-- "1..N" ServiceAPIDescription : APIList containing services\n available for the invoker.\n Provided by capifcore
149 APIInvokerEnrolmentDetails::onboardingInformation "1" o-- "1" OnboardingInformation
152 package "Discover Service" #Yellow {
153 struct DiscoveredAPIs {
154 []ServiceAPIDescription serviceAPIDescriptions
157 DiscoveredAPIs::serviceAPIDescriptions "0..N" o-- "0..N" ServiceAPIDescription
158 note "Services can only be discovered\n for an onboarded invoker through\n APIInvokerEnrolmentDetails::apiInvokerId" as invokerDiscoverRel
159 DiscoveredAPIs .. invokerDiscoverRel
160 invokerDiscoverRel .. APIInvokerEnrolmentDetails::apiInvokerId
163 package "Security Service" #Pink {
164 struct AccessTokenReq {
165 string grant_type (required)
166 string client_id (required)
170 struct AccessTokenRsp {
171 string access_token (required)
172 string token_type (required)
173 DurationSec expires_in (required)
177 note "AccessTokenReq::client_id and\n AccessTokenReq::client_secret\n must match registered invoker" as accessInvokerRel
178 AccessTokenReq::client_id .. accessInvokerRel
179 accessInvokerRel .. APIInvokerEnrolmentDetails::apiInvokerId
180 note "Function provided in\n AccessTokenReq:scope\n must be registered for a provider" as accessProviderRel
181 AccessTokenReq::scope .. accessProviderRel
182 accessProviderRel .. APIProviderFunctionDetails::apiProvFuncId
183 note "API provided in\n AccessTokenReq:scope\n must be published" as accessPublishRel
184 AccessTokenReq::scope .. accessPublishRel
185 accessPublishRel .. AefProfile::aefId
188 package "Event Service" as eventservice #Orange {
189 struct EventSubscription {
190 []CAPIFEvent events (required)
191 Uri notificationDestination (required)
192 ReportingInformation eventReq
193 []CAPIFEventFilter eventFilters
195 struct CAPIFEventFilter {
198 []string apiInvokerIds
201 SERVICE_API_AVAILABLE
202 SERVICE_API_UNAVAILABLE
204 API_INVOKER_ONBOARDED
205 API_INVOKER_OFFBOARDED
206 SERVICE_API_INVOCATION_SUCCESS
207 SERVICE_API_INVOCATION_FAILURE
208 ACCESS_CONTROL_POLICY_UPDATE
209 ACCESS_CONTROL_POLICY_UNAVAILABLE
210 API_INVOKER_AUTHORIZATION_REVOKED
212 API_TOPOLOGY_HIDING_CREATED
213 API_TOPOLOGY_HIDING_REVOKED
215 struct ReportingInformation {
216 DurationSec grpRepTime
218 Uinteger maxReportNbr
219 NotificationFlag notifFlag
220 NotificationMethod notifMethod
221 PartitioningCriteria partitionCriteria
222 DurationSec repPeriod
223 SamplingRation sampRatio
225 struct CAPIFEventDetail {
226 AccessControlPolicyListExt accCtrlPolList
228 []string apiInvokerIds
229 []ServiceAPIDescription serviceAPIDescriptions
231 struct AccessControlPolicyListExt {
232 AccessControlPolicyList accessControlPolicyList
236 EventSubscription::eventFilters "0..N" o-- "0..N" CAPIFEventFilter
237 EventSubscription::events "1" o-- "1..N" CAPIFEvent
238 EventSubscription::eventReq "0..N" o-- "0..N" ReportingInformation
239 CAPIFEventDetail::serviceAPIDescriptions "0..N" o-- "0..N" ServiceAPIDescription
240 CAPIFEventFilter::aefIds .. APIProviderFunctionDetails::apiProvFuncId
241 CAPIFEventFilter::apiIds .. ServiceAPIDescription::apiId
242 CAPIFEventFilter::apiInvokerIds .. APIInvokerEnrolmentDetails::apiInvokerId
243 CAPIFEventDetail::apiIds .. ServiceAPIDescription::apiId
244 CAPIFEventDetail::apiInvokerIds .. APIInvokerEnrolmentDetails::apiInvokerId
245 CAPIFEventDetail::accCtrlPolList "0..N" o-- "0..N" AccessControlPolicyListExt
246 AccessControlPolicyListExt::apiId .. ServiceAPIDescription::apiId
248 ' Access Control Policy
249 package "Access Control Policy" #LightCyan {
250 struct AccessControlPolicyList {
251 []ApiInvokerPolicy apiInvokerPolicies
253 struct ApiInvokerPolicy {
254 []TimeRangeList allowedInvocationTimeRangeList
255 int allowedInvocationsPerSecond
256 int allowedTotalInvocations
257 string apiInvokerId (required)
259 struct TimeRangeList {
264 AccessControlPolicyList::apiInvokerPolicies "0..N" o-- "0..N" ApiInvokerPolicy
265 ApiInvokerPolicy::allowedInvocationTimeRangeList "0..N" o-- "0..N" TimeRangeList
266 AccessControlPolicyListExt::accessControlPolicyList "0..N" o-- "0..N" AccessControlPolicyList
267 ApiInvokerPolicy::apiInvokerId .. APIInvokerEnrolmentDetails::apiInvokerId
268 ApiInvokerPolicy::apiInvokerId .. APIInvokerEnrolmentDetails::apiInvokerId