--- /dev/null
+#ifndef XAPP_MODEL_SubscriptionParams_H
+#define XAPP_MODEL_SubscriptionParams_H
+#include "ModelBase.h"
+#include "SubscriptionDetail.h"
+#include "SubscriptionParams_ClientEndpoint.h"
+#include "SubscriptionParams_E2SubscriptionDirectives.h"
+
+namespace xapp {
+namespace model {
+
+struct SubscriptionParams: public ModelBase {
+
+ SubscriptionParams_ClientEndpoint ClientEndpoint;
+ SubscriptionParams_E2SubscriptionDirectives E2SubscriptionDirectives;
+ std::string Meid;
+ int RANFunctionID;
+ std::string SubscriptionID;
+ SubscriptionDetailsList m_SubscriptionDetailsList;
+
+ json validator_schema = R"(
+ {
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "title": "SubscriptionParams",
+ "properties": {
+ "SubscriptionId": {
+ "description": "Optional subscription ID '(Submgr allocates if not given)'",
+ "type": "string"
+ },
+ "Meid": {
+ "type": "string"
+ },
+ "RANFunctionId": {
+ "type": "integer",
+ "minimum": 0,
+ "maximum": 4095
+ }
+ },
+ "required": [
+ "ClientEndpoint",
+ "Meid",
+ "RANFunctionId",
+ "SubscriptionDetails"
+ ],
+ "type": "object"
+ })"_json;
+
+ virtual json get_validator_schema() const { return validator_schema; }
+
+};
+
+void from_json(const json& j, SubscriptionParams& ref) {
+
+ std::cout << __PRETTY_FUNCTION__ << std::endl;
+ ref.validate_json(j);
+ j.at("ClientEndpoint").get_to(ref.ClientEndpoint);
+
+ if (j.contains("E2SubscriptionDirectives"))
+ {
+ j.at("E2SubscriptionDirectives").get_to(ref.E2SubscriptionDirectives);
+ }
+
+ if (j.contains("SubscriptionId"))
+ {
+ j.at("SubscriptionId").get_to(ref.SubscriptionID);
+ }
+
+ j.at("Meid").get_to(ref.Meid);
+ j.at("RANFunctionId").get_to(ref.RANFunctionID);
+ j.at("SubscriptionDetails").get_to(ref.m_SubscriptionDetailsList);
+}
+
+void to_json(json& j, const SubscriptionParams& ref) {
+
+ j = json {
+ {"ClientEndpoint", ref.ClientEndpoint},
+ {"E2SubscriptionDirectives", ref.E2SubscriptionDirectives},
+ {"Meid", ref.Meid},
+ {"RANFunctionId", ref.RANFunctionID},
+ {"SubscriptionId", ref.SubscriptionID},
+ {"SubscriptionDetails", ref.m_SubscriptionDetailsList},
+ };
+}
+
+} /*namespace model*/
+} /*namespace xapp*/
+#endif /*XAPP_MODEL_SubscriptionParams_H*/