@startuml Information in rApp registration
-struct APIProviderEnrolmentDetails #palegreen {
- string apiProvDomId
- string apiProvDomInfo
- []APIProviderFunctionDetails apiProvFuncs
- string regSec (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
-enum ApiProviderFuncRole #palegreen {
- 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 #palegreen {
- string apiProvCert
- string apiProvPubKey (required)
+' Provider Service
+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)
+ }
}
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
-}
-note right 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)
-}
-enum DataFormat #lightblue {
- JSON
-}
-enum Protocol #lightblue {
- HTTP_1_1
- HTTP_2
-}
-note "AefProfile::aefId should match\n APIProviderFunctionDetails::apiProvFuncId" as aefIdRel
-APIProviderFunctionDetails::apiProvFuncId .. aefIdRel
-aefIdRel .. AefProfile::aefId
-struct InterfaceDescription #lightblue {
- 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 #lightblue {
- []CustomOperation custOperations
- DateTime expiry
- []Resource resources
- string apiVersion (required)
-}
-struct CustomOperation #lightblue {
- CommunicationType commType (required)
- string custOpName (required)
- string description
- []Operation operations
-}
-enum Operation #lightblue {
- GET
- POST
- PUT
- PATCH
- DELETE
-}
-enum SecurityMethod #lightblue {
- PSK
- PKI
- OAUTH
-}
-struct Resource #lightblue {
- string resourceName (required)
- string uri (required)
- CommunicationType commType (required)
- string description
-}
-enum CommunicationType #lightblue {
- REQUEST_RESPONSE
- SUBSCRIBE_NOTIFY
+' Publish Service
+package "Publish Service" as publishservice #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
+ }
}
ServiceAPIDescription::aefProfiles "1" o-- "1..N" AefProfile
AefProfile::interfaceDescriptions "1" o-- "1..N" InterfaceDescription
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 (required)
-}
-struct OnboardingInformation #coral {
- string apiInvokerCertificate
- string ApiInvokerPublicKey (required)
- string onboardingSecret
+' Invoker Management
+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 APIInvokerEnrolmentDetails::apiInvokerId
+ Id provided by CAPIF Core
+end note
note right of OnboardingInformation::onboardingSecret
Secret provided by CAPIF Core
end note
-note left of APIInvokerEnrolmentDetails::apiInvokerId
- Id provided by CAPIF Core
-end note
-APIInvokerEnrolmentDetails::apiList "1" o-- "1..N" ServiceAPIDescription : APIList
+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
+
+' Discover Service
+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::apiInvokerId" as invokerDiscoverRel
+DiscoveredAPIs .. invokerDiscoverRel
+invokerDiscoverRel .. APIInvokerEnrolmentDetails::apiInvokerId
+
+' Security Service
+package "Security Service" #Pink {
+ struct AccessTokenReq {
+ string grant_type (required)
+ string client_id (required)
+ string client_secret
+ string scope
+ }
+ struct AccessTokenRsp {
+ string access_token (required)
+ string token_type (required)
+ DurationSec expires_in (required)
+ string scope
+ }
+}
+note "AccessTokenReq::client_id and\n AccessTokenReq::client_secret\n must match registered invoker" as accessInvokerRel
+AccessTokenReq::client_id .. accessInvokerRel
+accessInvokerRel .. APIInvokerEnrolmentDetails::apiInvokerId
+note "Function provided in\n AccessTokenReq:scope\n must be registered for a provider" as accessProviderRel
+AccessTokenReq::scope .. accessProviderRel
+accessProviderRel .. APIProviderFunctionDetails::apiProvFuncId
+note "API provided in\n AccessTokenReq:scope\n must be published" as accessPublishRel
+AccessTokenReq::scope .. accessPublishRel
+accessPublishRel .. AefProfile::aefId
+
+' Event Service
+package "Event Service" as eventservice #Orange {
+ struct EventSubscription {
+ []CAPIFEvent events (required)
+ Uri notificationDestination (required)
+ ReportingInformation eventReq
+ []CAPIFEventFilter eventFilters
+ }
+ struct CAPIFEventFilter {
+ []string aefIds
+ []string apiIds
+ []string apiInvokerIds
+ }
+ enum CAPIFEvent {
+ SERVICE_API_AVAILABLE
+ SERVICE_API_UNAVAILABLE
+ SERVICE_API_UPDATE
+ API_INVOKER_ONBOARDED
+ API_INVOKER_OFFBOARDED
+ SERVICE_API_INVOCATION_SUCCESS
+ SERVICE_API_INVOCATION_FAILURE
+ ACCESS_CONTROL_POLICY_UPDATE
+ ACCESS_CONTROL_POLICY_UNAVAILABLE
+ API_INVOKER_AUTHORIZATION_REVOKED
+ API_INVOKER_UPDATED
+ API_TOPOLOGY_HIDING_CREATED
+ API_TOPOLOGY_HIDING_REVOKED
+ }
+ struct ReportingInformation {
+ DurationSec grpRepTime
+ bool immRep
+ Uinteger maxReportNbr
+ NotificationFlag notifFlag
+ NotificationMethod notifMethod
+ PartitioningCriteria partitionCriteria
+ DurationSec repPeriod
+ SamplingRation sampRatio
+ }
+ struct CAPIFEventDetail {
+ AccessControlPolicyListExt accCtrlPolList
+ []string apiIds
+ []string apiInvokerIds
+ []ServiceAPIDescription serviceAPIDescriptions
+ }
+ struct AccessControlPolicyListExt {
+ AccessControlPolicyList accessControlPolicyList
+ string apiId
+ }
+}
+EventSubscription::eventFilters "0..N" o-- "0..N" CAPIFEventFilter
+EventSubscription::events "1" o-- "1..N" CAPIFEvent
+EventSubscription::eventReq "0..N" o-- "0..N" ReportingInformation
+CAPIFEventDetail::serviceAPIDescriptions "0..N" o-- "0..N" ServiceAPIDescription
+CAPIFEventFilter::aefIds .. APIProviderFunctionDetails::apiProvFuncId
+CAPIFEventFilter::apiIds .. ServiceAPIDescription::apiId
+CAPIFEventFilter::apiInvokerIds .. APIInvokerEnrolmentDetails::apiInvokerId
+CAPIFEventDetail::apiIds .. ServiceAPIDescription::apiId
+CAPIFEventDetail::apiInvokerIds .. APIInvokerEnrolmentDetails::apiInvokerId
+CAPIFEventDetail::accCtrlPolList "0..N" o-- "0..N" AccessControlPolicyListExt
+AccessControlPolicyListExt::apiId .. ServiceAPIDescription::apiId
+
+' Access Control Policy
+package "Access Control Policy" #LightCyan {
+ struct AccessControlPolicyList {
+ []ApiInvokerPolicy apiInvokerPolicies
+ }
+ struct ApiInvokerPolicy {
+ []TimeRangeList allowedInvocationTimeRangeList
+ int allowedInvocationsPerSecond
+ int allowedTotalInvocations
+ string apiInvokerId (required)
+ }
+ struct TimeRangeList {
+ DateTime startTime
+ DateTime stopTime
+ }
+}
+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
@enduml
\ No newline at end of file