@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) } 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 } 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 struct APIInvokerEnrolmentDetails #coral { string apiInvokerId string apiInvokerInformation APIList apiList OnboardingInformation onboardingInformation (required) } struct OnboardingInformation #coral { string apiInvokerCertificate string ApiInvokerPublicKey (required) string onboardingSecret } 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::onboardingInformation "1" o-- "1" OnboardingInformation @enduml