X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=capifcore%2Fdocs%2Fdiagrams%2Fclassdiagram.plantuml;h=f46d9200d01060a404b1f78c1d0048698508c0e9;hb=refs%2Fchanges%2F54%2F9954%2F2;hp=8700d972acdd34e7df4dd82b4cd58648442a43ba;hpb=cf1b587eba848c3500c4ffa020d1665f3fc7021f;p=nonrtric%2Fplt%2Fsme.git diff --git a/capifcore/docs/diagrams/classdiagram.plantuml b/capifcore/docs/diagrams/classdiagram.plantuml index 8700d97..f46d920 100644 --- a/capifcore/docs/diagrams/classdiagram.plantuml +++ b/capifcore/docs/diagrams/classdiagram.plantuml @@ -1,106 +1,269 @@ @startuml Information in rApp registration -struct APIProviderEnrolmentDetails #palegreen { - string apiProvDomId - string apiProvDomInfo - []APIProviderFunctionDetails apiProvFuncs +' 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) + } } -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 -note right of APIProviderFunctionDetails::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. -end note -struct RegistrationInformation #palegreen { - string apiProvCert - atring apiProvPubKey (required) +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 { + 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 + } } -APIProviderEnrolmentDetails::apiProvFuncs o-- APIProviderFunctionDetails -APIProviderFunctionDetails::regInfo o-- RegistrationInformation +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 ServiceAPIDescription #lightblue { - string apiId - string apiName (required) - string description - []AefProfile aefProfiles +' 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 bottom of ServiceAPIDescription +note right of APIInvokerEnrolmentDetails::apiInvokerId 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) -} -note left of AefProfile::dataFormat - - JSON: JavaScript Object Notation -end note -note left of AefProfile::protocol - - HTTP_1_1: HTTP version 1.1 - - HTTP_2: HTTP version 2 -end note -note left of AefProfile::securityMethods - - PSK: Security method 1 (Using TLS-PSK) - - PKI: Security method 2 (Using PKI) - - OAUTH: Security method 3 (TLS with OAuth token) +note right of OnboardingInformation::onboardingSecret + Secret provided by CAPIF Core end note -note "From APIProviderFunctionDetails" as aefIdRel -APIProviderFunctionDetails::apiProvFuncId .. aefIdRel -aefIdRel .. AefProfile::aefId -struct InterfaceDescription #lightblue { - string ipv4Address - string ipv6Address - []Operation operations - []SecurityMethod securityMethods +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 + } } -note right of InterfaceDescription - 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 { - string apiVersion - []Resource resources +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 right of Version::resources - - REQUEST_RESPONSE - - SUBSCRIBE_NOTIFY -end note -ServiceAPIDescription::aefProfiles o-- AefProfile -AefProfile::interfaceDescriptions o-- InterfaceDescription -AefProfile::versions o-- Version +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 -struct APIInvokerEnrolmentDetails #coral { - string apiInvokerId - string apiInvokerInformation - APIList apiList - OnboardingInformation onboardingInformation +' 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 + } } -struct OnboardingInformation #coral { - string apiInvokerCertificate - string ApiInvokerPublicKey (required) - string onboardingSecret +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 + } } -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 o-- ServiceAPIDescription : APIList -APIInvokerEnrolmentDetails::onboardingInformation o-- OnboardingInformation -@enduml +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