/**
 * Namf_Communication
 * AMF Communication Service © 2019, 3GPP Organizational Partners (ARIB, ATIS,
 * CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
 *
 * The version of the OpenAPI document: 1.1.0.alpha-1
 *
 *
 * NOTE: This class is auto generated by OpenAPI Generator
 * (https://openapi-generator.tech). https://openapi-generator.tech Do not edit
 * the class manually.
 */

#include "UeN1N2InfoSubscriptionCreateData.h"

namespace oai {
namespace amf {
namespace model {

UeN1N2InfoSubscriptionCreateData::UeN1N2InfoSubscriptionCreateData() {
  m_N2InformationClassIsSet  = false;
  m_N2NotifyCallbackUri      = "";
  m_N2NotifyCallbackUriIsSet = false;
  m_N1MessageClassIsSet      = false;
  m_N1NotifyCallbackUri      = "";
  m_N1NotifyCallbackUriIsSet = false;
  m_NfId                     = "";
  m_NfIdIsSet                = false;
  m_SupportedFeatures        = "";
  m_SupportedFeaturesIsSet   = false;
}

UeN1N2InfoSubscriptionCreateData::~UeN1N2InfoSubscriptionCreateData() {}

void UeN1N2InfoSubscriptionCreateData::validate() {
  // TODO: implement validation
}

void to_json(nlohmann::json& j, const UeN1N2InfoSubscriptionCreateData& o) {
  j = nlohmann::json();
  if (o.n2InformationClassIsSet())
    j["n2InformationClass"] = o.m_N2InformationClass;
  if (o.n2NotifyCallbackUriIsSet())
    j["n2NotifyCallbackUri"] = o.m_N2NotifyCallbackUri;
  if (o.n1MessageClassIsSet()) j["n1MessageClass"] = o.m_N1MessageClass;
  if (o.n1NotifyCallbackUriIsSet())
    j["n1NotifyCallbackUri"] = o.m_N1NotifyCallbackUri;
  if (o.nfIdIsSet()) j["nfId"] = o.m_NfId;
  if (o.supportedFeaturesIsSet())
    j["supportedFeatures"] = o.m_SupportedFeatures;
}

void from_json(const nlohmann::json& j, UeN1N2InfoSubscriptionCreateData& o) {
  if (j.find("n2InformationClass") != j.end()) {
    j.at("n2InformationClass").get_to(o.m_N2InformationClass);
    o.m_N2InformationClassIsSet = true;
  }
  if (j.find("n2NotifyCallbackUri") != j.end()) {
    j.at("n2NotifyCallbackUri").get_to(o.m_N2NotifyCallbackUri);
    o.m_N2NotifyCallbackUriIsSet = true;
  }
  if (j.find("n1MessageClass") != j.end()) {
    j.at("n1MessageClass").get_to(o.m_N1MessageClass);
    o.m_N1MessageClassIsSet = true;
  }
  if (j.find("n1NotifyCallbackUri") != j.end()) {
    j.at("n1NotifyCallbackUri").get_to(o.m_N1NotifyCallbackUri);
    o.m_N1NotifyCallbackUriIsSet = true;
  }
  if (j.find("nfId") != j.end()) {
    j.at("nfId").get_to(o.m_NfId);
    o.m_NfIdIsSet = true;
  }
  if (j.find("supportedFeatures") != j.end()) {
    j.at("supportedFeatures").get_to(o.m_SupportedFeatures);
    o.m_SupportedFeaturesIsSet = true;
  }
}

N2InformationClass UeN1N2InfoSubscriptionCreateData::getN2InformationClass()
    const {
  return m_N2InformationClass;
}
void UeN1N2InfoSubscriptionCreateData::setN2InformationClass(
    N2InformationClass const& value) {
  m_N2InformationClass      = value;
  m_N2InformationClassIsSet = true;
}
bool UeN1N2InfoSubscriptionCreateData::n2InformationClassIsSet() const {
  return m_N2InformationClassIsSet;
}
void UeN1N2InfoSubscriptionCreateData::unsetN2InformationClass() {
  m_N2InformationClassIsSet = false;
}
std::string UeN1N2InfoSubscriptionCreateData::getN2NotifyCallbackUri() const {
  return m_N2NotifyCallbackUri;
}
void UeN1N2InfoSubscriptionCreateData::setN2NotifyCallbackUri(
    std::string const& value) {
  m_N2NotifyCallbackUri      = value;
  m_N2NotifyCallbackUriIsSet = true;
}
bool UeN1N2InfoSubscriptionCreateData::n2NotifyCallbackUriIsSet() const {
  return m_N2NotifyCallbackUriIsSet;
}
void UeN1N2InfoSubscriptionCreateData::unsetN2NotifyCallbackUri() {
  m_N2NotifyCallbackUriIsSet = false;
}
N1MessageClass UeN1N2InfoSubscriptionCreateData::getN1MessageClass() const {
  return m_N1MessageClass;
}
void UeN1N2InfoSubscriptionCreateData::setN1MessageClass(
    N1MessageClass const& value) {
  m_N1MessageClass      = value;
  m_N1MessageClassIsSet = true;
}
bool UeN1N2InfoSubscriptionCreateData::n1MessageClassIsSet() const {
  return m_N1MessageClassIsSet;
}
void UeN1N2InfoSubscriptionCreateData::unsetN1MessageClass() {
  m_N1MessageClassIsSet = false;
}
std::string UeN1N2InfoSubscriptionCreateData::getN1NotifyCallbackUri() const {
  return m_N1NotifyCallbackUri;
}
void UeN1N2InfoSubscriptionCreateData::setN1NotifyCallbackUri(
    std::string const& value) {
  m_N1NotifyCallbackUri      = value;
  m_N1NotifyCallbackUriIsSet = true;
}
bool UeN1N2InfoSubscriptionCreateData::n1NotifyCallbackUriIsSet() const {
  return m_N1NotifyCallbackUriIsSet;
}
void UeN1N2InfoSubscriptionCreateData::unsetN1NotifyCallbackUri() {
  m_N1NotifyCallbackUriIsSet = false;
}
std::string UeN1N2InfoSubscriptionCreateData::getNfId() const {
  return m_NfId;
}
void UeN1N2InfoSubscriptionCreateData::setNfId(std::string const& value) {
  m_NfId      = value;
  m_NfIdIsSet = true;
}
bool UeN1N2InfoSubscriptionCreateData::nfIdIsSet() const {
  return m_NfIdIsSet;
}
void UeN1N2InfoSubscriptionCreateData::unsetNfId() {
  m_NfIdIsSet = false;
}
std::string UeN1N2InfoSubscriptionCreateData::getSupportedFeatures() const {
  return m_SupportedFeatures;
}
void UeN1N2InfoSubscriptionCreateData::setSupportedFeatures(
    std::string const& value) {
  m_SupportedFeatures      = value;
  m_SupportedFeaturesIsSet = true;
}
bool UeN1N2InfoSubscriptionCreateData::supportedFeaturesIsSet() const {
  return m_SupportedFeaturesIsSet;
}
void UeN1N2InfoSubscriptionCreateData::unsetSupportedFeatures() {
  m_SupportedFeaturesIsSet = false;
}

}  // namespace model
}  // namespace amf
}  // namespace oai
