RIC-641 Fixing client/server model definitions and adding client and server API
[ric-plt/xapp-frame-cpp.git] / src / model / SubscriptionInstance.h
1 /*
2 # ==================================================================================
3 # Copyright (c) 2020 HCL Technologies Limited.
4 #
5 # Licensed under the Apache License, Version 2.0 (the "License");
6 # you may not use this file except in compliance with the License.
7 # You may obtain a copy of the License at
8 #
9 # http://www.apache.org/licenses/LICENSE-2.0
10 #
11 # Unless required by applicable law or agreed to in writing, software
12 # distributed under the License is distributed on an "AS IS" BASIS,
13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 # See the License for the specific language governing permissions and
15 # limitations under the License.
16 # ==================================================================================
17 */
18 #ifndef SubscriptionInstance_H
19 #define SubscriptionInstance_H
20 #include"ModelBase.h"
21
22 namespace xapp
23 {
24         namespace model
25         {
26                 struct SubscriptionInstance : public ModelBase
27                 {
28                 public:
29                         nlohmann::json validator_schema = R"(
30                         {
31                         "$schema": "http://json-schema.org/draft-07/schema#",
32                         "title": "SubscriptionInstance",
33                         "description": "xApp service address and port",
34                         "properties": {
35                             "XappEventInstanceId": {
36                                 "type": "integer",
37                                 "minimum": 0,
38                                 "maximum": 65535
39                             },
40                             "E2EventInstanceId": {
41                                 "type": "integer",
42                                 "minimum": 0,
43                                 "maximum": 65535
44                             },
45                             "ErrorCause": {
46                                 "description": "Descriptive error cause. Empty string when no error.",
47                                 "type": "string"
48                             },
49                             "ErrorSource": {
50                                 "description": "Source of error cause.",
51                                 "type": "string",
52                                 "enum": ["SUBMGR", "RTMGR", "DBAAS", "ASN1", "E2Node"]
53                             },
54                             "TimeoutType": {
55                                 "description": "Type timeout. xApp should retry if timeout occurs.",
56                                 "type": "string",
57                                 "enum": ["E2-Timeout", "RTMGR-Timeout", "DBAAS-Timeout"]
58                             }
59                         },
60                         "required": [
61                                      "XappEventInstanceId",
62                                      "E2EventInstanceId"
63                                      ],
64                         "type": "object"
65                         })"_json;
66                         virtual nlohmann::json get_validator_schema() const { return validator_schema; }
67                         int XappEventInstanceId{ 0 };
68                         int     E2EventInstanceId{ 0 };
69                         std::string     ErrorCause{ "" };
70                         std::string     ErrorSource{ "" };
71                         std::string     TimeoutType{ "" };
72                 };
73                 void from_json(const nlohmann::json& j, SubscriptionInstance& ref);
74                 void from_json(const nlohmann::json& j, std::vector<SubscriptionInstance>& ref);
75                 void to_json(nlohmann::json& j, const SubscriptionInstance& ref);
76                 void to_json(nlohmann::json& j, const std::vector<SubscriptionInstance>& ref);
77
78         }
79         
80 }
81 #endif