Add documentation about rApp registration 46/9846/3
authorelinuxhenrik <henrik.b.andersson@est.tech>
Mon, 28 Nov 2022 09:38:11 +0000 (10:38 +0100)
committerelinuxhenrik <henrik.b.andersson@est.tech>
Mon, 28 Nov 2022 12:39:27 +0000 (13:39 +0100)
Issue-ID: NONRTRIC-814
Signed-off-by: elinuxhenrik <henrik.b.andersson@est.tech>
Change-Id: If4d32daa597da6392c840ea352b553cb052212e7

README.md [new file with mode: 0644]
capifcore/README.md
capifcore/docs/diagrams/Information in rApp registration.svg [new file with mode: 0644]
capifcore/docs/diagrams/Register Provider.svg [new file with mode: 0644]
capifcore/docs/diagrams/classdiagram.plantuml [new file with mode: 0644]
capifcore/docs/diagrams/registerpoviderandpublishservice.plantuml [new file with mode: 0644]

diff --git a/README.md b/README.md
new file mode 100644 (file)
index 0000000..47afecb
--- /dev/null
+++ b/README.md
@@ -0,0 +1,26 @@
+<!--
+ -
+   ========================LICENSE_START=================================
+   O-RAN-SC
+   %%
+   Copyright (C) 2022: Nordix Foundation
+   %%
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+   ========================LICENSE_END===================================
+
+-->
+
+# O-RAN-SC Non-RealTime RIC Service Management and Exposure
+
+See [CAPIF Core](capifcore/README.md)
+
index cba7ff1..9242007 100644 (file)
 
 -->
 
-# O-RAN-SC Non-RealTime CAPIF implementation
+# O-RAN-SC Non-RealTime RIC CAPIF Core implementation
 
-This product is a Go implementation of the CAPIF Core function, based on the 3GPP CAPIF interfaces.
+This product is a Go implementation of the CAPIF Core function, based on the 3GPP "29.222 Common API Framework for 3GPP Northbound APIs (CAPIF)" interfaces, see https://portal.3gpp.org/desktopmodules/Specifications/SpecificationDetails.aspx?specificationId=3450.
+
+The data used within CAPIF Core is shown in the diagram below.
+
+<img src="docs/diagrams/Information in rApp registration.svg">
+
+An example of how an rApp that both exposes and consumes services can be registered in CAPIF Core is shown in the sequence diagram below.
+
+***NOTE!*** It has not been decided that CAPIF Core will actually do the Helm chart installation and starting. This is just provided in the prototype as an example of what CAPIF Core could do. Before publisihing a service, the chart that belongs to the service must be registered in ChartMusem. When publishing the service the following information should be provided in the `ServiceAPIDescription::description` attribute; "namespace", "repoName", "chartName", "releaseName". An exaple of the information: "Description of rApp helloWorld,namespace,repoName,chartName,releaseName".
+
+<img src="docs/diagrams/Register Provider.svg">
 
 ## Generation of API code
 
@@ -42,8 +52,8 @@ To fix the specifications there are three tools:
 
 When a dependency to a new specification is introduced in any of the CAPIF specifications, see example below, the following steps should be performed:
 
-For the CAPIF specification "TS29222_CAPIF_Discover_Service_API" a new dependency like the following has been introduced.  
-websockNotifConfig:  
+For the CAPIF specification "TS29222_CAPIF_Discover_Service_API" a new dependency like the following has been introduced.
+websockNotifConfig:
 &nbsp;&nbsp;&nbsp;&nbsp;$ref: '**TS29122_CommonData.yaml#/components/schemas/WebsockNotifConfig**'
 
 1. Copy the bold part of the reference and add it to the `definitions.txt` file. This step is not needed if the type is already defined in the file.
@@ -75,7 +85,8 @@ The application can also be built as a Docker image, by using the following comm
 
 ## Run
 
-To run the Core Function from the command line, run the following commands from this folder.
+To run the Core Function from the command line, run the following commands from this folder. For the parameter `chartMuseumUrl`, if it is not provided CAPIF Core will not do any Helm integration, i.e. try to start any Halm chart when publishing a service.
 
-    ./capifcore [-port <port (default 8080)>]
+    ./capifcore [-port <port (default 8090)>] [-chartMuseumUrl <URL to ChartMuseum>] [-repoName <Helm repo name (default capifcore)>] [-loglevel <log level (default Info)>]
 
