Add the rest of the apis to the diagrams
[nonrtric/plt/sme.git] / capifcore / docs / diagrams / classdiagramregistration.plantuml
1 @startuml Information in rApp registration
2 package "Provider Service" #palegreen {
3     struct APIProviderEnrolmentDetails {
4         string apiProvDomId
5         string apiProvDomInfo
6         []APIProviderFunctionDetails apiProvFuncs
7         string regSec (required)
8     }
9     note right of APIProviderEnrolmentDetails::apiProvDomId
10         Id provided by CAPIF Core
11     end note
12     struct APIProviderFunctionDetails {
13         string apiProvFuncId
14         string apiProvFuncInfo
15         ApiProviderFuncRole apiProviderFuncRole (required)
16         RegistrationInformation regInfo (required)
17     }
18     note right of APIProviderFunctionDetails::apiProvFuncId
19         Id provided by CAPIF Core
20     end note
21     enum ApiProviderFuncRole {
22         AEF: API provider function is API Exposing Function.
23         APF: API provider function is API Publishing Function.
24         AMF: API Provider function is API Management Function.
25     }
26     struct RegistrationInformation {
27         string apiProvCert
28         string apiProvPubKey (required)
29     }
30 }
31 APIProviderEnrolmentDetails::apiProvFuncs "1" o-- "1..N" APIProviderFunctionDetails
32 APIProviderFunctionDetails::regInfo "1" o-- "1" RegistrationInformation
33 APIProviderFunctionDetails::apiProviderFuncRole "1" o-- "1" ApiProviderFuncRole
34
35 package "Publish Service" #lightblue {
36     struct ServiceAPIDescription {
37         string apiId
38         string apiName (required)
39         string description
40         []AefProfile aefProfiles
41     }
42     note left of ServiceAPIDescription::apiId
43         Id provided by CAPIF Core
44     end note
45     note "apfId matching\n APIProviderFunctionDetails::apiProvFuncId\n must be provided when publishing" as publishProviderRel
46     ServiceAPIDescription .. publishProviderRel
47     publishProviderRel .. APIProviderFunctionDetails::apiProvFuncId
48     struct AefProfile {
49         string aefId (required)
50         DataFormat dataFormat
51         string domainName
52         []InterfaceDescription interfaceDescriptions
53         Protocol protocol
54         []SecurityMethod securityMethods
55         []Version versions (required)
56     }
57     enum DataFormat {
58         JSON
59     }
60     enum Protocol {
61         HTTP_1_1
62         HTTP_2
63     }
64     note "AefProfile::aefId should match\n APIProviderFunctionDetails::apiProvFuncId" as aefIdRel
65     APIProviderFunctionDetails::apiProvFuncId .. aefIdRel
66     aefIdRel .. AefProfile::aefId
67     struct InterfaceDescription {
68         string ipv4Address
69         string ipv6Address
70         int port
71         []SecurityMethod securityMethods
72     }
73     note left of InterfaceDescription::securityMethods
74         Security methods supported by the interface,
75         it take precedence over the security methods
76         provided in AefProfile, for this specific interface.
77     end note
78     struct Version {
79         []CustomOperation custOperations
80         DateTime expiry
81         []Resource resources
82         string apiVersion (required)
83     }
84     struct CustomOperation {
85         CommunicationType commType (required)
86         string custOpName (required)
87         string description
88         []Operation operations
89     }
90     enum Operation {
91         GET
92         POST
93         PUT
94         PATCH
95         DELETE
96     }
97     enum SecurityMethod {
98         PSK
99         PKI
100         OAUTH
101     }
102     struct Resource {
103         string resourceName (required)
104         string uri (required)
105         CommunicationType commType (required)
106         string description
107     }
108     enum CommunicationType {
109         REQUEST_RESPONSE
110         SUBSCRIBE_NOTIFY
111     }
112 }
113 ServiceAPIDescription::aefProfiles "1" o-- "1..N" AefProfile
114 AefProfile::interfaceDescriptions "1" o-- "1..N" InterfaceDescription
115 AefProfile::protocol "0..1" o-- "0..1" Protocol
116 AefProfile::securityMethods "1" o-- "1..N" SecurityMethod
117 AefProfile::dataFormat "0..1" o-- "0..N" DataFormat
118 InterfaceDescription::securityMethods "1" o-- "1..N" SecurityMethod
119 AefProfile::versions "1" o-- "1..N" Version
120 Version::resources "1..N" o-- "1..N" Resource
121 Version::custOperations "0..1" o-- "0..N" CustomOperation
122 CustomOperation::CommunicationType "1" o-- "1" CommunicationType
123 CustomOperation::operations "0..N" o-- "0..N" Operation
124 Resource::commType "1" o-- "1" CommunicationType
125
126 package "Invoker Management" #coral {
127     struct APIInvokerEnrolmentDetails {
128         string apiInvokerId
129         string apiInvokerInformation
130         APIList apiList
131         OnboardingInformation onboardingInformation (required)
132     }
133     struct OnboardingInformation {
134         string apiInvokerCertificate
135         string ApiInvokerPublicKey (required)
136         string onboardingSecret
137     }
138     note right of OnboardingInformation::onboardingSecret
139         Secret provided by CAPIF Core
140     end note
141     note right of APIInvokerEnrolmentDetails::apiInvokerId
142         Id provided by CAPIF Core
143     end note
144 }
145 APIInvokerEnrolmentDetails::apiList "1" o-- "1..N" ServiceAPIDescription : APIList containing services\n available for the invoker.\n Provided by capifcore
146 APIInvokerEnrolmentDetails::onboardingInformation "1" o-- "1" OnboardingInformation
147
148 package "Discover Service"  #Yellow {
149     struct DiscoveredAPIs {
150         []ServiceAPIDescription serviceAPIDescriptions
151     }
152 }
153 DiscoveredAPIs::serviceAPIDescriptions "0..N" o-- "0..N" ServiceAPIDescription
154 note "Services can only be discovered\n for an onboarded invoker through\n APIInvokerEnrolmentDetails::apiId" as invokerDiscoverRel
155 DiscoveredAPIs .. invokerDiscoverRel
156 invokerDiscoverRel .. APIInvokerEnrolmentDetails::apiInvokerId
157
158 @enduml