--- /dev/null
+@startuml Information in rApp registration
+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
+
+package "Publish Service" #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
+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
+
+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 OnboardingInformation::onboardingSecret
+ Secret provided by CAPIF Core
+ end note
+ note right of APIInvokerEnrolmentDetails::apiInvokerId
+ Id 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
+
+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::apiId" as invokerDiscoverRel
+DiscoveredAPIs .. invokerDiscoverRel
+invokerDiscoverRel .. APIInvokerEnrolmentDetails::apiInvokerId
+
+@enduml
\ No newline at end of file