Add Security Service to diagrams
[nonrtric/plt/sme.git] / capifcore / docs / diagrams / classdiagram.plantuml
index 0f33a3e..54965b9 100644 (file)
 @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)
+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
+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
@@ -116,16 +123,18 @@ 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
+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
@@ -133,6 +142,40 @@ 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
+
+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
+
+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
 @enduml
\ No newline at end of file