RIC-641 Add client/server model definitions
[ric-plt/xapp-frame-cpp.git] / src / rest / model / SubscriptionData.h
1 #ifndef XAPP_MODEL_SubscriptionData_H
2 #define XAPP_MODEL_SubscriptionData_H
3 #include "ModelBase.h"
4 #include "SubscriptionInstance.h"
5 namespace xapp {
6 namespace model {
7
8 struct SubscriptionData: ModelBase {
9     std::vector<std::string> ClientEndpoint;
10     std::string Meid;
11     int SubscriptionID;
12     SubscriptionInstances m_SubscriptionInstances;
13
14     json validator_schema = R"(
15     {
16     "$schema": "http://json-schema.org/draft-07/schema#",
17     "title": "SubscriptionData",
18     "properties": {
19         "SubscriptionId": {
20             "type": "integer"
21         },
22         "Meid": {
23             "type": "string"
24         },
25         "ClientEndpoint": {
26             "type": "array",
27             "items": {
28                 "type": "string"
29             }
30         },
31         "SubscriptionInstances": {
32             "type": "array"
33         }
34     },
35     "required": [
36                  "SubscriptionId",
37                  "Meid",
38                  "ClientEndpoint",
39                  "SubscriptionInstances"
40                  ],
41     "type": "object"
42     })"_json;
43
44     virtual json get_validator_schema() const { return validator_schema; }
45 };
46
47 void from_json(const json& j, SubscriptionData& ref) {
48
49     std::cout << __PRETTY_FUNCTION__ << std::endl;
50     ref.validate_json(j);
51
52     j.at("SubscriptionId").get_to(ref.SubscriptionID);
53     j.at("SubscriptionInstances").get_to(ref.m_SubscriptionInstances);
54     j.at("Meid").get_to(ref.Meid);
55     j.at("ClientEndpoint").get_to(ref.ClientEndpoint);
56 }
57
58 void to_json(json& j, const SubscriptionData& ref) {
59
60     j = json {
61         {"SubscriptionId",ref.SubscriptionID},
62         {"Meid",ref.Meid},
63         {"ClientEndpoint", ref.ClientEndpoint},
64         {"SubscriptionInstances", ref.m_SubscriptionInstances}
65     };
66 }
67
68 using SubscriptionList = std::vector<SubscriptionData>;
69
70 } /*namespace model*/
71 } /*namespace xapp*/
72 #endif /*XAPP_MODEL_SubscriptionData_H*/