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=0f33a3e5de2a1b5a3157d908ae2c06b8285b251a;hpb=faeeb4bfe079a2f20ac1639fc394a363306411c9;p=nonrtric%2Fplt%2Fsme.git diff --git a/capifcore/docs/diagrams/classdiagram.plantuml b/capifcore/docs/diagrams/classdiagram.plantuml index 0f33a3e..f46d920 100644 --- a/capifcore/docs/diagrams/classdiagram.plantuml +++ b/capifcore/docs/diagrams/classdiagram.plantuml @@ -1,107 +1,116 @@ @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 @@ -116,23 +125,145 @@ 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 +' 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