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