// SPDX-License-Identifier: GPL-3.0-or-later

// This file is auto-generated by scripts/generate_nymea_api.py
// Any changes made here will be lost when the files are regenerated.
// Do not edit manually.

#pragma once

#include <QJsonArray>
#include <QJsonObject>
#include <QJsonValue>
#include <QList>
#include <QSharedPointer>
#include <QString>
#include <QStringList>
#include <QVariant>
#include <QUuid>
#include <QtGlobal>

#include <optional>

namespace nymea::api {

inline constexpr auto kNymeaApiVersion = "10.0";

inline qint64 jsonValueToInteger(const QJsonValue &value) {
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
    return value.toInteger();
#else
    return value.toVariant().toLongLong();
#endif
}

inline quint64 jsonValueToUnsignedInteger(const QJsonValue &value) {
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
    return static_cast<quint64>(value.toInteger());
#else
    return value.toVariant().toULongLong();
#endif
}

enum class BasicType {
    Uuid,
    String,
    StringList,
    Int,
    Uint,
    Double,
    Bool,
    Variant,
    Color,
    Time,
    Object,
};

QString toString(BasicType value);
BasicType parseBasicType(const QJsonValue &value);

enum class BrowserIcon {
    BrowserIconNone,
    BrowserIconFolder,
    BrowserIconFile,
    BrowserIconMusic,
    BrowserIconVideo,
    BrowserIconPictures,
    BrowserIconApplication,
    BrowserIconDocument,
    BrowserIconPackage,
    BrowserIconFavorites,
};

QString toString(BrowserIcon value);
BrowserIcon parseBrowserIcon(const QJsonValue &value);

enum class ConfigurationError {
    ConfigurationErrorNoError,
    ConfigurationErrorInvalidTimeZone,
    ConfigurationErrorInvalidStationName,
    ConfigurationErrorInvalidId,
    ConfigurationErrorInvalidPort,
    ConfigurationErrorInvalidHostAddress,
    ConfigurationErrorInvalidDestinationDir,
    ConfigurationErrorInvalidFileName,
    ConfigurationErrorBluetoothHardwareNotAvailable,
    ConfigurationErrorInvalidCertificate,
    ConfigurationErrorUnsupported,
    ConfigurationErrorBackupFailed,
};

QString toString(ConfigurationError value);
ConfigurationError parseConfigurationError(const QJsonValue &value);

enum class CreateMethod {
    CreateMethodUser,
    CreateMethodAuto,
    CreateMethodDiscovery,
};

QString toString(CreateMethod value);
CreateMethod parseCreateMethod(const QJsonValue &value);

enum class DebugError {
    DebugErrorNoError,
};

QString toString(DebugError value);
DebugError parseDebugError(const QJsonValue &value);

enum class DiscoveryType {
    DiscoveryTypePrecise,
    DiscoveryTypeWeak,
};

QString toString(DiscoveryType value);
DiscoveryType parseDiscoveryType(const QJsonValue &value);

enum class IOType {
    IOTypeNone,
    IOTypeDigitalInput,
    IOTypeDigitalOutput,
    IOTypeAnalogInput,
    IOTypeAnalogOutput,
};

QString toString(IOType value);
IOType parseIOType(const QJsonValue &value);

enum class InputType {
    InputTypeNone,
    InputTypeTextLine,
    InputTypeTextArea,
    InputTypePassword,
    InputTypeSearch,
    InputTypeMail,
    InputTypeIPv4Address,
    InputTypeIPv6Address,
    InputTypeUrl,
    InputTypeMacAddress,
};

QString toString(InputType value);
InputType parseInputType(const QJsonValue &value);

enum class LoggingCategoryType {
    LoggingCategoryTypeSystem,
    LoggingCategoryTypePlugin,
    LoggingCategoryTypeCustom,
};

QString toString(LoggingCategoryType value);
LoggingCategoryType parseLoggingCategoryType(const QJsonValue &value);

enum class LoggingLevel {
    LoggingLevelCritical,
    LoggingLevelWarning,
    LoggingLevelInfo,
    LoggingLevelDebug,
};

QString toString(LoggingLevel value);
LoggingLevel parseLoggingLevel(const QJsonValue &value);

enum class MediaBrowserIcon {
    MediaBrowserIconNone,
    MediaBrowserIconPlaylist,
    MediaBrowserIconRecentlyPlayed,
    MediaBrowserIconLibrary,
    MediaBrowserIconMusicLibrary,
    MediaBrowserIconVideoLibrary,
    MediaBrowserIconPictureLibrary,
    MediaBrowserIconDisk,
    MediaBrowserIconUSB,
    MediaBrowserIconNetwork,
    MediaBrowserIconAux,
    MediaBrowserIconBluetooth,
    MediaBrowserIconSpotify,
    MediaBrowserIconAmazon,
    MediaBrowserIconTuneIn,
    MediaBrowserIconSiriusXM,
    MediaBrowserIconVTuner,
    MediaBrowserIconTidal,
    MediaBrowserIconAirable,
    MediaBrowserIconDeezer,
    MediaBrowserIconNapster,
    MediaBrowserIconSoundCloud,
    MediaBrowserIconRadioParadise,
};

QString toString(MediaBrowserIcon value);
MediaBrowserIcon parseMediaBrowserIcon(const QJsonValue &value);

enum class ModbusRtuError {
    ModbusRtuErrorNoError,
    ModbusRtuErrorNotAvailable,
    ModbusRtuErrorUuidNotFound,
    ModbusRtuErrorHardwareNotFound,
    ModbusRtuErrorResourceBusy,
    ModbusRtuErrorNotSupported,
    ModbusRtuErrorInvalidTimeoutValue,
    ModbusRtuErrorConnectionFailed,
};

QString toString(ModbusRtuError value);
ModbusRtuError parseModbusRtuError(const QJsonValue &value);

enum class NetworkDeviceState {
    NetworkDeviceStateUnknown,
    NetworkDeviceStateUnmanaged,
    NetworkDeviceStateUnavailable,
    NetworkDeviceStateDisconnected,
    NetworkDeviceStatePrepare,
    NetworkDeviceStateConfig,
    NetworkDeviceStateNeedAuth,
    NetworkDeviceStateIpConfig,
    NetworkDeviceStateIpCheck,
    NetworkDeviceStateSecondaries,
    NetworkDeviceStateActivated,
    NetworkDeviceStateDeactivating,
    NetworkDeviceStateFailed,
};

QString toString(NetworkDeviceState value);
NetworkDeviceState parseNetworkDeviceState(const QJsonValue &value);

enum class NetworkManagerError {
    NetworkManagerErrorNoError,
    NetworkManagerErrorUnknownError,
    NetworkManagerErrorWirelessNotAvailable,
    NetworkManagerErrorAccessPointNotFound,
    NetworkManagerErrorNetworkInterfaceNotFound,
    NetworkManagerErrorInvalidNetworkDeviceType,
    NetworkManagerErrorWirelessNetworkingDisabled,
    NetworkManagerErrorWirelessConnectionFailed,
    NetworkManagerErrorNetworkingDisabled,
    NetworkManagerErrorNetworkManagerNotAvailable,
    NetworkManagerErrorInvalidConfiguration,
    NetworkManagerErrorUnsupportedFeature,
};

QString toString(NetworkManagerError value);
NetworkManagerError parseNetworkManagerError(const QJsonValue &value);

enum class NetworkManagerState {
    NetworkManagerStateUnknown,
    NetworkManagerStateAsleep,
    NetworkManagerStateDisconnected,
    NetworkManagerStateDisconnecting,
    NetworkManagerStateConnecting,
    NetworkManagerStateConnectedLocal,
    NetworkManagerStateConnectedSite,
    NetworkManagerStateConnectedGlobal,
};

QString toString(NetworkManagerState value);
NetworkManagerState parseNetworkManagerState(const QJsonValue &value);

enum class PermissionScope {
    PermissionScopeNone,
    PermissionScopeControlThings,
    PermissionScopeConfigureThings,
    PermissionScopeAccessAllThings,
    PermissionScopeExecuteRules,
    PermissionScopeConfigureRules,
    PermissionScopeAdmin,
};

QString toString(PermissionScope value);
PermissionScope parsePermissionScope(const QJsonValue &value);

enum class RepeatingMode {
    RepeatingModeNone,
    RepeatingModeHourly,
    RepeatingModeDaily,
    RepeatingModeWeekly,
    RepeatingModeMonthly,
    RepeatingModeYearly,
};

QString toString(RepeatingMode value);
RepeatingMode parseRepeatingMode(const QJsonValue &value);

enum class RuleError {
    RuleErrorNoError,
    RuleErrorInvalidRuleId,
    RuleErrorRuleNotFound,
    RuleErrorThingNotFound,
    RuleErrorEventTypeNotFound,
    RuleErrorStateTypeNotFound,
    RuleErrorActionTypeNotFound,
    RuleErrorInvalidParameter,
    RuleErrorInvalidRuleFormat,
    RuleErrorMissingParameter,
    RuleErrorInvalidRuleActionParameter,
    RuleErrorInvalidStateEvaluatorValue,
    RuleErrorTypesNotMatching,
    RuleErrorNotExecutable,
    RuleErrorInvalidTimeDescriptor,
    RuleErrorInvalidRepeatingOption,
    RuleErrorInvalidCalendarItem,
    RuleErrorInvalidTimeEventItem,
    RuleErrorContainsEventBasesAction,
    RuleErrorNoExitActions,
    RuleErrorInterfaceNotFound,
};

QString toString(RuleError value);
RuleError parseRuleError(const QJsonValue &value);

enum class SampleRate {
    SampleRateAny,
    SampleRate1Min,
    SampleRate15Mins,
    SampleRate1Hour,
    SampleRate3Hours,
    SampleRate1Day,
    SampleRate1Week,
    SampleRate1Month,
    SampleRate1Year,
};

QString toString(SampleRate value);
SampleRate parseSampleRate(const QJsonValue &value);

enum class ScriptError {
    ScriptErrorNoError,
    ScriptErrorScriptNotFound,
    ScriptErrorInvalidScript,
    ScriptErrorHardwareFailure,
};

QString toString(ScriptError value);
ScriptError parseScriptError(const QJsonValue &value);

enum class ScriptMessageType {
    ScriptMessageTypeLog,
    ScriptMessageTypeWarning,
};

QString toString(ScriptMessageType value);
ScriptMessageType parseScriptMessageType(const QJsonValue &value);

enum class SerialPortDataBits {
    SerialPortDataBitsData5,
    SerialPortDataBitsData6,
    SerialPortDataBitsData7,
    SerialPortDataBitsData8,
    SerialPortDataBitsUnknownDataBits,
};

QString toString(SerialPortDataBits value);
SerialPortDataBits parseSerialPortDataBits(const QJsonValue &value);

enum class SerialPortParity {
    SerialPortParityNoParity,
    SerialPortParityEvenParity,
    SerialPortParityOddParity,
    SerialPortParitySpaceParity,
    SerialPortParityMarkParity,
    SerialPortParityUnknownParity,
};

QString toString(SerialPortParity value);
SerialPortParity parseSerialPortParity(const QJsonValue &value);

enum class SerialPortStopBits {
    SerialPortStopBitsOneStop,
    SerialPortStopBitsOneAndHalfStop,
    SerialPortStopBitsTwoStop,
    SerialPortStopBitsUnknownStopBits,
};

QString toString(SerialPortStopBits value);
SerialPortStopBits parseSerialPortStopBits(const QJsonValue &value);

enum class SetupMethod {
    SetupMethodJustAdd,
    SetupMethodDisplayPin,
    SetupMethodEnterPin,
    SetupMethodPushButton,
    SetupMethodUserAndPassword,
    SetupMethodOAuth,
};

QString toString(SetupMethod value);
SetupMethod parseSetupMethod(const QJsonValue &value);

enum class SortOrder {
    AscendingOrder,
    DescendingOrder,
};

QString toString(SortOrder value);
SortOrder parseSortOrder(const QJsonValue &value);

enum class StateOperator {
    StateOperatorAnd,
    StateOperatorOr,
};

QString toString(StateOperator value);
StateOperator parseStateOperator(const QJsonValue &value);

enum class StateValueFilter {
    StateValueFilterNone,
    StateValueFilterAdaptive,
};

QString toString(StateValueFilter value);
StateValueFilter parseStateValueFilter(const QJsonValue &value);

enum class TagError {
    TagErrorNoError,
    TagErrorThingNotFound,
    TagErrorRuleNotFound,
    TagErrorTagNotFound,
};

QString toString(TagError value);
TagError parseTagError(const QJsonValue &value);

enum class ThingError {
    ThingErrorNoError,
    ThingErrorPluginNotFound,
    ThingErrorVendorNotFound,
    ThingErrorThingNotFound,
    ThingErrorThingClassNotFound,
    ThingErrorActionTypeNotFound,
    ThingErrorStateTypeNotFound,
    ThingErrorEventTypeNotFound,
    ThingErrorThingDescriptorNotFound,
    ThingErrorMissingParameter,
    ThingErrorInvalidParameter,
    ThingErrorSetupFailed,
    ThingErrorDuplicateUuid,
    ThingErrorCreationMethodNotSupported,
    ThingErrorSetupMethodNotSupported,
    ThingErrorHardwareNotAvailable,
    ThingErrorHardwareFailure,
    ThingErrorAuthenticationFailure,
    ThingErrorThingInUse,
    ThingErrorThingInRule,
    ThingErrorThingIsChild,
    ThingErrorPairingTransactionIdNotFound,
    ThingErrorParameterNotWritable,
    ThingErrorItemNotFound,
    ThingErrorItemNotExecutable,
    ThingErrorUnsupportedFeature,
    ThingErrorTimeout,
};

QString toString(ThingError value);
ThingError parseThingError(const QJsonValue &value);

enum class ThingSetupStatus {
    ThingSetupStatusNone,
    ThingSetupStatusInProgress,
    ThingSetupStatusComplete,
    ThingSetupStatusFailed,
};

QString toString(ThingSetupStatus value);
ThingSetupStatus parseThingSetupStatus(const QJsonValue &value);

enum class Unit {
    UnitNone,
    UnitMilliSeconds,
    UnitSeconds,
    UnitMinutes,
    UnitHours,
    UnitUnixTime,
    UnitMeterPerSecond,
    UnitKiloMeterPerHour,
    UnitDegree,
    UnitRadiant,
    UnitDegreeCelsius,
    UnitDegreeKelvin,
    UnitMired,
    UnitMilliBar,
    UnitBar,
    UnitPascal,
    UnitHectoPascal,
    UnitAtmosphere,
    UnitLumen,
    UnitLux,
    UnitCandela,
    UnitMilliMeter,
    UnitCentiMeter,
    UnitMeter,
    UnitKiloMeter,
    UnitGram,
    UnitKiloGram,
    UnitDezibel,
    UnitBpm,
    UnitKiloByte,
    UnitMegaByte,
    UnitGigaByte,
    UnitTeraByte,
    UnitMilliWatt,
    UnitWatt,
    UnitKiloWatt,
    UnitKiloWattHour,
    UnitEuroPerMegaWattHour,
    UnitEuroCentPerKiloWattHour,
    UnitPercentage,
    UnitPartsPerMillion,
    UnitPartsPerBillion,
    UnitEuro,
    UnitDollar,
    UnitHertz,
    UnitAmpere,
    UnitMilliAmpere,
    UnitVolt,
    UnitMilliVolt,
    UnitVoltAmpere,
    UnitVoltAmpereReactive,
    UnitAmpereHour,
    UnitOhm,
    UnitMicroSiemensPerCentimeter,
    UnitDuration,
    UnitNewton,
    UnitNewtonMeter,
    UnitRpm,
    UnitMilligramPerLiter,
    UnitLiter,
    UnitMicroGrammPerCubicalMeter,
};

QString toString(Unit value);
Unit parseUnit(const QJsonValue &value);

enum class UpdateType {
    UpdateTypeNone,
    UpdateTypeSystem,
    UpdateTypePackageManager,
};

QString toString(UpdateType value);
UpdateType parseUpdateType(const QJsonValue &value);

enum class UserError {
    UserErrorNoError,
    UserErrorBackendError,
    UserErrorInvalidUserId,
    UserErrorDuplicateUserId,
    UserErrorBadPassword,
    UserErrorTokenNotFound,
    UserErrorPermissionDenied,
    UserErrorInconsistantScopes,
};

QString toString(UserError value);
UserError parseUserError(const QJsonValue &value);

enum class ValueOperator {
    ValueOperatorEquals,
    ValueOperatorNotEquals,
    ValueOperatorLess,
    ValueOperatorGreater,
    ValueOperatorLessOrEqual,
    ValueOperatorGreaterOrEqual,
};

QString toString(ValueOperator value);
ValueOperator parseValueOperator(const QJsonValue &value);

enum class WiredNetworkConnectionType {
    WiredNetworkConnectionTypeDHCP,
    WiredNetworkConnectionTypeManual,
    WiredNetworkConnectionTypeShared,
};

QString toString(WiredNetworkConnectionType value);
WiredNetworkConnectionType parseWiredNetworkConnectionType(const QJsonValue &value);

enum class WirelessCapability {
    WirelessCapabilityNone,
    WirelessCapabilityCipherWEP40,
    WirelessCapabilityCipherWEP104,
    WirelessCapabilityCipherTKIP,
    WirelessCapabilityCipherCCMP,
    WirelessCapabilityWPA,
    WirelessCapabilityRSN,
    WirelessCapabilityAP,
    WirelessCapabilityAdHoc,
    WirelessCapabilityFreqValid,
    WirelessCapability2Ghz,
    WirelessCapability5Ghz,
};

QString toString(WirelessCapability value);
WirelessCapability parseWirelessCapability(const QJsonValue &value);

enum class WirelessMode {
    WirelessModeUnknown,
    WirelessModeAdhoc,
    WirelessModeInfrastructure,
    WirelessModeAccessPoint,
};

QString toString(WirelessMode value);
WirelessMode parseWirelessMode(const QJsonValue &value);

enum class ZWaveDeviceType {
    ZWaveDeviceTypeUnknown,
    ZWaveDeviceTypeCentralController,
    ZWaveDeviceTypeDisplaySimple,
    ZWaveDeviceTypeDoorLockKeypad,
    ZWaveDeviceTypeFanSwitch,
    ZWaveDeviceTypeGateway,
    ZWaveDeviceTypeLightDimmerSwitch,
    ZWaveDeviceTypeOnOffPowerSwitch,
    ZWaveDeviceTypePowerStrip,
    ZWaveDeviceTypeRemoteControlAV,
    ZWaveDeviceTypeRemoteControlMultiPurpose,
    ZWaveDeviceTypeRemoteControlSimple,
    ZWaveDeviceTypeKeyFob,
    ZWaveDeviceTypeSensorNotification,
    ZWaveDeviceTypeSmokeAlarmSensor,
    ZWaveDeviceTypeCOAlarmSensor,
    ZWaveDeviceTypeCO2AlarmSensor,
    ZWaveDeviceTypeHeatAlarmSensor,
    ZWaveDeviceTypeWaterAlarmSensor,
    ZWaveDeviceTypeAccessControlSensor,
    ZWaveDeviceTypeHomeSecuritySensor,
    ZWaveDeviceTypePowerManagementSensor,
    ZWaveDeviceTypeSystemSensor,
    ZWaveDeviceTypeEmergencyAlarmSensor,
    ZWaveDeviceTypeClockSensor,
    ZWaveDeviceTypeMultiDeviceAlarmSensor,
    ZWaveDeviceTypeMultilevelSensor,
    ZWaveDeviceTypeAirTemperatureSensor,
    ZWaveDeviceTypeGeneralPurposeSensor,
    ZWaveDeviceTypeLuminanceSensor,
    ZWaveDeviceTypePowerSensor,
    ZWaveDeviceTypeHumiditySensor,
    ZWaveDeviceTypeVelocitySensor,
    ZWaveDeviceTypeDirectionSensor,
    ZWaveDeviceTypeAtmosphericPressureSensor,
    ZWaveDeviceTypeBarometricPressureSensor,
    ZWaveDeviceTypeSolarRadiationSensor,
    ZWaveDeviceTypeDewPointSensor,
    ZWaveDeviceTypeRainRateSensor,
    ZWaveDeviceTypeTideLevelSensor,
    ZWaveDeviceTypeWeightSensor,
    ZWaveDeviceTypeVoltageSensor,
    ZWaveDeviceTypeCurrentSensor,
    ZWaveDeviceTypeCO2LevelSensor,
    ZWaveDeviceTypeAirFlowSensor,
    ZWaveDeviceTypeTankCapacitySensor,
    ZWaveDeviceTypeDistanceSensor,
    ZWaveDeviceTypeAnglePositionSensor,
    ZWaveDeviceTypeRotationSensor,
    ZWaveDeviceTypeWaterTemperatureSensor,
    ZWaveDeviceTypeSoilTemperatureSensor,
    ZWaveDeviceTypeSeismicIntensitySensor,
    ZWaveDeviceTypeSeismicMagnitudeSensor,
    ZWaveDeviceTypeUltraVioletSensor,
    ZWaveDeviceTypeElectricalResistivitySensor,
    ZWaveDeviceTypeElectricalConductivitySensor,
    ZWaveDeviceTypeLoudnessSensor,
    ZWaveDeviceTypeMoistureSensor,
    ZWaveDeviceTypeFrequencySensor,
    ZWaveDeviceTypeTimeSensor,
    ZWaveDeviceTypeTargetTemperatureSensor,
    ZWaveDeviceTypeMultiDeviceSensor,
    ZWaveDeviceTypeSetTopBox,
    ZWaveDeviceTypeSiren,
    ZWaveDeviceTypeSubEnergyMeter,
    ZWaveDeviceTypeSubSystemController,
    ZWaveDeviceTypeThermostatHVAC,
    ZWaveDeviceTypeThermostatSetback,
    ZWaveDeviceTypeTV,
    ZWaveDeviceTypeValveOpenClose,
    ZWaveDeviceTypeWallController,
    ZWaveDeviceTypeWholeHomeMeterSimple,
    ZWaveDeviceTypeWindowCoveringNoPosEndpoint,
    ZWaveDeviceTypeWindowCoveringEndpointAware,
    ZWaveDeviceTypeWindowCoveringPositionEndpointAware,
};

QString toString(ZWaveDeviceType value);
ZWaveDeviceType parseZWaveDeviceType(const QJsonValue &value);

enum class ZWaveError {
    ZWaveErrorNoError,
    ZWaveErrorInUse,
    ZWaveErrorNetworkUuidNotFound,
    ZWaveErrorNodeIdNotFound,
    ZWaveErrorTimeout,
    ZWaveErrorBackendError,
};

QString toString(ZWaveError value);
ZWaveError parseZWaveError(const QJsonValue &value);

enum class ZWaveNetworkState {
    ZWaveNetworkStateOffline,
    ZWaveNetworkStateStarting,
    ZWaveNetworkStateOnline,
    ZWaveNetworkStateError,
};

QString toString(ZWaveNetworkState value);
ZWaveNetworkState parseZWaveNetworkState(const QJsonValue &value);

enum class ZWaveNodeRole {
    ZWaveNodeRoleUnknown,
    ZWaveNodeRoleCentralController,
    ZWaveNodeRoleSubController,
    ZWaveNodeRolePortableController,
    ZWaveNodeRolePortableReportingController,
    ZWaveNodeRolePortableSlave,
    ZWaveNodeRoleAlwaysOnSlabe,
    ZWaveNodeRoleReportingSleepingSlave,
    ZWaveNodeRoleListeningSleepingSlave,
};

QString toString(ZWaveNodeRole value);
ZWaveNodeRole parseZWaveNodeRole(const QJsonValue &value);

enum class ZWaveNodeType {
    ZWaveNodeTypeUnknown,
    ZWaveNodeTypeController,
    ZWaveNodeTypeStaticController,
    ZWaveNodeTypeSlave,
    ZWaveNodeTypeRoutingSlave,
};

QString toString(ZWaveNodeType value);
ZWaveNodeType parseZWaveNodeType(const QJsonValue &value);

enum class ZigbeeClusterDirection {
    ZigbeeClusterDirectionServer,
    ZigbeeClusterDirectionClient,
};

QString toString(ZigbeeClusterDirection value);
ZigbeeClusterDirection parseZigbeeClusterDirection(const QJsonValue &value);

enum class ZigbeeError {
    ZigbeeErrorNoError,
    ZigbeeErrorAdapterNotAvailable,
    ZigbeeErrorAdapterAlreadyInUse,
    ZigbeeErrorNetworkUuidNotFound,
    ZigbeeErrorDurationOutOfRange,
    ZigbeeErrorNetworkOffline,
    ZigbeeErrorUnknownBackend,
    ZigbeeErrorNodeNotFound,
    ZigbeeErrorForbidden,
    ZigbeeErrorInvalidChannel,
    ZigbeeErrorNetworkError,
    ZigbeeErrorTimeoutError,
    ZigbeeErrorNotSupported,
};

QString toString(ZigbeeError value);
ZigbeeError parseZigbeeError(const QJsonValue &value);

enum class ZigbeeNetworkState {
    ZigbeeNetworkStateOffline,
    ZigbeeNetworkStateStarting,
    ZigbeeNetworkStateUpdating,
    ZigbeeNetworkStateOnline,
    ZigbeeNetworkStateError,
};

QString toString(ZigbeeNetworkState value);
ZigbeeNetworkState parseZigbeeNetworkState(const QJsonValue &value);

enum class ZigbeeNodeRelationship {
    ZigbeeNodeRelationshipParent,
    ZigbeeNodeRelationshipChild,
    ZigbeeNodeRelationshipSibling,
    ZigbeeNodeRelationshipNone,
    ZigbeeNodeRelationshipPreviousChild,
};

QString toString(ZigbeeNodeRelationship value);
ZigbeeNodeRelationship parseZigbeeNodeRelationship(const QJsonValue &value);

enum class ZigbeeNodeRouteStatus {
    ZigbeeNodeRouteStatusActive,
    ZigbeeNodeRouteStatusDiscoveryUnderway,
    ZigbeeNodeRouteStatusDiscoveryFailed,
    ZigbeeNodeRouteStatusInactive,
    ZigbeeNodeRouteStatusValidationUnderway,
};

QString toString(ZigbeeNodeRouteStatus value);
ZigbeeNodeRouteStatus parseZigbeeNodeRouteStatus(const QJsonValue &value);

enum class ZigbeeNodeState {
    ZigbeeNodeStateUninitialized,
    ZigbeeNodeStateInitializing,
    ZigbeeNodeStateInitialized,
    ZigbeeNodeStateHandled,
};

QString toString(ZigbeeNodeState value);
ZigbeeNodeState parseZigbeeNodeState(const QJsonValue &value);

enum class ZigbeeNodeType {
    ZigbeeNodeTypeCoordinator,
    ZigbeeNodeTypeRouter,
    ZigbeeNodeTypeEndDevice,
};

QString toString(ZigbeeNodeType value);
ZigbeeNodeType parseZigbeeNodeType(const QJsonValue &value);

class Action;
class ActionType;
class AppDataChangedNotificationParams;
class AppDataLoadParams;
class AppDataLoadResponse;
class AppDataStoreParams;
class AppDataStoreResponse;
class BackupFile;
class BrowserItem;
class CacheHash;
class CalendarItem;
class ConfigurationBackupConfigurationChangedNotificationParams;
class ConfigurationBackupFilesChangedNotificationParams;
class ConfigurationBasicConfigurationChangedNotificationParams;
class ConfigurationBasicConfigurationChangedNotificationParamsBasicConfiguration;
class ConfigurationBasicConfigurationChangedNotificationParamsBasicConfigurationLocation;
class ConfigurationCreateAndDownloadBackupParams;
class ConfigurationCreateAndDownloadBackupResponse;
class ConfigurationCreateBackupParams;
class ConfigurationCreateBackupResponse;
class ConfigurationDeleteBackupFileParams;
class ConfigurationDeleteBackupFileResponse;
class ConfigurationDeleteMqttPolicyParams;
class ConfigurationDeleteMqttPolicyResponse;
class ConfigurationDeleteMqttServerConfigurationParams;
class ConfigurationDeleteMqttServerConfigurationResponse;
class ConfigurationDeleteTcpServerConfigurationParams;
class ConfigurationDeleteTcpServerConfigurationResponse;
class ConfigurationDeleteTunnelProxyServerConfigurationParams;
class ConfigurationDeleteTunnelProxyServerConfigurationResponse;
class ConfigurationDeleteWebServerConfigurationParams;
class ConfigurationDeleteWebServerConfigurationResponse;
class ConfigurationDeleteWebSocketServerConfigurationParams;
class ConfigurationDeleteWebSocketServerConfigurationResponse;
class ConfigurationDownloadBackupFileParams;
class ConfigurationDownloadBackupFileResponse;
class ConfigurationGetAvailableLanguagesParams;
class ConfigurationGetAvailableLanguagesResponse;
class ConfigurationGetBackupFilesParams;
class ConfigurationGetBackupFilesResponse;
class ConfigurationGetConfigurationsParams;
class ConfigurationGetConfigurationsResponse;
class ConfigurationGetConfigurationsResponseBackupConfigurations;
class ConfigurationGetConfigurationsResponseBasicConfiguration;
class ConfigurationGetConfigurationsResponseBasicConfigurationLocation;
class ConfigurationGetMqttPoliciesParams;
class ConfigurationGetMqttPoliciesResponse;
class ConfigurationGetMqttServerConfigurationsParams;
class ConfigurationGetMqttServerConfigurationsResponse;
class ConfigurationGetTimeZonesParams;
class ConfigurationGetTimeZonesResponse;
class ConfigurationMqttPolicyChangedNotificationParams;
class ConfigurationMqttPolicyRemovedNotificationParams;
class ConfigurationMqttServerConfigurationChangedNotificationParams;
class ConfigurationMqttServerConfigurationRemovedNotificationParams;
class ConfigurationRestoreBackupFileParams;
class ConfigurationRestoreBackupFileResponse;
class ConfigurationSetBackupConfigurationParams;
class ConfigurationSetBackupConfigurationResponse;
class ConfigurationSetDebugServerEnabledParams;
class ConfigurationSetDebugServerEnabledResponse;
class ConfigurationSetLanguageParams;
class ConfigurationSetLanguageResponse;
class ConfigurationSetLocationParams;
class ConfigurationSetLocationParamsLocation;
class ConfigurationSetLocationResponse;
class ConfigurationSetMqttPolicyParams;
class ConfigurationSetMqttPolicyResponse;
class ConfigurationSetMqttServerConfigurationParams;
class ConfigurationSetMqttServerConfigurationResponse;
class ConfigurationSetServerNameParams;
class ConfigurationSetServerNameResponse;
class ConfigurationSetTcpServerConfigurationParams;
class ConfigurationSetTcpServerConfigurationResponse;
class ConfigurationSetTimeZoneParams;
class ConfigurationSetTimeZoneResponse;
class ConfigurationSetTunnelProxyServerConfigurationParams;
class ConfigurationSetTunnelProxyServerConfigurationResponse;
class ConfigurationSetWebServerConfigurationParams;
class ConfigurationSetWebServerConfigurationResponse;
class ConfigurationSetWebSocketServerConfigurationParams;
class ConfigurationSetWebSocketServerConfigurationResponse;
class ConfigurationTcpServerConfigurationChangedNotificationParams;
class ConfigurationTcpServerConfigurationRemovedNotificationParams;
class ConfigurationTunnelProxyServerConfigurationChangedNotificationParams;
class ConfigurationTunnelProxyServerConfigurationRemovedNotificationParams;
class ConfigurationUploadAndRestoreBackupParams;
class ConfigurationUploadAndRestoreBackupResponse;
class ConfigurationWebServerConfigurationChangedNotificationParams;
class ConfigurationWebServerConfigurationRemovedNotificationParams;
class ConfigurationWebSocketServerConfigurationChangedNotificationParams;
class ConfigurationWebSocketServerConfigurationRemovedNotificationParams;
class DebugGetLoggingCategoriesParams;
class DebugGetLoggingCategoriesResponse;
class DebugLoggingCategoryLevelChangedNotificationParams;
class DebugSetLoggingCategoryLevelParams;
class DebugSetLoggingCategoryLevelResponse;
class Event;
class EventDescriptor;
class EventType;
class Experience;
class IOConnection;
class IntegrationPlugin;
class IntegrationsAddThingParams;
class IntegrationsAddThingResponse;
class IntegrationsBrowseThingParams;
class IntegrationsBrowseThingResponse;
class IntegrationsConfirmPairingParams;
class IntegrationsConfirmPairingResponse;
class IntegrationsConnectIOParams;
class IntegrationsConnectIOResponse;
class IntegrationsDisconnectIOParams;
class IntegrationsDisconnectIOResponse;
class IntegrationsDiscoverThingsParams;
class IntegrationsDiscoverThingsResponse;
class IntegrationsEditThingParams;
class IntegrationsEditThingResponse;
class IntegrationsEventTriggeredNotificationParams;
class IntegrationsExecuteActionParams;
class IntegrationsExecuteActionResponse;
class IntegrationsExecuteBrowserItemActionParams;
class IntegrationsExecuteBrowserItemActionResponse;
class IntegrationsExecuteBrowserItemParams;
class IntegrationsExecuteBrowserItemResponse;
class IntegrationsGetActionTypesParams;
class IntegrationsGetActionTypesResponse;
class IntegrationsGetBrowserItemParams;
class IntegrationsGetBrowserItemResponse;
class IntegrationsGetEventTypesParams;
class IntegrationsGetEventTypesResponse;
class IntegrationsGetIOConnectionsParams;
class IntegrationsGetIOConnectionsResponse;
class IntegrationsGetPluginConfigurationParams;
class IntegrationsGetPluginConfigurationResponse;
class IntegrationsGetPluginsParams;
class IntegrationsGetPluginsResponse;
class IntegrationsGetStateTypesParams;
class IntegrationsGetStateTypesResponse;
class IntegrationsGetStateValueParams;
class IntegrationsGetStateValueResponse;
class IntegrationsGetStateValuesParams;
class IntegrationsGetStateValuesResponse;
class IntegrationsGetThingClassesParams;
class IntegrationsGetThingClassesResponse;
class IntegrationsGetThingsParams;
class IntegrationsGetThingsResponse;
class IntegrationsGetVendorsParams;
class IntegrationsGetVendorsResponse;
class IntegrationsIOConnectionAddedNotificationParams;
class IntegrationsIOConnectionRemovedNotificationParams;
class IntegrationsPairThingParams;
class IntegrationsPairThingResponse;
class IntegrationsPluginConfigurationChangedNotificationParams;
class IntegrationsReconfigureThingParams;
class IntegrationsReconfigureThingResponse;
class IntegrationsRemoveThingParams;
class IntegrationsRemoveThingResponse;
class IntegrationsSetActionLoggingParams;
class IntegrationsSetActionLoggingResponse;
class IntegrationsSetEventLoggingParams;
class IntegrationsSetEventLoggingResponse;
class IntegrationsSetPluginConfigurationParams;
class IntegrationsSetPluginConfigurationResponse;
class IntegrationsSetStateFilterParams;
class IntegrationsSetStateFilterResponse;
class IntegrationsSetStateLoggingParams;
class IntegrationsSetStateLoggingResponse;
class IntegrationsSetThingSettingsParams;
class IntegrationsSetThingSettingsResponse;
class IntegrationsStateChangedNotificationParams;
class IntegrationsThingAddedNotificationParams;
class IntegrationsThingChangedNotificationParams;
class IntegrationsThingRemovedNotificationParams;
class IntegrationsThingSettingChangedNotificationParams;
class JSONRPCAuthenticateParams;
class JSONRPCAuthenticateResponse;
class JSONRPCCreateUserParams;
class JSONRPCCreateUserResponse;
class JSONRPCHelloParams;
class JSONRPCHelloResponse;
class JSONRPCIntrospectParams;
class JSONRPCIntrospectResponse;
class JSONRPCKeepAliveParams;
class JSONRPCKeepAliveResponse;
class JSONRPCPushButtonAuthFinishedNotificationParams;
class JSONRPCRequestPushButtonAuthParams;
class JSONRPCRequestPushButtonAuthResponse;
class JSONRPCSetNotificationStatusParams;
class JSONRPCSetNotificationStatusResponse;
class JSONRPCVersionParams;
class JSONRPCVersionResponse;
class LogEntry;
class LoggingCategory;
class LoggingGetLogEntriesParams;
class LoggingGetLogEntriesResponse;
class LoggingLogEntryAddedNotificationParams;
class ModbusRtuAddModbusRtuMasterParams;
class ModbusRtuAddModbusRtuMasterResponse;
class ModbusRtuGetModbusRtuMastersParams;
class ModbusRtuGetModbusRtuMastersResponse;
class ModbusRtuGetSerialPortsParams;
class ModbusRtuGetSerialPortsResponse;
class ModbusRtuMaster;
class ModbusRtuModbusRtuMasterAddedNotificationParams;
class ModbusRtuModbusRtuMasterChangedNotificationParams;
class ModbusRtuModbusRtuMasterRemovedNotificationParams;
class ModbusRtuReconfigureModbusRtuMasterParams;
class ModbusRtuReconfigureModbusRtuMasterResponse;
class ModbusRtuRemoveModbusRtuMasterParams;
class ModbusRtuRemoveModbusRtuMasterResponse;
class ModbusRtuSerialPortAddedNotificationParams;
class ModbusRtuSerialPortRemovedNotificationParams;
class MqttPolicy;
class NetworkManagerConnectWifiNetworkParams;
class NetworkManagerConnectWifiNetworkResponse;
class NetworkManagerCreateWiredConnectionParams;
class NetworkManagerCreateWiredConnectionResponse;
class NetworkManagerDisconnectInterfaceParams;
class NetworkManagerDisconnectInterfaceResponse;
class NetworkManagerEnableNetworkingParams;
class NetworkManagerEnableNetworkingResponse;
class NetworkManagerEnableWirelessNetworkingParams;
class NetworkManagerEnableWirelessNetworkingResponse;
class NetworkManagerGetNetworkDevicesParams;
class NetworkManagerGetNetworkDevicesResponse;
class NetworkManagerGetNetworkStatusParams;
class NetworkManagerGetNetworkStatusResponse;
class NetworkManagerGetNetworkStatusResponseStatus;
class NetworkManagerGetWirelessAccessPointsParams;
class NetworkManagerGetWirelessAccessPointsResponse;
class NetworkManagerNetworkStatusChangedNotificationParams;
class NetworkManagerNetworkStatusChangedNotificationParamsStatus;
class NetworkManagerScanWifiNetworksParams;
class NetworkManagerScanWifiNetworksResponse;
class NetworkManagerStartAccessPointParams;
class NetworkManagerStartAccessPointResponse;
class NetworkManagerWiredNetworkDeviceAddedNotificationParams;
class NetworkManagerWiredNetworkDeviceChangedNotificationParams;
class NetworkManagerWiredNetworkDeviceRemovedNotificationParams;
class NetworkManagerWirelessNetworkDeviceAddedNotificationParams;
class NetworkManagerWirelessNetworkDeviceChangedNotificationParams;
class NetworkManagerWirelessNetworkDeviceRemovedNotificationParams;
class Package;
class Param;
class ParamDescriptor;
class ParamType;
class RepeatingOption;
class Repository;
class Rule;
class RuleAction;
class RuleActionParam;
class RuleDescription;
class RulesAddRuleParams;
class RulesAddRuleResponse;
class RulesDisableRuleParams;
class RulesDisableRuleResponse;
class RulesEditRuleParams;
class RulesEditRuleResponse;
class RulesEnableRuleParams;
class RulesEnableRuleResponse;
class RulesExecuteActionsParams;
class RulesExecuteActionsResponse;
class RulesExecuteExitActionsParams;
class RulesExecuteExitActionsResponse;
class RulesFindRulesParams;
class RulesFindRulesResponse;
class RulesGetRuleDetailsParams;
class RulesGetRuleDetailsResponse;
class RulesGetRulesParams;
class RulesGetRulesResponse;
class RulesRemoveRuleParams;
class RulesRemoveRuleResponse;
class RulesRuleActiveChangedNotificationParams;
class RulesRuleAddedNotificationParams;
class RulesRuleConfigurationChangedNotificationParams;
class RulesRuleRemovedNotificationParams;
class Script;
class ScriptsAddScriptParams;
class ScriptsAddScriptResponse;
class ScriptsEditScriptParams;
class ScriptsEditScriptResponse;
class ScriptsGetScriptContentParams;
class ScriptsGetScriptContentResponse;
class ScriptsGetScriptsParams;
class ScriptsGetScriptsResponse;
class ScriptsRemoveScriptParams;
class ScriptsRemoveScriptResponse;
class ScriptsScriptAddedNotificationParams;
class ScriptsScriptChangedNotificationParams;
class ScriptsScriptContentChangedNotificationParams;
class ScriptsScriptLogMessageNotificationParams;
class ScriptsScriptRemovedNotificationParams;
class SerialPort;
class ServerConfiguration;
class State;
class StateDescriptor;
class StateEvaluator;
class StateType;
class SystemCapabilitiesChangedNotificationParams;
class SystemCheckForUpdatesParams;
class SystemCheckForUpdatesResponse;
class SystemEnableRepositoryParams;
class SystemEnableRepositoryResponse;
class SystemFactoryResetParams;
class SystemFactoryResetResponse;
class SystemGetCapabilitiesParams;
class SystemGetCapabilitiesResponse;
class SystemGetPackagesParams;
class SystemGetPackagesResponse;
class SystemGetRepositoriesParams;
class SystemGetRepositoriesResponse;
class SystemGetSystemInfoParams;
class SystemGetSystemInfoResponse;
class SystemGetTimeParams;
class SystemGetTimeResponse;
class SystemGetTimeZonesParams;
class SystemGetTimeZonesResponse;
class SystemGetUpdateStatusParams;
class SystemGetUpdateStatusResponse;
class SystemPackageAddedNotificationParams;
class SystemPackageChangedNotificationParams;
class SystemPackageRemovedNotificationParams;
class SystemRebootParams;
class SystemRebootResponse;
class SystemRemovePackagesParams;
class SystemRemovePackagesResponse;
class SystemRepositoryAddedNotificationParams;
class SystemRepositoryChangedNotificationParams;
class SystemRepositoryRemovedNotificationParams;
class SystemRestartParams;
class SystemRestartResponse;
class SystemRollbackPackagesParams;
class SystemRollbackPackagesResponse;
class SystemSetTimeParams;
class SystemSetTimeResponse;
class SystemShutdownParams;
class SystemShutdownResponse;
class SystemTimeConfigurationChangedNotificationParams;
class SystemUpdatePackagesParams;
class SystemUpdatePackagesResponse;
class SystemUpdateStatusChangedNotificationParams;
class Tag;
class TagsAddTagParams;
class TagsAddTagResponse;
class TagsGetTagsParams;
class TagsGetTagsResponse;
class TagsRemoveTagParams;
class TagsRemoveTagResponse;
class TagsTagAddedNotificationParams;
class TagsTagRemovedNotificationParams;
class TagsTagValueChangedNotificationParams;
class Thing;
class ThingClass;
class ThingDescriptor;
class TimeDescriptor;
class TimeEventItem;
class TokenInfo;
class TransfersCreateUploadParams;
class TransfersCreateUploadResponse;
class TransfersDownloadAvailableNotificationParams;
class TransfersStartDownloadParams;
class TransfersStartDownloadResponse;
class TunnelProxyServerConfiguration;
class UserInfo;
class UsersChangePasswordParams;
class UsersChangePasswordResponse;
class UsersChangeUserPasswordParams;
class UsersChangeUserPasswordResponse;
class UsersCreateUserParams;
class UsersCreateUserResponse;
class UsersGetTokensParams;
class UsersGetTokensResponse;
class UsersGetUserInfoParams;
class UsersGetUserInfoResponse;
class UsersGetUserTokensParams;
class UsersGetUserTokensResponse;
class UsersGetUsersParams;
class UsersGetUsersResponse;
class UsersPushButtonAuthFinishedNotificationParams;
class UsersRemoveTokenParams;
class UsersRemoveTokenResponse;
class UsersRemoveUserParams;
class UsersRemoveUserResponse;
class UsersSetUserInfoParams;
class UsersSetUserInfoResponse;
class UsersSetUserScopesParams;
class UsersSetUserScopesResponse;
class UsersUserAddedNotificationParams;
class UsersUserChangedNotificationParams;
class UsersUserRemovedNotificationParams;
class Vendor;
class WebServerConfiguration;
class WiredNetworkDevice;
class WirelessAccessPoint;
class WirelessNetworkDevice;
class ZWaveAddNetworkParams;
class ZWaveAddNetworkResponse;
class ZWaveAddNodeParams;
class ZWaveAddNodeResponse;
class ZWaveCancelPendingOperationParams;
class ZWaveCancelPendingOperationResponse;
class ZWaveFactoryResetNetworkParams;
class ZWaveFactoryResetNetworkResponse;
class ZWaveGetNetworksParams;
class ZWaveGetNetworksResponse;
class ZWaveGetNodesParams;
class ZWaveGetNodesResponse;
class ZWaveGetSerialPortsParams;
class ZWaveGetSerialPortsResponse;
class ZWaveIsZWaveAvailableParams;
class ZWaveIsZWaveAvailableResponse;
class ZWaveNetwork;
class ZWaveNetworkAddedNotificationParams;
class ZWaveNetworkChangedNotificationParams;
class ZWaveNetworkRemovedNotificationParams;
class ZWaveNode;
class ZWaveNodeAddedNotificationParams;
class ZWaveNodeChangedNotificationParams;
class ZWaveNodeRemovedNotificationParams;
class ZWaveRemoveFailedNodeParams;
class ZWaveRemoveFailedNodeResponse;
class ZWaveRemoveNetworkParams;
class ZWaveRemoveNetworkResponse;
class ZWaveRemoveNodeParams;
class ZWaveRemoveNodeResponse;
class ZigbeeAdapter;
class ZigbeeAdapterAddedNotificationParams;
class ZigbeeAdapterRemovedNotificationParams;
class ZigbeeAddNetworkParams;
class ZigbeeAddNetworkResponse;
class ZigbeeBindingTableRecord;
class ZigbeeCluster;
class ZigbeeCreateBindingParams;
class ZigbeeCreateBindingResponse;
class ZigbeeFactoryResetNetworkParams;
class ZigbeeFactoryResetNetworkResponse;
class ZigbeeGetAdaptersParams;
class ZigbeeGetAdaptersResponse;
class ZigbeeGetAvailableBackendsParams;
class ZigbeeGetAvailableBackendsResponse;
class ZigbeeGetNetworksParams;
class ZigbeeGetNetworksResponse;
class ZigbeeGetNodesParams;
class ZigbeeGetNodesResponse;
class ZigbeeNeighborTableRecord;
class ZigbeeNetwork;
class ZigbeeNetworkAddedNotificationParams;
class ZigbeeNetworkChangedNotificationParams;
class ZigbeeNetworkRemovedNotificationParams;
class ZigbeeNode;
class ZigbeeNodeAddedNotificationParams;
class ZigbeeNodeChangedNotificationParams;
class ZigbeeNodeEndpoint;
class ZigbeeNodeRemovedNotificationParams;
class ZigbeeRefreshBindingsParams;
class ZigbeeRefreshBindingsResponse;
class ZigbeeRefreshNeighborTablesParams;
class ZigbeeRefreshNeighborTablesResponse;
class ZigbeeRemoveBindingParams;
class ZigbeeRemoveBindingResponse;
class ZigbeeRemoveNetworkParams;
class ZigbeeRemoveNetworkResponse;
class ZigbeeRemoveNodeParams;
class ZigbeeRemoveNodeResponse;
class ZigbeeRoutingTableRecord;
class ZigbeeSetPermitJoinParams;
class ZigbeeSetPermitJoinResponse;

using BackupFiles = QList<BackupFile>;

using CreateMethods = QList<CreateMethod>;

using IOConnections = QList<IOConnection>;

using LogEntries = QList<LogEntry>;

using Packages = QList<Package>;

using ParamDescriptors = QList<ParamDescriptor>;

using EventDescriptors = QList<EventDescriptor>;

using ParamList = QList<Param>;

using ParamTypes = QList<ParamType>;

using ActionTypes = QList<ActionType>;

using EventTypes = QList<EventType>;

using IntegrationPlugins = QList<IntegrationPlugin>;

using PermissionScopes = QList<PermissionScope>;

using CalendarItems = QList<CalendarItem>;

using Repositories = QList<Repository>;

using RuleActionParams = QList<RuleActionParam>;

using RuleActions = QList<RuleAction>;

using Scripts = QList<Script>;

using SerialPorts = QList<SerialPort>;

using StateEvaluators = QList<QSharedPointer<StateEvaluator>>;

using StateTypes = QList<StateType>;

using States = QList<State>;

using Tags = QList<Tag>;

using ThingClasses = QList<ThingClass>;

using ThingDescriptors = QList<ThingDescriptor>;

using Things = QList<Thing>;

using TimeEventItems = QList<TimeEventItem>;

using Rules = QList<Rule>;

using TokenInfoList = QList<TokenInfo>;

using UserInfoList = QList<UserInfo>;

using Vendors = QList<Vendor>;

using WirelessCapabilities = QList<WirelessCapability>;

using ZigbeeAdapters = QList<ZigbeeAdapter>;

struct AppDataLoadMethod {
    static QString methodName() { return QStringLiteral("AppData.Load"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeControlThings"); }
    using Request = AppDataLoadParams;
    using Response = AppDataLoadResponse;
};

struct AppDataStoreMethod {
    static QString methodName() { return QStringLiteral("AppData.Store"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeConfigureThings"); }
    using Request = AppDataStoreParams;
    using Response = AppDataStoreResponse;
};

struct ConfigurationCreateAndDownloadBackupMethod {
    static QString methodName() { return QStringLiteral("Configuration.CreateAndDownloadBackup"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = ConfigurationCreateAndDownloadBackupParams;
    using Response = ConfigurationCreateAndDownloadBackupResponse;
};

struct ConfigurationCreateBackupMethod {
    static QString methodName() { return QStringLiteral("Configuration.CreateBackup"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = ConfigurationCreateBackupParams;
    using Response = ConfigurationCreateBackupResponse;
};

struct ConfigurationDeleteBackupFileMethod {
    static QString methodName() { return QStringLiteral("Configuration.DeleteBackupFile"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = ConfigurationDeleteBackupFileParams;
    using Response = ConfigurationDeleteBackupFileResponse;
};

struct ConfigurationDeleteMqttPolicyMethod {
    static QString methodName() { return QStringLiteral("Configuration.DeleteMqttPolicy"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = ConfigurationDeleteMqttPolicyParams;
    using Response = ConfigurationDeleteMqttPolicyResponse;
};

struct ConfigurationDeleteMqttServerConfigurationMethod {
    static QString methodName() { return QStringLiteral("Configuration.DeleteMqttServerConfiguration"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = ConfigurationDeleteMqttServerConfigurationParams;
    using Response = ConfigurationDeleteMqttServerConfigurationResponse;
};

struct ConfigurationDeleteTcpServerConfigurationMethod {
    static QString methodName() { return QStringLiteral("Configuration.DeleteTcpServerConfiguration"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = ConfigurationDeleteTcpServerConfigurationParams;
    using Response = ConfigurationDeleteTcpServerConfigurationResponse;
};

struct ConfigurationDeleteTunnelProxyServerConfigurationMethod {
    static QString methodName() { return QStringLiteral("Configuration.DeleteTunnelProxyServerConfiguration"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = ConfigurationDeleteTunnelProxyServerConfigurationParams;
    using Response = ConfigurationDeleteTunnelProxyServerConfigurationResponse;
};

struct ConfigurationDeleteWebServerConfigurationMethod {
    static QString methodName() { return QStringLiteral("Configuration.DeleteWebServerConfiguration"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = ConfigurationDeleteWebServerConfigurationParams;
    using Response = ConfigurationDeleteWebServerConfigurationResponse;
};

struct ConfigurationDeleteWebSocketServerConfigurationMethod {
    static QString methodName() { return QStringLiteral("Configuration.DeleteWebSocketServerConfiguration"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = ConfigurationDeleteWebSocketServerConfigurationParams;
    using Response = ConfigurationDeleteWebSocketServerConfigurationResponse;
};

struct ConfigurationDownloadBackupFileMethod {
    static QString methodName() { return QStringLiteral("Configuration.DownloadBackupFile"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = ConfigurationDownloadBackupFileParams;
    using Response = ConfigurationDownloadBackupFileResponse;
};

struct ConfigurationGetAvailableLanguagesMethod {
    static QString methodName() { return QStringLiteral("Configuration.GetAvailableLanguages"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeNone"); }
    using Request = ConfigurationGetAvailableLanguagesParams;
    using Response = ConfigurationGetAvailableLanguagesResponse;
};

struct ConfigurationGetBackupFilesMethod {
    static QString methodName() { return QStringLiteral("Configuration.GetBackupFiles"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = ConfigurationGetBackupFilesParams;
    using Response = ConfigurationGetBackupFilesResponse;
};

struct ConfigurationGetConfigurationsMethod {
    static QString methodName() { return QStringLiteral("Configuration.GetConfigurations"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeNone"); }
    using Request = ConfigurationGetConfigurationsParams;
    using Response = ConfigurationGetConfigurationsResponse;
};

struct ConfigurationGetMqttPoliciesMethod {
    static QString methodName() { return QStringLiteral("Configuration.GetMqttPolicies"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = ConfigurationGetMqttPoliciesParams;
    using Response = ConfigurationGetMqttPoliciesResponse;
};

struct ConfigurationGetMqttServerConfigurationsMethod {
    static QString methodName() { return QStringLiteral("Configuration.GetMqttServerConfigurations"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = ConfigurationGetMqttServerConfigurationsParams;
    using Response = ConfigurationGetMqttServerConfigurationsResponse;
};

struct ConfigurationGetTimeZonesMethod {
    static QString methodName() { return QStringLiteral("Configuration.GetTimeZones"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeNone"); }
    using Request = ConfigurationGetTimeZonesParams;
    using Response = ConfigurationGetTimeZonesResponse;
};

struct ConfigurationRestoreBackupFileMethod {
    static QString methodName() { return QStringLiteral("Configuration.RestoreBackupFile"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = ConfigurationRestoreBackupFileParams;
    using Response = ConfigurationRestoreBackupFileResponse;
};

struct ConfigurationSetBackupConfigurationMethod {
    static QString methodName() { return QStringLiteral("Configuration.SetBackupConfiguration"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = ConfigurationSetBackupConfigurationParams;
    using Response = ConfigurationSetBackupConfigurationResponse;
};

struct ConfigurationSetDebugServerEnabledMethod {
    static QString methodName() { return QStringLiteral("Configuration.SetDebugServerEnabled"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = ConfigurationSetDebugServerEnabledParams;
    using Response = ConfigurationSetDebugServerEnabledResponse;
};

struct ConfigurationSetLanguageMethod {
    static QString methodName() { return QStringLiteral("Configuration.SetLanguage"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = ConfigurationSetLanguageParams;
    using Response = ConfigurationSetLanguageResponse;
};

struct ConfigurationSetLocationMethod {
    static QString methodName() { return QStringLiteral("Configuration.SetLocation"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = ConfigurationSetLocationParams;
    using Response = ConfigurationSetLocationResponse;
};

struct ConfigurationSetMqttPolicyMethod {
    static QString methodName() { return QStringLiteral("Configuration.SetMqttPolicy"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = ConfigurationSetMqttPolicyParams;
    using Response = ConfigurationSetMqttPolicyResponse;
};

struct ConfigurationSetMqttServerConfigurationMethod {
    static QString methodName() { return QStringLiteral("Configuration.SetMqttServerConfiguration"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = ConfigurationSetMqttServerConfigurationParams;
    using Response = ConfigurationSetMqttServerConfigurationResponse;
};

struct ConfigurationSetServerNameMethod {
    static QString methodName() { return QStringLiteral("Configuration.SetServerName"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = ConfigurationSetServerNameParams;
    using Response = ConfigurationSetServerNameResponse;
};

struct ConfigurationSetTcpServerConfigurationMethod {
    static QString methodName() { return QStringLiteral("Configuration.SetTcpServerConfiguration"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = ConfigurationSetTcpServerConfigurationParams;
    using Response = ConfigurationSetTcpServerConfigurationResponse;
};

struct ConfigurationSetTimeZoneMethod {
    static QString methodName() { return QStringLiteral("Configuration.SetTimeZone"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = ConfigurationSetTimeZoneParams;
    using Response = ConfigurationSetTimeZoneResponse;
};

struct ConfigurationSetTunnelProxyServerConfigurationMethod {
    static QString methodName() { return QStringLiteral("Configuration.SetTunnelProxyServerConfiguration"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = ConfigurationSetTunnelProxyServerConfigurationParams;
    using Response = ConfigurationSetTunnelProxyServerConfigurationResponse;
};

struct ConfigurationSetWebServerConfigurationMethod {
    static QString methodName() { return QStringLiteral("Configuration.SetWebServerConfiguration"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = ConfigurationSetWebServerConfigurationParams;
    using Response = ConfigurationSetWebServerConfigurationResponse;
};

struct ConfigurationSetWebSocketServerConfigurationMethod {
    static QString methodName() { return QStringLiteral("Configuration.SetWebSocketServerConfiguration"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = ConfigurationSetWebSocketServerConfigurationParams;
    using Response = ConfigurationSetWebSocketServerConfigurationResponse;
};

struct ConfigurationUploadAndRestoreBackupMethod {
    static QString methodName() { return QStringLiteral("Configuration.UploadAndRestoreBackup"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = ConfigurationUploadAndRestoreBackupParams;
    using Response = ConfigurationUploadAndRestoreBackupResponse;
};

struct DebugGetLoggingCategoriesMethod {
    static QString methodName() { return QStringLiteral("Debug.GetLoggingCategories"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = DebugGetLoggingCategoriesParams;
    using Response = DebugGetLoggingCategoriesResponse;
};

struct DebugSetLoggingCategoryLevelMethod {
    static QString methodName() { return QStringLiteral("Debug.SetLoggingCategoryLevel"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = DebugSetLoggingCategoryLevelParams;
    using Response = DebugSetLoggingCategoryLevelResponse;
};

struct IntegrationsAddThingMethod {
    static QString methodName() { return QStringLiteral("Integrations.AddThing"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeConfigureThings"); }
    using Request = IntegrationsAddThingParams;
    using Response = IntegrationsAddThingResponse;
};

struct IntegrationsBrowseThingMethod {
    static QString methodName() { return QStringLiteral("Integrations.BrowseThing"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeNone"); }
    using Request = IntegrationsBrowseThingParams;
    using Response = IntegrationsBrowseThingResponse;
};

struct IntegrationsConfirmPairingMethod {
    static QString methodName() { return QStringLiteral("Integrations.ConfirmPairing"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeConfigureThings"); }
    using Request = IntegrationsConfirmPairingParams;
    using Response = IntegrationsConfirmPairingResponse;
};

struct IntegrationsConnectIOMethod {
    static QString methodName() { return QStringLiteral("Integrations.ConnectIO"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeConfigureThings"); }
    using Request = IntegrationsConnectIOParams;
    using Response = IntegrationsConnectIOResponse;
};

struct IntegrationsDisconnectIOMethod {
    static QString methodName() { return QStringLiteral("Integrations.DisconnectIO"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeConfigureThings"); }
    using Request = IntegrationsDisconnectIOParams;
    using Response = IntegrationsDisconnectIOResponse;
};

struct IntegrationsDiscoverThingsMethod {
    static QString methodName() { return QStringLiteral("Integrations.DiscoverThings"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeConfigureThings"); }
    using Request = IntegrationsDiscoverThingsParams;
    using Response = IntegrationsDiscoverThingsResponse;
};

struct IntegrationsEditThingMethod {
    static QString methodName() { return QStringLiteral("Integrations.EditThing"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeConfigureThings"); }
    using Request = IntegrationsEditThingParams;
    using Response = IntegrationsEditThingResponse;
};

struct IntegrationsExecuteActionMethod {
    static QString methodName() { return QStringLiteral("Integrations.ExecuteAction"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeControlThings"); }
    using Request = IntegrationsExecuteActionParams;
    using Response = IntegrationsExecuteActionResponse;
};

struct IntegrationsExecuteBrowserItemMethod {
    static QString methodName() { return QStringLiteral("Integrations.ExecuteBrowserItem"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeControlThings"); }
    using Request = IntegrationsExecuteBrowserItemParams;
    using Response = IntegrationsExecuteBrowserItemResponse;
};

struct IntegrationsExecuteBrowserItemActionMethod {
    static QString methodName() { return QStringLiteral("Integrations.ExecuteBrowserItemAction"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeControlThings"); }
    using Request = IntegrationsExecuteBrowserItemActionParams;
    using Response = IntegrationsExecuteBrowserItemActionResponse;
};

struct IntegrationsGetActionTypesMethod {
    static QString methodName() { return QStringLiteral("Integrations.GetActionTypes"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeNone"); }
    using Request = IntegrationsGetActionTypesParams;
    using Response = IntegrationsGetActionTypesResponse;
};

struct IntegrationsGetBrowserItemMethod {
    static QString methodName() { return QStringLiteral("Integrations.GetBrowserItem"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeNone"); }
    using Request = IntegrationsGetBrowserItemParams;
    using Response = IntegrationsGetBrowserItemResponse;
};

struct IntegrationsGetEventTypesMethod {
    static QString methodName() { return QStringLiteral("Integrations.GetEventTypes"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeNone"); }
    using Request = IntegrationsGetEventTypesParams;
    using Response = IntegrationsGetEventTypesResponse;
};

struct IntegrationsGetIOConnectionsMethod {
    static QString methodName() { return QStringLiteral("Integrations.GetIOConnections"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeNone"); }
    using Request = IntegrationsGetIOConnectionsParams;
    using Response = IntegrationsGetIOConnectionsResponse;
};

struct IntegrationsGetPluginConfigurationMethod {
    static QString methodName() { return QStringLiteral("Integrations.GetPluginConfiguration"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeConfigureThings"); }
    using Request = IntegrationsGetPluginConfigurationParams;
    using Response = IntegrationsGetPluginConfigurationResponse;
};

struct IntegrationsGetPluginsMethod {
    static QString methodName() { return QStringLiteral("Integrations.GetPlugins"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeNone"); }
    using Request = IntegrationsGetPluginsParams;
    using Response = IntegrationsGetPluginsResponse;
};

struct IntegrationsGetStateTypesMethod {
    static QString methodName() { return QStringLiteral("Integrations.GetStateTypes"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeNone"); }
    using Request = IntegrationsGetStateTypesParams;
    using Response = IntegrationsGetStateTypesResponse;
};

struct IntegrationsGetStateValueMethod {
    static QString methodName() { return QStringLiteral("Integrations.GetStateValue"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeNone"); }
    using Request = IntegrationsGetStateValueParams;
    using Response = IntegrationsGetStateValueResponse;
};

struct IntegrationsGetStateValuesMethod {
    static QString methodName() { return QStringLiteral("Integrations.GetStateValues"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeNone"); }
    using Request = IntegrationsGetStateValuesParams;
    using Response = IntegrationsGetStateValuesResponse;
};

struct IntegrationsGetThingClassesMethod {
    static QString methodName() { return QStringLiteral("Integrations.GetThingClasses"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeNone"); }
    using Request = IntegrationsGetThingClassesParams;
    using Response = IntegrationsGetThingClassesResponse;
};

struct IntegrationsGetThingsMethod {
    static QString methodName() { return QStringLiteral("Integrations.GetThings"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeNone"); }
    using Request = IntegrationsGetThingsParams;
    using Response = IntegrationsGetThingsResponse;
};

struct IntegrationsGetVendorsMethod {
    static QString methodName() { return QStringLiteral("Integrations.GetVendors"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeNone"); }
    using Request = IntegrationsGetVendorsParams;
    using Response = IntegrationsGetVendorsResponse;
};

struct IntegrationsPairThingMethod {
    static QString methodName() { return QStringLiteral("Integrations.PairThing"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeConfigureThings"); }
    using Request = IntegrationsPairThingParams;
    using Response = IntegrationsPairThingResponse;
};

struct IntegrationsReconfigureThingMethod {
    static QString methodName() { return QStringLiteral("Integrations.ReconfigureThing"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeConfigureThings"); }
    using Request = IntegrationsReconfigureThingParams;
    using Response = IntegrationsReconfigureThingResponse;
};

struct IntegrationsRemoveThingMethod {
    static QString methodName() { return QStringLiteral("Integrations.RemoveThing"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeConfigureThings"); }
    using Request = IntegrationsRemoveThingParams;
    using Response = IntegrationsRemoveThingResponse;
};

struct IntegrationsSetActionLoggingMethod {
    static QString methodName() { return QStringLiteral("Integrations.SetActionLogging"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeConfigureThings"); }
    using Request = IntegrationsSetActionLoggingParams;
    using Response = IntegrationsSetActionLoggingResponse;
};

struct IntegrationsSetEventLoggingMethod {
    static QString methodName() { return QStringLiteral("Integrations.SetEventLogging"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeConfigureThings"); }
    using Request = IntegrationsSetEventLoggingParams;
    using Response = IntegrationsSetEventLoggingResponse;
};

struct IntegrationsSetPluginConfigurationMethod {
    static QString methodName() { return QStringLiteral("Integrations.SetPluginConfiguration"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeConfigureThings"); }
    using Request = IntegrationsSetPluginConfigurationParams;
    using Response = IntegrationsSetPluginConfigurationResponse;
};

struct IntegrationsSetStateFilterMethod {
    static QString methodName() { return QStringLiteral("Integrations.SetStateFilter"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeConfigureThings"); }
    using Request = IntegrationsSetStateFilterParams;
    using Response = IntegrationsSetStateFilterResponse;
};

struct IntegrationsSetStateLoggingMethod {
    static QString methodName() { return QStringLiteral("Integrations.SetStateLogging"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeConfigureThings"); }
    using Request = IntegrationsSetStateLoggingParams;
    using Response = IntegrationsSetStateLoggingResponse;
};

struct IntegrationsSetThingSettingsMethod {
    static QString methodName() { return QStringLiteral("Integrations.SetThingSettings"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeConfigureThings"); }
    using Request = IntegrationsSetThingSettingsParams;
    using Response = IntegrationsSetThingSettingsResponse;
};

struct JSONRPCAuthenticateMethod {
    static QString methodName() { return QStringLiteral("JSONRPC.Authenticate"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeNone"); }
    using Request = JSONRPCAuthenticateParams;
    using Response = JSONRPCAuthenticateResponse;
};

struct JSONRPCCreateUserMethod {
    static QString methodName() { return QStringLiteral("JSONRPC.CreateUser"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = JSONRPCCreateUserParams;
    using Response = JSONRPCCreateUserResponse;
};

struct JSONRPCHelloMethod {
    static QString methodName() { return QStringLiteral("JSONRPC.Hello"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeNone"); }
    using Request = JSONRPCHelloParams;
    using Response = JSONRPCHelloResponse;
};

struct JSONRPCIntrospectMethod {
    static QString methodName() { return QStringLiteral("JSONRPC.Introspect"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeNone"); }
    using Request = JSONRPCIntrospectParams;
    using Response = JSONRPCIntrospectResponse;
};

struct JSONRPCKeepAliveMethod {
    static QString methodName() { return QStringLiteral("JSONRPC.KeepAlive"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeNone"); }
    using Request = JSONRPCKeepAliveParams;
    using Response = JSONRPCKeepAliveResponse;
};

struct JSONRPCRequestPushButtonAuthMethod {
    static QString methodName() { return QStringLiteral("JSONRPC.RequestPushButtonAuth"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeNone"); }
    using Request = JSONRPCRequestPushButtonAuthParams;
    using Response = JSONRPCRequestPushButtonAuthResponse;
};

struct JSONRPCSetNotificationStatusMethod {
    static QString methodName() { return QStringLiteral("JSONRPC.SetNotificationStatus"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeNone"); }
    using Request = JSONRPCSetNotificationStatusParams;
    using Response = JSONRPCSetNotificationStatusResponse;
};

struct JSONRPCVersionMethod {
    static QString methodName() { return QStringLiteral("JSONRPC.Version"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeNone"); }
    using Request = JSONRPCVersionParams;
    using Response = JSONRPCVersionResponse;
};

struct LoggingGetLogEntriesMethod {
    static QString methodName() { return QStringLiteral("Logging.GetLogEntries"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeControlThings"); }
    using Request = LoggingGetLogEntriesParams;
    using Response = LoggingGetLogEntriesResponse;
};

struct ModbusRtuAddModbusRtuMasterMethod {
    static QString methodName() { return QStringLiteral("ModbusRtu.AddModbusRtuMaster"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = ModbusRtuAddModbusRtuMasterParams;
    using Response = ModbusRtuAddModbusRtuMasterResponse;
};

struct ModbusRtuGetModbusRtuMastersMethod {
    static QString methodName() { return QStringLiteral("ModbusRtu.GetModbusRtuMasters"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = ModbusRtuGetModbusRtuMastersParams;
    using Response = ModbusRtuGetModbusRtuMastersResponse;
};

struct ModbusRtuGetSerialPortsMethod {
    static QString methodName() { return QStringLiteral("ModbusRtu.GetSerialPorts"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = ModbusRtuGetSerialPortsParams;
    using Response = ModbusRtuGetSerialPortsResponse;
};

struct ModbusRtuReconfigureModbusRtuMasterMethod {
    static QString methodName() { return QStringLiteral("ModbusRtu.ReconfigureModbusRtuMaster"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = ModbusRtuReconfigureModbusRtuMasterParams;
    using Response = ModbusRtuReconfigureModbusRtuMasterResponse;
};

struct ModbusRtuRemoveModbusRtuMasterMethod {
    static QString methodName() { return QStringLiteral("ModbusRtu.RemoveModbusRtuMaster"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = ModbusRtuRemoveModbusRtuMasterParams;
    using Response = ModbusRtuRemoveModbusRtuMasterResponse;
};

struct NetworkManagerConnectWifiNetworkMethod {
    static QString methodName() { return QStringLiteral("NetworkManager.ConnectWifiNetwork"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = NetworkManagerConnectWifiNetworkParams;
    using Response = NetworkManagerConnectWifiNetworkResponse;
};

struct NetworkManagerCreateWiredConnectionMethod {
    static QString methodName() { return QStringLiteral("NetworkManager.CreateWiredConnection"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = NetworkManagerCreateWiredConnectionParams;
    using Response = NetworkManagerCreateWiredConnectionResponse;
};

struct NetworkManagerDisconnectInterfaceMethod {
    static QString methodName() { return QStringLiteral("NetworkManager.DisconnectInterface"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = NetworkManagerDisconnectInterfaceParams;
    using Response = NetworkManagerDisconnectInterfaceResponse;
};

struct NetworkManagerEnableNetworkingMethod {
    static QString methodName() { return QStringLiteral("NetworkManager.EnableNetworking"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = NetworkManagerEnableNetworkingParams;
    using Response = NetworkManagerEnableNetworkingResponse;
};

struct NetworkManagerEnableWirelessNetworkingMethod {
    static QString methodName() { return QStringLiteral("NetworkManager.EnableWirelessNetworking"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = NetworkManagerEnableWirelessNetworkingParams;
    using Response = NetworkManagerEnableWirelessNetworkingResponse;
};

struct NetworkManagerGetNetworkDevicesMethod {
    static QString methodName() { return QStringLiteral("NetworkManager.GetNetworkDevices"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = NetworkManagerGetNetworkDevicesParams;
    using Response = NetworkManagerGetNetworkDevicesResponse;
};

struct NetworkManagerGetNetworkStatusMethod {
    static QString methodName() { return QStringLiteral("NetworkManager.GetNetworkStatus"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = NetworkManagerGetNetworkStatusParams;
    using Response = NetworkManagerGetNetworkStatusResponse;
};

struct NetworkManagerGetWirelessAccessPointsMethod {
    static QString methodName() { return QStringLiteral("NetworkManager.GetWirelessAccessPoints"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = NetworkManagerGetWirelessAccessPointsParams;
    using Response = NetworkManagerGetWirelessAccessPointsResponse;
};

struct NetworkManagerScanWifiNetworksMethod {
    static QString methodName() { return QStringLiteral("NetworkManager.ScanWifiNetworks"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = NetworkManagerScanWifiNetworksParams;
    using Response = NetworkManagerScanWifiNetworksResponse;
};

struct NetworkManagerStartAccessPointMethod {
    static QString methodName() { return QStringLiteral("NetworkManager.StartAccessPoint"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = NetworkManagerStartAccessPointParams;
    using Response = NetworkManagerStartAccessPointResponse;
};

struct RulesAddRuleMethod {
    static QString methodName() { return QStringLiteral("Rules.AddRule"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeConfigureRules"); }
    using Request = RulesAddRuleParams;
    using Response = RulesAddRuleResponse;
};

struct RulesDisableRuleMethod {
    static QString methodName() { return QStringLiteral("Rules.DisableRule"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeConfigureRules"); }
    using Request = RulesDisableRuleParams;
    using Response = RulesDisableRuleResponse;
};

struct RulesEditRuleMethod {
    static QString methodName() { return QStringLiteral("Rules.EditRule"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeConfigureRules"); }
    using Request = RulesEditRuleParams;
    using Response = RulesEditRuleResponse;
};

struct RulesEnableRuleMethod {
    static QString methodName() { return QStringLiteral("Rules.EnableRule"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeConfigureRules"); }
    using Request = RulesEnableRuleParams;
    using Response = RulesEnableRuleResponse;
};

struct RulesExecuteActionsMethod {
    static QString methodName() { return QStringLiteral("Rules.ExecuteActions"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeExecuteRules"); }
    using Request = RulesExecuteActionsParams;
    using Response = RulesExecuteActionsResponse;
};

struct RulesExecuteExitActionsMethod {
    static QString methodName() { return QStringLiteral("Rules.ExecuteExitActions"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeExecuteRules"); }
    using Request = RulesExecuteExitActionsParams;
    using Response = RulesExecuteExitActionsResponse;
};

struct RulesFindRulesMethod {
    static QString methodName() { return QStringLiteral("Rules.FindRules"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeExecuteRules"); }
    using Request = RulesFindRulesParams;
    using Response = RulesFindRulesResponse;
};

struct RulesGetRuleDetailsMethod {
    static QString methodName() { return QStringLiteral("Rules.GetRuleDetails"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeExecuteRules"); }
    using Request = RulesGetRuleDetailsParams;
    using Response = RulesGetRuleDetailsResponse;
};

struct RulesGetRulesMethod {
    static QString methodName() { return QStringLiteral("Rules.GetRules"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeExecuteRules"); }
    using Request = RulesGetRulesParams;
    using Response = RulesGetRulesResponse;
};

struct RulesRemoveRuleMethod {
    static QString methodName() { return QStringLiteral("Rules.RemoveRule"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeConfigureRules"); }
    using Request = RulesRemoveRuleParams;
    using Response = RulesRemoveRuleResponse;
};

struct ScriptsAddScriptMethod {
    static QString methodName() { return QStringLiteral("Scripts.AddScript"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = ScriptsAddScriptParams;
    using Response = ScriptsAddScriptResponse;
};

struct ScriptsEditScriptMethod {
    static QString methodName() { return QStringLiteral("Scripts.EditScript"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = ScriptsEditScriptParams;
    using Response = ScriptsEditScriptResponse;
};

struct ScriptsGetScriptContentMethod {
    static QString methodName() { return QStringLiteral("Scripts.GetScriptContent"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = ScriptsGetScriptContentParams;
    using Response = ScriptsGetScriptContentResponse;
};

struct ScriptsGetScriptsMethod {
    static QString methodName() { return QStringLiteral("Scripts.GetScripts"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = ScriptsGetScriptsParams;
    using Response = ScriptsGetScriptsResponse;
};

struct ScriptsRemoveScriptMethod {
    static QString methodName() { return QStringLiteral("Scripts.RemoveScript"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = ScriptsRemoveScriptParams;
    using Response = ScriptsRemoveScriptResponse;
};

struct SystemCheckForUpdatesMethod {
    static QString methodName() { return QStringLiteral("System.CheckForUpdates"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = SystemCheckForUpdatesParams;
    using Response = SystemCheckForUpdatesResponse;
};

struct SystemEnableRepositoryMethod {
    static QString methodName() { return QStringLiteral("System.EnableRepository"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = SystemEnableRepositoryParams;
    using Response = SystemEnableRepositoryResponse;
};

struct SystemFactoryResetMethod {
    static QString methodName() { return QStringLiteral("System.FactoryReset"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = SystemFactoryResetParams;
    using Response = SystemFactoryResetResponse;
};

struct SystemGetCapabilitiesMethod {
    static QString methodName() { return QStringLiteral("System.GetCapabilities"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = SystemGetCapabilitiesParams;
    using Response = SystemGetCapabilitiesResponse;
};

struct SystemGetPackagesMethod {
    static QString methodName() { return QStringLiteral("System.GetPackages"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = SystemGetPackagesParams;
    using Response = SystemGetPackagesResponse;
};

struct SystemGetRepositoriesMethod {
    static QString methodName() { return QStringLiteral("System.GetRepositories"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = SystemGetRepositoriesParams;
    using Response = SystemGetRepositoriesResponse;
};

struct SystemGetSystemInfoMethod {
    static QString methodName() { return QStringLiteral("System.GetSystemInfo"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = SystemGetSystemInfoParams;
    using Response = SystemGetSystemInfoResponse;
};

struct SystemGetTimeMethod {
    static QString methodName() { return QStringLiteral("System.GetTime"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = SystemGetTimeParams;
    using Response = SystemGetTimeResponse;
};

struct SystemGetTimeZonesMethod {
    static QString methodName() { return QStringLiteral("System.GetTimeZones"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = SystemGetTimeZonesParams;
    using Response = SystemGetTimeZonesResponse;
};

struct SystemGetUpdateStatusMethod {
    static QString methodName() { return QStringLiteral("System.GetUpdateStatus"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = SystemGetUpdateStatusParams;
    using Response = SystemGetUpdateStatusResponse;
};

struct SystemRebootMethod {
    static QString methodName() { return QStringLiteral("System.Reboot"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = SystemRebootParams;
    using Response = SystemRebootResponse;
};

struct SystemRemovePackagesMethod {
    static QString methodName() { return QStringLiteral("System.RemovePackages"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = SystemRemovePackagesParams;
    using Response = SystemRemovePackagesResponse;
};

struct SystemRestartMethod {
    static QString methodName() { return QStringLiteral("System.Restart"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = SystemRestartParams;
    using Response = SystemRestartResponse;
};

struct SystemRollbackPackagesMethod {
    static QString methodName() { return QStringLiteral("System.RollbackPackages"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = SystemRollbackPackagesParams;
    using Response = SystemRollbackPackagesResponse;
};

struct SystemSetTimeMethod {
    static QString methodName() { return QStringLiteral("System.SetTime"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = SystemSetTimeParams;
    using Response = SystemSetTimeResponse;
};

struct SystemShutdownMethod {
    static QString methodName() { return QStringLiteral("System.Shutdown"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = SystemShutdownParams;
    using Response = SystemShutdownResponse;
};

struct SystemUpdatePackagesMethod {
    static QString methodName() { return QStringLiteral("System.UpdatePackages"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = SystemUpdatePackagesParams;
    using Response = SystemUpdatePackagesResponse;
};

struct TagsAddTagMethod {
    static QString methodName() { return QStringLiteral("Tags.AddTag"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeControlThings"); }
    using Request = TagsAddTagParams;
    using Response = TagsAddTagResponse;
};

struct TagsGetTagsMethod {
    static QString methodName() { return QStringLiteral("Tags.GetTags"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeControlThings"); }
    using Request = TagsGetTagsParams;
    using Response = TagsGetTagsResponse;
};

struct TagsRemoveTagMethod {
    static QString methodName() { return QStringLiteral("Tags.RemoveTag"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeControlThings"); }
    using Request = TagsRemoveTagParams;
    using Response = TagsRemoveTagResponse;
};

struct TransfersCreateUploadMethod {
    static QString methodName() { return QStringLiteral("Transfers.CreateUpload"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeConfigureThings"); }
    using Request = TransfersCreateUploadParams;
    using Response = TransfersCreateUploadResponse;
};

struct TransfersStartDownloadMethod {
    static QString methodName() { return QStringLiteral("Transfers.StartDownload"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeControlThings"); }
    using Request = TransfersStartDownloadParams;
    using Response = TransfersStartDownloadResponse;
};

struct UsersChangePasswordMethod {
    static QString methodName() { return QStringLiteral("Users.ChangePassword"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = UsersChangePasswordParams;
    using Response = UsersChangePasswordResponse;
};

struct UsersChangeUserPasswordMethod {
    static QString methodName() { return QStringLiteral("Users.ChangeUserPassword"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = UsersChangeUserPasswordParams;
    using Response = UsersChangeUserPasswordResponse;
};

struct UsersCreateUserMethod {
    static QString methodName() { return QStringLiteral("Users.CreateUser"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = UsersCreateUserParams;
    using Response = UsersCreateUserResponse;
};

struct UsersGetTokensMethod {
    static QString methodName() { return QStringLiteral("Users.GetTokens"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = UsersGetTokensParams;
    using Response = UsersGetTokensResponse;
};

struct UsersGetUserInfoMethod {
    static QString methodName() { return QStringLiteral("Users.GetUserInfo"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeNone"); }
    using Request = UsersGetUserInfoParams;
    using Response = UsersGetUserInfoResponse;
};

struct UsersGetUserTokensMethod {
    static QString methodName() { return QStringLiteral("Users.GetUserTokens"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = UsersGetUserTokensParams;
    using Response = UsersGetUserTokensResponse;
};

struct UsersGetUsersMethod {
    static QString methodName() { return QStringLiteral("Users.GetUsers"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = UsersGetUsersParams;
    using Response = UsersGetUsersResponse;
};

struct UsersRemoveTokenMethod {
    static QString methodName() { return QStringLiteral("Users.RemoveToken"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = UsersRemoveTokenParams;
    using Response = UsersRemoveTokenResponse;
};

struct UsersRemoveUserMethod {
    static QString methodName() { return QStringLiteral("Users.RemoveUser"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = UsersRemoveUserParams;
    using Response = UsersRemoveUserResponse;
};

struct UsersSetUserInfoMethod {
    static QString methodName() { return QStringLiteral("Users.SetUserInfo"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = UsersSetUserInfoParams;
    using Response = UsersSetUserInfoResponse;
};

struct UsersSetUserScopesMethod {
    static QString methodName() { return QStringLiteral("Users.SetUserScopes"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = UsersSetUserScopesParams;
    using Response = UsersSetUserScopesResponse;
};

struct ZWaveAddNetworkMethod {
    static QString methodName() { return QStringLiteral("ZWave.AddNetwork"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = ZWaveAddNetworkParams;
    using Response = ZWaveAddNetworkResponse;
};

struct ZWaveAddNodeMethod {
    static QString methodName() { return QStringLiteral("ZWave.AddNode"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = ZWaveAddNodeParams;
    using Response = ZWaveAddNodeResponse;
};

struct ZWaveCancelPendingOperationMethod {
    static QString methodName() { return QStringLiteral("ZWave.CancelPendingOperation"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = ZWaveCancelPendingOperationParams;
    using Response = ZWaveCancelPendingOperationResponse;
};

struct ZWaveFactoryResetNetworkMethod {
    static QString methodName() { return QStringLiteral("ZWave.FactoryResetNetwork"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = ZWaveFactoryResetNetworkParams;
    using Response = ZWaveFactoryResetNetworkResponse;
};

struct ZWaveGetNetworksMethod {
    static QString methodName() { return QStringLiteral("ZWave.GetNetworks"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = ZWaveGetNetworksParams;
    using Response = ZWaveGetNetworksResponse;
};

struct ZWaveGetNodesMethod {
    static QString methodName() { return QStringLiteral("ZWave.GetNodes"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = ZWaveGetNodesParams;
    using Response = ZWaveGetNodesResponse;
};

struct ZWaveGetSerialPortsMethod {
    static QString methodName() { return QStringLiteral("ZWave.GetSerialPorts"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = ZWaveGetSerialPortsParams;
    using Response = ZWaveGetSerialPortsResponse;
};

struct ZWaveIsZWaveAvailableMethod {
    static QString methodName() { return QStringLiteral("ZWave.IsZWaveAvailable"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = ZWaveIsZWaveAvailableParams;
    using Response = ZWaveIsZWaveAvailableResponse;
};

struct ZWaveRemoveFailedNodeMethod {
    static QString methodName() { return QStringLiteral("ZWave.RemoveFailedNode"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = ZWaveRemoveFailedNodeParams;
    using Response = ZWaveRemoveFailedNodeResponse;
};

struct ZWaveRemoveNetworkMethod {
    static QString methodName() { return QStringLiteral("ZWave.RemoveNetwork"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = ZWaveRemoveNetworkParams;
    using Response = ZWaveRemoveNetworkResponse;
};

struct ZWaveRemoveNodeMethod {
    static QString methodName() { return QStringLiteral("ZWave.RemoveNode"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = ZWaveRemoveNodeParams;
    using Response = ZWaveRemoveNodeResponse;
};

struct ZigbeeAddNetworkMethod {
    static QString methodName() { return QStringLiteral("Zigbee.AddNetwork"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = ZigbeeAddNetworkParams;
    using Response = ZigbeeAddNetworkResponse;
};

struct ZigbeeCreateBindingMethod {
    static QString methodName() { return QStringLiteral("Zigbee.CreateBinding"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = ZigbeeCreateBindingParams;
    using Response = ZigbeeCreateBindingResponse;
};

struct ZigbeeFactoryResetNetworkMethod {
    static QString methodName() { return QStringLiteral("Zigbee.FactoryResetNetwork"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = ZigbeeFactoryResetNetworkParams;
    using Response = ZigbeeFactoryResetNetworkResponse;
};

struct ZigbeeGetAdaptersMethod {
    static QString methodName() { return QStringLiteral("Zigbee.GetAdapters"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = ZigbeeGetAdaptersParams;
    using Response = ZigbeeGetAdaptersResponse;
};

struct ZigbeeGetAvailableBackendsMethod {
    static QString methodName() { return QStringLiteral("Zigbee.GetAvailableBackends"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = ZigbeeGetAvailableBackendsParams;
    using Response = ZigbeeGetAvailableBackendsResponse;
};

struct ZigbeeGetNetworksMethod {
    static QString methodName() { return QStringLiteral("Zigbee.GetNetworks"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = ZigbeeGetNetworksParams;
    using Response = ZigbeeGetNetworksResponse;
};

struct ZigbeeGetNodesMethod {
    static QString methodName() { return QStringLiteral("Zigbee.GetNodes"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = ZigbeeGetNodesParams;
    using Response = ZigbeeGetNodesResponse;
};

struct ZigbeeRefreshBindingsMethod {
    static QString methodName() { return QStringLiteral("Zigbee.RefreshBindings"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = ZigbeeRefreshBindingsParams;
    using Response = ZigbeeRefreshBindingsResponse;
};

struct ZigbeeRefreshNeighborTablesMethod {
    static QString methodName() { return QStringLiteral("Zigbee.RefreshNeighborTables"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = ZigbeeRefreshNeighborTablesParams;
    using Response = ZigbeeRefreshNeighborTablesResponse;
};

struct ZigbeeRemoveBindingMethod {
    static QString methodName() { return QStringLiteral("Zigbee.RemoveBinding"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = ZigbeeRemoveBindingParams;
    using Response = ZigbeeRemoveBindingResponse;
};

struct ZigbeeRemoveNetworkMethod {
    static QString methodName() { return QStringLiteral("Zigbee.RemoveNetwork"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = ZigbeeRemoveNetworkParams;
    using Response = ZigbeeRemoveNetworkResponse;
};

struct ZigbeeRemoveNodeMethod {
    static QString methodName() { return QStringLiteral("Zigbee.RemoveNode"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = ZigbeeRemoveNodeParams;
    using Response = ZigbeeRemoveNodeResponse;
};

struct ZigbeeSetPermitJoinMethod {
    static QString methodName() { return QStringLiteral("Zigbee.SetPermitJoin"); }
    static QString permissionScope() { return QStringLiteral("PermissionScopeAdmin"); }
    using Request = ZigbeeSetPermitJoinParams;
    using Response = ZigbeeSetPermitJoinResponse;
};

struct AppDataChangedNotification {
    static QString notificationName() { return QStringLiteral("AppData.Changed"); }
    using Params = AppDataChangedNotificationParams;
};

struct ConfigurationBackupConfigurationChangedNotification {
    static QString notificationName() { return QStringLiteral("Configuration.BackupConfigurationChanged"); }
    using Params = ConfigurationBackupConfigurationChangedNotificationParams;
};

struct ConfigurationBackupFilesChangedNotification {
    static QString notificationName() { return QStringLiteral("Configuration.BackupFilesChanged"); }
    using Params = ConfigurationBackupFilesChangedNotificationParams;
};

struct ConfigurationBasicConfigurationChangedNotification {
    static QString notificationName() { return QStringLiteral("Configuration.BasicConfigurationChanged"); }
    using Params = ConfigurationBasicConfigurationChangedNotificationParams;
};

struct ConfigurationMqttPolicyChangedNotification {
    static QString notificationName() { return QStringLiteral("Configuration.MqttPolicyChanged"); }
    using Params = ConfigurationMqttPolicyChangedNotificationParams;
};

struct ConfigurationMqttPolicyRemovedNotification {
    static QString notificationName() { return QStringLiteral("Configuration.MqttPolicyRemoved"); }
    using Params = ConfigurationMqttPolicyRemovedNotificationParams;
};

struct ConfigurationMqttServerConfigurationChangedNotification {
    static QString notificationName() { return QStringLiteral("Configuration.MqttServerConfigurationChanged"); }
    using Params = ConfigurationMqttServerConfigurationChangedNotificationParams;
};

struct ConfigurationMqttServerConfigurationRemovedNotification {
    static QString notificationName() { return QStringLiteral("Configuration.MqttServerConfigurationRemoved"); }
    using Params = ConfigurationMqttServerConfigurationRemovedNotificationParams;
};

struct ConfigurationTcpServerConfigurationChangedNotification {
    static QString notificationName() { return QStringLiteral("Configuration.TcpServerConfigurationChanged"); }
    using Params = ConfigurationTcpServerConfigurationChangedNotificationParams;
};

struct ConfigurationTcpServerConfigurationRemovedNotification {
    static QString notificationName() { return QStringLiteral("Configuration.TcpServerConfigurationRemoved"); }
    using Params = ConfigurationTcpServerConfigurationRemovedNotificationParams;
};

struct ConfigurationTunnelProxyServerConfigurationChangedNotification {
    static QString notificationName() { return QStringLiteral("Configuration.TunnelProxyServerConfigurationChanged"); }
    using Params = ConfigurationTunnelProxyServerConfigurationChangedNotificationParams;
};

struct ConfigurationTunnelProxyServerConfigurationRemovedNotification {
    static QString notificationName() { return QStringLiteral("Configuration.TunnelProxyServerConfigurationRemoved"); }
    using Params = ConfigurationTunnelProxyServerConfigurationRemovedNotificationParams;
};

struct ConfigurationWebServerConfigurationChangedNotification {
    static QString notificationName() { return QStringLiteral("Configuration.WebServerConfigurationChanged"); }
    using Params = ConfigurationWebServerConfigurationChangedNotificationParams;
};

struct ConfigurationWebServerConfigurationRemovedNotification {
    static QString notificationName() { return QStringLiteral("Configuration.WebServerConfigurationRemoved"); }
    using Params = ConfigurationWebServerConfigurationRemovedNotificationParams;
};

struct ConfigurationWebSocketServerConfigurationChangedNotification {
    static QString notificationName() { return QStringLiteral("Configuration.WebSocketServerConfigurationChanged"); }
    using Params = ConfigurationWebSocketServerConfigurationChangedNotificationParams;
};

struct ConfigurationWebSocketServerConfigurationRemovedNotification {
    static QString notificationName() { return QStringLiteral("Configuration.WebSocketServerConfigurationRemoved"); }
    using Params = ConfigurationWebSocketServerConfigurationRemovedNotificationParams;
};

struct DebugLoggingCategoryLevelChangedNotification {
    static QString notificationName() { return QStringLiteral("Debug.LoggingCategoryLevelChanged"); }
    using Params = DebugLoggingCategoryLevelChangedNotificationParams;
};

struct IntegrationsEventTriggeredNotification {
    static QString notificationName() { return QStringLiteral("Integrations.EventTriggered"); }
    using Params = IntegrationsEventTriggeredNotificationParams;
};

struct IntegrationsIOConnectionAddedNotification {
    static QString notificationName() { return QStringLiteral("Integrations.IOConnectionAdded"); }
    using Params = IntegrationsIOConnectionAddedNotificationParams;
};

struct IntegrationsIOConnectionRemovedNotification {
    static QString notificationName() { return QStringLiteral("Integrations.IOConnectionRemoved"); }
    using Params = IntegrationsIOConnectionRemovedNotificationParams;
};

struct IntegrationsPluginConfigurationChangedNotification {
    static QString notificationName() { return QStringLiteral("Integrations.PluginConfigurationChanged"); }
    using Params = IntegrationsPluginConfigurationChangedNotificationParams;
};

struct IntegrationsStateChangedNotification {
    static QString notificationName() { return QStringLiteral("Integrations.StateChanged"); }
    using Params = IntegrationsStateChangedNotificationParams;
};

struct IntegrationsThingAddedNotification {
    static QString notificationName() { return QStringLiteral("Integrations.ThingAdded"); }
    using Params = IntegrationsThingAddedNotificationParams;
};

struct IntegrationsThingChangedNotification {
    static QString notificationName() { return QStringLiteral("Integrations.ThingChanged"); }
    using Params = IntegrationsThingChangedNotificationParams;
};

struct IntegrationsThingRemovedNotification {
    static QString notificationName() { return QStringLiteral("Integrations.ThingRemoved"); }
    using Params = IntegrationsThingRemovedNotificationParams;
};

struct IntegrationsThingSettingChangedNotification {
    static QString notificationName() { return QStringLiteral("Integrations.ThingSettingChanged"); }
    using Params = IntegrationsThingSettingChangedNotificationParams;
};

struct JSONRPCPushButtonAuthFinishedNotification {
    static QString notificationName() { return QStringLiteral("JSONRPC.PushButtonAuthFinished"); }
    using Params = JSONRPCPushButtonAuthFinishedNotificationParams;
};

struct LoggingLogEntryAddedNotification {
    static QString notificationName() { return QStringLiteral("Logging.LogEntryAdded"); }
    using Params = LoggingLogEntryAddedNotificationParams;
};

struct ModbusRtuModbusRtuMasterAddedNotification {
    static QString notificationName() { return QStringLiteral("ModbusRtu.ModbusRtuMasterAdded"); }
    using Params = ModbusRtuModbusRtuMasterAddedNotificationParams;
};

struct ModbusRtuModbusRtuMasterChangedNotification {
    static QString notificationName() { return QStringLiteral("ModbusRtu.ModbusRtuMasterChanged"); }
    using Params = ModbusRtuModbusRtuMasterChangedNotificationParams;
};

struct ModbusRtuModbusRtuMasterRemovedNotification {
    static QString notificationName() { return QStringLiteral("ModbusRtu.ModbusRtuMasterRemoved"); }
    using Params = ModbusRtuModbusRtuMasterRemovedNotificationParams;
};

struct ModbusRtuSerialPortAddedNotification {
    static QString notificationName() { return QStringLiteral("ModbusRtu.SerialPortAdded"); }
    using Params = ModbusRtuSerialPortAddedNotificationParams;
};

struct ModbusRtuSerialPortRemovedNotification {
    static QString notificationName() { return QStringLiteral("ModbusRtu.SerialPortRemoved"); }
    using Params = ModbusRtuSerialPortRemovedNotificationParams;
};

struct NetworkManagerNetworkStatusChangedNotification {
    static QString notificationName() { return QStringLiteral("NetworkManager.NetworkStatusChanged"); }
    using Params = NetworkManagerNetworkStatusChangedNotificationParams;
};

struct NetworkManagerWiredNetworkDeviceAddedNotification {
    static QString notificationName() { return QStringLiteral("NetworkManager.WiredNetworkDeviceAdded"); }
    using Params = NetworkManagerWiredNetworkDeviceAddedNotificationParams;
};

struct NetworkManagerWiredNetworkDeviceChangedNotification {
    static QString notificationName() { return QStringLiteral("NetworkManager.WiredNetworkDeviceChanged"); }
    using Params = NetworkManagerWiredNetworkDeviceChangedNotificationParams;
};

struct NetworkManagerWiredNetworkDeviceRemovedNotification {
    static QString notificationName() { return QStringLiteral("NetworkManager.WiredNetworkDeviceRemoved"); }
    using Params = NetworkManagerWiredNetworkDeviceRemovedNotificationParams;
};

struct NetworkManagerWirelessNetworkDeviceAddedNotification {
    static QString notificationName() { return QStringLiteral("NetworkManager.WirelessNetworkDeviceAdded"); }
    using Params = NetworkManagerWirelessNetworkDeviceAddedNotificationParams;
};

struct NetworkManagerWirelessNetworkDeviceChangedNotification {
    static QString notificationName() { return QStringLiteral("NetworkManager.WirelessNetworkDeviceChanged"); }
    using Params = NetworkManagerWirelessNetworkDeviceChangedNotificationParams;
};

struct NetworkManagerWirelessNetworkDeviceRemovedNotification {
    static QString notificationName() { return QStringLiteral("NetworkManager.WirelessNetworkDeviceRemoved"); }
    using Params = NetworkManagerWirelessNetworkDeviceRemovedNotificationParams;
};

struct RulesRuleActiveChangedNotification {
    static QString notificationName() { return QStringLiteral("Rules.RuleActiveChanged"); }
    using Params = RulesRuleActiveChangedNotificationParams;
};

struct RulesRuleAddedNotification {
    static QString notificationName() { return QStringLiteral("Rules.RuleAdded"); }
    using Params = RulesRuleAddedNotificationParams;
};

struct RulesRuleConfigurationChangedNotification {
    static QString notificationName() { return QStringLiteral("Rules.RuleConfigurationChanged"); }
    using Params = RulesRuleConfigurationChangedNotificationParams;
};

struct RulesRuleRemovedNotification {
    static QString notificationName() { return QStringLiteral("Rules.RuleRemoved"); }
    using Params = RulesRuleRemovedNotificationParams;
};

struct ScriptsScriptAddedNotification {
    static QString notificationName() { return QStringLiteral("Scripts.ScriptAdded"); }
    using Params = ScriptsScriptAddedNotificationParams;
};

struct ScriptsScriptChangedNotification {
    static QString notificationName() { return QStringLiteral("Scripts.ScriptChanged"); }
    using Params = ScriptsScriptChangedNotificationParams;
};

struct ScriptsScriptContentChangedNotification {
    static QString notificationName() { return QStringLiteral("Scripts.ScriptContentChanged"); }
    using Params = ScriptsScriptContentChangedNotificationParams;
};

struct ScriptsScriptLogMessageNotification {
    static QString notificationName() { return QStringLiteral("Scripts.ScriptLogMessage"); }
    using Params = ScriptsScriptLogMessageNotificationParams;
};

struct ScriptsScriptRemovedNotification {
    static QString notificationName() { return QStringLiteral("Scripts.ScriptRemoved"); }
    using Params = ScriptsScriptRemovedNotificationParams;
};

struct SystemCapabilitiesChangedNotification {
    static QString notificationName() { return QStringLiteral("System.CapabilitiesChanged"); }
    using Params = SystemCapabilitiesChangedNotificationParams;
};

struct SystemPackageAddedNotification {
    static QString notificationName() { return QStringLiteral("System.PackageAdded"); }
    using Params = SystemPackageAddedNotificationParams;
};

struct SystemPackageChangedNotification {
    static QString notificationName() { return QStringLiteral("System.PackageChanged"); }
    using Params = SystemPackageChangedNotificationParams;
};

struct SystemPackageRemovedNotification {
    static QString notificationName() { return QStringLiteral("System.PackageRemoved"); }
    using Params = SystemPackageRemovedNotificationParams;
};

struct SystemRepositoryAddedNotification {
    static QString notificationName() { return QStringLiteral("System.RepositoryAdded"); }
    using Params = SystemRepositoryAddedNotificationParams;
};

struct SystemRepositoryChangedNotification {
    static QString notificationName() { return QStringLiteral("System.RepositoryChanged"); }
    using Params = SystemRepositoryChangedNotificationParams;
};

struct SystemRepositoryRemovedNotification {
    static QString notificationName() { return QStringLiteral("System.RepositoryRemoved"); }
    using Params = SystemRepositoryRemovedNotificationParams;
};

struct SystemTimeConfigurationChangedNotification {
    static QString notificationName() { return QStringLiteral("System.TimeConfigurationChanged"); }
    using Params = SystemTimeConfigurationChangedNotificationParams;
};

struct SystemUpdateStatusChangedNotification {
    static QString notificationName() { return QStringLiteral("System.UpdateStatusChanged"); }
    using Params = SystemUpdateStatusChangedNotificationParams;
};

struct TagsTagAddedNotification {
    static QString notificationName() { return QStringLiteral("Tags.TagAdded"); }
    using Params = TagsTagAddedNotificationParams;
};

struct TagsTagRemovedNotification {
    static QString notificationName() { return QStringLiteral("Tags.TagRemoved"); }
    using Params = TagsTagRemovedNotificationParams;
};

struct TagsTagValueChangedNotification {
    static QString notificationName() { return QStringLiteral("Tags.TagValueChanged"); }
    using Params = TagsTagValueChangedNotificationParams;
};

struct TransfersDownloadAvailableNotification {
    static QString notificationName() { return QStringLiteral("Transfers.DownloadAvailable"); }
    using Params = TransfersDownloadAvailableNotificationParams;
};

struct UsersPushButtonAuthFinishedNotification {
    static QString notificationName() { return QStringLiteral("Users.PushButtonAuthFinished"); }
    using Params = UsersPushButtonAuthFinishedNotificationParams;
};

struct UsersUserAddedNotification {
    static QString notificationName() { return QStringLiteral("Users.UserAdded"); }
    using Params = UsersUserAddedNotificationParams;
};

struct UsersUserChangedNotification {
    static QString notificationName() { return QStringLiteral("Users.UserChanged"); }
    using Params = UsersUserChangedNotificationParams;
};

struct UsersUserRemovedNotification {
    static QString notificationName() { return QStringLiteral("Users.UserRemoved"); }
    using Params = UsersUserRemovedNotificationParams;
};

struct ZWaveNetworkAddedNotification {
    static QString notificationName() { return QStringLiteral("ZWave.NetworkAdded"); }
    using Params = ZWaveNetworkAddedNotificationParams;
};

struct ZWaveNetworkChangedNotification {
    static QString notificationName() { return QStringLiteral("ZWave.NetworkChanged"); }
    using Params = ZWaveNetworkChangedNotificationParams;
};

struct ZWaveNetworkRemovedNotification {
    static QString notificationName() { return QStringLiteral("ZWave.NetworkRemoved"); }
    using Params = ZWaveNetworkRemovedNotificationParams;
};

struct ZWaveNodeAddedNotification {
    static QString notificationName() { return QStringLiteral("ZWave.NodeAdded"); }
    using Params = ZWaveNodeAddedNotificationParams;
};

struct ZWaveNodeChangedNotification {
    static QString notificationName() { return QStringLiteral("ZWave.NodeChanged"); }
    using Params = ZWaveNodeChangedNotificationParams;
};

struct ZWaveNodeRemovedNotification {
    static QString notificationName() { return QStringLiteral("ZWave.NodeRemoved"); }
    using Params = ZWaveNodeRemovedNotificationParams;
};

struct ZigbeeAdapterAddedNotification {
    static QString notificationName() { return QStringLiteral("Zigbee.AdapterAdded"); }
    using Params = ZigbeeAdapterAddedNotificationParams;
};

struct ZigbeeAdapterRemovedNotification {
    static QString notificationName() { return QStringLiteral("Zigbee.AdapterRemoved"); }
    using Params = ZigbeeAdapterRemovedNotificationParams;
};

struct ZigbeeNetworkAddedNotification {
    static QString notificationName() { return QStringLiteral("Zigbee.NetworkAdded"); }
    using Params = ZigbeeNetworkAddedNotificationParams;
};

struct ZigbeeNetworkChangedNotification {
    static QString notificationName() { return QStringLiteral("Zigbee.NetworkChanged"); }
    using Params = ZigbeeNetworkChangedNotificationParams;
};

struct ZigbeeNetworkRemovedNotification {
    static QString notificationName() { return QStringLiteral("Zigbee.NetworkRemoved"); }
    using Params = ZigbeeNetworkRemovedNotificationParams;
};

struct ZigbeeNodeAddedNotification {
    static QString notificationName() { return QStringLiteral("Zigbee.NodeAdded"); }
    using Params = ZigbeeNodeAddedNotificationParams;
};

struct ZigbeeNodeChangedNotification {
    static QString notificationName() { return QStringLiteral("Zigbee.NodeChanged"); }
    using Params = ZigbeeNodeChangedNotificationParams;
};

struct ZigbeeNodeRemovedNotification {
    static QString notificationName() { return QStringLiteral("Zigbee.NodeRemoved"); }
    using Params = ZigbeeNodeRemovedNotificationParams;
};

} // namespace nymea::api
