/**
* Nudm_SDM
* Nudm Subscriber Data Management Service. � 2019, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved. 
*
* The version of the OpenAPI document: 2.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.
*/
/*
 * DnnConfiguration.h
 *
 * 
 */

#ifndef DnnConfiguration_H_
#define DnnConfiguration_H_


#include "Ambr.h"
#include "IpAddress.h"
#include "NiddInformation.h"
#include "SubscribedDefaultQos.h"
#include "PduSessionContinuityInd.h"
#include <string>
#include "UpSecurity.h"
#include "SscModes.h"
#include "PduSessionTypes.h"
#include <vector>
#include <nlohmann/json.hpp>

namespace oai {
namespace udm {
namespace model {

/// <summary>
/// 
/// </summary>
class  DnnConfiguration
{
public:
    DnnConfiguration();
    virtual ~DnnConfiguration();

    void validate();

    /////////////////////////////////////////////
    /// DnnConfiguration members

    /// <summary>
    /// 
    /// </summary>
    PduSessionTypes getPduSessionTypes() const;
    void setPduSessionTypes(PduSessionTypes const& value);
        /// <summary>
    /// 
    /// </summary>
    SscModes getSscModes() const;
    void setSscModes(SscModes const& value);
        /// <summary>
    /// 
    /// </summary>
    bool isIwkEpsInd() const;
    void setIwkEpsInd(bool const value);
    bool iwkEpsIndIsSet() const;
    void unsetIwkEpsInd();
    /// <summary>
    /// 
    /// </summary>
    SubscribedDefaultQos get5gQosProfile() const;
    void set5gQosProfile(SubscribedDefaultQos const& value);
    bool _5gQosProfileIsSet() const;
    void unset_5gQosProfile();
    /// <summary>
    /// 
    /// </summary>
    Ambr getSessionAmbr() const;
    void setSessionAmbr(Ambr const& value);
    bool sessionAmbrIsSet() const;
    void unsetSessionAmbr();
    /// <summary>
    /// 
    /// </summary>
    std::string get3gppChargingCharacteristics() const;
    void set3gppChargingCharacteristics(std::string const& value);
    bool _3gppChargingCharacteristicsIsSet() const;
    void unset_3gppChargingCharacteristics();
    /// <summary>
    /// 
    /// </summary>
    std::vector<IpAddress>& getStaticIpAddress();
    bool staticIpAddressIsSet() const;
    void unsetStaticIpAddress();
    /// <summary>
    /// 
    /// </summary>
    UpSecurity getUpSecurity() const;
    void setUpSecurity(UpSecurity const& value);
    bool upSecurityIsSet() const;
    void unsetUpSecurity();
    /// <summary>
    /// 
    /// </summary>
    PduSessionContinuityInd getPduSessionContinuityInd() const;
    void setPduSessionContinuityInd(PduSessionContinuityInd const& value);
    bool pduSessionContinuityIndIsSet() const;
    void unsetPduSessionContinuityInd();
    /// <summary>
    /// 
    /// </summary>
    bool isInvokeNefSelection() const;
    void setInvokeNefSelection(bool const value);
    bool invokeNefSelectionIsSet() const;
    void unsetInvokeNefSelection();
    /// <summary>
    /// 
    /// </summary>
    std::string getNiddNefId() const;
    void setNiddNefId(std::string const& value);
    bool niddNefIdIsSet() const;
    void unsetNiddNefId();
    /// <summary>
    /// 
    /// </summary>
    NiddInformation getNiddInfo() const;
    void setNiddInfo(NiddInformation const& value);
    bool niddInfoIsSet() const;
    void unsetNiddInfo();

    friend void to_json(nlohmann::json& j, const DnnConfiguration& o);
    friend void from_json(const nlohmann::json& j, DnnConfiguration& o);
protected:
    PduSessionTypes m_PduSessionTypes;

    SscModes m_SscModes;

    bool m_IwkEpsInd;
    bool m_IwkEpsIndIsSet;
    SubscribedDefaultQos m__5gQosProfile;
    bool m__5gQosProfileIsSet;
    Ambr m_SessionAmbr;
    bool m_SessionAmbrIsSet;
    std::string m__3gppChargingCharacteristics;
    bool m__3gppChargingCharacteristicsIsSet;
    std::vector<IpAddress> m_StaticIpAddress;
    bool m_StaticIpAddressIsSet;
    UpSecurity m_UpSecurity;
    bool m_UpSecurityIsSet;
    PduSessionContinuityInd m_PduSessionContinuityInd;
    bool m_PduSessionContinuityIndIsSet;
    bool m_InvokeNefSelection;
    bool m_InvokeNefSelectionIsSet;
    std::string m_NiddNefId;
    bool m_NiddNefIdIsSet;
    NiddInformation m_NiddInfo;
    bool m_NiddInfoIsSet;
};

}
}
}

#endif /* DnnConfiguration_H_ */