+To run CAPIF Core as a K8s pod together with ChartMuseum, start and stop scipts are provided. The pod configurations are provided in the `configs` folder. CAPIF Core is then available att port `31570`.
diff --git a/capifcore/docs/diagrams/Information in rApp registration.svg b/capifcore/docs/diagrams/Information in rApp registration.svg
new file mode 100644 (file)
index 0000000..46a0ccf
--- /dev/null
@@ -0,0 +1,134 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentStyleType="text/css" height="895px" preserveAspectRatio="none" style="width:1655px;height:895px;background:#FFFFFF;" version="1.1" viewBox="0 0 1655 895" width="1655px" zoomAndPan="magnify"><defs/><g><!--MD5=[0e252429fa10c7ec310cb63d32dcae66]
+class APIProviderEnrolmentDetails--><g id="elem_APIProviderEnrolmentDetails"><rect codeLine="1" fill="#98FB98" height="96.8906" id="APIProviderEnrolmentDetails" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="315" x="793.9066" y="7"/><ellipse cx="842.6566" cy="23" fill="#F1F1F1" rx="11" ry="11" style="stroke:#181818;stroke-width:1.0;"/><path d="M846.4378,18.9688 C846.4378,18.5313 846.4222,18.3906 846.3285,18.2344 C846.1878,18 845.9066,17.8438 845.6097,17.8438 C845.266,17.8438 845.1253,17.9844 844.9535,18.4063 C844.3597,18.0313 843.6097,17.8438 842.7347,17.8438 C840.6253,17.8438 839.0472,19.1406 839.0472,20.8594 C839.0472,21.8281 839.5785,22.7344 840.4378,23.2188 C840.9847,23.5313 841.5316,23.7031 842.641,23.8906 C843.7972,24.0938 844.0628,24.1563 844.4222,24.3438 C844.7972,24.5469 845.0316,24.8906 845.0316,25.25 C845.0316,25.9844 844.0472,26.5313 842.7972,26.5313 C841.6722,26.5313 840.5941,26.0469 840.4222,25.4375 C840.2972,24.9688 840.2972,24.9688 840.1722,24.8594 C840.016,24.7031 839.7972,24.6094 839.5628,24.6094 C839.2816,24.6094 839.0316,24.7344 838.8597,24.9531 C838.7503,25.125 838.7035,25.3125 838.7035,25.7344 L838.7035,26.8594 C838.7035,27.625 838.9847,27.9844 839.5785,27.9844 C839.8441,27.9844 839.9691,27.9219 840.2503,27.5781 C841.0941,28.0156 841.9847,28.2344 842.9066,28.2344 C845.2347,28.2344 846.7972,27.0469 846.7972,25.2813 C846.7972,24.3906 846.4847,23.7031 845.7972,23.1563 C845.266,22.7344 844.6253,22.4844 843.141,22.2188 C841.8753,21.9844 841.7816,21.9531 841.4535,21.7813 C841.0785,21.5938 840.8128,21.2031 840.8128,20.8438 C840.8128,20.1094 841.6722,19.5469 842.7347,19.5469 C843.7972,19.5469 844.6097,20.0156 844.766,20.6875 C844.8753,21.2344 844.8753,21.2344 845.0003,21.375 C845.141,21.5 845.3753,21.6094 845.6097,21.6094 C845.8753,21.6094 846.1253,21.4688 846.2972,21.25 C846.4066,21.0781 846.4378,20.9375 846.4378,20.4688 L846.4378,18.9688 Z " fill="#000000"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="209" x="863.1566" y="27.8467">APIProviderEnrolmentDetails</text><line style="stroke:#181818;stroke-width:0.5;" x1="794.9066" x2="1107.9066" y1="39" y2="39"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="147" x="799.9066" y="55.9951">string apiProvDomId</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="162" x="799.9066" y="72.292">string apiProvDomInfo</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="303" x="799.9066" y="88.5889">[]APIProviderFunctionDetails apiProvFuncs</text><line style="stroke:#181818;stroke-width:0.5;" x1="794.9066" x2="1107.9066" y1="95.8906" y2="95.8906"/></g><path d="M1152.4066,37.5 L1152.4066,46.0664 L946.9066,51.1484 L1152.4066,54.0664 L1152.4066,62.6328 A0,0 0 0 0 1152.4066,62.6328 L1338.4066,62.6328 A0,0 0 0 0 1338.4066,62.6328 L1338.4066,47.5 L1328.4066,37.5 L1152.4066,37.5 A0,0 0 0 0 1152.4066,37.5 " fill="#FEFFDD" style="stroke:#181818;stroke-width:0.5;"/><path d="M1328.4066,37.5 L1328.4066,47.5 L1338.4066,47.5 L1328.4066,37.5 " fill="#FEFFDD" style="stroke:#181818;stroke-width:0.5;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="165" x="1158.4066" y="54.5669">Id provided by CAPIF Core</text><!--MD5=[7f279047012c54823f76ad25d0814bfd]
+class APIProviderFunctionDetails--><g id="elem_APIProviderFunctionDetails"><rect codeLine="9" fill="#98FB98" height="113.1875" id="APIProviderFunctionDetails" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="386" x="759.4066" y="172"/><ellipse cx="850.6566" cy="188" fill="#F1F1F1" rx="11" ry="11" style="stroke:#181818;stroke-width:1.0;"/><path d="M854.4378,183.9688 C854.4378,183.5313 854.4222,183.3906 854.3285,183.2344 C854.1878,183 853.9066,182.8438 853.6097,182.8438 C853.266,182.8438 853.1253,182.9844 852.9535,183.4063 C852.3597,183.0313 851.6097,182.8438 850.7347,182.8438 C848.6253,182.8438 847.0472,184.1406 847.0472,185.8594 C847.0472,186.8281 847.5785,187.7344 848.4378,188.2188 C848.9847,188.5313 849.5316,188.7031 850.641,188.8906 C851.7972,189.0938 852.0628,189.1563 852.4222,189.3438 C852.7972,189.5469 853.0316,189.8906 853.0316,190.25 C853.0316,190.9844 852.0472,191.5313 850.7972,191.5313 C849.6722,191.5313 848.5941,191.0469 848.4222,190.4375 C848.2972,189.9688 848.2972,189.9688 848.1722,189.8594 C848.016,189.7031 847.7972,189.6094 847.5628,189.6094 C847.2816,189.6094 847.0316,189.7344 846.8597,189.9531 C846.7503,190.125 846.7035,190.3125 846.7035,190.7344 L846.7035,191.8594 C846.7035,192.625 846.9847,192.9844 847.5785,192.9844 C847.8441,192.9844 847.9691,192.9219 848.2503,192.5781 C849.0941,193.0156 849.9847,193.2344 850.9066,193.2344 C853.2347,193.2344 854.7972,192.0469 854.7972,190.2813 C854.7972,189.3906 854.4847,188.7031 853.7972,188.1563 C853.266,187.7344 852.6253,187.4844 851.141,187.2188 C849.8753,186.9844 849.7816,186.9531 849.4535,186.7813 C849.0785,186.5938 848.8128,186.2031 848.8128,185.8438 C848.8128,185.1094 849.6722,184.5469 850.7347,184.5469 C851.7972,184.5469 852.6097,185.0156 852.766,185.6875 C852.8753,186.2344 852.8753,186.2344 853.0003,186.375 C853.141,186.5 853.3753,186.6094 853.6097,186.6094 C853.8753,186.6094 854.1253,186.4688 854.2972,186.25 C854.4066,186.0781 854.4378,185.9375 854.4378,185.4688 L854.4378,183.9688 Z " fill="#000000"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="195" x="871.1566" y="192.8467">APIProviderFunctionDetails</text><line style="stroke:#181818;stroke-width:0.5;" x1="760.4066" x2="1144.4066" y1="204" y2="204"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="146" x="765.4066" y="220.9951">string apiProvFuncId</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="161" x="765.4066" y="237.292">string apiProvFuncInfo</text><line style="stroke:#181818;stroke-width:0.5;" x1="760.4066" x2="1144.4066" y1="244.5938" y2="244.5938"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="374" x="765.4066" y="261.5889">ApiProviderFuncRole apiProviderFuncRole (required)</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="304" x="765.4066" y="277.8857">RegistrationInformation regInfo (required)</text></g><path d="M1188.4066,177.5 L1188.4066,186.0664 L911.4066,216.1484 L1188.4066,194.0664 L1188.4066,202.6328 A0,0 0 0 0 1188.4066,202.6328 L1374.4066,202.6328 A0,0 0 0 0 1374.4066,202.6328 L1374.4066,187.5 L1364.4066,177.5 L1188.4066,177.5 A0,0 0 0 0 1188.4066,177.5 " fill="#FEFFDD" style="stroke:#181818;stroke-width:0.5;"/><path d="M1364.4066,177.5 L1364.4066,187.5 L1374.4066,187.5 L1364.4066,177.5 " fill="#FEFFDD" style="stroke:#181818;stroke-width:0.5;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="165" x="1194.4066" y="194.5669">Id provided by CAPIF Core</text><path d="M1188.4066,212.6328 L1188.4066,236.332 L1139.4066,256.7422 L1188.4066,244.332 L1188.4066,268.0313 A0,0 0 0 0 1188.4066,268.0313 L1574.4066,268.0313 A0,0 0 0 0 1574.4066,268.0313 L1574.4066,222.6328 L1564.4066,212.6328 L1188.4066,212.6328 A0,0 0 0 0 1188.4066,212.6328 " fill="#FEFFDD" style="stroke:#181818;stroke-width:0.5;"/><path d="M1564.4066,212.6328 L1564.4066,222.6328 L1574.4066,222.6328 L1564.4066,212.6328 " fill="#FEFFDD" style="stroke:#181818;stroke-width:0.5;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="337" x="1194.4066" y="229.6997">- AEF: API provider function is API Exposing Function.</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="343" x="1194.4066" y="244.8325">- APF: API provider function is API Publishing Function.</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="365" x="1194.4066" y="259.9653">- AMF: API Provider function is API Management Function.</text><!--MD5=[1f62e39e6986077d5626c6cf81ffb380]
+class RegistrationInformation--><g id="elem_RegistrationInformation"><rect codeLine="23" fill="#98FB98" height="80.5938" id="RegistrationInformation" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="241" x="1077.9066" y="384.5"/><ellipse cx="1108.6566" cy="400.5" fill="#F1F1F1" rx="11" ry="11" style="stroke:#181818;stroke-width:1.0;"/><path d="M1112.4378,396.4688 C1112.4378,396.0313 1112.4222,395.8906 1112.3285,395.7344 C1112.1878,395.5 1111.9066,395.3438 1111.6097,395.3438 C1111.266,395.3438 1111.1253,395.4844 1110.9535,395.9063 C1110.3597,395.5313 1109.6097,395.3438 1108.7347,395.3438 C1106.6253,395.3438 1105.0472,396.6406 1105.0472,398.3594 C1105.0472,399.3281 1105.5785,400.2344 1106.4378,400.7188 C1106.9847,401.0313 1107.5316,401.2031 1108.641,401.3906 C1109.7972,401.5938 1110.0628,401.6563 1110.4222,401.8438 C1110.7972,402.0469 1111.0316,402.3906 1111.0316,402.75 C1111.0316,403.4844 1110.0472,404.0313 1108.7972,404.0313 C1107.6722,404.0313 1106.5941,403.5469 1106.4222,402.9375 C1106.2972,402.4688 1106.2972,402.4688 1106.1722,402.3594 C1106.016,402.2031 1105.7972,402.1094 1105.5628,402.1094 C1105.2816,402.1094 1105.0316,402.2344 1104.8597,402.4531 C1104.7503,402.625 1104.7035,402.8125 1104.7035,403.2344 L1104.7035,404.3594 C1104.7035,405.125 1104.9847,405.4844 1105.5785,405.4844 C1105.8441,405.4844 1105.9691,405.4219 1106.2503,405.0781 C1107.0941,405.5156 1107.9847,405.7344 1108.9066,405.7344 C1111.2347,405.7344 1112.7972,404.5469 1112.7972,402.7813 C1112.7972,401.8906 1112.4847,401.2031 1111.7972,400.6563 C1111.266,400.2344 1110.6253,399.9844 1109.141,399.7188 C1107.8753,399.4844 1107.7816,399.4531 1107.4535,399.2813 C1107.0785,399.0938 1106.8128,398.7031 1106.8128,398.3438 C1106.8128,397.6094 1107.6722,397.0469 1108.7347,397.0469 C1109.7972,397.0469 1110.6097,397.5156 1110.766,398.1875 C1110.8753,398.7344 1110.8753,398.7344 1111.0003,398.875 C1111.141,399 1111.3753,399.1094 1111.6097,399.1094 C1111.8753,399.1094 1112.1253,398.9688 1112.2972,398.75 C1112.4066,398.5781 1112.4378,398.4375 1112.4378,397.9688 L1112.4378,396.4688 Z " fill="#000000"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="174" x="1126.1566" y="405.3467">RegistrationInformation</text><line style="stroke:#181818;stroke-width:0.5;" x1="1078.9066" x2="1317.9066" y1="416.5" y2="416.5"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="132" x="1083.9066" y="433.4951">string apiProvCert</text><line style="stroke:#181818;stroke-width:0.5;" x1="1078.9066" x2="1317.9066" y1="440.7969" y2="440.7969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="229" x="1083.9066" y="457.792">atring apiProvPubKey (required)</text></g><!--MD5=[30aa660395d9fb6e2ca898b7ec3ec3d0]
+class ServiceAPIDescription--><g id="elem_ServiceAPIDescription"><rect codeLine="30" fill="#ADD8E6" height="113.1875" id="ServiceAPIDescription" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="195" x="8.9066" y="369"/><ellipse cx="25.2566" cy="385" fill="#F1F1F1" rx="11" ry="11" style="stroke:#181818;stroke-width:1.0;"/><path d="M29.0378,380.9688 C29.0378,380.5313 29.0222,380.3906 28.9285,380.2344 C28.7878,380 28.5066,379.8438 28.2097,379.8438 C27.866,379.8438 27.7253,379.9844 27.5535,380.4063 C26.9597,380.0313 26.2097,379.8438 25.3347,379.8438 C23.2253,379.8438 21.6472,381.1406 21.6472,382.8594 C21.6472,383.8281 22.1785,384.7344 23.0378,385.2188 C23.5847,385.5313 24.1316,385.7031 25.241,385.8906 C26.3972,386.0938 26.6628,386.1563 27.0222,386.3438 C27.3972,386.5469 27.6316,386.8906 27.6316,387.25 C27.6316,387.9844 26.6472,388.5313 25.3972,388.5313 C24.2722,388.5313 23.1941,388.0469 23.0222,387.4375 C22.8972,386.9688 22.8972,386.9688 22.7722,386.8594 C22.616,386.7031 22.3972,386.6094 22.1628,386.6094 C21.8816,386.6094 21.6316,386.7344 21.4597,386.9531 C21.3503,387.125 21.3035,387.3125 21.3035,387.7344 L21.3035,388.8594 C21.3035,389.625 21.5847,389.9844 22.1785,389.9844 C22.4441,389.9844 22.5691,389.9219 22.8503,389.5781 C23.6941,390.0156 24.5847,390.2344 25.5066,390.2344 C27.8347,390.2344 29.3972,389.0469 29.3972,387.2813 C29.3972,386.3906 29.0847,385.7031 28.3972,385.1563 C27.866,384.7344 27.2253,384.4844 25.741,384.2188 C24.4753,383.9844 24.3816,383.9531 24.0535,383.7813 C23.6785,383.5938 23.4128,383.2031 23.4128,382.8438 C23.4128,382.1094 24.2722,381.5469 25.3347,381.5469 C26.3972,381.5469 27.2097,382.0156 27.366,382.6875 C27.4753,383.2344 27.4753,383.2344 27.6003,383.375 C27.741,383.5 27.9753,383.6094 28.2097,383.6094 C28.4753,383.6094 28.7253,383.4688 28.8972,383.25 C29.0066,383.0781 29.0378,382.9375 29.0378,382.4688 L29.0378,380.9688 Z " fill="#000000"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="160" x="39.5566" y="389.8467">ServiceAPIDescription</text><line style="stroke:#181818;stroke-width:0.5;" x1="9.9066" x2="202.9066" y1="401" y2="401"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="81" x="14.9066" y="417.9951">string apiId</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="128" x="14.9066" y="434.292">string description</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="163" x="14.9066" y="450.5889">[]AefProfile aefProfiles</text><line style="stroke:#181818;stroke-width:0.5;" x1="9.9066" x2="202.9066" y1="457.8906" y2="457.8906"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="183" x="14.9066" y="474.8857">string apiName (required)</text></g><g id="elem_GMN12"><path d="M13.4066,617.5 L13.4066,642.6328 A0,0 0 0 0 13.4066,642.6328 L199.4066,642.6328 A0,0 0 0 0 199.4066,642.6328 L199.4066,627.5 L189.4066,617.5 L110.4066,617.5 L106.4066,485.262 L102.4066,617.5 L13.4066,617.5 A0,0 0 0 0 13.4066,617.5 " fill="#FEFFDD" style="stroke:#181818;stroke-width:0.5;"/><path d="M189.4066,617.5 L189.4066,627.5 L199.4066,627.5 L189.4066,617.5 " fill="#FEFFDD" style="stroke:#181818;stroke-width:0.5;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="165" x="19.4066" y="634.5669">Id provided by CAPIF Core</text></g><!--MD5=[1c40ba31a6e0033614eeca8255f08bb3]
+class AefProfile--><g id="elem_AefProfile"><rect codeLine="39" fill="#ADD8E6" height="162.0781" id="AefProfile" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="333" x="663.9066" y="550"/><ellipse cx="790.1566" cy="566" fill="#F1F1F1" rx="11" ry="11" style="stroke:#181818;stroke-width:1.0;"/><path d="M793.9378,561.9688 C793.9378,561.5313 793.9222,561.3906 793.8285,561.2344 C793.6878,561 793.4066,560.8438 793.1097,560.8438 C792.766,560.8438 792.6253,560.9844 792.4535,561.4063 C791.8597,561.0313 791.1097,560.8438 790.2347,560.8438 C788.1253,560.8438 786.5472,562.1406 786.5472,563.8594 C786.5472,564.8281 787.0785,565.7344 787.9378,566.2188 C788.4847,566.5313 789.0316,566.7031 790.141,566.8906 C791.2972,567.0938 791.5628,567.1563 791.9222,567.3438 C792.2972,567.5469 792.5316,567.8906 792.5316,568.25 C792.5316,568.9844 791.5472,569.5313 790.2972,569.5313 C789.1722,569.5313 788.0941,569.0469 787.9222,568.4375 C787.7972,567.9688 787.7972,567.9688 787.6722,567.8594 C787.516,567.7031 787.2972,567.6094 787.0628,567.6094 C786.7816,567.6094 786.5316,567.7344 786.3597,567.9531 C786.2503,568.125 786.2035,568.3125 786.2035,568.7344 L786.2035,569.8594 C786.2035,570.625 786.4847,570.9844 787.0785,570.9844 C787.3441,570.9844 787.4691,570.9219 787.7503,570.5781 C788.5941,571.0156 789.4847,571.2344 790.4066,571.2344 C792.7347,571.2344 794.2972,570.0469 794.2972,568.2813 C794.2972,567.3906 793.9847,566.7031 793.2972,566.1563 C792.766,565.7344 792.1253,565.4844 790.641,565.2188 C789.3753,564.9844 789.2816,564.9531 788.9535,564.7813 C788.5785,564.5938 788.3128,564.2031 788.3128,563.8438 C788.3128,563.1094 789.1722,562.5469 790.2347,562.5469 C791.2972,562.5469 792.1097,563.0156 792.266,563.6875 C792.3753,564.2344 792.3753,564.2344 792.5003,564.375 C792.641,564.5 792.8753,564.6094 793.1097,564.6094 C793.3753,564.6094 793.6253,564.4688 793.7972,564.25 C793.9066,564.0781 793.9378,563.9375 793.9378,563.4688 L793.9378,561.9688 Z " fill="#000000"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="72" x="810.6566" y="570.8467">AefProfile</text><line style="stroke:#181818;stroke-width:0.5;" x1="664.9066" x2="995.9066" y1="582" y2="582"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="174" x="669.9066" y="598.9951">DataFormat dataFormat</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="140" x="669.9066" y="615.292">string domainName</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="321" x="669.9066" y="631.5889">[]InterfaceDescription interfaceDescriptions</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="127" x="669.9066" y="647.8857">Protocol protocol</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="247" x="669.9066" y="664.1826">[]SecurityMethod securityMethods</text><line style="stroke:#181818;stroke-width:0.5;" x1="664.9066" x2="995.9066" y1="671.4844" y2="671.4844"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="156" x="669.9066" y="688.4795">string aefId (required)</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="201" x="669.9066" y="704.7764">[]Version versions (required)</text></g><path d="M266.4066,554.5 L266.4066,579.6328 A0,0 0 0 0 266.4066,579.6328 L503.4066,579.6328 A0,0 0 0 0 503.4066,579.6328 L503.4066,572.5 L667.9066,594.1484 L503.4066,564.5 L503.4066,564.5 L493.4066,554.5 L266.4066,554.5 A0,0 0 0 0 266.4066,554.5 " fill="#FEFFDD" style="stroke:#181818;stroke-width:0.5;"/><path d="M493.4066,554.5 L493.4066,564.5 L503.4066,564.5 L493.4066,554.5 " fill="#FEFFDD" style="stroke:#181818;stroke-width:0.5;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="216" x="272.4066" y="571.5669">- JSON: JavaScript Object Notation</text><path d="M266.4066,589.6328 L266.4066,629.8984 A0,0 0 0 0 266.4066,629.8984 L476.4066,629.8984 A0,0 0 0 0 476.4066,629.8984 L476.4066,613.7656 L667.9066,643.0391 L476.4066,605.7656 L476.4066,599.6328 L466.4066,589.6328 L266.4066,589.6328 A0,0 0 0 0 266.4066,589.6328 " fill="#FEFFDD" style="stroke:#181818;stroke-width:0.5;"/><path d="M466.4066,589.6328 L466.4066,599.6328 L476.4066,599.6328 L466.4066,589.6328 " fill="#FEFFDD" style="stroke:#181818;stroke-width:0.5;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="189" x="272.4066" y="606.6997">- HTTP_1_1: HTTP version 1.1</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="162" x="272.4066" y="621.8325">- HTTP_2: HTTP version 2</text><path d="M266.4066,639.8984 L266.4066,695.2969 A0,0 0 0 0 266.4066,695.2969 L620.4066,695.2969 A0,0 0 0 0 620.4066,695.2969 L620.4066,671.5977 L667.9066,659.3359 L620.4066,663.5977 L620.4066,649.8984 L610.4066,639.8984 L266.4066,639.8984 A0,0 0 0 0 266.4066,639.8984 " fill="#FEFFDD" style="stroke:#181818;stroke-width:0.5;"/><path d="M610.4066,639.8984 L610.4066,649.8984 L620.4066,649.8984 L610.4066,639.8984 " fill="#FEFFDD" style="stroke:#181818;stroke-width:0.5;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="265" x="272.4066" y="656.9653">- PSK: Security method 1 (Using TLS-PSK)</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="227" x="272.4066" y="672.0981">- PKI: Security method 2 (Using PKI)</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="333" x="272.4066" y="687.231">- OAUTH: Security method 3 (TLS with OAuth token)</text><g id="elem_aefIdRel"><path d="M813.9066,412.5 L813.9066,437.6328 L1042.9066,437.6328 L1042.9066,422.5 L1032.9066,412.5 L813.9066,412.5 " fill="#FEFFDD" style="stroke:#181818;stroke-width:0.5;"/><path d="M1032.9066,412.5 L1032.9066,422.5 L1042.9066,422.5 L1032.9066,412.5 " fill="#FEFFDD" style="stroke:#181818;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="208" x="819.9066" y="429.5669">From APIProviderFunctionDetails</text></g><!--MD5=[5aca79d495961f73f43004d77eeece21]
+class InterfaceDescription--><g id="elem_InterfaceDescription"><rect codeLine="63" fill="#ADD8E6" height="113.1875" id="InterfaceDescription" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="259" x="1025.9066" y="775"/><ellipse cx="1076.1566" cy="791" fill="#F1F1F1" rx="11" ry="11" style="stroke:#181818;stroke-width:1.0;"/><path d="M1079.9378,786.9688 C1079.9378,786.5313 1079.9222,786.3906 1079.8285,786.2344 C1079.6878,786 1079.4066,785.8438 1079.1097,785.8438 C1078.766,785.8438 1078.6253,785.9844 1078.4535,786.4063 C1077.8597,786.0313 1077.1097,785.8438 1076.2347,785.8438 C1074.1253,785.8438 1072.5472,787.1406 1072.5472,788.8594 C1072.5472,789.8281 1073.0785,790.7344 1073.9378,791.2188 C1074.4847,791.5313 1075.0316,791.7031 1076.141,791.8906 C1077.2972,792.0938 1077.5628,792.1563 1077.9222,792.3438 C1078.2972,792.5469 1078.5316,792.8906 1078.5316,793.25 C1078.5316,793.9844 1077.5472,794.5313 1076.2972,794.5313 C1075.1722,794.5313 1074.0941,794.0469 1073.9222,793.4375 C1073.7972,792.9688 1073.7972,792.9688 1073.6722,792.8594 C1073.516,792.7031 1073.2972,792.6094 1073.0628,792.6094 C1072.7816,792.6094 1072.5316,792.7344 1072.3597,792.9531 C1072.2503,793.125 1072.2035,793.3125 1072.2035,793.7344 L1072.2035,794.8594 C1072.2035,795.625 1072.4847,795.9844 1073.0785,795.9844 C1073.3441,795.9844 1073.4691,795.9219 1073.7503,795.5781 C1074.5941,796.0156 1075.4847,796.2344 1076.4066,796.2344 C1078.7347,796.2344 1080.2972,795.0469 1080.2972,793.2813 C1080.2972,792.3906 1079.9847,791.7031 1079.2972,791.1563 C1078.766,790.7344 1078.1253,790.4844 1076.641,790.2188 C1075.3753,789.9844 1075.2816,789.9531 1074.9535,789.7813 C1074.5785,789.5938 1074.3128,789.2031 1074.3128,788.8438 C1074.3128,788.1094 1075.1722,787.5469 1076.2347,787.5469 C1077.2972,787.5469 1078.1097,788.0156 1078.266,788.6875 C1078.3753,789.2344 1078.3753,789.2344 1078.5003,789.375 C1078.641,789.5 1078.8753,789.6094 1079.1097,789.6094 C1079.3753,789.6094 1079.6253,789.4688 1079.7972,789.25 C1079.9066,789.0781 1079.9378,788.9375 1079.9378,788.4688 L1079.9378,786.9688 Z " fill="#000000"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="150" x="1096.6566" y="795.8467">InterfaceDescription</text><line style="stroke:#181818;stroke-width:0.5;" x1="1026.9066" x2="1283.9066" y1="807" y2="807"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="133" x="1031.9066" y="823.9951">string ipv4Address</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="134" x="1031.9066" y="840.292">string ipv6Address</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="165" x="1031.9066" y="856.5889">[]Operation operations</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="247" x="1031.9066" y="872.8857">[]SecurityMethod securityMethods</text><line style="stroke:#181818;stroke-width:0.5;" x1="1026.9066" x2="1283.9066" y1="880.1875" y2="880.1875"/></g><g id="elem_GMN22"><path d="M1320.4066,804 L1320.4066,827.5 L1285.2066,831.5 L1320.4066,835.5 L1320.4066,859.3984 A0,0 0 0 0 1320.4066,859.3984 L1648.4066,859.3984 A0,0 0 0 0 1648.4066,859.3984 L1648.4066,814 L1638.4066,804 L1320.4066,804 A0,0 0 0 0 1320.4066,804 " fill="#FEFFDD" style="stroke:#181818;stroke-width:0.5;"/><path d="M1638.4066,804 L1638.4066,814 L1648.4066,814 L1638.4066,804 " fill="#FEFFDD" style="stroke:#181818;stroke-width:0.5;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="292" x="1326.4066" y="821.0669">Security methods supported by the interface,</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="293" x="1326.4066" y="836.1997">it take precedence over the security methods</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="307" x="1326.4066" y="851.3325">provided in AefProfile, for this specific interface.</text></g><!--MD5=[1db584ee1b8127ea75535273dec2b4f2]
+class Version--><g id="elem_Version"><rect codeLine="74" fill="#ADD8E6" height="80.5938" id="Version" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="161" x="629.9066" y="791"/><ellipse cx="679.1566" cy="807" fill="#F1F1F1" rx="11" ry="11" style="stroke:#181818;stroke-width:1.0;"/><path d="M682.9378,802.9688 C682.9378,802.5313 682.9222,802.3906 682.8285,802.2344 C682.6878,802 682.4066,801.8438 682.1097,801.8438 C681.766,801.8438 681.6253,801.9844 681.4535,802.4063 C680.8597,802.0313 680.1097,801.8438 679.2347,801.8438 C677.1253,801.8438 675.5472,803.1406 675.5472,804.8594 C675.5472,805.8281 676.0785,806.7344 676.9378,807.2188 C677.4847,807.5313 678.0316,807.7031 679.141,807.8906 C680.2972,808.0938 680.5628,808.1563 680.9222,808.3438 C681.2972,808.5469 681.5316,808.8906 681.5316,809.25 C681.5316,809.9844 680.5472,810.5313 679.2972,810.5313 C678.1722,810.5313 677.0941,810.0469 676.9222,809.4375 C676.7972,808.9688 676.7972,808.9688 676.6722,808.8594 C676.516,808.7031 676.2972,808.6094 676.0628,808.6094 C675.7816,808.6094 675.5316,808.7344 675.3597,808.9531 C675.2503,809.125 675.2035,809.3125 675.2035,809.7344 L675.2035,810.8594 C675.2035,811.625 675.4847,811.9844 676.0785,811.9844 C676.3441,811.9844 676.4691,811.9219 676.7503,811.5781 C677.5941,812.0156 678.4847,812.2344 679.4066,812.2344 C681.7347,812.2344 683.2972,811.0469 683.2972,809.2813 C683.2972,808.3906 682.9847,807.7031 682.2972,807.1563 C681.766,806.7344 681.1253,806.4844 679.641,806.2188 C678.3753,805.9844 678.2816,805.9531 677.9535,805.7813 C677.5785,805.5938 677.3128,805.2031 677.3128,804.8438 C677.3128,804.1094 678.1722,803.5469 679.2347,803.5469 C680.2972,803.5469 681.1097,804.0156 681.266,804.6875 C681.3753,805.2344 681.3753,805.2344 681.5003,805.375 C681.641,805.5 681.8753,805.6094 682.1097,805.6094 C682.3753,805.6094 682.6253,805.4688 682.7972,805.25 C682.9066,805.0781 682.9378,804.9375 682.9378,804.4688 L682.9378,802.9688 Z " fill="#000000"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="54" x="699.6566" y="811.8467">Version</text><line style="stroke:#181818;stroke-width:0.5;" x1="630.9066" x2="789.9066" y1="823" y2="823"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="122" x="635.9066" y="839.9951">string apiVersion</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="149" x="635.9066" y="856.292">[]Resource resources</text><line style="stroke:#181818;stroke-width:0.5;" x1="630.9066" x2="789.9066" y1="863.5938" y2="863.5938"/></g><path d="M825.9066,806.5 L825.9066,822.6328 L784.9066,851.4453 L825.9066,830.6328 L825.9066,846.7656 A0,0 0 0 0 825.9066,846.7656 L990.9066,846.7656 A0,0 0 0 0 990.9066,846.7656 L990.9066,816.5 L980.9066,806.5 L825.9066,806.5 A0,0 0 0 0 825.9066,806.5 " fill="#FEFFDD" style="stroke:#181818;stroke-width:0.5;"/><path d="M980.9066,806.5 L980.9066,816.5 L990.9066,816.5 L980.9066,806.5 " fill="#FEFFDD" style="stroke:#181818;stroke-width:0.5;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="144" x="831.9066" y="823.5669">- REQUEST_RESPONSE</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="131" x="831.9066" y="838.6997">- SUBSCRIBE_NOTIFY</text><!--MD5=[0afb30f140d7a68d8214ba691286e74e]
+class APIInvokerEnrolmentDetails--><g id="elem_APIInvokerEnrolmentDetails"><rect codeLine="86" fill="#FF7F50" height="113.1875" id="APIInvokerEnrolmentDetails" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="352" x="50.4066" y="172"/><ellipse cx="120.6566" cy="188" fill="#F1F1F1" rx="11" ry="11" style="stroke:#181818;stroke-width:1.0;"/><path d="M124.4378,183.9688 C124.4378,183.5313 124.4222,183.3906 124.3285,183.2344 C124.1878,183 123.9066,182.8438 123.6097,182.8438 C123.266,182.8438 123.1253,182.9844 122.9535,183.4063 C122.3597,183.0313 121.6097,182.8438 120.7347,182.8438 C118.6253,182.8438 117.0472,184.1406 117.0472,185.8594 C117.0472,186.8281 117.5785,187.7344 118.4378,188.2188 C118.9847,188.5313 119.5316,188.7031 120.641,188.8906 C121.7972,189.0938 122.0628,189.1563 122.4222,189.3438 C122.7972,189.5469 123.0316,189.8906 123.0316,190.25 C123.0316,190.9844 122.0472,191.5313 120.7972,191.5313 C119.6722,191.5313 118.5941,191.0469 118.4222,190.4375 C118.2972,189.9688 118.2972,189.9688 118.1722,189.8594 C118.016,189.7031 117.7972,189.6094 117.5628,189.6094 C117.2816,189.6094 117.0316,189.7344 116.8597,189.9531 C116.7503,190.125 116.7035,190.3125 116.7035,190.7344 L116.7035,191.8594 C116.7035,192.625 116.9847,192.9844 117.5785,192.9844 C117.8441,192.9844 117.9691,192.9219 118.2503,192.5781 C119.0941,193.0156 119.9847,193.2344 120.9066,193.2344 C123.2347,193.2344 124.7972,192.0469 124.7972,190.2813 C124.7972,189.3906 124.4847,188.7031 123.7972,188.1563 C123.266,187.7344 122.6253,187.4844 121.141,187.2188 C119.8753,186.9844 119.7816,186.9531 119.4535,186.7813 C119.0785,186.5938 118.8128,186.2031 118.8128,185.8438 C118.8128,185.1094 119.6722,184.5469 120.7347,184.5469 C121.7972,184.5469 122.6097,185.0156 122.766,185.6875 C122.8753,186.2344 122.8753,186.2344 123.0003,186.375 C123.141,186.5 123.3753,186.6094 123.6097,186.6094 C123.8753,186.6094 124.1253,186.4688 124.2972,186.25 C124.4066,186.0781 124.4378,185.9375 124.4378,185.4688 L124.4378,183.9688 Z " fill="#000000"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="203" x="141.1566" y="192.8467">APIInvokerEnrolmentDetails</text><line style="stroke:#181818;stroke-width:0.5;" x1="51.4066" x2="401.4066" y1="204" y2="204"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="135" x="56.4066" y="220.9951">string apiInvokerId</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="207" x="56.4066" y="237.292">string apiInvokerInformation</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="101" x="56.4066" y="253.5889">APIList apiList</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="340" x="56.4066" y="269.8857">OnboardingInformation onboardingInformation</text><line style="stroke:#181818;stroke-width:0.5;" x1="51.4066" x2="401.4066" y1="277.1875" y2="277.1875"/></g><!--MD5=[7129722ced8854c69e86ed0d62e63764]
+class OnboardingInformation--><g id="elem_OnboardingInformation"><rect codeLine="92" fill="#FF7F50" height="96.8906" id="OnboardingInformation" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="280" x="247.4066" y="376.5"/><ellipse cx="298.6566" cy="392.5" fill="#F1F1F1" rx="11" ry="11" style="stroke:#181818;stroke-width:1.0;"/><path d="M302.4378,388.4688 C302.4378,388.0313 302.4222,387.8906 302.3285,387.7344 C302.1878,387.5 301.9066,387.3438 301.6097,387.3438 C301.266,387.3438 301.1253,387.4844 300.9535,387.9063 C300.3597,387.5313 299.6097,387.3438 298.7347,387.3438 C296.6253,387.3438 295.0472,388.6406 295.0472,390.3594 C295.0472,391.3281 295.5785,392.2344 296.4378,392.7188 C296.9847,393.0313 297.5316,393.2031 298.641,393.3906 C299.7972,393.5938 300.0628,393.6563 300.4222,393.8438 C300.7972,394.0469 301.0316,394.3906 301.0316,394.75 C301.0316,395.4844 300.0472,396.0313 298.7972,396.0313 C297.6722,396.0313 296.5941,395.5469 296.4222,394.9375 C296.2972,394.4688 296.2972,394.4688 296.1722,394.3594 C296.016,394.2031 295.7972,394.1094 295.5628,394.1094 C295.2816,394.1094 295.0316,394.2344 294.8597,394.4531 C294.7503,394.625 294.7035,394.8125 294.7035,395.2344 L294.7035,396.3594 C294.7035,397.125 294.9847,397.4844 295.5785,397.4844 C295.8441,397.4844 295.9691,397.4219 296.2503,397.0781 C297.0941,397.5156 297.9847,397.7344 298.9066,397.7344 C301.2347,397.7344 302.7972,396.5469 302.7972,394.7813 C302.7972,393.8906 302.4847,393.2031 301.7972,392.6563 C301.266,392.2344 300.6253,391.9844 299.141,391.7188 C297.8753,391.4844 297.7816,391.4531 297.4535,391.2813 C297.0785,391.0938 296.8128,390.7031 296.8128,390.3438 C296.8128,389.6094 297.6722,389.0469 298.7347,389.0469 C299.7972,389.0469 300.6097,389.5156 300.766,390.1875 C300.8753,390.7344 300.8753,390.7344 301.0003,390.875 C301.141,391 301.3753,391.1094 301.6097,391.1094 C301.8753,391.1094 302.1253,390.9688 302.2972,390.75 C302.4066,390.5781 302.4378,390.4375 302.4378,389.9688 L302.4378,388.4688 Z " fill="#000000"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="169" x="319.1566" y="397.3467">OnboardingInformation</text><line style="stroke:#181818;stroke-width:0.5;" x1="248.4066" x2="526.4066" y1="408.5" y2="408.5"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="200" x="253.4066" y="425.4951">string apiInvokerCertificate</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="176" x="253.4066" y="441.792">string onboardingSecret</text><line style="stroke:#181818;stroke-width:0.5;" x1="248.4066" x2="526.4066" y1="449.0938" y2="449.0938"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="268" x="253.4066" y="466.0889">string ApiInvokerPublicKey (required)</text></g><path d="M562.4066,407.5 L562.4066,416.0664 L429.4066,436.9453 L562.4066,424.0664 L562.4066,432.6328 A0,0 0 0 0 562.4066,432.6328 L778.4066,432.6328 A0,0 0 0 0 778.4066,432.6328 L778.4066,417.5 L768.4066,407.5 L562.4066,407.5 A0,0 0 0 0 562.4066,407.5 " fill="#FEFFDD" style="stroke:#181818;stroke-width:0.5;"/><path d="M768.4066,407.5 L768.4066,417.5 L778.4066,417.5 L768.4066,407.5 " fill="#FEFFDD" style="stroke:#181818;stroke-width:0.5;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="195" x="568.4066" y="424.5669">Secret provided by CAPIF Core</text><path d="M445.4066,210.5 L445.4066,219.0664 L191.4066,216.1484 L445.4066,227.0664 L445.4066,235.6328 A0,0 0 0 0 445.4066,235.6328 L631.4066,235.6328 A0,0 0 0 0 631.4066,235.6328 L631.4066,220.5 L621.4066,210.5 L445.4066,210.5 A0,0 0 0 0 445.4066,210.5 " fill="#FEFFDD" style="stroke:#181818;stroke-width:0.5;"/><path d="M621.4066,210.5 L621.4066,220.5 L631.4066,220.5 L621.4066,210.5 " fill="#FEFFDD" style="stroke:#181818;stroke-width:0.5;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="165" x="451.4066" y="227.5669">Id provided by CAPIF Core</text><!--MD5=[1dfed69000c7317ed296a27f11aeb576]
+reverse link APIProviderEnrolmentDetails to APIProviderFunctionDetails--><g id="link_APIProviderEnrolmentDetails_APIProviderFunctionDetails"><path codeLine="27" d="M1123.3466,84.342 C1152.1966,92.103 1101.7266,132.123 1048.2966,167.806 " fill="none" id="APIProviderEnrolmentDetails-backto-APIProviderFunctionDetails" style="stroke:#181818;stroke-width:1.0;"/><polygon fill="none" points="1110.4066,83,1115.9613,87.5983,1122.3424,84.2395,1116.7876,79.6411,1110.4066,83" style="stroke:#181818;stroke-width:1.0;"/></g><!--MD5=[32e33ed6e988ce1198ac80432a7c502c]
+reverse link APIProviderFunctionDetails to RegistrationInformation--><g id="link_APIProviderFunctionDetails_RegistrationInformation"><path codeLine="28" d="M1158.3966,278.01 C1175.3866,295.508 1186.6966,347.516 1192.8366,384.461 " fill="none" id="APIProviderFunctionDetails-backto-RegistrationInformation" style="stroke:#181818;stroke-width:1.0;"/><polygon fill="none" points="1146.4066,272,1149.9766,278.2654,1157.1331,277.3797,1153.5631,271.1144,1146.4066,272" style="stroke:#181818;stroke-width:1.0;"/></g><!--MD5=[1fbfbc08aaf5c1016e5b477a5c807753]
+link APIProviderFunctionDetails to aefIdRel--><g id="link_APIProviderFunctionDetails_aefIdRel"><path codeLine="61" d="M758.4066,216 C726.4036,216 745.3846,259.232 759.4066,288 C789.6856,350.121 863.3886,393.062 902.7056,412.402 " fill="none" id="APIProviderFunctionDetails-aefIdRel" style="stroke:#181818;stroke-width:1.0;stroke-dasharray:7.0,7.0;"/></g><!--MD5=[a8dd1463d7e0362004530e208ae0e723]
+link aefIdRel to AefProfile--><g id="link_aefIdRel_AefProfile"><path codeLine="62" d="M936.7186,437.665 C971.7806,487.746 1101.1566,682 998.4066,682 " fill="none" id="aefIdRel-AefProfile" style="stroke:#181818;stroke-width:1.0;stroke-dasharray:7.0,7.0;"/></g><!--MD5=[466189dcb9a8e4b8c26ae027cf1e5f20]
+reverse link ServiceAPIDescription to AefProfile--><g id="link_ServiceAPIDescription_AefProfile"><path codeLine="82" d="M216.6886,451.956 C220.4566,461.142 217.5576,477.077 229.4066,485 C381.8206,586.916 461.0606,495.811 637.4066,546 C643.4576,547.722 649.5706,549.589 655.7076,551.574 " fill="none" id="ServiceAPIDescription-backto-AefProfile" style="stroke:#181818;stroke-width:1.0;"/><polygon fill="none" points="205.4066,445,208.4145,451.5538,215.621,451.298,212.6131,444.7442,205.4066,445" style="stroke:#181818;stroke-width:1.0;"/></g><!--MD5=[4e3bc88c9a568add446b6dd5494f2fa8]
+reverse link AefProfile to InterfaceDescription--><g id="link_AefProfile_InterfaceDescription"><path codeLine="83" d="M1011.7466,626.946 C1078.9766,636.595 1119.1466,718 1139.2566,774.89 " fill="none" id="AefProfile-backto-InterfaceDescription" style="stroke:#181818;stroke-width:1.0;"/><polygon fill="none" points="998.4066,626,1004.1104,630.4121,1010.3769,626.844,1004.6731,622.4319,998.4066,626" style="stroke:#181818;stroke-width:1.0;"/></g><!--MD5=[e1fc5e616a37d3f1ca25b204c95c7d12]
+reverse link AefProfile to Version--><g id="link_AefProfile_Version"><path codeLine="84" d="M650.5566,700.997 C631.9826,712.817 657.3516,757.205 680.5536,790.7456 " fill="none" id="AefProfile-backto-Version" style="stroke:#181818;stroke-width:1.0;"/><polygon fill="none" points="663.4066,698,656.6549,695.4673,651.7202,700.7255,658.4719,703.2582,663.4066,698" style="stroke:#181818;stroke-width:1.0;"/></g><!--MD5=[c84e77e970627b4aa18bdf4438691386]
+reverse link APIInvokerEnrolmentDetails to ServiceAPIDescription--><g id="link_APIInvokerEnrolmentDetails_ServiceAPIDescription"><path codeLine="103" d="M36.1676,250.101 C6,261.712 35.1006,319.168 64.488,364.905 " fill="none" id="APIInvokerEnrolmentDetails-backto-ServiceAPIDescription" style="stroke:#181818;stroke-width:1.0;"/><polygon fill="none" points="49.4066,248,42.8538,244.9898,37.5549,249.8807,44.1076,252.8909,49.4066,248" style="stroke:#181818;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="42" x="45.4066" y="331.0669">APIList</text></g><!--MD5=[ec3e366bed862608bf078ba3f0de1fcf]
+reverse link APIInvokerEnrolmentDetails to OnboardingInformation--><g id="link_APIInvokerEnrolmentDetails_OnboardingInformation"><path codeLine="104" d="M413.5346,272.211 C420.7316,291.208 410.7366,339.397 401.1026,376.428 " fill="none" id="APIInvokerEnrolmentDetails-backto-OnboardingInformation" style="stroke:#181818;stroke-width:1.0;"/><polygon fill="none" points="403.4066,264,405.5483,270.8857,412.728,271.5571,410.5864,264.6714,403.4066,264" style="stroke:#181818;stroke-width:1.0;"/></g><!--MD5=[6e4c467380d725814f0428cd170ff0b7]
+@startuml
+struct APIProviderEnrolmentDetails #palegreen {
+    string apiProvDomId
+    string apiProvDomInfo
+    []APIProviderFunctionDetails apiProvFuncs
+}
+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 o- - APIProviderFunctionDetails
+APIProviderFunctionDetails::regInfo o- - RegistrationInformation
+
+struct ServiceAPIDescription #lightblue {
+    string apiId
+    string apiName (required)
+    string description
+    []AefProfile aefProfiles
+}
+note bottom 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)
+}
+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)
+end note
+note "From APIProviderFunctionDetails" as aefIdRel
+APIProviderFunctionDetails::apiProvFuncId .. aefIdRel
+aefIdRel .. AefProfile::aefId
+struct InterfaceDescription #lightblue {
+    string ipv4Address
+    string ipv6Address
+    []Operation operations
+    []SecurityMethod securityMethods
+}
+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
+}
+note right of Version::resources
+    - REQUEST_RESPONSE
+    - SUBSCRIBE_NOTIFY
+end note
+ServiceAPIDescription::aefProfiles o- - AefProfile
+AefProfile::interfaceDescriptions o- - InterfaceDescription
+AefProfile::versions o- - Version
+
+struct APIInvokerEnrolmentDetails #coral {
+    string apiInvokerId
+    string apiInvokerInformation
+    APIList apiList
+    OnboardingInformation onboardingInformation
+}
+struct OnboardingInformation #coral {
+    string apiInvokerCertificate
+    string ApiInvokerPublicKey (required)
+    string onboardingSecret
+}
+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
+
+PlantUML version 1.2022.14beta4(Unknown compile time)
+(GPL source distribution)
+Java Runtime: Java(TM) SE Runtime Environment
+JVM: Java HotSpot(TM) 64-Bit Server VM
+Default Encoding: UTF-8
+Language: en
+Country: US
+--></g></svg>
\ No newline at end of file
diff --git a/capifcore/docs/diagrams/Register Provider.svg b/capifcore/docs/diagrams/Register Provider.svg
new file mode 100644 (file)
index 0000000..f5ed6c7
--- /dev/null
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentStyleType="text/css" height="852px" preserveAspectRatio="none" style="width:1037px;height:852px;background:#FFFFFF;" version="1.1" viewBox="0 0 1037 852" width="1037px" zoomAndPan="magnify"><defs/><g><rect fill="#DDDDDD" height="840.0469" style="stroke:#181818;stroke-width:0.5;" width="540" x="485" y="6"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="109" x="700.5" y="18.0669">CAPIF Internal</text><rect fill="#98FB98" height="119.6641" style="stroke:#000000;stroke-width:1.5;" width="544.5" x="236.5" y="157.6953"/><rect fill="#ADD8E6" height="251.3281" style="stroke:#000000;stroke-width:1.5;" width="794.5" x="236.5" y="291.3594"/><rect fill="#FF7F50" height="163.9297" style="stroke:#000000;stroke-width:1.5;" width="794.5" x="236.5" y="556.6875"/><line style="stroke:#181818;stroke-width:0.5;stroke-dasharray:5.0,5.0;" x1="62" x2="62" y1="81.2969" y2="766.75"/><line style="stroke:#181818;stroke-width:0.5;stroke-dasharray:5.0,5.0;" x1="301.5" x2="301.5" y1="81.2969" y2="766.75"/><line style="stroke:#181818;stroke-width:0.5;stroke-dasharray:5.0,5.0;" x1="530" x2="530" y1="81.2969" y2="766.75"/><line style="stroke:#181818;stroke-width:0.5;stroke-dasharray:5.0,5.0;" x1="702" x2="702" y1="81.2969" y2="766.75"/><line style="stroke:#181818;stroke-width:0.5;stroke-dasharray:5.0,5.0;" x1="837" x2="837" y1="81.2969" y2="766.75"/><line style="stroke:#181818;stroke-width:0.5;stroke-dasharray:5.0,5.0;" x1="962" x2="962" y1="81.2969" y2="766.75"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="108" x="5" y="77.9951">rAppCatalogue</text><ellipse cx="62" cy="13.5" fill="#E2E2F0" rx="8" ry="8" style="stroke:#181818;stroke-width:0.5;"/><path d="M62,21.5 L62,48.5 M49,29.5 L75,29.5 M62,48.5 L49,63.5 M62,48.5 L75,63.5 " fill="none" style="stroke:#181818;stroke-width:0.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="108" x="5" y="778.7451">rAppCatalogue</text><ellipse cx="62" cy="790.5469" fill="#E2E2F0" rx="8" ry="8" style="stroke:#181818;stroke-width:0.5;"/><path d="M62,798.5469 L62,825.5469 M49,806.5469 L75,806.5469 M62,825.5469 L49,840.5469 M62,825.5469 L75,840.5469 " fill="none" style="stroke:#181818;stroke-width:0.5;"/><rect fill="#E2E2F0" height="30.2969" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="111" x="246.5" y="50"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="97" x="253.5" y="69.9951">rAppManager</text><rect fill="#E2E2F0" height="30.2969" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="111" x="246.5" y="765.75"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="97" x="253.5" y="785.7451">rAppManager</text><rect fill="#E2E2F0" height="30.2969" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="82" x="489" y="50"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="68" x="496" y="69.9951">capifcore</text><rect fill="#E2E2F0" height="30.2969" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="82" x="489" y="765.75"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="68" x="496" y="785.7451">capifcore</text><rect fill="#E2E2F0" height="30.2969" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="138" x="633" y="50"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="124" x="640" y="69.9951">providermanager</text><rect fill="#E2E2F0" height="30.2969" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="138" x="633" y="765.75"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="124" x="640" y="785.7451">providermanager</text><rect fill="#E2E2F0" height="30.2969" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="113" x="781" y="50"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="99" x="788" y="69.9951">helmmanager</text><rect fill="#E2E2F0" height="30.2969" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="113" x="781" y="765.75"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="99" x="788" y="785.7451">helmmanager</text><rect fill="#E2E2F0" height="30.2969" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="117" x="904" y="50"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="103" x="911" y="69.9951">publishservice</text><rect fill="#E2E2F0" height="30.2969" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="117" x="904" y="765.75"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="103" x="911" y="785.7451">publishservice</text><polygon fill="#181818" points="290,138.6953,300,142.6953,290,146.6953,294,142.6953" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="62" x2="296" y1="142.6953" y2="142.6953"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="134" x="69" y="107.3638">Start rApp, with rApp</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="174" x="73" y="122.4966">descriptor specifying which</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="212" x="73" y="137.6294">services to expose and consume</text><path d="M236.5,157.6953 L302.5,157.6953 L302.5,164.8281 L292.5,174.8281 L236.5,174.8281 L236.5,157.6953 " fill="#98FB98" style="stroke:#000000;stroke-width:1.5;"/><rect fill="none" height="119.6641" style="stroke:#000000;stroke-width:1.5;" width="544.5" x="236.5" y="157.6953"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="21" x="251.5" y="170.7622">alt</text><text fill="#000000" font-family="sans-serif" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="140" x="317.5" y="169.9058">[Provider Enrolment]</text><polygon fill="#181818" points="518,207.0938,528,211.0938,518,215.0938,522,211.0938" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="302" x2="524" y1="211.0938" y2="211.0938"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="141" x="309" y="190.895">Register provider with</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="183" x="313" y="206.0278">APIProviderEnrolmentDetails</text><polygon fill="#181818" points="690,236.2266,700,240.2266,690,244.2266,694,240.2266" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="530" x2="696" y1="240.2266" y2="240.2266"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="91" x="537" y="235.1606">Store provider</text><polygon fill="#181818" points="313,265.3594,303,269.3594,313,273.3594,309,269.3594" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="307" x2="529" y1="269.3594" y2="269.3594"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="191" x="319" y="264.2935">Provider with apfId and aefIds</text><path d="M236.5,291.3594 L302.5,291.3594 L302.5,298.4922 L292.5,308.4922 L236.5,308.4922 L236.5,291.3594 " fill="#ADD8E6" style="stroke:#000000;stroke-width:1.5;"/><rect fill="none" height="251.3281" style="stroke:#000000;stroke-width:1.5;" width="794.5" x="236.5" y="291.3594"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="21" x="251.5" y="304.4263">alt</text><text fill="#000000" font-family="sans-serif" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="110" x="317.5" y="303.5698">[Publish Service]</text><polygon fill="#181818" points="518,340.7578,528,344.7578,518,348.7578,522,344.7578" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="302" x2="524" y1="344.7578" y2="344.7578"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="102" x="309" y="324.5591">Publish services</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="170" x="313" y="339.6919">with ServiceAPIDescription</text><polygon fill="#181818" points="690,385.0234,700,389.0234,690,393.0234,694,389.0234" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="530" x2="696" y1="389.0234" y2="389.0234"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="129" x="537" y="368.8247">Check that AEFs are</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="144" x="541" y="383.9575">registered for provider</text><polygon fill="#181818" points="541,414.1563,531,418.1563,541,422.1563,537,418.1563" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="535" x2="701" y1="418.1563" y2="418.1563"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="17" x="547" y="413.0903">Ok</text><polygon fill="#181818" points="825.5,443.2891,835.5,447.2891,825.5,451.2891,829.5,447.2891" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="530" x2="831.5" y1="447.2891" y2="447.2891"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="136" x="537" y="442.2231">Install and start chart</text><polygon fill="#181818" points="541,472.4219,531,476.4219,541,480.4219,537,476.4219" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="535" x2="836.5" y1="476.4219" y2="476.4219"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="17" x="547" y="471.356">Ok</text><polygon fill="#181818" points="950.5,501.5547,960.5,505.5547,950.5,509.5547,954.5,505.5547" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="530" x2="956.5" y1="505.5547" y2="505.5547"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="156" x="537" y="500.4888">Store published services</text><polygon fill="#181818" points="313,530.6875,303,534.6875,313,538.6875,309,534.6875" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="307" x2="529" y1="534.6875" y2="534.6875"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="204" x="319" y="529.6216">ServiceAPIDescription with apiId</text><path d="M236.5,556.6875 L302.5,556.6875 L302.5,563.8203 L292.5,573.8203 L236.5,573.8203 L236.5,556.6875 " fill="#FF7F50" style="stroke:#000000;stroke-width:1.5;"/><rect fill="none" height="163.9297" style="stroke:#000000;stroke-width:1.5;" width="794.5" x="236.5" y="556.6875"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="21" x="251.5" y="569.7544">alt</text><text fill="#000000" font-family="sans-serif" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="119" x="317.5" y="568.8979">[Register Invoker]</text><polygon fill="#181818" points="518,606.0859,528,610.0859,518,614.0859,522,610.0859" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="302" x2="524" y1="610.0859" y2="610.0859"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="135" x="309" y="589.8872">Register invoker with</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="171" x="313" y="605.02">APIProviderFunctionDetails</text><polygon fill="#181818" points="950.5,635.2188,960.5,639.2188,950.5,643.2188,954.5,639.2188" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="530" x2="956.5" y1="639.2188" y2="639.2188"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="214" x="537" y="634.1528">Get available services for invoker</text><polygon fill="#181818" points="541,664.3516,531,668.3516,541,672.3516,537,668.3516" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="535" x2="961.5" y1="668.3516" y2="668.3516"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="252" x="547" y="663.2856">Services available for the given invoker</text><polygon fill="#181818" points="313,708.6172,303,712.6172,313,716.6172,309,712.6172" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="307" x2="529" y1="712.6172" y2="712.6172"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="140" x="319" y="692.4185">Invoker with invokerId</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="142" x="323" y="707.5513">and avialable services</text><polygon fill="#181818" points="73,744.75,63,748.75,73,752.75,69,748.75" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="67" x2="301" y1="748.75" y2="748.75"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="17" x="79" y="743.6841">Ok</text><!--MD5=[34be99d126fb5d0a2b03adbc8e1be374]
+@startuml
+actor rAppCatalogue
+participant rAppManager
+box "CAPIF Internal"
+participant capifcore
+participant providermanager
+participant helmmanager
+participant publishservice
+end box
+
+rAppCatalogue->rAppManager: Start rApp, with rApp\n descriptor specifying which\n services to expose and consume
+alt#paleGreen #paleGreen Provider Enrolment
+    rAppManager->capifcore: Register provider with\n APIProviderEnrolmentDetails
+    capifcore->providermanager:Store provider
+    capifcore->rAppManager: Provider with apfId and aefIds
+end
+alt#LightBlue #LightBlue Publish Service
+    rAppManager->capifcore: Publish services\n with ServiceAPIDescription
+    capifcore->providermanager: Check that AEFs are\n registered for provider
+    providermanager->capifcore: Ok
+    capifcore->helmmanager: Install and start chart
+    helmmanager->capifcore: Ok
+    capifcore->publishservice: Store published services
+    capifcore->rAppManager: ServiceAPIDescription with apiId
+end
+alt#coral #coral Register Invoker
+    rAppManager->capifcore: Register invoker with\n APIProviderFunctionDetails
+    capifcore->publishservice:Get available services for invoker
+    publishservice->capifcore: Services available for the given invoker
+    capifcore->rAppManager: Invoker with invokerId\n and avialable services
+end
+rAppManager->rAppCatalogue: Ok
+@enduml
+
+PlantUML version 1.2022.14beta4(Unknown compile time)
+(GPL source distribution)
+Java Runtime: Java(TM) SE Runtime Environment
+JVM: Java HotSpot(TM) 64-Bit Server VM
+Default Encoding: UTF-8
+Language: en
+Country: US
+--></g></svg>
\ No newline at end of file
diff --git a/capifcore/docs/diagrams/classdiagram.plantuml b/capifcore/docs/diagrams/classdiagram.plantuml
new file mode 100644 (file)
index 0000000..8700d97
--- /dev/null
@@ -0,0 +1,106 @@
+@startuml Information in rApp registration
+struct APIProviderEnrolmentDetails #palegreen {
+    string apiProvDomId
+    string apiProvDomInfo
+    []APIProviderFunctionDetails apiProvFuncs
+}
+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 o-- APIProviderFunctionDetails
+APIProviderFunctionDetails::regInfo o-- RegistrationInformation
+
+struct ServiceAPIDescription #lightblue {
+    string apiId
+    string apiName (required)
+    string description
+    []AefProfile aefProfiles
+}
+note bottom 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)
+}
+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)
+end note
+note "From APIProviderFunctionDetails" as aefIdRel
+APIProviderFunctionDetails::apiProvFuncId .. aefIdRel
+aefIdRel .. AefProfile::aefId
+struct InterfaceDescription #lightblue {
+    string ipv4Address
+    string ipv6Address
+    []Operation operations
+    []SecurityMethod securityMethods
+}
+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
+}
+note right of Version::resources
+    - REQUEST_RESPONSE
+    - SUBSCRIBE_NOTIFY
+end note
+ServiceAPIDescription::aefProfiles o-- AefProfile
+AefProfile::interfaceDescriptions o-- InterfaceDescription
+AefProfile::versions o-- Version
+
+struct APIInvokerEnrolmentDetails #coral {
+    string apiInvokerId
+    string apiInvokerInformation
+    APIList apiList
+    OnboardingInformation onboardingInformation
+}
+struct OnboardingInformation #coral {
+    string apiInvokerCertificate
+    string ApiInvokerPublicKey (required)
+    string onboardingSecret
+}
+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 
diff --git a/capifcore/docs/diagrams/registerpoviderandpublishservice.plantuml b/capifcore/docs/diagrams/registerpoviderandpublishservice.plantuml
new file mode 100644 (file)
index 0000000..1f8e6ac
--- /dev/null
@@ -0,0 +1,34 @@
+@startuml Register Provider
+actor rAppCatalogue
+participant rAppManager
+box "CAPIF Internal"
+participant capifcore
+participant providermanager
+participant helmmanager
+participant publishservice
+end box
+
+rAppCatalogue->rAppManager: Start rApp, with rApp\n descriptor specifying which\n services to expose and consume
+alt#paleGreen #paleGreen Provider Enrolment
+    rAppManager->capifcore: Register provider with\n APIProviderEnrolmentDetails
+    capifcore->providermanager:Store provider
+    capifcore->rAppManager: Provider with apfId and aefIds
+end
+alt#LightBlue #LightBlue Publish Service
+    rAppManager->capifcore: Publish services\n with ServiceAPIDescription
+    capifcore->providermanager: Check that AEFs are\n registered for provider
+    providermanager->capifcore: Ok
+    capifcore->helmmanager: Install and start chart
+    helmmanager->capifcore: Ok
+    capifcore->publishservice: Store published services
+    capifcore->rAppManager: ServiceAPIDescription with apiId
+end
+alt#coral #coral Register Invoker
+    rAppManager->capifcore: Register invoker with\n APIProviderFunctionDetails
+    capifcore->publishservice:Get available services for invoker
+    publishservice->capifcore: Services available for the given invoker
+    capifcore->rAppManager: Invoker with invokerId\n and avialable services
+end
+rAppManager->rAppCatalogue: Ok
+
+@enduml
\ No newline at end of file