# -*- coding: utf8 -*-
# Copyright (c) 2017-2025 Tencent. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#    http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

import warnings

from tencentcloud.common.abstract_model import AbstractModel


class AggrCategorySoftDetailRow(AbstractModel):
    r"""按版本聚合后的软件列表

    """

    def __init__(self):
        r"""
        :param _ID: ID
注意：此字段可能返回 null，表示取不到有效值。
        :type ID: int
        :param _Name: 软件名称
注意：此字段可能返回 null，表示取不到有效值。
        :type Name: str
        :param _PiracyRisk: 盗版风险
注意：此字段可能返回 null，表示取不到有效值。
        :type PiracyRisk: int
        :param _OsType: 系统平台
注意：此字段可能返回 null，表示取不到有效值。
        :type OsType: int
        :param _CorpName: 企业名
注意：此字段可能返回 null，表示取不到有效值。
        :type CorpName: str
        :param _InstalledDeviceNum: 安装设备数量(只支持32位)
注意：此字段可能返回 null，表示取不到有效值。
        :type InstalledDeviceNum: int
        :param _PiracyInstalledDeviceNum: 盗版安装设备数
注意：此字段可能返回 null，表示取不到有效值。
        :type PiracyInstalledDeviceNum: int
        :param _InstalledUserNum: 已安装用户数
注意：此字段可能返回 null，表示取不到有效值。
        :type InstalledUserNum: int
        :param _PiracyInstalledUserNum: 盗版软件用户数
注意：此字段可能返回 null，表示取不到有效值。
        :type PiracyInstalledUserNum: int
        :param _AuthNum: 授权总数
注意：此字段可能返回 null，表示取不到有效值。
        :type AuthNum: int
        :param _GenuineRate: 正版率
注意：此字段可能返回 null，表示取不到有效值。
        :type GenuineRate: float
        :param _UpgradableDeviceNum: 有新版本可升级的设备数量
        :type UpgradableDeviceNum: int
        :param _UpgradeDeviceNum: 有新版本可升级的设备数量
        :type UpgradeDeviceNum: int
        """
        self._ID = None
        self._Name = None
        self._PiracyRisk = None
        self._OsType = None
        self._CorpName = None
        self._InstalledDeviceNum = None
        self._PiracyInstalledDeviceNum = None
        self._InstalledUserNum = None
        self._PiracyInstalledUserNum = None
        self._AuthNum = None
        self._GenuineRate = None
        self._UpgradableDeviceNum = None
        self._UpgradeDeviceNum = None

    @property
    def ID(self):
        r"""ID
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: int
        """
        return self._ID

    @ID.setter
    def ID(self, ID):
        self._ID = ID

    @property
    def Name(self):
        r"""软件名称
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._Name

    @Name.setter
    def Name(self, Name):
        self._Name = Name

    @property
    def PiracyRisk(self):
        r"""盗版风险
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: int
        """
        return self._PiracyRisk

    @PiracyRisk.setter
    def PiracyRisk(self, PiracyRisk):
        self._PiracyRisk = PiracyRisk

    @property
    def OsType(self):
        r"""系统平台
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: int
        """
        return self._OsType

    @OsType.setter
    def OsType(self, OsType):
        self._OsType = OsType

    @property
    def CorpName(self):
        r"""企业名
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._CorpName

    @CorpName.setter
    def CorpName(self, CorpName):
        self._CorpName = CorpName

    @property
    def InstalledDeviceNum(self):
        r"""安装设备数量(只支持32位)
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: int
        """
        return self._InstalledDeviceNum

    @InstalledDeviceNum.setter
    def InstalledDeviceNum(self, InstalledDeviceNum):
        self._InstalledDeviceNum = InstalledDeviceNum

    @property
    def PiracyInstalledDeviceNum(self):
        r"""盗版安装设备数
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: int
        """
        return self._PiracyInstalledDeviceNum

    @PiracyInstalledDeviceNum.setter
    def PiracyInstalledDeviceNum(self, PiracyInstalledDeviceNum):
        self._PiracyInstalledDeviceNum = PiracyInstalledDeviceNum

    @property
    def InstalledUserNum(self):
        r"""已安装用户数
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: int
        """
        return self._InstalledUserNum

    @InstalledUserNum.setter
    def InstalledUserNum(self, InstalledUserNum):
        self._InstalledUserNum = InstalledUserNum

    @property
    def PiracyInstalledUserNum(self):
        r"""盗版软件用户数
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: int
        """
        return self._PiracyInstalledUserNum

    @PiracyInstalledUserNum.setter
    def PiracyInstalledUserNum(self, PiracyInstalledUserNum):
        self._PiracyInstalledUserNum = PiracyInstalledUserNum

    @property
    def AuthNum(self):
        r"""授权总数
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: int
        """
        return self._AuthNum

    @AuthNum.setter
    def AuthNum(self, AuthNum):
        self._AuthNum = AuthNum

    @property
    def GenuineRate(self):
        r"""正版率
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: float
        """
        return self._GenuineRate

    @GenuineRate.setter
    def GenuineRate(self, GenuineRate):
        self._GenuineRate = GenuineRate

    @property
    def UpgradableDeviceNum(self):
        r"""有新版本可升级的设备数量
        :rtype: int
        """
        return self._UpgradableDeviceNum

    @UpgradableDeviceNum.setter
    def UpgradableDeviceNum(self, UpgradableDeviceNum):
        self._UpgradableDeviceNum = UpgradableDeviceNum

    @property
    def UpgradeDeviceNum(self):
        r"""有新版本可升级的设备数量
        :rtype: int
        """
        return self._UpgradeDeviceNum

    @UpgradeDeviceNum.setter
    def UpgradeDeviceNum(self, UpgradeDeviceNum):
        self._UpgradeDeviceNum = UpgradeDeviceNum


    def _deserialize(self, params):
        self._ID = params.get("ID")
        self._Name = params.get("Name")
        self._PiracyRisk = params.get("PiracyRisk")
        self._OsType = params.get("OsType")
        self._CorpName = params.get("CorpName")
        self._InstalledDeviceNum = params.get("InstalledDeviceNum")
        self._PiracyInstalledDeviceNum = params.get("PiracyInstalledDeviceNum")
        self._InstalledUserNum = params.get("InstalledUserNum")
        self._PiracyInstalledUserNum = params.get("PiracyInstalledUserNum")
        self._AuthNum = params.get("AuthNum")
        self._GenuineRate = params.get("GenuineRate")
        self._UpgradableDeviceNum = params.get("UpgradableDeviceNum")
        self._UpgradeDeviceNum = params.get("UpgradeDeviceNum")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class AggrSoftDeviceRow(AbstractModel):
    r"""聚合软件的已安装终端列表中的一行数据

    """

    def __init__(self):
        r"""
        :param _DeviceName: 终端名
注意：此字段可能返回 null，表示取不到有效值。
        :type DeviceName: str
        :param _LastLoginAccount: 最近登录账号
注意：此字段可能返回 null，表示取不到有效值。
        :type LastLoginAccount: str
        :param _DeviceUserName: 终端用户名
注意：此字段可能返回 null，表示取不到有效值。
        :type DeviceUserName: str
        :param _Version: 软件版本
注意：此字段可能返回 null，表示取不到有效值。
        :type Version: str
        :param _PiracyRisk: 是否盗版
注意：此字段可能返回 null，表示取不到有效值。
        :type PiracyRisk: int
        :param _PiracyReason: 盗版原因
注意：此字段可能返回 null，表示取不到有效值。
        :type PiracyReason: str
        :param _InstallTime: 安装时间
注意：此字段可能返回 null，表示取不到有效值。
        :type InstallTime: str
        :param _UserPath: 用户目录
注意：此字段可能返回 null，表示取不到有效值。
        :type UserPath: str
        :param _UserGroup: 所在分组
注意：此字段可能返回 null，表示取不到有效值。
        :type UserGroup: str
        :param _IP: IP
注意：此字段可能返回 null，表示取不到有效值。
        :type IP: str
        :param _MAC: MAC
注意：此字段可能返回 null，表示取不到有效值。
        :type MAC: str
        :param _UseTime: 使用时长
注意：此字段可能返回 null，表示取不到有效值。
        :type UseTime: int
        :param _DeviceId: 设备ID
注意：此字段可能返回 null，表示取不到有效值。
        :type DeviceId: int
        :param _FullSoftName: 软件全名
注意：此字段可能返回 null，表示取不到有效值。
        :type FullSoftName: str
        :param _Id: 数据ID（唯一）
注意：此字段可能返回 null，表示取不到有效值。
        :type Id: int
        :param _NewVersion: 该终端此款软件可升级到的目标版本号
        :type NewVersion: str
        :param _UpgradeSoftId: 该软件对应运营配置的可升级id
        :type UpgradeSoftId: int
        :param _RemarkName: 终端备注名
        :type RemarkName: str
        :param _SoftwareId: 软件id
        :type SoftwareId: int
        :param _OsType: 0:win 2:mac
        :type OsType: int
        :param _AssetType: 所有权
        :type AssetType: str
        """
        self._DeviceName = None
        self._LastLoginAccount = None
        self._DeviceUserName = None
        self._Version = None
        self._PiracyRisk = None
        self._PiracyReason = None
        self._InstallTime = None
        self._UserPath = None
        self._UserGroup = None
        self._IP = None
        self._MAC = None
        self._UseTime = None
        self._DeviceId = None
        self._FullSoftName = None
        self._Id = None
        self._NewVersion = None
        self._UpgradeSoftId = None
        self._RemarkName = None
        self._SoftwareId = None
        self._OsType = None
        self._AssetType = None

    @property
    def DeviceName(self):
        r"""终端名
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._DeviceName

    @DeviceName.setter
    def DeviceName(self, DeviceName):
        self._DeviceName = DeviceName

    @property
    def LastLoginAccount(self):
        r"""最近登录账号
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._LastLoginAccount

    @LastLoginAccount.setter
    def LastLoginAccount(self, LastLoginAccount):
        self._LastLoginAccount = LastLoginAccount

    @property
    def DeviceUserName(self):
        r"""终端用户名
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._DeviceUserName

    @DeviceUserName.setter
    def DeviceUserName(self, DeviceUserName):
        self._DeviceUserName = DeviceUserName

    @property
    def Version(self):
        r"""软件版本
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._Version

    @Version.setter
    def Version(self, Version):
        self._Version = Version

    @property
    def PiracyRisk(self):
        r"""是否盗版
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: int
        """
        return self._PiracyRisk

    @PiracyRisk.setter
    def PiracyRisk(self, PiracyRisk):
        self._PiracyRisk = PiracyRisk

    @property
    def PiracyReason(self):
        r"""盗版原因
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._PiracyReason

    @PiracyReason.setter
    def PiracyReason(self, PiracyReason):
        self._PiracyReason = PiracyReason

    @property
    def InstallTime(self):
        r"""安装时间
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._InstallTime

    @InstallTime.setter
    def InstallTime(self, InstallTime):
        self._InstallTime = InstallTime

    @property
    def UserPath(self):
        r"""用户目录
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._UserPath

    @UserPath.setter
    def UserPath(self, UserPath):
        self._UserPath = UserPath

    @property
    def UserGroup(self):
        r"""所在分组
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._UserGroup

    @UserGroup.setter
    def UserGroup(self, UserGroup):
        self._UserGroup = UserGroup

    @property
    def IP(self):
        r"""IP
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._IP

    @IP.setter
    def IP(self, IP):
        self._IP = IP

    @property
    def MAC(self):
        r"""MAC
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._MAC

    @MAC.setter
    def MAC(self, MAC):
        self._MAC = MAC

    @property
    def UseTime(self):
        r"""使用时长
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: int
        """
        return self._UseTime

    @UseTime.setter
    def UseTime(self, UseTime):
        self._UseTime = UseTime

    @property
    def DeviceId(self):
        r"""设备ID
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: int
        """
        return self._DeviceId

    @DeviceId.setter
    def DeviceId(self, DeviceId):
        self._DeviceId = DeviceId

    @property
    def FullSoftName(self):
        r"""软件全名
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._FullSoftName

    @FullSoftName.setter
    def FullSoftName(self, FullSoftName):
        self._FullSoftName = FullSoftName

    @property
    def Id(self):
        r"""数据ID（唯一）
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: int
        """
        return self._Id

    @Id.setter
    def Id(self, Id):
        self._Id = Id

    @property
    def NewVersion(self):
        r"""该终端此款软件可升级到的目标版本号
        :rtype: str
        """
        return self._NewVersion

    @NewVersion.setter
    def NewVersion(self, NewVersion):
        self._NewVersion = NewVersion

    @property
    def UpgradeSoftId(self):
        r"""该软件对应运营配置的可升级id
        :rtype: int
        """
        return self._UpgradeSoftId

    @UpgradeSoftId.setter
    def UpgradeSoftId(self, UpgradeSoftId):
        self._UpgradeSoftId = UpgradeSoftId

    @property
    def RemarkName(self):
        r"""终端备注名
        :rtype: str
        """
        return self._RemarkName

    @RemarkName.setter
    def RemarkName(self, RemarkName):
        self._RemarkName = RemarkName

    @property
    def SoftwareId(self):
        r"""软件id
        :rtype: int
        """
        return self._SoftwareId

    @SoftwareId.setter
    def SoftwareId(self, SoftwareId):
        self._SoftwareId = SoftwareId

    @property
    def OsType(self):
        r"""0:win 2:mac
        :rtype: int
        """
        return self._OsType

    @OsType.setter
    def OsType(self, OsType):
        self._OsType = OsType

    @property
    def AssetType(self):
        r"""所有权
        :rtype: str
        """
        return self._AssetType

    @AssetType.setter
    def AssetType(self, AssetType):
        self._AssetType = AssetType


    def _deserialize(self, params):
        self._DeviceName = params.get("DeviceName")
        self._LastLoginAccount = params.get("LastLoginAccount")
        self._DeviceUserName = params.get("DeviceUserName")
        self._Version = params.get("Version")
        self._PiracyRisk = params.get("PiracyRisk")
        self._PiracyReason = params.get("PiracyReason")
        self._InstallTime = params.get("InstallTime")
        self._UserPath = params.get("UserPath")
        self._UserGroup = params.get("UserGroup")
        self._IP = params.get("IP")
        self._MAC = params.get("MAC")
        self._UseTime = params.get("UseTime")
        self._DeviceId = params.get("DeviceId")
        self._FullSoftName = params.get("FullSoftName")
        self._Id = params.get("Id")
        self._NewVersion = params.get("NewVersion")
        self._UpgradeSoftId = params.get("UpgradeSoftId")
        self._RemarkName = params.get("RemarkName")
        self._SoftwareId = params.get("SoftwareId")
        self._OsType = params.get("OsType")
        self._AssetType = params.get("AssetType")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class BindBusinessResourceConnectorGroupRequest(AbstractModel):
    r"""BindBusinessResourceConnectorGroup请求参数结构体

    """

    def __init__(self):
        r"""
        :param _ServiceId: 要绑定连接器的业务资源id，创建时候响应会返回，修改调用端自己获取传递
        :type ServiceId: int
        :param _ConnectorGroupId: 业务资源要绑定的连接器id
        :type ConnectorGroupId: str
        """
        self._ServiceId = None
        self._ConnectorGroupId = None

    @property
    def ServiceId(self):
        r"""要绑定连接器的业务资源id，创建时候响应会返回，修改调用端自己获取传递
        :rtype: int
        """
        return self._ServiceId

    @ServiceId.setter
    def ServiceId(self, ServiceId):
        self._ServiceId = ServiceId

    @property
    def ConnectorGroupId(self):
        r"""业务资源要绑定的连接器id
        :rtype: str
        """
        return self._ConnectorGroupId

    @ConnectorGroupId.setter
    def ConnectorGroupId(self, ConnectorGroupId):
        self._ConnectorGroupId = ConnectorGroupId


    def _deserialize(self, params):
        self._ServiceId = params.get("ServiceId")
        self._ConnectorGroupId = params.get("ConnectorGroupId")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class BindBusinessResourceConnectorGroupResponse(AbstractModel):
    r"""BindBusinessResourceConnectorGroup返回参数结构体

    """

    def __init__(self):
        r"""
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._RequestId = None

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        self._RequestId = params.get("RequestId")


class ComplexRule(AbstractModel):
    r"""自动划分规则数据

    """

    def __init__(self):
        r"""
        :param _SimpleRules: 简单规则表达式
        :type SimpleRules: list of SimpleRule
        :param _Relation: 表达式间逻辑关系
        :type Relation: str
        """
        self._SimpleRules = None
        self._Relation = None

    @property
    def SimpleRules(self):
        r"""简单规则表达式
        :rtype: list of SimpleRule
        """
        return self._SimpleRules

    @SimpleRules.setter
    def SimpleRules(self, SimpleRules):
        self._SimpleRules = SimpleRules

    @property
    def Relation(self):
        r"""表达式间逻辑关系
        :rtype: str
        """
        return self._Relation

    @Relation.setter
    def Relation(self, Relation):
        self._Relation = Relation


    def _deserialize(self, params):
        if params.get("SimpleRules") is not None:
            self._SimpleRules = []
            for item in params.get("SimpleRules"):
                obj = SimpleRule()
                obj._deserialize(item)
                self._SimpleRules.append(obj)
        self._Relation = params.get("Relation")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class Condition(AbstractModel):
    r"""这是一个多接口的公共数据结构，用于接口根据条件进行过滤和分页。具体支持哪些过滤条件，参考具体使用该结构的接口字段描述

    """

    def __init__(self):
        r"""
        :param _Filters: Filters 条件过滤
        :type Filters: list of Filter
        :param _FilterGroups: FilterGroups 条件过滤组
        :type FilterGroups: list of FilterGroup
        :param _Sort: Sort 排序字段
        :type Sort: :class:`tencentcloud.ioa.v20220601.models.Sort`
        :param _PageSize: PageSize 每页获取数(只支持32位)
        :type PageSize: int
        :param _PageNum: PageNum 获取第几页(只支持32位)
        :type PageNum: int
        :param _RulePayload: 复杂查询规则条件查询项（支持任意层级AND/OR组合）
注意：此字段可能返回 null，表示取不到有效值。
        :type RulePayload: :class:`tencentcloud.ioa.v20220601.models.RulePayload`
        :param _RulePayloadMode: 规则模式：0-使用旧的FilterGroups，1-使用新的RulePayload
注意：此字段可能返回 null，表示取不到有效值。
        :type RulePayloadMode: int
        """
        self._Filters = None
        self._FilterGroups = None
        self._Sort = None
        self._PageSize = None
        self._PageNum = None
        self._RulePayload = None
        self._RulePayloadMode = None

    @property
    def Filters(self):
        r"""Filters 条件过滤
        :rtype: list of Filter
        """
        return self._Filters

    @Filters.setter
    def Filters(self, Filters):
        self._Filters = Filters

    @property
    def FilterGroups(self):
        r"""FilterGroups 条件过滤组
        :rtype: list of FilterGroup
        """
        return self._FilterGroups

    @FilterGroups.setter
    def FilterGroups(self, FilterGroups):
        self._FilterGroups = FilterGroups

    @property
    def Sort(self):
        r"""Sort 排序字段
        :rtype: :class:`tencentcloud.ioa.v20220601.models.Sort`
        """
        return self._Sort

    @Sort.setter
    def Sort(self, Sort):
        self._Sort = Sort

    @property
    def PageSize(self):
        r"""PageSize 每页获取数(只支持32位)
        :rtype: int
        """
        return self._PageSize

    @PageSize.setter
    def PageSize(self, PageSize):
        self._PageSize = PageSize

    @property
    def PageNum(self):
        r"""PageNum 获取第几页(只支持32位)
        :rtype: int
        """
        return self._PageNum

    @PageNum.setter
    def PageNum(self, PageNum):
        self._PageNum = PageNum

    @property
    def RulePayload(self):
        r"""复杂查询规则条件查询项（支持任意层级AND/OR组合）
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: :class:`tencentcloud.ioa.v20220601.models.RulePayload`
        """
        return self._RulePayload

    @RulePayload.setter
    def RulePayload(self, RulePayload):
        self._RulePayload = RulePayload

    @property
    def RulePayloadMode(self):
        r"""规则模式：0-使用旧的FilterGroups，1-使用新的RulePayload
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: int
        """
        return self._RulePayloadMode

    @RulePayloadMode.setter
    def RulePayloadMode(self, RulePayloadMode):
        self._RulePayloadMode = RulePayloadMode


    def _deserialize(self, params):
        if params.get("Filters") is not None:
            self._Filters = []
            for item in params.get("Filters"):
                obj = Filter()
                obj._deserialize(item)
                self._Filters.append(obj)
        if params.get("FilterGroups") is not None:
            self._FilterGroups = []
            for item in params.get("FilterGroups"):
                obj = FilterGroup()
                obj._deserialize(item)
                self._FilterGroups.append(obj)
        if params.get("Sort") is not None:
            self._Sort = Sort()
            self._Sort._deserialize(params.get("Sort"))
        self._PageSize = params.get("PageSize")
        self._PageNum = params.get("PageNum")
        if params.get("RulePayload") is not None:
            self._RulePayload = RulePayload()
            self._RulePayload._deserialize(params.get("RulePayload"))
        self._RulePayloadMode = params.get("RulePayloadMode")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class CreateBusinessResourceData(AbstractModel):
    r"""创建业务资源响应的数据

    """

    def __init__(self):
        r"""
        :param _ServiceId: 创建成功的业务资源数据id
注意：此字段可能返回 null，表示取不到有效值。
        :type ServiceId: int
        """
        self._ServiceId = None

    @property
    def ServiceId(self):
        r"""创建成功的业务资源数据id
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: int
        """
        return self._ServiceId

    @ServiceId.setter
    def ServiceId(self, ServiceId):
        self._ServiceId = ServiceId


    def _deserialize(self, params):
        self._ServiceId = params.get("ServiceId")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class CreateBusinessResourceRequest(AbstractModel):
    r"""CreateBusinessResource请求参数结构体

    """

    def __init__(self):
        r"""
        :param _AreaId: 业务资源所在的模块id，没有资源模块先创建资源模块(只支持32位)
        :type AreaId: int
        :param _Protocol: 业务资源协议类型, 1:UDP, 2:TCP, 3:所有协议(只支持32位)
        :type Protocol: int
        :param _ServiceName: 业务资源名称，同一个资源模块下面不可重复
        :type ServiceName: str
        :param _ServiceType: 业务资源类型:ip,domain,ip_section，对应ip、域名、ip段
        :type ServiceType: str
        :param _ServicePort: 业务资源端口 all,1-65535
        :type ServicePort: str
        :param _Levels: 业务资源优先级 1-65535(只支持32位)
        :type Levels: int
        :param _ServiceAddress: 业务资源地址(ip、域名、ip段)
        :type ServiceAddress: str
        :param _DirectConn: 是否走代理,该参数不传，默认为0, 2：内外网直连，1：内网直连， 0：不启用代理配置(只支持32位)
        :type DirectConn: int
        """
        self._AreaId = None
        self._Protocol = None
        self._ServiceName = None
        self._ServiceType = None
        self._ServicePort = None
        self._Levels = None
        self._ServiceAddress = None
        self._DirectConn = None

    @property
    def AreaId(self):
        r"""业务资源所在的模块id，没有资源模块先创建资源模块(只支持32位)
        :rtype: int
        """
        return self._AreaId

    @AreaId.setter
    def AreaId(self, AreaId):
        self._AreaId = AreaId

    @property
    def Protocol(self):
        r"""业务资源协议类型, 1:UDP, 2:TCP, 3:所有协议(只支持32位)
        :rtype: int
        """
        return self._Protocol

    @Protocol.setter
    def Protocol(self, Protocol):
        self._Protocol = Protocol

    @property
    def ServiceName(self):
        r"""业务资源名称，同一个资源模块下面不可重复
        :rtype: str
        """
        return self._ServiceName

    @ServiceName.setter
    def ServiceName(self, ServiceName):
        self._ServiceName = ServiceName

    @property
    def ServiceType(self):
        r"""业务资源类型:ip,domain,ip_section，对应ip、域名、ip段
        :rtype: str
        """
        return self._ServiceType

    @ServiceType.setter
    def ServiceType(self, ServiceType):
        self._ServiceType = ServiceType

    @property
    def ServicePort(self):
        r"""业务资源端口 all,1-65535
        :rtype: str
        """
        return self._ServicePort

    @ServicePort.setter
    def ServicePort(self, ServicePort):
        self._ServicePort = ServicePort

    @property
    def Levels(self):
        r"""业务资源优先级 1-65535(只支持32位)
        :rtype: int
        """
        return self._Levels

    @Levels.setter
    def Levels(self, Levels):
        self._Levels = Levels

    @property
    def ServiceAddress(self):
        r"""业务资源地址(ip、域名、ip段)
        :rtype: str
        """
        return self._ServiceAddress

    @ServiceAddress.setter
    def ServiceAddress(self, ServiceAddress):
        self._ServiceAddress = ServiceAddress

    @property
    def DirectConn(self):
        r"""是否走代理,该参数不传，默认为0, 2：内外网直连，1：内网直连， 0：不启用代理配置(只支持32位)
        :rtype: int
        """
        return self._DirectConn

    @DirectConn.setter
    def DirectConn(self, DirectConn):
        self._DirectConn = DirectConn


    def _deserialize(self, params):
        self._AreaId = params.get("AreaId")
        self._Protocol = params.get("Protocol")
        self._ServiceName = params.get("ServiceName")
        self._ServiceType = params.get("ServiceType")
        self._ServicePort = params.get("ServicePort")
        self._Levels = params.get("Levels")
        self._ServiceAddress = params.get("ServiceAddress")
        self._DirectConn = params.get("DirectConn")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class CreateBusinessResourceResponse(AbstractModel):
    r"""CreateBusinessResource返回参数结构体

    """

    def __init__(self):
        r"""
        :param _Data: 创建业务资源响应的数据
注意：此字段可能返回 null，表示取不到有效值。
        :type Data: :class:`tencentcloud.ioa.v20220601.models.CreateBusinessResourceData`
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._Data = None
        self._RequestId = None

    @property
    def Data(self):
        r"""创建业务资源响应的数据
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: :class:`tencentcloud.ioa.v20220601.models.CreateBusinessResourceData`
        """
        return self._Data

    @Data.setter
    def Data(self, Data):
        self._Data = Data

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        if params.get("Data") is not None:
            self._Data = CreateBusinessResourceData()
            self._Data._deserialize(params.get("Data"))
        self._RequestId = params.get("RequestId")


class CreateCompanyDirectoryConfigRequest(AbstractModel):
    r"""CreateCompanyDirectoryConfig请求参数结构体

    """

    def __init__(self):
        r"""
        :param _Type: <p>企业目录类型</p>
        :type Type: str
        :param _Name: <p>企业目录名</p>
        :type Name: str
        :param _Config: <p>配置是通过 SM2 加密再 Hex 之后的数据</p>
        :type Config: str
        :param _SyncEnable: <p>是否开启定时同步</p>
        :type SyncEnable: bool
        :param _SyncPolicy: <p>定时同步的策略，枚举值：支持每4小时（4hours）/每日定时（daily）/每周定时（weekly）</p>
        :type SyncPolicy: str
        :param _SyncPolicyParams: <p>JSON 字符串，针对不同类型的同步策略，提取对应不同的值</p>
        :type SyncPolicyParams: str
        :param _CreateAuthConfig: <p>是否同步创建认证源</p>
        :type CreateAuthConfig: bool
        :param _DisplayOnLoginPage: <p>是否在登录页展示</p>
        :type DisplayOnLoginPage: bool
        :param _Description: <p>描述</p>
        :type Description: str
        :param _Scene: <p>使用场景：API 创建，快速上手，普通配置等</p>
        :type Scene: str
        """
        self._Type = None
        self._Name = None
        self._Config = None
        self._SyncEnable = None
        self._SyncPolicy = None
        self._SyncPolicyParams = None
        self._CreateAuthConfig = None
        self._DisplayOnLoginPage = None
        self._Description = None
        self._Scene = None

    @property
    def Type(self):
        r"""<p>企业目录类型</p>
        :rtype: str
        """
        return self._Type

    @Type.setter
    def Type(self, Type):
        self._Type = Type

    @property
    def Name(self):
        r"""<p>企业目录名</p>
        :rtype: str
        """
        return self._Name

    @Name.setter
    def Name(self, Name):
        self._Name = Name

    @property
    def Config(self):
        r"""<p>配置是通过 SM2 加密再 Hex 之后的数据</p>
        :rtype: str
        """
        return self._Config

    @Config.setter
    def Config(self, Config):
        self._Config = Config

    @property
    def SyncEnable(self):
        r"""<p>是否开启定时同步</p>
        :rtype: bool
        """
        return self._SyncEnable

    @SyncEnable.setter
    def SyncEnable(self, SyncEnable):
        self._SyncEnable = SyncEnable

    @property
    def SyncPolicy(self):
        r"""<p>定时同步的策略，枚举值：支持每4小时（4hours）/每日定时（daily）/每周定时（weekly）</p>
        :rtype: str
        """
        return self._SyncPolicy

    @SyncPolicy.setter
    def SyncPolicy(self, SyncPolicy):
        self._SyncPolicy = SyncPolicy

    @property
    def SyncPolicyParams(self):
        r"""<p>JSON 字符串，针对不同类型的同步策略，提取对应不同的值</p>
        :rtype: str
        """
        return self._SyncPolicyParams

    @SyncPolicyParams.setter
    def SyncPolicyParams(self, SyncPolicyParams):
        self._SyncPolicyParams = SyncPolicyParams

    @property
    def CreateAuthConfig(self):
        r"""<p>是否同步创建认证源</p>
        :rtype: bool
        """
        return self._CreateAuthConfig

    @CreateAuthConfig.setter
    def CreateAuthConfig(self, CreateAuthConfig):
        self._CreateAuthConfig = CreateAuthConfig

    @property
    def DisplayOnLoginPage(self):
        r"""<p>是否在登录页展示</p>
        :rtype: bool
        """
        return self._DisplayOnLoginPage

    @DisplayOnLoginPage.setter
    def DisplayOnLoginPage(self, DisplayOnLoginPage):
        self._DisplayOnLoginPage = DisplayOnLoginPage

    @property
    def Description(self):
        r"""<p>描述</p>
        :rtype: str
        """
        return self._Description

    @Description.setter
    def Description(self, Description):
        self._Description = Description

    @property
    def Scene(self):
        r"""<p>使用场景：API 创建，快速上手，普通配置等</p>
        :rtype: str
        """
        return self._Scene

    @Scene.setter
    def Scene(self, Scene):
        self._Scene = Scene


    def _deserialize(self, params):
        self._Type = params.get("Type")
        self._Name = params.get("Name")
        self._Config = params.get("Config")
        self._SyncEnable = params.get("SyncEnable")
        self._SyncPolicy = params.get("SyncPolicy")
        self._SyncPolicyParams = params.get("SyncPolicyParams")
        self._CreateAuthConfig = params.get("CreateAuthConfig")
        self._DisplayOnLoginPage = params.get("DisplayOnLoginPage")
        self._Description = params.get("Description")
        self._Scene = params.get("Scene")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class CreateCompanyDirectoryConfigResponse(AbstractModel):
    r"""CreateCompanyDirectoryConfig返回参数结构体

    """

    def __init__(self):
        r"""
        :param _Data: <p>创建企业目录配置的结果</p>
        :type Data: :class:`tencentcloud.ioa.v20220601.models.DirectoryConfigResultData`
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._Data = None
        self._RequestId = None

    @property
    def Data(self):
        r"""<p>创建企业目录配置的结果</p>
        :rtype: :class:`tencentcloud.ioa.v20220601.models.DirectoryConfigResultData`
        """
        return self._Data

    @Data.setter
    def Data(self, Data):
        self._Data = Data

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        if params.get("Data") is not None:
            self._Data = DirectoryConfigResultData()
            self._Data._deserialize(params.get("Data"))
        self._RequestId = params.get("RequestId")


class CreateDLPFileDetectTaskData(AbstractModel):
    r"""文件鉴定任务分页数据

    """

    def __init__(self):
        r"""
        :param _TaskRequestId: 任务请求唯一Id
        :type TaskRequestId: list of str
        """
        self._TaskRequestId = None

    @property
    def TaskRequestId(self):
        r"""任务请求唯一Id
        :rtype: list of str
        """
        return self._TaskRequestId

    @TaskRequestId.setter
    def TaskRequestId(self, TaskRequestId):
        self._TaskRequestId = TaskRequestId


    def _deserialize(self, params):
        self._TaskRequestId = params.get("TaskRequestId")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class CreateDLPFileDetectTaskRequest(AbstractModel):
    r"""CreateDLPFileDetectTask请求参数结构体

    """

    def __init__(self):
        r"""
        :param _DownloadUrl: 文件下载Url
        :type DownloadUrl: str
        :param _FileName: 文件名
        :type FileName: str
        :param _FileMd5: 文件Md5
        :type FileMd5: str
        :param _BalanceType: 负载类型  1 从GroupId中选一节点 鉴定  2使用所有SelectNodeIds节点鉴定
        :type BalanceType: int
        :param _DomainInstanceId: 管理域实例ID，用于CAM管理域权限分配。若企业未进行管理域的划分，可直接传入根域"1"，此时表示针对当前企业的全部设备和账号进行接口CRUD，具体CRUD的影响范围限制于相应接口的入参。
        :type DomainInstanceId: str
        :param _SelectNodeIds: 选中节点唯一Id列表,BalanceType=2时必填
        :type SelectNodeIds: list of str
        :param _GroupId: 节点组唯一Id,BalanceType=1时必填
        :type GroupId: str
        """
        self._DownloadUrl = None
        self._FileName = None
        self._FileMd5 = None
        self._BalanceType = None
        self._DomainInstanceId = None
        self._SelectNodeIds = None
        self._GroupId = None

    @property
    def DownloadUrl(self):
        r"""文件下载Url
        :rtype: str
        """
        return self._DownloadUrl

    @DownloadUrl.setter
    def DownloadUrl(self, DownloadUrl):
        self._DownloadUrl = DownloadUrl

    @property
    def FileName(self):
        r"""文件名
        :rtype: str
        """
        return self._FileName

    @FileName.setter
    def FileName(self, FileName):
        self._FileName = FileName

    @property
    def FileMd5(self):
        r"""文件Md5
        :rtype: str
        """
        return self._FileMd5

    @FileMd5.setter
    def FileMd5(self, FileMd5):
        self._FileMd5 = FileMd5

    @property
    def BalanceType(self):
        r"""负载类型  1 从GroupId中选一节点 鉴定  2使用所有SelectNodeIds节点鉴定
        :rtype: int
        """
        return self._BalanceType

    @BalanceType.setter
    def BalanceType(self, BalanceType):
        self._BalanceType = BalanceType

    @property
    def DomainInstanceId(self):
        r"""管理域实例ID，用于CAM管理域权限分配。若企业未进行管理域的划分，可直接传入根域"1"，此时表示针对当前企业的全部设备和账号进行接口CRUD，具体CRUD的影响范围限制于相应接口的入参。
        :rtype: str
        """
        return self._DomainInstanceId

    @DomainInstanceId.setter
    def DomainInstanceId(self, DomainInstanceId):
        self._DomainInstanceId = DomainInstanceId

    @property
    def SelectNodeIds(self):
        r"""选中节点唯一Id列表,BalanceType=2时必填
        :rtype: list of str
        """
        return self._SelectNodeIds

    @SelectNodeIds.setter
    def SelectNodeIds(self, SelectNodeIds):
        self._SelectNodeIds = SelectNodeIds

    @property
    def GroupId(self):
        r"""节点组唯一Id,BalanceType=1时必填
        :rtype: str
        """
        return self._GroupId

    @GroupId.setter
    def GroupId(self, GroupId):
        self._GroupId = GroupId


    def _deserialize(self, params):
        self._DownloadUrl = params.get("DownloadUrl")
        self._FileName = params.get("FileName")
        self._FileMd5 = params.get("FileMd5")
        self._BalanceType = params.get("BalanceType")
        self._DomainInstanceId = params.get("DomainInstanceId")
        self._SelectNodeIds = params.get("SelectNodeIds")
        self._GroupId = params.get("GroupId")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class CreateDLPFileDetectTaskResponse(AbstractModel):
    r"""CreateDLPFileDetectTask返回参数结构体

    """

    def __init__(self):
        r"""
        :param _Data: 创建文件鉴定任务数据
        :type Data: :class:`tencentcloud.ioa.v20220601.models.CreateDLPFileDetectTaskData`
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._Data = None
        self._RequestId = None

    @property
    def Data(self):
        r"""创建文件鉴定任务数据
        :rtype: :class:`tencentcloud.ioa.v20220601.models.CreateDLPFileDetectTaskData`
        """
        return self._Data

    @Data.setter
    def Data(self, Data):
        self._Data = Data

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        if params.get("Data") is not None:
            self._Data = CreateDLPFileDetectTaskData()
            self._Data._deserialize(params.get("Data"))
        self._RequestId = params.get("RequestId")


class CreateDLPFileDetectionTaskData(AbstractModel):
    r"""提交送检任务相应数据

    """

    def __init__(self):
        r"""
        :param _DLPFileDetectionTaskID: 提交任务生成的id，也即requestID。用于后续查询
        :type DLPFileDetectionTaskID: str
        """
        self._DLPFileDetectionTaskID = None

    @property
    def DLPFileDetectionTaskID(self):
        r"""提交任务生成的id，也即requestID。用于后续查询
        :rtype: str
        """
        return self._DLPFileDetectionTaskID

    @DLPFileDetectionTaskID.setter
    def DLPFileDetectionTaskID(self, DLPFileDetectionTaskID):
        self._DLPFileDetectionTaskID = DLPFileDetectionTaskID


    def _deserialize(self, params):
        self._DLPFileDetectionTaskID = params.get("DLPFileDetectionTaskID")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class CreateDLPFileDetectionTaskRequest(AbstractModel):
    r"""CreateDLPFileDetectionTask请求参数结构体

    """

    def __init__(self):
        r"""
        :param _Url: 文件下载链接，要求公网可访问，GET方式访问后为文件
        :type Url: str
        :param _FileName: 文件名，带后缀
        :type FileName: str
        :param _FileMd5:  文件md5，传入相同md5会直接使用之前缓存的结果。

> 请注意：不同文件使用相同md5送检，会命中缓存得到旧的检测结果
        :type FileMd5: str
        :param _DomainInstanceId: 管理域实例ID，用于CAM管理域权限分配
        :type DomainInstanceId: str
        :param _CallBackUrl: 回调地址，暂时未使用
        :type CallBackUrl: str
        """
        self._Url = None
        self._FileName = None
        self._FileMd5 = None
        self._DomainInstanceId = None
        self._CallBackUrl = None

    @property
    def Url(self):
        r"""文件下载链接，要求公网可访问，GET方式访问后为文件
        :rtype: str
        """
        return self._Url

    @Url.setter
    def Url(self, Url):
        self._Url = Url

    @property
    def FileName(self):
        r"""文件名，带后缀
        :rtype: str
        """
        return self._FileName

    @FileName.setter
    def FileName(self, FileName):
        self._FileName = FileName

    @property
    def FileMd5(self):
        r""" 文件md5，传入相同md5会直接使用之前缓存的结果。

> 请注意：不同文件使用相同md5送检，会命中缓存得到旧的检测结果
        :rtype: str
        """
        return self._FileMd5

    @FileMd5.setter
    def FileMd5(self, FileMd5):
        self._FileMd5 = FileMd5

    @property
    def DomainInstanceId(self):
        r"""管理域实例ID，用于CAM管理域权限分配
        :rtype: str
        """
        return self._DomainInstanceId

    @DomainInstanceId.setter
    def DomainInstanceId(self, DomainInstanceId):
        self._DomainInstanceId = DomainInstanceId

    @property
    def CallBackUrl(self):
        r"""回调地址，暂时未使用
        :rtype: str
        """
        return self._CallBackUrl

    @CallBackUrl.setter
    def CallBackUrl(self, CallBackUrl):
        self._CallBackUrl = CallBackUrl


    def _deserialize(self, params):
        self._Url = params.get("Url")
        self._FileName = params.get("FileName")
        self._FileMd5 = params.get("FileMd5")
        self._DomainInstanceId = params.get("DomainInstanceId")
        self._CallBackUrl = params.get("CallBackUrl")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class CreateDLPFileDetectionTaskResponse(AbstractModel):
    r"""CreateDLPFileDetectionTask返回参数结构体

    """

    def __init__(self):
        r"""
        :param _Data: 创建送检任务响应数据
        :type Data: :class:`tencentcloud.ioa.v20220601.models.CreateDLPFileDetectionTaskData`
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._Data = None
        self._RequestId = None

    @property
    def Data(self):
        r"""创建送检任务响应数据
        :rtype: :class:`tencentcloud.ioa.v20220601.models.CreateDLPFileDetectionTaskData`
        """
        return self._Data

    @Data.setter
    def Data(self, Data):
        self._Data = Data

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        if params.get("Data") is not None:
            self._Data = CreateDLPFileDetectionTaskData()
            self._Data._deserialize(params.get("Data"))
        self._RequestId = params.get("RequestId")


class CreateDeviceTaskRequest(AbstractModel):
    r"""CreateDeviceTask请求参数结构体

    """

    def __init__(self):
        r"""
        :param _DomainInstanceId: 管理域实例ID，用于CAM管理域权限分配。若企业未进行管理域的划分，可直接传入根域"1"，此时表示针对当前企业的全部设备和账号进行接口CRUD，具体CRUD的影响范围限制于相应接口的入参。
        :type DomainInstanceId: str
        :param _Mid: 终端id
        :type Mid: str
        """
        self._DomainInstanceId = None
        self._Mid = None

    @property
    def DomainInstanceId(self):
        r"""管理域实例ID，用于CAM管理域权限分配。若企业未进行管理域的划分，可直接传入根域"1"，此时表示针对当前企业的全部设备和账号进行接口CRUD，具体CRUD的影响范围限制于相应接口的入参。
        :rtype: str
        """
        return self._DomainInstanceId

    @DomainInstanceId.setter
    def DomainInstanceId(self, DomainInstanceId):
        self._DomainInstanceId = DomainInstanceId

    @property
    def Mid(self):
        r"""终端id
        :rtype: str
        """
        return self._Mid

    @Mid.setter
    def Mid(self, Mid):
        self._Mid = Mid


    def _deserialize(self, params):
        self._DomainInstanceId = params.get("DomainInstanceId")
        self._Mid = params.get("Mid")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class CreateDeviceTaskResponse(AbstractModel):
    r"""CreateDeviceTask返回参数结构体

    """

    def __init__(self):
        r"""
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._RequestId = None

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        self._RequestId = params.get("RequestId")


class CreateDeviceVirtualGroupRequest(AbstractModel):
    r"""CreateDeviceVirtualGroup请求参数结构体

    """

    def __init__(self):
        r"""
        :param _DeviceVirtualGroupName: 必填，终端自定义分组名
        :type DeviceVirtualGroupName: str
        :param _DomainInstanceId: 管理域实例ID，用于CAM管理域权限分配。若企业未进行管理域的划分，可直接传入根域"1"，此时表示针对当前企业的全部设备和账号进行接口CRUD，具体CRUD的影响范围限制于相应接口的入参。
        :type DomainInstanceId: str
        :param _Description: 详情
        :type Description: str
        :param _OsType: 系统类型（0: win，1：linux，2: mac，4：android，5：ios，-1：全系统（SaaS一体化版本） ； 不传默认为0）(只支持32位)
        :type OsType: int
        :param _TimeType: 分组类型（0:手动分组；非0为自动划分分组；具体枚举值为：1:自动每小时划分分组、2:自动每天划分分组、3:自定义时间划分分组； 默认值0）(只支持32位)
        :type TimeType: int
        :param _AutoMinute: 选填，TimeType=3时的自动划分时间，其他情况为0（单位min）(只支持32位)
        :type AutoMinute: int
        :param _AutoRules: 选填，手动分组不填，自动划分分组的划分规则数据
        :type AutoRules: :class:`tencentcloud.ioa.v20220601.models.ComplexRule`
        """
        self._DeviceVirtualGroupName = None
        self._DomainInstanceId = None
        self._Description = None
        self._OsType = None
        self._TimeType = None
        self._AutoMinute = None
        self._AutoRules = None

    @property
    def DeviceVirtualGroupName(self):
        r"""必填，终端自定义分组名
        :rtype: str
        """
        return self._DeviceVirtualGroupName

    @DeviceVirtualGroupName.setter
    def DeviceVirtualGroupName(self, DeviceVirtualGroupName):
        self._DeviceVirtualGroupName = DeviceVirtualGroupName

    @property
    def DomainInstanceId(self):
        r"""管理域实例ID，用于CAM管理域权限分配。若企业未进行管理域的划分，可直接传入根域"1"，此时表示针对当前企业的全部设备和账号进行接口CRUD，具体CRUD的影响范围限制于相应接口的入参。
        :rtype: str
        """
        return self._DomainInstanceId

    @DomainInstanceId.setter
    def DomainInstanceId(self, DomainInstanceId):
        self._DomainInstanceId = DomainInstanceId

    @property
    def Description(self):
        r"""详情
        :rtype: str
        """
        return self._Description

    @Description.setter
    def Description(self, Description):
        self._Description = Description

    @property
    def OsType(self):
        r"""系统类型（0: win，1：linux，2: mac，4：android，5：ios，-1：全系统（SaaS一体化版本） ； 不传默认为0）(只支持32位)
        :rtype: int
        """
        return self._OsType

    @OsType.setter
    def OsType(self, OsType):
        self._OsType = OsType

    @property
    def TimeType(self):
        r"""分组类型（0:手动分组；非0为自动划分分组；具体枚举值为：1:自动每小时划分分组、2:自动每天划分分组、3:自定义时间划分分组； 默认值0）(只支持32位)
        :rtype: int
        """
        return self._TimeType

    @TimeType.setter
    def TimeType(self, TimeType):
        self._TimeType = TimeType

    @property
    def AutoMinute(self):
        r"""选填，TimeType=3时的自动划分时间，其他情况为0（单位min）(只支持32位)
        :rtype: int
        """
        return self._AutoMinute

    @AutoMinute.setter
    def AutoMinute(self, AutoMinute):
        self._AutoMinute = AutoMinute

    @property
    def AutoRules(self):
        r"""选填，手动分组不填，自动划分分组的划分规则数据
        :rtype: :class:`tencentcloud.ioa.v20220601.models.ComplexRule`
        """
        return self._AutoRules

    @AutoRules.setter
    def AutoRules(self, AutoRules):
        self._AutoRules = AutoRules


    def _deserialize(self, params):
        self._DeviceVirtualGroupName = params.get("DeviceVirtualGroupName")
        self._DomainInstanceId = params.get("DomainInstanceId")
        self._Description = params.get("Description")
        self._OsType = params.get("OsType")
        self._TimeType = params.get("TimeType")
        self._AutoMinute = params.get("AutoMinute")
        if params.get("AutoRules") is not None:
            self._AutoRules = ComplexRule()
            self._AutoRules._deserialize(params.get("AutoRules"))
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class CreateDeviceVirtualGroupResponse(AbstractModel):
    r"""CreateDeviceVirtualGroup返回参数结构体

    """

    def __init__(self):
        r"""
        :param _Data: 响应返回的data
        :type Data: :class:`tencentcloud.ioa.v20220601.models.CreateDeviceVirtualGroupRspData`
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._Data = None
        self._RequestId = None

    @property
    def Data(self):
        r"""响应返回的data
        :rtype: :class:`tencentcloud.ioa.v20220601.models.CreateDeviceVirtualGroupRspData`
        """
        return self._Data

    @Data.setter
    def Data(self, Data):
        self._Data = Data

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        if params.get("Data") is not None:
            self._Data = CreateDeviceVirtualGroupRspData()
            self._Data._deserialize(params.get("Data"))
        self._RequestId = params.get("RequestId")


class CreateDeviceVirtualGroupRspData(AbstractModel):
    r"""响应返回的data

    """

    def __init__(self):
        r"""
        :param _Id: 返回的自定义分组id
        :type Id: int
        """
        self._Id = None

    @property
    def Id(self):
        r"""返回的自定义分组id
        :rtype: int
        """
        return self._Id

    @Id.setter
    def Id(self, Id):
        self._Id = Id


    def _deserialize(self, params):
        self._Id = params.get("Id")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class CreatePrivilegeCodeRequest(AbstractModel):
    r"""CreatePrivilegeCode请求参数结构体

    """

    def __init__(self):
        r"""
        :param _Mid: 必填；设备唯一标识符;
        :type Mid: str
        :param _DomainInstanceId: 管理域实例ID，用于CAM管理域权限分配。若企业未进行管理域的划分，可直接传入根域"1"，此时表示针对当前企业的全部设备和账号进行接口CRUD，具体CRUD的影响范围限制于相应接口的入参。
        :type DomainInstanceId: str
        :param _OsType: 系统类型（0: win，1：linux，2: mac，4：android，5：ios，-1：全系统（SaaS一体化版本） ； 不传默认为0）(只支持32位)
        :type OsType: int
        """
        self._Mid = None
        self._DomainInstanceId = None
        self._OsType = None

    @property
    def Mid(self):
        r"""必填；设备唯一标识符;
        :rtype: str
        """
        return self._Mid

    @Mid.setter
    def Mid(self, Mid):
        self._Mid = Mid

    @property
    def DomainInstanceId(self):
        r"""管理域实例ID，用于CAM管理域权限分配。若企业未进行管理域的划分，可直接传入根域"1"，此时表示针对当前企业的全部设备和账号进行接口CRUD，具体CRUD的影响范围限制于相应接口的入参。
        :rtype: str
        """
        return self._DomainInstanceId

    @DomainInstanceId.setter
    def DomainInstanceId(self, DomainInstanceId):
        self._DomainInstanceId = DomainInstanceId

    @property
    def OsType(self):
        r"""系统类型（0: win，1：linux，2: mac，4：android，5：ios，-1：全系统（SaaS一体化版本） ； 不传默认为0）(只支持32位)
        :rtype: int
        """
        return self._OsType

    @OsType.setter
    def OsType(self, OsType):
        self._OsType = OsType


    def _deserialize(self, params):
        self._Mid = params.get("Mid")
        self._DomainInstanceId = params.get("DomainInstanceId")
        self._OsType = params.get("OsType")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class CreatePrivilegeCodeResponse(AbstractModel):
    r"""CreatePrivilegeCode返回参数结构体

    """

    def __init__(self):
        r"""
        :param _Data: 业务响应数据
        :type Data: :class:`tencentcloud.ioa.v20220601.models.CreatePrivilegeCodeRspData`
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._Data = None
        self._RequestId = None

    @property
    def Data(self):
        r"""业务响应数据
        :rtype: :class:`tencentcloud.ioa.v20220601.models.CreatePrivilegeCodeRspData`
        """
        return self._Data

    @Data.setter
    def Data(self, Data):
        self._Data = Data

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        if params.get("Data") is not None:
            self._Data = CreatePrivilegeCodeRspData()
            self._Data._deserialize(params.get("Data"))
        self._RequestId = params.get("RequestId")


class CreatePrivilegeCodeRspData(AbstractModel):
    r"""业务响应数据

    """

    def __init__(self):
        r"""
        :param _Code: 特权码数据
注意：此字段可能返回 null，表示取不到有效值。
        :type Code: str
        """
        self._Code = None

    @property
    def Code(self):
        r"""特权码数据
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._Code

    @Code.setter
    def Code(self, Code):
        self._Code = Code


    def _deserialize(self, params):
        self._Code = params.get("Code")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class DeleteDeviceVirtualGroupRequest(AbstractModel):
    r"""DeleteDeviceVirtualGroup请求参数结构体

    """

    def __init__(self):
        r"""
        :param _DomainInstanceId: 管理域实例ID，用于CAM管理域权限分配。若企业未进行管理域的划分，可直接传入根域"1"，此时表示针对当前企业的全部设备和账号进行接口CRUD，具体CRUD的影响范围限制于相应接口的入参。
        :type DomainInstanceId: str
        :param _DeviceVirtualGroupId: 必填，终端自定义分组id
        :type DeviceVirtualGroupId: int
        :param _OsType: 必填，系统类型（0: win，1：linux，2: mac，4：android，5：ios，-1：全系统（SaaS一体化版本） ； 不传默认为0）(只支持32位)
        :type OsType: int
        """
        self._DomainInstanceId = None
        self._DeviceVirtualGroupId = None
        self._OsType = None

    @property
    def DomainInstanceId(self):
        r"""管理域实例ID，用于CAM管理域权限分配。若企业未进行管理域的划分，可直接传入根域"1"，此时表示针对当前企业的全部设备和账号进行接口CRUD，具体CRUD的影响范围限制于相应接口的入参。
        :rtype: str
        """
        return self._DomainInstanceId

    @DomainInstanceId.setter
    def DomainInstanceId(self, DomainInstanceId):
        self._DomainInstanceId = DomainInstanceId

    @property
    def DeviceVirtualGroupId(self):
        r"""必填，终端自定义分组id
        :rtype: int
        """
        return self._DeviceVirtualGroupId

    @DeviceVirtualGroupId.setter
    def DeviceVirtualGroupId(self, DeviceVirtualGroupId):
        self._DeviceVirtualGroupId = DeviceVirtualGroupId

    @property
    def OsType(self):
        r"""必填，系统类型（0: win，1：linux，2: mac，4：android，5：ios，-1：全系统（SaaS一体化版本） ； 不传默认为0）(只支持32位)
        :rtype: int
        """
        return self._OsType

    @OsType.setter
    def OsType(self, OsType):
        self._OsType = OsType


    def _deserialize(self, params):
        self._DomainInstanceId = params.get("DomainInstanceId")
        self._DeviceVirtualGroupId = params.get("DeviceVirtualGroupId")
        self._OsType = params.get("OsType")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class DeleteDeviceVirtualGroupResponse(AbstractModel):
    r"""DeleteDeviceVirtualGroup返回参数结构体

    """

    def __init__(self):
        r"""
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._RequestId = None

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        self._RequestId = params.get("RequestId")


class DescribeAccountGroupsData(AbstractModel):
    r"""账号分组信息

    """

    def __init__(self):
        r"""
        :param _NamePath: 账号分组名全路径，点分格式
        :type NamePath: str
        :param _IdPathArr: 账号分组ID全路径，数组格式
        :type IdPathArr: list of int
        :param _ExtraInfo: 扩展信息
        :type ExtraInfo: str
        :param _Utime: 最后更新时间
        :type Utime: str
        :param _ParentId: 父分组ID
        :type ParentId: int
        :param _OrgId: 源账号组织ID。使用第三方导入用户源时，记录该分组在源组织架构下的分组ID
        :type OrgId: str
        :param _Name: 分组名称
        :type Name: str
        :param _Id: 分组ID
        :type Id: int
        :param _Description: 分组描述
        :type Description: str
        :param _Source: 同步数据源
        :type Source: int
        :param _IdPath: 账号分组ID全路径，点分格式
        :type IdPath: str
        :param _Itime: 创建时间
        :type Itime: str
        :param _ParentOrgId: 父源账号组织ID。使用第三方导入用户源时，记录该分组在源组织架构下的分组ID
        :type ParentOrgId: str
        :param _ImportType: 导入类型
        :type ImportType: str
        :param _MiniIamId: miniIAM id
        :type MiniIamId: str
        :param _UserTotal: 该分组下含子组的所有用户总数
        :type UserTotal: int
        :param _IsLeaf: 是否叶子节点
        :type IsLeaf: bool
        :param _ReadOnly: 是否该账户的直接权限
        :type ReadOnly: bool
        :param _LatestSyncResult: 最新一次同步任务的结果
        :type LatestSyncResult: str
        :param _LatestSyncTime: 最新一次同步任务的结束时间
        :type LatestSyncTime: str
        :param _NamePathArr: 分组名称数组
        :type NamePathArr: list of str
        """
        self._NamePath = None
        self._IdPathArr = None
        self._ExtraInfo = None
        self._Utime = None
        self._ParentId = None
        self._OrgId = None
        self._Name = None
        self._Id = None
        self._Description = None
        self._Source = None
        self._IdPath = None
        self._Itime = None
        self._ParentOrgId = None
        self._ImportType = None
        self._MiniIamId = None
        self._UserTotal = None
        self._IsLeaf = None
        self._ReadOnly = None
        self._LatestSyncResult = None
        self._LatestSyncTime = None
        self._NamePathArr = None

    @property
    def NamePath(self):
        r"""账号分组名全路径，点分格式
        :rtype: str
        """
        return self._NamePath

    @NamePath.setter
    def NamePath(self, NamePath):
        self._NamePath = NamePath

    @property
    def IdPathArr(self):
        r"""账号分组ID全路径，数组格式
        :rtype: list of int
        """
        return self._IdPathArr

    @IdPathArr.setter
    def IdPathArr(self, IdPathArr):
        self._IdPathArr = IdPathArr

    @property
    def ExtraInfo(self):
        r"""扩展信息
        :rtype: str
        """
        return self._ExtraInfo

    @ExtraInfo.setter
    def ExtraInfo(self, ExtraInfo):
        self._ExtraInfo = ExtraInfo

    @property
    def Utime(self):
        r"""最后更新时间
        :rtype: str
        """
        return self._Utime

    @Utime.setter
    def Utime(self, Utime):
        self._Utime = Utime

    @property
    def ParentId(self):
        r"""父分组ID
        :rtype: int
        """
        return self._ParentId

    @ParentId.setter
    def ParentId(self, ParentId):
        self._ParentId = ParentId

    @property
    def OrgId(self):
        r"""源账号组织ID。使用第三方导入用户源时，记录该分组在源组织架构下的分组ID
        :rtype: str
        """
        return self._OrgId

    @OrgId.setter
    def OrgId(self, OrgId):
        self._OrgId = OrgId

    @property
    def Name(self):
        r"""分组名称
        :rtype: str
        """
        return self._Name

    @Name.setter
    def Name(self, Name):
        self._Name = Name

    @property
    def Id(self):
        r"""分组ID
        :rtype: int
        """
        return self._Id

    @Id.setter
    def Id(self, Id):
        self._Id = Id

    @property
    def Description(self):
        r"""分组描述
        :rtype: str
        """
        return self._Description

    @Description.setter
    def Description(self, Description):
        self._Description = Description

    @property
    def Source(self):
        r"""同步数据源
        :rtype: int
        """
        return self._Source

    @Source.setter
    def Source(self, Source):
        self._Source = Source

    @property
    def IdPath(self):
        r"""账号分组ID全路径，点分格式
        :rtype: str
        """
        return self._IdPath

    @IdPath.setter
    def IdPath(self, IdPath):
        self._IdPath = IdPath

    @property
    def Itime(self):
        r"""创建时间
        :rtype: str
        """
        return self._Itime

    @Itime.setter
    def Itime(self, Itime):
        self._Itime = Itime

    @property
    def ParentOrgId(self):
        r"""父源账号组织ID。使用第三方导入用户源时，记录该分组在源组织架构下的分组ID
        :rtype: str
        """
        return self._ParentOrgId

    @ParentOrgId.setter
    def ParentOrgId(self, ParentOrgId):
        self._ParentOrgId = ParentOrgId

    @property
    def ImportType(self):
        r"""导入类型
        :rtype: str
        """
        return self._ImportType

    @ImportType.setter
    def ImportType(self, ImportType):
        self._ImportType = ImportType

    @property
    def MiniIamId(self):
        r"""miniIAM id
        :rtype: str
        """
        return self._MiniIamId

    @MiniIamId.setter
    def MiniIamId(self, MiniIamId):
        self._MiniIamId = MiniIamId

    @property
    def UserTotal(self):
        r"""该分组下含子组的所有用户总数
        :rtype: int
        """
        return self._UserTotal

    @UserTotal.setter
    def UserTotal(self, UserTotal):
        self._UserTotal = UserTotal

    @property
    def IsLeaf(self):
        r"""是否叶子节点
        :rtype: bool
        """
        return self._IsLeaf

    @IsLeaf.setter
    def IsLeaf(self, IsLeaf):
        self._IsLeaf = IsLeaf

    @property
    def ReadOnly(self):
        r"""是否该账户的直接权限
        :rtype: bool
        """
        return self._ReadOnly

    @ReadOnly.setter
    def ReadOnly(self, ReadOnly):
        self._ReadOnly = ReadOnly

    @property
    def LatestSyncResult(self):
        r"""最新一次同步任务的结果
        :rtype: str
        """
        return self._LatestSyncResult

    @LatestSyncResult.setter
    def LatestSyncResult(self, LatestSyncResult):
        self._LatestSyncResult = LatestSyncResult

    @property
    def LatestSyncTime(self):
        r"""最新一次同步任务的结束时间
        :rtype: str
        """
        return self._LatestSyncTime

    @LatestSyncTime.setter
    def LatestSyncTime(self, LatestSyncTime):
        self._LatestSyncTime = LatestSyncTime

    @property
    def NamePathArr(self):
        r"""分组名称数组
        :rtype: list of str
        """
        return self._NamePathArr

    @NamePathArr.setter
    def NamePathArr(self, NamePathArr):
        self._NamePathArr = NamePathArr


    def _deserialize(self, params):
        self._NamePath = params.get("NamePath")
        self._IdPathArr = params.get("IdPathArr")
        self._ExtraInfo = params.get("ExtraInfo")
        self._Utime = params.get("Utime")
        self._ParentId = params.get("ParentId")
        self._OrgId = params.get("OrgId")
        self._Name = params.get("Name")
        self._Id = params.get("Id")
        self._Description = params.get("Description")
        self._Source = params.get("Source")
        self._IdPath = params.get("IdPath")
        self._Itime = params.get("Itime")
        self._ParentOrgId = params.get("ParentOrgId")
        self._ImportType = params.get("ImportType")
        self._MiniIamId = params.get("MiniIamId")
        self._UserTotal = params.get("UserTotal")
        self._IsLeaf = params.get("IsLeaf")
        self._ReadOnly = params.get("ReadOnly")
        self._LatestSyncResult = params.get("LatestSyncResult")
        self._LatestSyncTime = params.get("LatestSyncTime")
        self._NamePathArr = params.get("NamePathArr")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class DescribeAccountGroupsPageResp(AbstractModel):
    r"""账户分组详情响应数据

    """

    def __init__(self):
        r"""
        :param _Items: 账户分响应对象集合
        :type Items: list of DescribeAccountGroupsData
        :param _Page: 分页公共对象
        :type Page: :class:`tencentcloud.ioa.v20220601.models.Paging`
        """
        self._Items = None
        self._Page = None

    @property
    def Items(self):
        r"""账户分响应对象集合
        :rtype: list of DescribeAccountGroupsData
        """
        return self._Items

    @Items.setter
    def Items(self, Items):
        self._Items = Items

    @property
    def Page(self):
        r"""分页公共对象
        :rtype: :class:`tencentcloud.ioa.v20220601.models.Paging`
        """
        return self._Page

    @Page.setter
    def Page(self, Page):
        self._Page = Page


    def _deserialize(self, params):
        if params.get("Items") is not None:
            self._Items = []
            for item in params.get("Items"):
                obj = DescribeAccountGroupsData()
                obj._deserialize(item)
                self._Items.append(obj)
        if params.get("Page") is not None:
            self._Page = Paging()
            self._Page._deserialize(params.get("Page"))
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class DescribeAccountGroupsRequest(AbstractModel):
    r"""DescribeAccountGroups请求参数结构体

    """

    def __init__(self):
        r"""
        :param _Deepin: 搜索范围：0-仅当前分组的直接子组，1-当前分组的所有子组。默认为0。
        :type Deepin: int
        :param _Condition: 查询条件

过滤参数
1、Name，string类型，按分组名过滤
是否必填：否
操作符: like

排序条件
1、Itime，string类型，按分组创建时间排序
是否必填：否
2、Utime，string类型，按分组更新时间排序
是否必填：否
        :type Condition: :class:`tencentcloud.ioa.v20220601.models.Condition`
        :param _ParentId: 父分组ID，获取该分组下的子组信息。默认查询全网根分组下子组信息。
        :type ParentId: int
        """
        self._Deepin = None
        self._Condition = None
        self._ParentId = None

    @property
    def Deepin(self):
        r"""搜索范围：0-仅当前分组的直接子组，1-当前分组的所有子组。默认为0。
        :rtype: int
        """
        return self._Deepin

    @Deepin.setter
    def Deepin(self, Deepin):
        self._Deepin = Deepin

    @property
    def Condition(self):
        r"""查询条件

过滤参数
1、Name，string类型，按分组名过滤
是否必填：否
操作符: like

排序条件
1、Itime，string类型，按分组创建时间排序
是否必填：否
2、Utime，string类型，按分组更新时间排序
是否必填：否
        :rtype: :class:`tencentcloud.ioa.v20220601.models.Condition`
        """
        return self._Condition

    @Condition.setter
    def Condition(self, Condition):
        self._Condition = Condition

    @property
    def ParentId(self):
        r"""父分组ID，获取该分组下的子组信息。默认查询全网根分组下子组信息。
        :rtype: int
        """
        return self._ParentId

    @ParentId.setter
    def ParentId(self, ParentId):
        self._ParentId = ParentId


    def _deserialize(self, params):
        self._Deepin = params.get("Deepin")
        if params.get("Condition") is not None:
            self._Condition = Condition()
            self._Condition._deserialize(params.get("Condition"))
        self._ParentId = params.get("ParentId")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class DescribeAccountGroupsResponse(AbstractModel):
    r"""DescribeAccountGroups返回参数结构体

    """

    def __init__(self):
        r"""
        :param _Data: 账号分组详情响应数据
        :type Data: :class:`tencentcloud.ioa.v20220601.models.DescribeAccountGroupsPageResp`
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._Data = None
        self._RequestId = None

    @property
    def Data(self):
        r"""账号分组详情响应数据
        :rtype: :class:`tencentcloud.ioa.v20220601.models.DescribeAccountGroupsPageResp`
        """
        return self._Data

    @Data.setter
    def Data(self, Data):
        self._Data = Data

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        if params.get("Data") is not None:
            self._Data = DescribeAccountGroupsPageResp()
            self._Data._deserialize(params.get("Data"))
        self._RequestId = params.get("RequestId")


class DescribeAccountResourcesData(AbstractModel):
    r"""数据集

    """

    def __init__(self):
        r"""
        :param _Items: 资源对象
注意：此字段可能返回 null，表示取不到有效值。
        :type Items: list of DescribeAccountResourcesItems
        """
        self._Items = None

    @property
    def Items(self):
        r"""资源对象
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: list of DescribeAccountResourcesItems
        """
        return self._Items

    @Items.setter
    def Items(self, Items):
        self._Items = Items


    def _deserialize(self, params):
        if params.get("Items") is not None:
            self._Items = []
            for item in params.get("Items"):
                obj = DescribeAccountResourcesItems()
                obj._deserialize(item)
                self._Items.append(obj)
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class DescribeAccountResourcesItems(AbstractModel):
    r"""资源对象

    """

    def __init__(self):
        r"""
        :param _AreaId: 资源组id(只支持32位)
注意：此字段可能返回 null，表示取不到有效值。
        :type AreaId: int
        :param _Description: 描述
注意：此字段可能返回 null，表示取不到有效值。
        :type Description: str
        :param _ResourceType: 资源类型(只支持32位)
注意：此字段可能返回 null，表示取不到有效值。
        :type ResourceType: int
        :param _ResourceId: 资源id(只支持32位)
注意：此字段可能返回 null，表示取不到有效值。
        :type ResourceId: int
        :param _FromSourceId: 一般同id字段相同(只支持32位)
注意：此字段可能返回 null，表示取不到有效值。
        :type FromSourceId: int
        :param _IsInherited: 是否继承过来的资源
注意：此字段可能返回 null，表示取不到有效值。
        :type IsInherited: bool
        :param _ExpireTime: 资源过期时间(只支持32位)
注意：此字段可能返回 null，表示取不到有效值。
        :type ExpireTime: int
        :param _NamePath: 账户组的namepath
注意：此字段可能返回 null，表示取不到有效值。
        :type NamePath: str
        :param _AccessType: 访问类型:0-NGN 1-web(只支持32位)
注意：此字段可能返回 null，表示取不到有效值。
        :type AccessType: int
        :param _ResourceName: 资源名称
注意：此字段可能返回 null，表示取不到有效值。
        :type ResourceName: str
        :param _IsInheritedSwitch: 继承开关状态(只支持32位)
注意：此字段可能返回 null，表示取不到有效值。
        :type IsInheritedSwitch: int
        :param _Id: 关系id(只支持32位)
注意：此字段可能返回 null，表示取不到有效值。
        :type Id: int
        :param _AreaName: 资源名称
注意：此字段可能返回 null，表示取不到有效值。
        :type AreaName: str
        """
        self._AreaId = None
        self._Description = None
        self._ResourceType = None
        self._ResourceId = None
        self._FromSourceId = None
        self._IsInherited = None
        self._ExpireTime = None
        self._NamePath = None
        self._AccessType = None
        self._ResourceName = None
        self._IsInheritedSwitch = None
        self._Id = None
        self._AreaName = None

    @property
    def AreaId(self):
        r"""资源组id(只支持32位)
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: int
        """
        return self._AreaId

    @AreaId.setter
    def AreaId(self, AreaId):
        self._AreaId = AreaId

    @property
    def Description(self):
        r"""描述
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._Description

    @Description.setter
    def Description(self, Description):
        self._Description = Description

    @property
    def ResourceType(self):
        r"""资源类型(只支持32位)
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: int
        """
        return self._ResourceType

    @ResourceType.setter
    def ResourceType(self, ResourceType):
        self._ResourceType = ResourceType

    @property
    def ResourceId(self):
        r"""资源id(只支持32位)
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: int
        """
        return self._ResourceId

    @ResourceId.setter
    def ResourceId(self, ResourceId):
        self._ResourceId = ResourceId

    @property
    def FromSourceId(self):
        r"""一般同id字段相同(只支持32位)
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: int
        """
        return self._FromSourceId

    @FromSourceId.setter
    def FromSourceId(self, FromSourceId):
        self._FromSourceId = FromSourceId

    @property
    def IsInherited(self):
        r"""是否继承过来的资源
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: bool
        """
        return self._IsInherited

    @IsInherited.setter
    def IsInherited(self, IsInherited):
        self._IsInherited = IsInherited

    @property
    def ExpireTime(self):
        r"""资源过期时间(只支持32位)
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: int
        """
        return self._ExpireTime

    @ExpireTime.setter
    def ExpireTime(self, ExpireTime):
        self._ExpireTime = ExpireTime

    @property
    def NamePath(self):
        r"""账户组的namepath
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._NamePath

    @NamePath.setter
    def NamePath(self, NamePath):
        self._NamePath = NamePath

    @property
    def AccessType(self):
        r"""访问类型:0-NGN 1-web(只支持32位)
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: int
        """
        return self._AccessType

    @AccessType.setter
    def AccessType(self, AccessType):
        self._AccessType = AccessType

    @property
    def ResourceName(self):
        r"""资源名称
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._ResourceName

    @ResourceName.setter
    def ResourceName(self, ResourceName):
        self._ResourceName = ResourceName

    @property
    def IsInheritedSwitch(self):
        r"""继承开关状态(只支持32位)
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: int
        """
        return self._IsInheritedSwitch

    @IsInheritedSwitch.setter
    def IsInheritedSwitch(self, IsInheritedSwitch):
        self._IsInheritedSwitch = IsInheritedSwitch

    @property
    def Id(self):
        r"""关系id(只支持32位)
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: int
        """
        return self._Id

    @Id.setter
    def Id(self, Id):
        self._Id = Id

    @property
    def AreaName(self):
        r"""资源名称
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._AreaName

    @AreaName.setter
    def AreaName(self, AreaName):
        self._AreaName = AreaName


    def _deserialize(self, params):
        self._AreaId = params.get("AreaId")
        self._Description = params.get("Description")
        self._ResourceType = params.get("ResourceType")
        self._ResourceId = params.get("ResourceId")
        self._FromSourceId = params.get("FromSourceId")
        self._IsInherited = params.get("IsInherited")
        self._ExpireTime = params.get("ExpireTime")
        self._NamePath = params.get("NamePath")
        self._AccessType = params.get("AccessType")
        self._ResourceName = params.get("ResourceName")
        self._IsInheritedSwitch = params.get("IsInheritedSwitch")
        self._Id = params.get("Id")
        self._AreaName = params.get("AreaName")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class DescribeAggrSoftCategorySoftListData(AbstractModel):
    r"""业务响应数据

    """

    def __init__(self):
        r"""
        :param _Page: 分页公共对象
注意：此字段可能返回 null，表示取不到有效值。
        :type Page: :class:`tencentcloud.ioa.v20220601.models.Paging`
        :param _Total: 总数(只支持32位)
注意：此字段可能返回 null，表示取不到有效值。
        :type Total: int
        :param _AggrSoftCategorySoftList: 行数据
注意：此字段可能返回 null，表示取不到有效值。
        :type AggrSoftCategorySoftList: list of AggrCategorySoftDetailRow
        """
        self._Page = None
        self._Total = None
        self._AggrSoftCategorySoftList = None

    @property
    def Page(self):
        r"""分页公共对象
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: :class:`tencentcloud.ioa.v20220601.models.Paging`
        """
        return self._Page

    @Page.setter
    def Page(self, Page):
        self._Page = Page

    @property
    def Total(self):
        r"""总数(只支持32位)
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: int
        """
        return self._Total

    @Total.setter
    def Total(self, Total):
        self._Total = Total

    @property
    def AggrSoftCategorySoftList(self):
        r"""行数据
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: list of AggrCategorySoftDetailRow
        """
        return self._AggrSoftCategorySoftList

    @AggrSoftCategorySoftList.setter
    def AggrSoftCategorySoftList(self, AggrSoftCategorySoftList):
        self._AggrSoftCategorySoftList = AggrSoftCategorySoftList


    def _deserialize(self, params):
        if params.get("Page") is not None:
            self._Page = Paging()
            self._Page._deserialize(params.get("Page"))
        self._Total = params.get("Total")
        if params.get("AggrSoftCategorySoftList") is not None:
            self._AggrSoftCategorySoftList = []
            for item in params.get("AggrSoftCategorySoftList"):
                obj = AggrCategorySoftDetailRow()
                obj._deserialize(item)
                self._AggrSoftCategorySoftList.append(obj)
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class DescribeAggrSoftCategorySoftListRequest(AbstractModel):
    r"""DescribeAggrSoftCategorySoftList请求参数结构体

    """

    def __init__(self):
        r"""
        :param _Condition: 过滤条件、分页参数<li>Name - String - 过滤支持：是 - 操作符:eq,neq,like,ilike,nlike - 排序支持：是 - 按类别名称过滤或排序。</li><li>CorpName - String - 过滤支持：是 - 操作符:eq,neq,like,ilike,nlike - 排序支持：是 - 按CorpName过滤或排序。</li><li>Version - String - 过滤支持：否 - 操作符:eq,like - 排序支持：是 - 按版本排序。</li><li>InstalledDeviceCount - int - 过滤支持：否 - 操作符:eq,like - 排序支持：是 - 按安装设备数量排序。</li><li>GenuineRate - float - 过滤支持：否 - 操作符:eq,like - 排序支持：是 - 按正版率排序。</li><li>AuthNum - int - 过滤支持：否 - 操作符:eq,like - 排序支持：是 - 按授权数量排序。</li><li>CategoryNamePath - String - 过滤支持：否 - 操作符:eq,like - 排序支持：是 - 按类别路径名排序。</li>
        :type Condition: :class:`tencentcloud.ioa.v20220601.models.Condition`
        :param _OsType: 操作系统类型（0: win，1：linux，2: mac，4：android，5：ios 默认值0）
        :type OsType: int
        """
        self._Condition = None
        self._OsType = None

    @property
    def Condition(self):
        r"""过滤条件、分页参数<li>Name - String - 过滤支持：是 - 操作符:eq,neq,like,ilike,nlike - 排序支持：是 - 按类别名称过滤或排序。</li><li>CorpName - String - 过滤支持：是 - 操作符:eq,neq,like,ilike,nlike - 排序支持：是 - 按CorpName过滤或排序。</li><li>Version - String - 过滤支持：否 - 操作符:eq,like - 排序支持：是 - 按版本排序。</li><li>InstalledDeviceCount - int - 过滤支持：否 - 操作符:eq,like - 排序支持：是 - 按安装设备数量排序。</li><li>GenuineRate - float - 过滤支持：否 - 操作符:eq,like - 排序支持：是 - 按正版率排序。</li><li>AuthNum - int - 过滤支持：否 - 操作符:eq,like - 排序支持：是 - 按授权数量排序。</li><li>CategoryNamePath - String - 过滤支持：否 - 操作符:eq,like - 排序支持：是 - 按类别路径名排序。</li>
        :rtype: :class:`tencentcloud.ioa.v20220601.models.Condition`
        """
        return self._Condition

    @Condition.setter
    def Condition(self, Condition):
        self._Condition = Condition

    @property
    def OsType(self):
        r"""操作系统类型（0: win，1：linux，2: mac，4：android，5：ios 默认值0）
        :rtype: int
        """
        return self._OsType

    @OsType.setter
    def OsType(self, OsType):
        self._OsType = OsType


    def _deserialize(self, params):
        if params.get("Condition") is not None:
            self._Condition = Condition()
            self._Condition._deserialize(params.get("Condition"))
        self._OsType = params.get("OsType")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class DescribeAggrSoftCategorySoftListResponse(AbstractModel):
    r"""DescribeAggrSoftCategorySoftList返回参数结构体

    """

    def __init__(self):
        r"""
        :param _Data: 数据
        :type Data: :class:`tencentcloud.ioa.v20220601.models.DescribeAggrSoftCategorySoftListData`
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._Data = None
        self._RequestId = None

    @property
    def Data(self):
        r"""数据
        :rtype: :class:`tencentcloud.ioa.v20220601.models.DescribeAggrSoftCategorySoftListData`
        """
        return self._Data

    @Data.setter
    def Data(self, Data):
        self._Data = Data

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        if params.get("Data") is not None:
            self._Data = DescribeAggrSoftCategorySoftListData()
            self._Data._deserialize(params.get("Data"))
        self._RequestId = params.get("RequestId")


class DescribeAggrSoftDetailData(AbstractModel):
    r"""聚合软件详情数据

    """

    def __init__(self):
        r"""
        :param _Name: 软件名称
注意：此字段可能返回 null，表示取不到有效值。
        :type Name: str
        :param _OsType: 平台
注意：此字段可能返回 null，表示取不到有效值。
        :type OsType: int
        :param _PiracyRisk: 盗版风险
注意：此字段可能返回 null，表示取不到有效值。
        :type PiracyRisk: int
        :param _Corp: 厂商
注意：此字段可能返回 null，表示取不到有效值。
        :type Corp: str
        :param _SoftVersionDist: 已安装版本分布
注意：此字段可能返回 null，表示取不到有效值。
        :type SoftVersionDist: list of SoftVersionAndNum
        :param _PiracyVersionDist: 盗版版本安装
注意：此字段可能返回 null，表示取不到有效值。
        :type PiracyVersionDist: list of SoftVersionAndNum
        :param _InstalledDeviceNum: 安装设备数
注意：此字段可能返回 null，表示取不到有效值。
        :type InstalledDeviceNum: int
        :param _PiracyInstalledDeviceNum: 盗版安装设备数
注意：此字段可能返回 null，表示取不到有效值。
        :type PiracyInstalledDeviceNum: int
        :param _InstalledUserNum: 安装用户数
注意：此字段可能返回 null，表示取不到有效值。
        :type InstalledUserNum: int
        :param _PiracyInstalledUserNum: 盗版安装用户数
注意：此字段可能返回 null，表示取不到有效值。
        :type PiracyInstalledUserNum: int
        :param _AuthNum: 授权数
注意：此字段可能返回 null，表示取不到有效值。
        :type AuthNum: int
        :param _GenuineRate: 正版率
注意：此字段可能返回 null，表示取不到有效值。
        :type GenuineRate: float
        :param _UpgradableDeviceNum: 有新版本可升级的设备数量
        :type UpgradableDeviceNum: int
        :param _UpgradableVersions: 当前可升级的最新版本信息, 每一项均为json字符串
        :type UpgradableVersions: list of str
        """
        self._Name = None
        self._OsType = None
        self._PiracyRisk = None
        self._Corp = None
        self._SoftVersionDist = None
        self._PiracyVersionDist = None
        self._InstalledDeviceNum = None
        self._PiracyInstalledDeviceNum = None
        self._InstalledUserNum = None
        self._PiracyInstalledUserNum = None
        self._AuthNum = None
        self._GenuineRate = None
        self._UpgradableDeviceNum = None
        self._UpgradableVersions = None

    @property
    def Name(self):
        r"""软件名称
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._Name

    @Name.setter
    def Name(self, Name):
        self._Name = Name

    @property
    def OsType(self):
        r"""平台
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: int
        """
        return self._OsType

    @OsType.setter
    def OsType(self, OsType):
        self._OsType = OsType

    @property
    def PiracyRisk(self):
        r"""盗版风险
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: int
        """
        return self._PiracyRisk

    @PiracyRisk.setter
    def PiracyRisk(self, PiracyRisk):
        self._PiracyRisk = PiracyRisk

    @property
    def Corp(self):
        r"""厂商
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._Corp

    @Corp.setter
    def Corp(self, Corp):
        self._Corp = Corp

    @property
    def SoftVersionDist(self):
        r"""已安装版本分布
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: list of SoftVersionAndNum
        """
        return self._SoftVersionDist

    @SoftVersionDist.setter
    def SoftVersionDist(self, SoftVersionDist):
        self._SoftVersionDist = SoftVersionDist

    @property
    def PiracyVersionDist(self):
        r"""盗版版本安装
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: list of SoftVersionAndNum
        """
        return self._PiracyVersionDist

    @PiracyVersionDist.setter
    def PiracyVersionDist(self, PiracyVersionDist):
        self._PiracyVersionDist = PiracyVersionDist

    @property
    def InstalledDeviceNum(self):
        r"""安装设备数
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: int
        """
        return self._InstalledDeviceNum

    @InstalledDeviceNum.setter
    def InstalledDeviceNum(self, InstalledDeviceNum):
        self._InstalledDeviceNum = InstalledDeviceNum

    @property
    def PiracyInstalledDeviceNum(self):
        r"""盗版安装设备数
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: int
        """
        return self._PiracyInstalledDeviceNum

    @PiracyInstalledDeviceNum.setter
    def PiracyInstalledDeviceNum(self, PiracyInstalledDeviceNum):
        self._PiracyInstalledDeviceNum = PiracyInstalledDeviceNum

    @property
    def InstalledUserNum(self):
        r"""安装用户数
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: int
        """
        return self._InstalledUserNum

    @InstalledUserNum.setter
    def InstalledUserNum(self, InstalledUserNum):
        self._InstalledUserNum = InstalledUserNum

    @property
    def PiracyInstalledUserNum(self):
        r"""盗版安装用户数
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: int
        """
        return self._PiracyInstalledUserNum

    @PiracyInstalledUserNum.setter
    def PiracyInstalledUserNum(self, PiracyInstalledUserNum):
        self._PiracyInstalledUserNum = PiracyInstalledUserNum

    @property
    def AuthNum(self):
        r"""授权数
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: int
        """
        return self._AuthNum

    @AuthNum.setter
    def AuthNum(self, AuthNum):
        self._AuthNum = AuthNum

    @property
    def GenuineRate(self):
        r"""正版率
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: float
        """
        return self._GenuineRate

    @GenuineRate.setter
    def GenuineRate(self, GenuineRate):
        self._GenuineRate = GenuineRate

    @property
    def UpgradableDeviceNum(self):
        r"""有新版本可升级的设备数量
        :rtype: int
        """
        return self._UpgradableDeviceNum

    @UpgradableDeviceNum.setter
    def UpgradableDeviceNum(self, UpgradableDeviceNum):
        self._UpgradableDeviceNum = UpgradableDeviceNum

    @property
    def UpgradableVersions(self):
        r"""当前可升级的最新版本信息, 每一项均为json字符串
        :rtype: list of str
        """
        return self._UpgradableVersions

    @UpgradableVersions.setter
    def UpgradableVersions(self, UpgradableVersions):
        self._UpgradableVersions = UpgradableVersions


    def _deserialize(self, params):
        self._Name = params.get("Name")
        self._OsType = params.get("OsType")
        self._PiracyRisk = params.get("PiracyRisk")
        self._Corp = params.get("Corp")
        if params.get("SoftVersionDist") is not None:
            self._SoftVersionDist = []
            for item in params.get("SoftVersionDist"):
                obj = SoftVersionAndNum()
                obj._deserialize(item)
                self._SoftVersionDist.append(obj)
        if params.get("PiracyVersionDist") is not None:
            self._PiracyVersionDist = []
            for item in params.get("PiracyVersionDist"):
                obj = SoftVersionAndNum()
                obj._deserialize(item)
                self._PiracyVersionDist.append(obj)
        self._InstalledDeviceNum = params.get("InstalledDeviceNum")
        self._PiracyInstalledDeviceNum = params.get("PiracyInstalledDeviceNum")
        self._InstalledUserNum = params.get("InstalledUserNum")
        self._PiracyInstalledUserNum = params.get("PiracyInstalledUserNum")
        self._AuthNum = params.get("AuthNum")
        self._GenuineRate = params.get("GenuineRate")
        self._UpgradableDeviceNum = params.get("UpgradableDeviceNum")
        self._UpgradableVersions = params.get("UpgradableVersions")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class DescribeAggrSoftDetailRequest(AbstractModel):
    r"""DescribeAggrSoftDetail请求参数结构体

    """

    def __init__(self):
        r"""
        :param _Name: 软件名称
        :type Name: str
        :param _OsType: 操作系统
        :type OsType: int
        """
        self._Name = None
        self._OsType = None

    @property
    def Name(self):
        r"""软件名称
        :rtype: str
        """
        return self._Name

    @Name.setter
    def Name(self, Name):
        self._Name = Name

    @property
    def OsType(self):
        r"""操作系统
        :rtype: int
        """
        return self._OsType

    @OsType.setter
    def OsType(self, OsType):
        self._OsType = OsType


    def _deserialize(self, params):
        self._Name = params.get("Name")
        self._OsType = params.get("OsType")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class DescribeAggrSoftDetailResponse(AbstractModel):
    r"""DescribeAggrSoftDetail返回参数结构体

    """

    def __init__(self):
        r"""
        :param _Data: 数据
        :type Data: :class:`tencentcloud.ioa.v20220601.models.DescribeAggrSoftDetailData`
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._Data = None
        self._RequestId = None

    @property
    def Data(self):
        r"""数据
        :rtype: :class:`tencentcloud.ioa.v20220601.models.DescribeAggrSoftDetailData`
        """
        return self._Data

    @Data.setter
    def Data(self, Data):
        self._Data = Data

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        if params.get("Data") is not None:
            self._Data = DescribeAggrSoftDetailData()
            self._Data._deserialize(params.get("Data"))
        self._RequestId = params.get("RequestId")


class DescribeAggrSoftDeviceListData(AbstractModel):
    r"""聚合软件-已安装终端列表

    """

    def __init__(self):
        r"""
        :param _Page: 分页公共对象
注意：此字段可能返回 null，表示取不到有效值。
        :type Page: :class:`tencentcloud.ioa.v20220601.models.Paging`
        :param _Total: 总数
注意：此字段可能返回 null，表示取不到有效值。
        :type Total: int
        :param _AggrSoftDeviceList: 详情
注意：此字段可能返回 null，表示取不到有效值。
        :type AggrSoftDeviceList: list of AggrSoftDeviceRow
        """
        self._Page = None
        self._Total = None
        self._AggrSoftDeviceList = None

    @property
    def Page(self):
        r"""分页公共对象
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: :class:`tencentcloud.ioa.v20220601.models.Paging`
        """
        return self._Page

    @Page.setter
    def Page(self, Page):
        self._Page = Page

    @property
    def Total(self):
        r"""总数
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: int
        """
        return self._Total

    @Total.setter
    def Total(self, Total):
        self._Total = Total

    @property
    def AggrSoftDeviceList(self):
        r"""详情
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: list of AggrSoftDeviceRow
        """
        return self._AggrSoftDeviceList

    @AggrSoftDeviceList.setter
    def AggrSoftDeviceList(self, AggrSoftDeviceList):
        self._AggrSoftDeviceList = AggrSoftDeviceList


    def _deserialize(self, params):
        if params.get("Page") is not None:
            self._Page = Paging()
            self._Page._deserialize(params.get("Page"))
        self._Total = params.get("Total")
        if params.get("AggrSoftDeviceList") is not None:
            self._AggrSoftDeviceList = []
            for item in params.get("AggrSoftDeviceList"):
                obj = AggrSoftDeviceRow()
                obj._deserialize(item)
                self._AggrSoftDeviceList.append(obj)
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class DescribeAggrSoftDeviceListRequest(AbstractModel):
    r"""DescribeAggrSoftDeviceList请求参数结构体

    """

    def __init__(self):
        r"""
        :param _Condition: 过滤条件
        :type Condition: :class:`tencentcloud.ioa.v20220601.models.Condition`
        :param _Name: 软件名
        :type Name: str
        :param _OsType: 0:win 2:mac
        :type OsType: int
        :param _GroupId: 分组ID
        :type GroupId: int
        :param _GroupType: 分组类型 1-终端分组 2-组织架构(账号分组) 3/4-虚拟分组
        :type GroupType: int
        """
        self._Condition = None
        self._Name = None
        self._OsType = None
        self._GroupId = None
        self._GroupType = None

    @property
    def Condition(self):
        r"""过滤条件
        :rtype: :class:`tencentcloud.ioa.v20220601.models.Condition`
        """
        return self._Condition

    @Condition.setter
    def Condition(self, Condition):
        self._Condition = Condition

    @property
    def Name(self):
        r"""软件名
        :rtype: str
        """
        return self._Name

    @Name.setter
    def Name(self, Name):
        self._Name = Name

    @property
    def OsType(self):
        r"""0:win 2:mac
        :rtype: int
        """
        return self._OsType

    @OsType.setter
    def OsType(self, OsType):
        self._OsType = OsType

    @property
    def GroupId(self):
        r"""分组ID
        :rtype: int
        """
        return self._GroupId

    @GroupId.setter
    def GroupId(self, GroupId):
        self._GroupId = GroupId

    @property
    def GroupType(self):
        r"""分组类型 1-终端分组 2-组织架构(账号分组) 3/4-虚拟分组
        :rtype: int
        """
        return self._GroupType

    @GroupType.setter
    def GroupType(self, GroupType):
        self._GroupType = GroupType


    def _deserialize(self, params):
        if params.get("Condition") is not None:
            self._Condition = Condition()
            self._Condition._deserialize(params.get("Condition"))
        self._Name = params.get("Name")
        self._OsType = params.get("OsType")
        self._GroupId = params.get("GroupId")
        self._GroupType = params.get("GroupType")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class DescribeAggrSoftDeviceListResponse(AbstractModel):
    r"""DescribeAggrSoftDeviceList返回参数结构体

    """

    def __init__(self):
        r"""
        :param _Data: 已安装终端列表
        :type Data: :class:`tencentcloud.ioa.v20220601.models.DescribeAggrSoftDeviceListData`
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._Data = None
        self._RequestId = None

    @property
    def Data(self):
        r"""已安装终端列表
        :rtype: :class:`tencentcloud.ioa.v20220601.models.DescribeAggrSoftDeviceListData`
        """
        return self._Data

    @Data.setter
    def Data(self, Data):
        self._Data = Data

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        if params.get("Data") is not None:
            self._Data = DescribeAggrSoftDeviceListData()
            self._Data._deserialize(params.get("Data"))
        self._RequestId = params.get("RequestId")


class DescribeBusinessResourceData(AbstractModel):
    r"""业务资源列表数据对象集合

    """

    def __init__(self):
        r"""
        :param _ServiceId: <p>业务资源id(只支持32位)</p>
注意：此字段可能返回 null，表示取不到有效值。
        :type ServiceId: int
        :param _ServiceName: <p>业务资源名称</p>
注意：此字段可能返回 null，表示取不到有效值。
        :type ServiceName: str
        :param _ServiceType: <p>资源类型:ip,domain,ip_section，对应ip，域名，ip段</p>
注意：此字段可能返回 null，表示取不到有效值。
        :type ServiceType: str
        :param _ServiceAddress: <p>业务资源地址</p>
注意：此字段可能返回 null，表示取不到有效值。
        :type ServiceAddress: str
        :param _ServicePort: <p>业务资源端口 all,1-65535</p>
注意：此字段可能返回 null，表示取不到有效值。
        :type ServicePort: str
        :param _CreateTime: <p>业务资源创建时间</p>
注意：此字段可能返回 null，表示取不到有效值。
        :type CreateTime: str
        :param _UpdateTime: <p>业务资源最后修改时间</p>
注意：此字段可能返回 null，表示取不到有效值。
        :type UpdateTime: str
        :param _Remark: <p>说明字段</p>
注意：此字段可能返回 null，表示取不到有效值。
        :type Remark: str
        :param _AreaId: <p>资源模块ID(只支持32位)</p>
注意：此字段可能返回 null，表示取不到有效值。
        :type AreaId: int
        :param _SmartGateIds: <p>零信任网关id(只支持32位)</p>
注意：此字段可能返回 null，表示取不到有效值。
        :type SmartGateIds: list of int
        :param _Protocol: <p>业务资源协议类型,3：所有,2：UDP，1：TCP(只支持32位)</p>
注意：此字段可能返回 null，表示取不到有效值。
        :type Protocol: int
        :param _Levels: <p>业务资源等级(只支持32位)</p>
注意：此字段可能返回 null，表示取不到有效值。
        :type Levels: int
        :param _SmartGateNames: <p>零信任网关名称</p>
注意：此字段可能返回 null，表示取不到有效值。
        :type SmartGateNames: str
        :param _DirectConn: <p>网关连通性(只支持32位)</p>
注意：此字段可能返回 null，表示取不到有效值。
        :type DirectConn: int
        :param _DetectState: <p>网关连通性状态(只支持32位)</p>
注意：此字段可能返回 null，表示取不到有效值。
        :type DetectState: int
        :param _DetectInfo: <p>网关连通性信息</p>
注意：此字段可能返回 null，表示取不到有效值。
        :type DetectInfo: str
        :param _DetectTime: <p>网关连通性创建时间</p>
注意：此字段可能返回 null，表示取不到有效值。
        :type DetectTime: str
        :param _ConnectorGroupId: <p>绑定的连接器组Id</p>
注意：此字段可能返回 null，表示取不到有效值。
        :type ConnectorGroupId: str
        :param _ConnectorGroupName: <p>绑定的连接器组的名称</p>
注意：此字段可能返回 null，表示取不到有效值。
        :type ConnectorGroupName: str
        :param _ReachableTime: <p>资源连通性可达最后的检测时间</p>
注意：此字段可能返回 null，表示取不到有效值。
        :type ReachableTime: str
        :param _ReachableState: <p>资源连通性可达状态,0：未检测，1：未连通，2：已连通</p>
注意：此字段可能返回 null，表示取不到有效值。
        :type ReachableState: int
        :param _AccessType: <p>访问类型:0-NGN 1-web(只支持32位)</p>
注意：此字段可能返回 null，表示取不到有效值。
        :type AccessType: int
        :param _BackendScheme: <p>web资源-后端协议</p>
注意：此字段可能返回 null，表示取不到有效值。
        :type BackendScheme: str
        :param _BackendPath: <p>web资源-后端路径</p>
注意：此字段可能返回 null，表示取不到有效值。
        :type BackendPath: str
        :param _FrontScheme: <p>web资源-前端协议</p>
注意：此字段可能返回 null，表示取不到有效值。
        :type FrontScheme: str
        :param _FrontHost: <p>web资源-前端host</p>
注意：此字段可能返回 null，表示取不到有效值。
        :type FrontHost: str
        :param _FrontPort: <p>web资源-前端host(只支持32位)</p>
注意：此字段可能返回 null，表示取不到有效值。
        :type FrontPort: int
        :param _FrontPath: <p>web资源-前端路径 默认&quot;/&quot;</p>
注意：此字段可能返回 null，表示取不到有效值。
        :type FrontPath: str
        :param _DisableFront: <p>web资源-是否禁用外网访问：0-可通过外网访问 1-不能通过外网访问(只支持32位)</p>
注意：此字段可能返回 null，表示取不到有效值。
        :type DisableFront: int
        :param _CustomDomain: <p>web资源-租户自定义域名</p>
注意：此字段可能返回 null，表示取不到有效值。
        :type CustomDomain: str
        :param _CustomHost: <p>web资源-自定义host</p>
注意：此字段可能返回 null，表示取不到有效值。
        :type CustomHost: str
        :param _CnameStatus: <p>web资源-Cname状态(只支持32位)</p>
注意：此字段可能返回 null，表示取不到有效值。
        :type CnameStatus: int
        :param _CertificateId: <p>web资源-关联证书ID(只支持32位)</p>
注意：此字段可能返回 null，表示取不到有效值。
        :type CertificateId: int
        :param _WebGwResourceType: <p>web资源类型：0-应用 1-API(只支持32位)</p>
注意：此字段可能返回 null，表示取不到有效值。
        :type WebGwResourceType: int
        :param _APISecretId: <p>web资源-如果选择API类型资源，则需要配置密钥(只支持32位)</p>
注意：此字段可能返回 null，表示取不到有效值。
        :type APISecretId: int
        :param _AreaName: <p>所属资源组名称</p>
注意：此字段可能返回 null，表示取不到有效值。
        :type AreaName: str
        :param _SSLCertId: <p>web资源-前端协议是HTTPS类型，需要配置证书</p>
注意：此字段可能返回 null，表示取不到有效值。
        :type SSLCertId: str
        :param _EnableDependentAddr: <p>web资源-是否启用依赖地址：0-不启用 1-启用(只支持32位)</p>
注意：此字段可能返回 null，表示取不到有效值。
        :type EnableDependentAddr: int
        :param _DependentAddr: <p>web资源-依赖地址的后端服务器地址</p>
注意：此字段可能返回 null，表示取不到有效值。
        :type DependentAddr: str
        :param _WebGwNoAuth: <p>web免鉴权：1-鉴权 2-免鉴权</p>
        :type WebGwNoAuth: int
        :param _ConnectorGroupType: <p>通道类型</p><p>枚举值：</p><ul><li>vpc： vpc类型</li><li>native： 专线类型</li></ul><p>默认值：native</p>
        :type ConnectorGroupType: str
        :param _DomainSuffix: <p>域名后缀</p>
        :type DomainSuffix: str
        """
        self._ServiceId = None
        self._ServiceName = None
        self._ServiceType = None
        self._ServiceAddress = None
        self._ServicePort = None
        self._CreateTime = None
        self._UpdateTime = None
        self._Remark = None
        self._AreaId = None
        self._SmartGateIds = None
        self._Protocol = None
        self._Levels = None
        self._SmartGateNames = None
        self._DirectConn = None
        self._DetectState = None
        self._DetectInfo = None
        self._DetectTime = None
        self._ConnectorGroupId = None
        self._ConnectorGroupName = None
        self._ReachableTime = None
        self._ReachableState = None
        self._AccessType = None
        self._BackendScheme = None
        self._BackendPath = None
        self._FrontScheme = None
        self._FrontHost = None
        self._FrontPort = None
        self._FrontPath = None
        self._DisableFront = None
        self._CustomDomain = None
        self._CustomHost = None
        self._CnameStatus = None
        self._CertificateId = None
        self._WebGwResourceType = None
        self._APISecretId = None
        self._AreaName = None
        self._SSLCertId = None
        self._EnableDependentAddr = None
        self._DependentAddr = None
        self._WebGwNoAuth = None
        self._ConnectorGroupType = None
        self._DomainSuffix = None

    @property
    def ServiceId(self):
        r"""<p>业务资源id(只支持32位)</p>
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: int
        """
        return self._ServiceId

    @ServiceId.setter
    def ServiceId(self, ServiceId):
        self._ServiceId = ServiceId

    @property
    def ServiceName(self):
        r"""<p>业务资源名称</p>
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._ServiceName

    @ServiceName.setter
    def ServiceName(self, ServiceName):
        self._ServiceName = ServiceName

    @property
    def ServiceType(self):
        r"""<p>资源类型:ip,domain,ip_section，对应ip，域名，ip段</p>
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._ServiceType

    @ServiceType.setter
    def ServiceType(self, ServiceType):
        self._ServiceType = ServiceType

    @property
    def ServiceAddress(self):
        r"""<p>业务资源地址</p>
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._ServiceAddress

    @ServiceAddress.setter
    def ServiceAddress(self, ServiceAddress):
        self._ServiceAddress = ServiceAddress

    @property
    def ServicePort(self):
        r"""<p>业务资源端口 all,1-65535</p>
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._ServicePort

    @ServicePort.setter
    def ServicePort(self, ServicePort):
        self._ServicePort = ServicePort

    @property
    def CreateTime(self):
        r"""<p>业务资源创建时间</p>
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._CreateTime

    @CreateTime.setter
    def CreateTime(self, CreateTime):
        self._CreateTime = CreateTime

    @property
    def UpdateTime(self):
        r"""<p>业务资源最后修改时间</p>
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._UpdateTime

    @UpdateTime.setter
    def UpdateTime(self, UpdateTime):
        self._UpdateTime = UpdateTime

    @property
    def Remark(self):
        r"""<p>说明字段</p>
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._Remark

    @Remark.setter
    def Remark(self, Remark):
        self._Remark = Remark

    @property
    def AreaId(self):
        r"""<p>资源模块ID(只支持32位)</p>
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: int
        """
        return self._AreaId

    @AreaId.setter
    def AreaId(self, AreaId):
        self._AreaId = AreaId

    @property
    def SmartGateIds(self):
        r"""<p>零信任网关id(只支持32位)</p>
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: list of int
        """
        return self._SmartGateIds

    @SmartGateIds.setter
    def SmartGateIds(self, SmartGateIds):
        self._SmartGateIds = SmartGateIds

    @property
    def Protocol(self):
        r"""<p>业务资源协议类型,3：所有,2：UDP，1：TCP(只支持32位)</p>
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: int
        """
        return self._Protocol

    @Protocol.setter
    def Protocol(self, Protocol):
        self._Protocol = Protocol

    @property
    def Levels(self):
        r"""<p>业务资源等级(只支持32位)</p>
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: int
        """
        return self._Levels

    @Levels.setter
    def Levels(self, Levels):
        self._Levels = Levels

    @property
    def SmartGateNames(self):
        r"""<p>零信任网关名称</p>
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._SmartGateNames

    @SmartGateNames.setter
    def SmartGateNames(self, SmartGateNames):
        self._SmartGateNames = SmartGateNames

    @property
    def DirectConn(self):
        r"""<p>网关连通性(只支持32位)</p>
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: int
        """
        return self._DirectConn

    @DirectConn.setter
    def DirectConn(self, DirectConn):
        self._DirectConn = DirectConn

    @property
    def DetectState(self):
        r"""<p>网关连通性状态(只支持32位)</p>
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: int
        """
        return self._DetectState

    @DetectState.setter
    def DetectState(self, DetectState):
        self._DetectState = DetectState

    @property
    def DetectInfo(self):
        r"""<p>网关连通性信息</p>
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._DetectInfo

    @DetectInfo.setter
    def DetectInfo(self, DetectInfo):
        self._DetectInfo = DetectInfo

    @property
    def DetectTime(self):
        r"""<p>网关连通性创建时间</p>
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._DetectTime

    @DetectTime.setter
    def DetectTime(self, DetectTime):
        self._DetectTime = DetectTime

    @property
    def ConnectorGroupId(self):
        r"""<p>绑定的连接器组Id</p>
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._ConnectorGroupId

    @ConnectorGroupId.setter
    def ConnectorGroupId(self, ConnectorGroupId):
        self._ConnectorGroupId = ConnectorGroupId

    @property
    def ConnectorGroupName(self):
        r"""<p>绑定的连接器组的名称</p>
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._ConnectorGroupName

    @ConnectorGroupName.setter
    def ConnectorGroupName(self, ConnectorGroupName):
        self._ConnectorGroupName = ConnectorGroupName

    @property
    def ReachableTime(self):
        r"""<p>资源连通性可达最后的检测时间</p>
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._ReachableTime

    @ReachableTime.setter
    def ReachableTime(self, ReachableTime):
        self._ReachableTime = ReachableTime

    @property
    def ReachableState(self):
        r"""<p>资源连通性可达状态,0：未检测，1：未连通，2：已连通</p>
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: int
        """
        return self._ReachableState

    @ReachableState.setter
    def ReachableState(self, ReachableState):
        self._ReachableState = ReachableState

    @property
    def AccessType(self):
        r"""<p>访问类型:0-NGN 1-web(只支持32位)</p>
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: int
        """
        return self._AccessType

    @AccessType.setter
    def AccessType(self, AccessType):
        self._AccessType = AccessType

    @property
    def BackendScheme(self):
        r"""<p>web资源-后端协议</p>
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._BackendScheme

    @BackendScheme.setter
    def BackendScheme(self, BackendScheme):
        self._BackendScheme = BackendScheme

    @property
    def BackendPath(self):
        r"""<p>web资源-后端路径</p>
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._BackendPath

    @BackendPath.setter
    def BackendPath(self, BackendPath):
        self._BackendPath = BackendPath

    @property
    def FrontScheme(self):
        r"""<p>web资源-前端协议</p>
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._FrontScheme

    @FrontScheme.setter
    def FrontScheme(self, FrontScheme):
        self._FrontScheme = FrontScheme

    @property
    def FrontHost(self):
        r"""<p>web资源-前端host</p>
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._FrontHost

    @FrontHost.setter
    def FrontHost(self, FrontHost):
        self._FrontHost = FrontHost

    @property
    def FrontPort(self):
        r"""<p>web资源-前端host(只支持32位)</p>
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: int
        """
        return self._FrontPort

    @FrontPort.setter
    def FrontPort(self, FrontPort):
        self._FrontPort = FrontPort

    @property
    def FrontPath(self):
        r"""<p>web资源-前端路径 默认&quot;/&quot;</p>
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._FrontPath

    @FrontPath.setter
    def FrontPath(self, FrontPath):
        self._FrontPath = FrontPath

    @property
    def DisableFront(self):
        r"""<p>web资源-是否禁用外网访问：0-可通过外网访问 1-不能通过外网访问(只支持32位)</p>
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: int
        """
        return self._DisableFront

    @DisableFront.setter
    def DisableFront(self, DisableFront):
        self._DisableFront = DisableFront

    @property
    def CustomDomain(self):
        r"""<p>web资源-租户自定义域名</p>
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._CustomDomain

    @CustomDomain.setter
    def CustomDomain(self, CustomDomain):
        self._CustomDomain = CustomDomain

    @property
    def CustomHost(self):
        r"""<p>web资源-自定义host</p>
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._CustomHost

    @CustomHost.setter
    def CustomHost(self, CustomHost):
        self._CustomHost = CustomHost

    @property
    def CnameStatus(self):
        r"""<p>web资源-Cname状态(只支持32位)</p>
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: int
        """
        return self._CnameStatus

    @CnameStatus.setter
    def CnameStatus(self, CnameStatus):
        self._CnameStatus = CnameStatus

    @property
    def CertificateId(self):
        r"""<p>web资源-关联证书ID(只支持32位)</p>
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: int
        """
        return self._CertificateId

    @CertificateId.setter
    def CertificateId(self, CertificateId):
        self._CertificateId = CertificateId

    @property
    def WebGwResourceType(self):
        r"""<p>web资源类型：0-应用 1-API(只支持32位)</p>
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: int
        """
        return self._WebGwResourceType

    @WebGwResourceType.setter
    def WebGwResourceType(self, WebGwResourceType):
        self._WebGwResourceType = WebGwResourceType

    @property
    def APISecretId(self):
        r"""<p>web资源-如果选择API类型资源，则需要配置密钥(只支持32位)</p>
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: int
        """
        return self._APISecretId

    @APISecretId.setter
    def APISecretId(self, APISecretId):
        self._APISecretId = APISecretId

    @property
    def AreaName(self):
        r"""<p>所属资源组名称</p>
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._AreaName

    @AreaName.setter
    def AreaName(self, AreaName):
        self._AreaName = AreaName

    @property
    def SSLCertId(self):
        r"""<p>web资源-前端协议是HTTPS类型，需要配置证书</p>
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._SSLCertId

    @SSLCertId.setter
    def SSLCertId(self, SSLCertId):
        self._SSLCertId = SSLCertId

    @property
    def EnableDependentAddr(self):
        r"""<p>web资源-是否启用依赖地址：0-不启用 1-启用(只支持32位)</p>
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: int
        """
        return self._EnableDependentAddr

    @EnableDependentAddr.setter
    def EnableDependentAddr(self, EnableDependentAddr):
        self._EnableDependentAddr = EnableDependentAddr

    @property
    def DependentAddr(self):
        r"""<p>web资源-依赖地址的后端服务器地址</p>
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._DependentAddr

    @DependentAddr.setter
    def DependentAddr(self, DependentAddr):
        self._DependentAddr = DependentAddr

    @property
    def WebGwNoAuth(self):
        r"""<p>web免鉴权：1-鉴权 2-免鉴权</p>
        :rtype: int
        """
        return self._WebGwNoAuth

    @WebGwNoAuth.setter
    def WebGwNoAuth(self, WebGwNoAuth):
        self._WebGwNoAuth = WebGwNoAuth

    @property
    def ConnectorGroupType(self):
        r"""<p>通道类型</p><p>枚举值：</p><ul><li>vpc： vpc类型</li><li>native： 专线类型</li></ul><p>默认值：native</p>
        :rtype: str
        """
        return self._ConnectorGroupType

    @ConnectorGroupType.setter
    def ConnectorGroupType(self, ConnectorGroupType):
        self._ConnectorGroupType = ConnectorGroupType

    @property
    def DomainSuffix(self):
        r"""<p>域名后缀</p>
        :rtype: str
        """
        return self._DomainSuffix

    @DomainSuffix.setter
    def DomainSuffix(self, DomainSuffix):
        self._DomainSuffix = DomainSuffix


    def _deserialize(self, params):
        self._ServiceId = params.get("ServiceId")
        self._ServiceName = params.get("ServiceName")
        self._ServiceType = params.get("ServiceType")
        self._ServiceAddress = params.get("ServiceAddress")
        self._ServicePort = params.get("ServicePort")
        self._CreateTime = params.get("CreateTime")
        self._UpdateTime = params.get("UpdateTime")
        self._Remark = params.get("Remark")
        self._AreaId = params.get("AreaId")
        self._SmartGateIds = params.get("SmartGateIds")
        self._Protocol = params.get("Protocol")
        self._Levels = params.get("Levels")
        self._SmartGateNames = params.get("SmartGateNames")
        self._DirectConn = params.get("DirectConn")
        self._DetectState = params.get("DetectState")
        self._DetectInfo = params.get("DetectInfo")
        self._DetectTime = params.get("DetectTime")
        self._ConnectorGroupId = params.get("ConnectorGroupId")
        self._ConnectorGroupName = params.get("ConnectorGroupName")
        self._ReachableTime = params.get("ReachableTime")
        self._ReachableState = params.get("ReachableState")
        self._AccessType = params.get("AccessType")
        self._BackendScheme = params.get("BackendScheme")
        self._BackendPath = params.get("BackendPath")
        self._FrontScheme = params.get("FrontScheme")
        self._FrontHost = params.get("FrontHost")
        self._FrontPort = params.get("FrontPort")
        self._FrontPath = params.get("FrontPath")
        self._DisableFront = params.get("DisableFront")
        self._CustomDomain = params.get("CustomDomain")
        self._CustomHost = params.get("CustomHost")
        self._CnameStatus = params.get("CnameStatus")
        self._CertificateId = params.get("CertificateId")
        self._WebGwResourceType = params.get("WebGwResourceType")
        self._APISecretId = params.get("APISecretId")
        self._AreaName = params.get("AreaName")
        self._SSLCertId = params.get("SSLCertId")
        self._EnableDependentAddr = params.get("EnableDependentAddr")
        self._DependentAddr = params.get("DependentAddr")
        self._WebGwNoAuth = params.get("WebGwNoAuth")
        self._ConnectorGroupType = params.get("ConnectorGroupType")
        self._DomainSuffix = params.get("DomainSuffix")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class DescribeBusinessResourcePageRsp(AbstractModel):
    r"""业务资源分页返回对象

    """

    def __init__(self):
        r"""
        :param _Items: 业务资源列表数据对象集合
注意：此字段可能返回 null，表示取不到有效值。
        :type Items: list of DescribeBusinessResourceData
        :param _Page: 分页公共对象
注意：此字段可能返回 null，表示取不到有效值。
        :type Page: :class:`tencentcloud.ioa.v20220601.models.Paging`
        """
        self._Items = None
        self._Page = None

    @property
    def Items(self):
        r"""业务资源列表数据对象集合
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: list of DescribeBusinessResourceData
        """
        return self._Items

    @Items.setter
    def Items(self, Items):
        self._Items = Items

    @property
    def Page(self):
        r"""分页公共对象
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: :class:`tencentcloud.ioa.v20220601.models.Paging`
        """
        return self._Page

    @Page.setter
    def Page(self, Page):
        self._Page = Page


    def _deserialize(self, params):
        if params.get("Items") is not None:
            self._Items = []
            for item in params.get("Items"):
                obj = DescribeBusinessResourceData()
                obj._deserialize(item)
                self._Items.append(obj)
        if params.get("Page") is not None:
            self._Page = Paging()
            self._Page._deserialize(params.get("Page"))
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class DescribeBusinessResourcesRequest(AbstractModel):
    r"""DescribeBusinessResources请求参数结构体

    """

    def __init__(self):
        r"""
        :param _AreaId: 资源模块Id
        :type AreaId: int
        :param _ServiceName: 搜索的业务资源名称
        :type ServiceName: str
        :param _StartTime: 获取业务资源列表的开始时间，时间格式：2006-01-02
        :type StartTime: str
        :param _Keywords: 搜索关键字
        :type Keywords: str
        :param _EndTime: 获取业务资源列表的结束时间，时间格式：2006-01-02
        :type EndTime: str
        :param _Condition: 滤条件、分页参数。分页内容不传，默认获取第1页，10条数据
排序条件
<li>CreateTime - string - 是否必填：否 - 排序支持：是 - 按业务资源创建时间排序。</li>
<li>Levels - int - 是否必填：否 - 排序支持：是 - 按业务资源优先级排序。</li>
<li>ReachableState - int - 是否必填：否 - 排序支持：是 - 按业务资源连通性排序(私有化版本不支持)。</li>
        :type Condition: :class:`tencentcloud.ioa.v20220601.models.Condition`
        :param _AccessType: 资源类型
        :type AccessType: str
        :param _FrontAddr: web资源前端地址
        :type FrontAddr: str
        """
        self._AreaId = None
        self._ServiceName = None
        self._StartTime = None
        self._Keywords = None
        self._EndTime = None
        self._Condition = None
        self._AccessType = None
        self._FrontAddr = None

    @property
    def AreaId(self):
        r"""资源模块Id
        :rtype: int
        """
        return self._AreaId

    @AreaId.setter
    def AreaId(self, AreaId):
        self._AreaId = AreaId

    @property
    def ServiceName(self):
        r"""搜索的业务资源名称
        :rtype: str
        """
        return self._ServiceName

    @ServiceName.setter
    def ServiceName(self, ServiceName):
        self._ServiceName = ServiceName

    @property
    def StartTime(self):
        r"""获取业务资源列表的开始时间，时间格式：2006-01-02
        :rtype: str
        """
        return self._StartTime

    @StartTime.setter
    def StartTime(self, StartTime):
        self._StartTime = StartTime

    @property
    def Keywords(self):
        r"""搜索关键字
        :rtype: str
        """
        return self._Keywords

    @Keywords.setter
    def Keywords(self, Keywords):
        self._Keywords = Keywords

    @property
    def EndTime(self):
        r"""获取业务资源列表的结束时间，时间格式：2006-01-02
        :rtype: str
        """
        return self._EndTime

    @EndTime.setter
    def EndTime(self, EndTime):
        self._EndTime = EndTime

    @property
    def Condition(self):
        r"""滤条件、分页参数。分页内容不传，默认获取第1页，10条数据
排序条件
<li>CreateTime - string - 是否必填：否 - 排序支持：是 - 按业务资源创建时间排序。</li>
<li>Levels - int - 是否必填：否 - 排序支持：是 - 按业务资源优先级排序。</li>
<li>ReachableState - int - 是否必填：否 - 排序支持：是 - 按业务资源连通性排序(私有化版本不支持)。</li>
        :rtype: :class:`tencentcloud.ioa.v20220601.models.Condition`
        """
        return self._Condition

    @Condition.setter
    def Condition(self, Condition):
        self._Condition = Condition

    @property
    def AccessType(self):
        r"""资源类型
        :rtype: str
        """
        return self._AccessType

    @AccessType.setter
    def AccessType(self, AccessType):
        self._AccessType = AccessType

    @property
    def FrontAddr(self):
        r"""web资源前端地址
        :rtype: str
        """
        return self._FrontAddr

    @FrontAddr.setter
    def FrontAddr(self, FrontAddr):
        self._FrontAddr = FrontAddr


    def _deserialize(self, params):
        self._AreaId = params.get("AreaId")
        self._ServiceName = params.get("ServiceName")
        self._StartTime = params.get("StartTime")
        self._Keywords = params.get("Keywords")
        self._EndTime = params.get("EndTime")
        if params.get("Condition") is not None:
            self._Condition = Condition()
            self._Condition._deserialize(params.get("Condition"))
        self._AccessType = params.get("AccessType")
        self._FrontAddr = params.get("FrontAddr")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class DescribeBusinessResourcesResponse(AbstractModel):
    r"""DescribeBusinessResources返回参数结构体

    """

    def __init__(self):
        r"""
        :param _Data: 业务资源分页返回对象
注意：此字段可能返回 null，表示取不到有效值。
        :type Data: :class:`tencentcloud.ioa.v20220601.models.DescribeBusinessResourcePageRsp`
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._Data = None
        self._RequestId = None

    @property
    def Data(self):
        r"""业务资源分页返回对象
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: :class:`tencentcloud.ioa.v20220601.models.DescribeBusinessResourcePageRsp`
        """
        return self._Data

    @Data.setter
    def Data(self, Data):
        self._Data = Data

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        if params.get("Data") is not None:
            self._Data = DescribeBusinessResourcePageRsp()
            self._Data._deserialize(params.get("Data"))
        self._RequestId = params.get("RequestId")


class DescribeCompanyDirectoryConfigRequest(AbstractModel):
    r"""DescribeCompanyDirectoryConfig请求参数结构体

    """

    def __init__(self):
        r"""
        :param _Id: <p>企业目录 ID</p>
        :type Id: int
        """
        self._Id = None

    @property
    def Id(self):
        r"""<p>企业目录 ID</p>
        :rtype: int
        """
        return self._Id

    @Id.setter
    def Id(self, Id):
        self._Id = Id


    def _deserialize(self, params):
        self._Id = params.get("Id")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class DescribeCompanyDirectoryConfigResponse(AbstractModel):
    r"""DescribeCompanyDirectoryConfig返回参数结构体

    """

    def __init__(self):
        r"""
        :param _Data: <p>企业目录配置详情</p>
        :type Data: :class:`tencentcloud.ioa.v20220601.models.DirectoryConfigData`
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._Data = None
        self._RequestId = None

    @property
    def Data(self):
        r"""<p>企业目录配置详情</p>
        :rtype: :class:`tencentcloud.ioa.v20220601.models.DirectoryConfigData`
        """
        return self._Data

    @Data.setter
    def Data(self, Data):
        self._Data = Data

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        if params.get("Data") is not None:
            self._Data = DirectoryConfigData()
            self._Data._deserialize(params.get("Data"))
        self._RequestId = params.get("RequestId")


class DescribeDLPEdgeNodeGroupsRequest(AbstractModel):
    r"""DescribeDLPEdgeNodeGroups请求参数结构体

    """

    def __init__(self):
        r"""
        :param _DomainInstanceId: 管理域实例ID，用于CAM管理域权限分配。若企业未进行管理域的划分，可直接传入根域"1"，此时表示针对当前企业的全部设备和账号进行接口CRUD，具体CRUD的影响范围限制于相应接口的入参。
        :type DomainInstanceId: str
        :param _Condition: 过滤条件
        :type Condition: :class:`tencentcloud.ioa.v20220601.models.Condition`
        """
        self._DomainInstanceId = None
        self._Condition = None

    @property
    def DomainInstanceId(self):
        r"""管理域实例ID，用于CAM管理域权限分配。若企业未进行管理域的划分，可直接传入根域"1"，此时表示针对当前企业的全部设备和账号进行接口CRUD，具体CRUD的影响范围限制于相应接口的入参。
        :rtype: str
        """
        return self._DomainInstanceId

    @DomainInstanceId.setter
    def DomainInstanceId(self, DomainInstanceId):
        self._DomainInstanceId = DomainInstanceId

    @property
    def Condition(self):
        r"""过滤条件
        :rtype: :class:`tencentcloud.ioa.v20220601.models.Condition`
        """
        return self._Condition

    @Condition.setter
    def Condition(self, Condition):
        self._Condition = Condition


    def _deserialize(self, params):
        self._DomainInstanceId = params.get("DomainInstanceId")
        if params.get("Condition") is not None:
            self._Condition = Condition()
            self._Condition._deserialize(params.get("Condition"))
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class DescribeDLPEdgeNodeGroupsResponse(AbstractModel):
    r"""DescribeDLPEdgeNodeGroups返回参数结构体

    """

    def __init__(self):
        r"""
        :param _Data: 业务响应数据
        :type Data: :class:`tencentcloud.ioa.v20220601.models.DescribeDLPEdgeNodeGroupsRspData`
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._Data = None
        self._RequestId = None

    @property
    def Data(self):
        r"""业务响应数据
        :rtype: :class:`tencentcloud.ioa.v20220601.models.DescribeDLPEdgeNodeGroupsRspData`
        """
        return self._Data

    @Data.setter
    def Data(self, Data):
        self._Data = Data

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        if params.get("Data") is not None:
            self._Data = DescribeDLPEdgeNodeGroupsRspData()
            self._Data._deserialize(params.get("Data"))
        self._RequestId = params.get("RequestId")


class DescribeDLPEdgeNodeGroupsRspData(AbstractModel):
    r"""业务响应数据

    """

    def __init__(self):
        r"""
        :param _Items: 分组信息
        :type Items: list of DescribeDLPEdgeNodeGroupsRspItem
        :param _Page: 分页信息
        :type Page: :class:`tencentcloud.ioa.v20220601.models.Paging`
        """
        self._Items = None
        self._Page = None

    @property
    def Items(self):
        r"""分组信息
        :rtype: list of DescribeDLPEdgeNodeGroupsRspItem
        """
        return self._Items

    @Items.setter
    def Items(self, Items):
        self._Items = Items

    @property
    def Page(self):
        r"""分页信息
        :rtype: :class:`tencentcloud.ioa.v20220601.models.Paging`
        """
        return self._Page

    @Page.setter
    def Page(self, Page):
        self._Page = Page


    def _deserialize(self, params):
        if params.get("Items") is not None:
            self._Items = []
            for item in params.get("Items"):
                obj = DescribeDLPEdgeNodeGroupsRspItem()
                obj._deserialize(item)
                self._Items.append(obj)
        if params.get("Page") is not None:
            self._Page = Paging()
            self._Page._deserialize(params.get("Page"))
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class DescribeDLPEdgeNodeGroupsRspItem(AbstractModel):
    r"""节点分组信息

    """

    def __init__(self):
        r"""
        :param _Id: 自增id，数据库中唯一
        :type Id: int
        :param _GroupName: 节点分组名称
        :type GroupName: str
        :param _GroupId: 节点分组id
        :type GroupId: str
        :param _EdgeCount: 包含边缘节点数量
        :type EdgeCount: int
        """
        self._Id = None
        self._GroupName = None
        self._GroupId = None
        self._EdgeCount = None

    @property
    def Id(self):
        r"""自增id，数据库中唯一
        :rtype: int
        """
        return self._Id

    @Id.setter
    def Id(self, Id):
        self._Id = Id

    @property
    def GroupName(self):
        r"""节点分组名称
        :rtype: str
        """
        return self._GroupName

    @GroupName.setter
    def GroupName(self, GroupName):
        self._GroupName = GroupName

    @property
    def GroupId(self):
        r"""节点分组id
        :rtype: str
        """
        return self._GroupId

    @GroupId.setter
    def GroupId(self, GroupId):
        self._GroupId = GroupId

    @property
    def EdgeCount(self):
        r"""包含边缘节点数量
        :rtype: int
        """
        return self._EdgeCount

    @EdgeCount.setter
    def EdgeCount(self, EdgeCount):
        self._EdgeCount = EdgeCount


    def _deserialize(self, params):
        self._Id = params.get("Id")
        self._GroupName = params.get("GroupName")
        self._GroupId = params.get("GroupId")
        self._EdgeCount = params.get("EdgeCount")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class DescribeDLPEdgeNodesPageData(AbstractModel):
    r"""业务响应数据

    """

    def __init__(self):
        r"""
        :param _Page: 分页信息
        :type Page: :class:`tencentcloud.ioa.v20220601.models.Paging`
        :param _Items: 节点列表
        :type Items: list of DescribeDLPEdgeNodesRspItem
        """
        self._Page = None
        self._Items = None

    @property
    def Page(self):
        r"""分页信息
        :rtype: :class:`tencentcloud.ioa.v20220601.models.Paging`
        """
        return self._Page

    @Page.setter
    def Page(self, Page):
        self._Page = Page

    @property
    def Items(self):
        r"""节点列表
        :rtype: list of DescribeDLPEdgeNodesRspItem
        """
        return self._Items

    @Items.setter
    def Items(self, Items):
        self._Items = Items


    def _deserialize(self, params):
        if params.get("Page") is not None:
            self._Page = Paging()
            self._Page._deserialize(params.get("Page"))
        if params.get("Items") is not None:
            self._Items = []
            for item in params.get("Items"):
                obj = DescribeDLPEdgeNodesRspItem()
                obj._deserialize(item)
                self._Items.append(obj)
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class DescribeDLPEdgeNodesRequest(AbstractModel):
    r"""DescribeDLPEdgeNodes请求参数结构体

    """

    def __init__(self):
        r"""
        :param _DomainInstanceId: 管理域实例ID，用于CAM管理域权限分配。若企业未进行管理域的划分，可直接传入根域"1"，此时表示针对当前企业的全部设备和账号进行接口CRUD，具体CRUD的影响范围限制于相应接口的入参。
        :type DomainInstanceId: str
        :param _Condition: 过滤条件、分页参数<li>EdgeNodeName - string - 是否必填：否 - 操作符: ilike  - 排序支持：否- 按节点名称过滤。</li>
        :type Condition: :class:`tencentcloud.ioa.v20220601.models.Condition`
        """
        self._DomainInstanceId = None
        self._Condition = None

    @property
    def DomainInstanceId(self):
        r"""管理域实例ID，用于CAM管理域权限分配。若企业未进行管理域的划分，可直接传入根域"1"，此时表示针对当前企业的全部设备和账号进行接口CRUD，具体CRUD的影响范围限制于相应接口的入参。
        :rtype: str
        """
        return self._DomainInstanceId

    @DomainInstanceId.setter
    def DomainInstanceId(self, DomainInstanceId):
        self._DomainInstanceId = DomainInstanceId

    @property
    def Condition(self):
        r"""过滤条件、分页参数<li>EdgeNodeName - string - 是否必填：否 - 操作符: ilike  - 排序支持：否- 按节点名称过滤。</li>
        :rtype: :class:`tencentcloud.ioa.v20220601.models.Condition`
        """
        return self._Condition

    @Condition.setter
    def Condition(self, Condition):
        self._Condition = Condition


    def _deserialize(self, params):
        self._DomainInstanceId = params.get("DomainInstanceId")
        if params.get("Condition") is not None:
            self._Condition = Condition()
            self._Condition._deserialize(params.get("Condition"))
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class DescribeDLPEdgeNodesResponse(AbstractModel):
    r"""DescribeDLPEdgeNodes返回参数结构体

    """

    def __init__(self):
        r"""
        :param _Data: 业务响应数据
        :type Data: :class:`tencentcloud.ioa.v20220601.models.DescribeDLPEdgeNodesPageData`
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._Data = None
        self._RequestId = None

    @property
    def Data(self):
        r"""业务响应数据
        :rtype: :class:`tencentcloud.ioa.v20220601.models.DescribeDLPEdgeNodesPageData`
        """
        return self._Data

    @Data.setter
    def Data(self, Data):
        self._Data = Data

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        if params.get("Data") is not None:
            self._Data = DescribeDLPEdgeNodesPageData()
            self._Data._deserialize(params.get("Data"))
        self._RequestId = params.get("RequestId")


class DescribeDLPEdgeNodesRspItem(AbstractModel):
    r"""边缘节点信息

    """

    def __init__(self):
        r"""
        :param _Id: 自增id，数据库中唯一
        :type Id: int
        :param _GroupId: 节点分组唯一id
        :type GroupId: str
        :param _EdgeNodeId: 节点id
        :type EdgeNodeId: str
        :param _EdgeNodeName: 节点名称
        :type EdgeNodeName: str
        :param _IsActive: 是否活跃/连通
        :type IsActive: bool
        :param _GroupName: 节点分组名称
        :type GroupName: str
        :param _Ip: 节点IP
        :type Ip: str
        :param _Version: 节点版本
        :type Version: str
        :param _IsUpgradeEnable: 是否支持升级连接器
        :type IsUpgradeEnable: bool
        :param _UpgradeStatus: 升级状态: 0(升级中) , 1(升级失败) 或 2(升级成功)
        :type UpgradeStatus: int
        :param _UpgradeDescription: 升级状态描述
        :type UpgradeDescription: str
        :param _RuleVersion: 规则版本
        :type RuleVersion: str
        """
        self._Id = None
        self._GroupId = None
        self._EdgeNodeId = None
        self._EdgeNodeName = None
        self._IsActive = None
        self._GroupName = None
        self._Ip = None
        self._Version = None
        self._IsUpgradeEnable = None
        self._UpgradeStatus = None
        self._UpgradeDescription = None
        self._RuleVersion = None

    @property
    def Id(self):
        r"""自增id，数据库中唯一
        :rtype: int
        """
        return self._Id

    @Id.setter
    def Id(self, Id):
        self._Id = Id

    @property
    def GroupId(self):
        r"""节点分组唯一id
        :rtype: str
        """
        return self._GroupId

    @GroupId.setter
    def GroupId(self, GroupId):
        self._GroupId = GroupId

    @property
    def EdgeNodeId(self):
        r"""节点id
        :rtype: str
        """
        return self._EdgeNodeId

    @EdgeNodeId.setter
    def EdgeNodeId(self, EdgeNodeId):
        self._EdgeNodeId = EdgeNodeId

    @property
    def EdgeNodeName(self):
        r"""节点名称
        :rtype: str
        """
        return self._EdgeNodeName

    @EdgeNodeName.setter
    def EdgeNodeName(self, EdgeNodeName):
        self._EdgeNodeName = EdgeNodeName

    @property
    def IsActive(self):
        r"""是否活跃/连通
        :rtype: bool
        """
        return self._IsActive

    @IsActive.setter
    def IsActive(self, IsActive):
        self._IsActive = IsActive

    @property
    def GroupName(self):
        r"""节点分组名称
        :rtype: str
        """
        return self._GroupName

    @GroupName.setter
    def GroupName(self, GroupName):
        self._GroupName = GroupName

    @property
    def Ip(self):
        r"""节点IP
        :rtype: str
        """
        return self._Ip

    @Ip.setter
    def Ip(self, Ip):
        self._Ip = Ip

    @property
    def Version(self):
        r"""节点版本
        :rtype: str
        """
        return self._Version

    @Version.setter
    def Version(self, Version):
        self._Version = Version

    @property
    def IsUpgradeEnable(self):
        r"""是否支持升级连接器
        :rtype: bool
        """
        return self._IsUpgradeEnable

    @IsUpgradeEnable.setter
    def IsUpgradeEnable(self, IsUpgradeEnable):
        self._IsUpgradeEnable = IsUpgradeEnable

    @property
    def UpgradeStatus(self):
        r"""升级状态: 0(升级中) , 1(升级失败) 或 2(升级成功)
        :rtype: int
        """
        return self._UpgradeStatus

    @UpgradeStatus.setter
    def UpgradeStatus(self, UpgradeStatus):
        self._UpgradeStatus = UpgradeStatus

    @property
    def UpgradeDescription(self):
        r"""升级状态描述
        :rtype: str
        """
        return self._UpgradeDescription

    @UpgradeDescription.setter
    def UpgradeDescription(self, UpgradeDescription):
        self._UpgradeDescription = UpgradeDescription

    @property
    def RuleVersion(self):
        r"""规则版本
        :rtype: str
        """
        return self._RuleVersion

    @RuleVersion.setter
    def RuleVersion(self, RuleVersion):
        self._RuleVersion = RuleVersion


    def _deserialize(self, params):
        self._Id = params.get("Id")
        self._GroupId = params.get("GroupId")
        self._EdgeNodeId = params.get("EdgeNodeId")
        self._EdgeNodeName = params.get("EdgeNodeName")
        self._IsActive = params.get("IsActive")
        self._GroupName = params.get("GroupName")
        self._Ip = params.get("Ip")
        self._Version = params.get("Version")
        self._IsUpgradeEnable = params.get("IsUpgradeEnable")
        self._UpgradeStatus = params.get("UpgradeStatus")
        self._UpgradeDescription = params.get("UpgradeDescription")
        self._RuleVersion = params.get("RuleVersion")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class DescribeDLPFileDetectResultData(AbstractModel):
    r"""查询文件检测结果响应数据

    """

    def __init__(self):
        r"""
        :param _FileMd5: 提交任务时的文件md5
        :type FileMd5: str
        :param _FileName: 提交任务时的文件名
        :type FileName: str
        :param _Status: 状态：等待检测->正在检测->检测失败/检测成功。或任务不存在
        :type Status: str
        :param _DetectResult: 文件检测结果，json字符串。包含文件基本信息如type，path，md5以及命中的信息。其中State为检测状态，0为待解析文件，1为检测中，2为检测完成；FileAbstract为命中的上下文摘要信息，HitRuleid是命中的规则唯一ID，HitRuleCategoryId是规则分类唯一id，HitLevel是文件的等级，HitRuleDesc是规则的名称，HitContent是具体命中的规则以及词库信息，以及命中的内容。EngineConfigVersion是当前词库版本号
        :type DetectResult: str
        """
        self._FileMd5 = None
        self._FileName = None
        self._Status = None
        self._DetectResult = None

    @property
    def FileMd5(self):
        r"""提交任务时的文件md5
        :rtype: str
        """
        return self._FileMd5

    @FileMd5.setter
    def FileMd5(self, FileMd5):
        self._FileMd5 = FileMd5

    @property
    def FileName(self):
        r"""提交任务时的文件名
        :rtype: str
        """
        return self._FileName

    @FileName.setter
    def FileName(self, FileName):
        self._FileName = FileName

    @property
    def Status(self):
        r"""状态：等待检测->正在检测->检测失败/检测成功。或任务不存在
        :rtype: str
        """
        return self._Status

    @Status.setter
    def Status(self, Status):
        self._Status = Status

    @property
    def DetectResult(self):
        r"""文件检测结果，json字符串。包含文件基本信息如type，path，md5以及命中的信息。其中State为检测状态，0为待解析文件，1为检测中，2为检测完成；FileAbstract为命中的上下文摘要信息，HitRuleid是命中的规则唯一ID，HitRuleCategoryId是规则分类唯一id，HitLevel是文件的等级，HitRuleDesc是规则的名称，HitContent是具体命中的规则以及词库信息，以及命中的内容。EngineConfigVersion是当前词库版本号
        :rtype: str
        """
        return self._DetectResult

    @DetectResult.setter
    def DetectResult(self, DetectResult):
        self._DetectResult = DetectResult


    def _deserialize(self, params):
        self._FileMd5 = params.get("FileMd5")
        self._FileName = params.get("FileName")
        self._Status = params.get("Status")
        self._DetectResult = params.get("DetectResult")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class DescribeDLPFileDetectResultRequest(AbstractModel):
    r"""DescribeDLPFileDetectResult请求参数结构体

    """

    def __init__(self):
        r"""
        :param _DomainInstanceId: 管理域实例ID，用于CAM管理域权限分配。若企业未进行管理域的划分，可直接传入根域"1"，此时表示针对当前企业的全部设备和账号进行接口CRUD，具体CRUD的影响范围限制于相应接口的入参。
        :type DomainInstanceId: str
        :param _QueryID: <p>查询ID，即提交送检任务接口（CreateDLPFileDetectionTask）返回的任务ID（DLPFileDetectionTaskID）</p>
        :type QueryID: str
        """
        self._DomainInstanceId = None
        self._QueryID = None

    @property
    def DomainInstanceId(self):
        r"""管理域实例ID，用于CAM管理域权限分配。若企业未进行管理域的划分，可直接传入根域"1"，此时表示针对当前企业的全部设备和账号进行接口CRUD，具体CRUD的影响范围限制于相应接口的入参。
        :rtype: str
        """
        return self._DomainInstanceId

    @DomainInstanceId.setter
    def DomainInstanceId(self, DomainInstanceId):
        self._DomainInstanceId = DomainInstanceId

    @property
    def QueryID(self):
        r"""<p>查询ID，即提交送检任务接口（CreateDLPFileDetectionTask）返回的任务ID（DLPFileDetectionTaskID）</p>
        :rtype: str
        """
        return self._QueryID

    @QueryID.setter
    def QueryID(self, QueryID):
        self._QueryID = QueryID


    def _deserialize(self, params):
        self._DomainInstanceId = params.get("DomainInstanceId")
        self._QueryID = params.get("QueryID")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class DescribeDLPFileDetectResultResponse(AbstractModel):
    r"""DescribeDLPFileDetectResult返回参数结构体

    """

    def __init__(self):
        r"""
        :param _Data: <p>文件鉴定任务结果数据。详情查看具体数据结构</p>
        :type Data: :class:`tencentcloud.ioa.v20220601.models.DescribeDLPFileDetectResultData`
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._Data = None
        self._RequestId = None

    @property
    def Data(self):
        r"""<p>文件鉴定任务结果数据。详情查看具体数据结构</p>
        :rtype: :class:`tencentcloud.ioa.v20220601.models.DescribeDLPFileDetectResultData`
        """
        return self._Data

    @Data.setter
    def Data(self, Data):
        self._Data = Data

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        if params.get("Data") is not None:
            self._Data = DescribeDLPFileDetectResultData()
            self._Data._deserialize(params.get("Data"))
        self._RequestId = params.get("RequestId")


class DescribeDLPFileDetectTaskResult(AbstractModel):
    r"""查询文件检测结果响应数据

    """

    def __init__(self):
        r"""
        :param _FileMd5: 提交任务时的文件md5
        :type FileMd5: str
        :param _FileName: 提交任务时的文件名
        :type FileName: str
        :param _Status: 检测执行状态：0未执行 1等待执行 2执行中 3执行失败 4执行完成 
        :type Status: int
        :param _DetectResult:     FileAbstract:文件摘要
    FileAttr:文件属性
    FileCategory:命中分级分类 array
    FileContent:命中信息json(array)
	            RuleId:规则Id
				RuleName:规则名称
				RuleLevel:规则等级
				Hits：命中词库内容
				    LibraryId：词库Id
					LibraryType:词库类型
					LibraryName:词库名称
					Attribute: 命中属性 doc.Content文件内容|doc.FileSize文件大小|doc.Name文件名|doc.Type文件类型
					String  待匹配内容
					Content 命中内容
                HitsTotal 规则命中次数
    FileMd5 文件ND5
    FileName 文件名
    FileSize 文件大小
    FileType 文件后缀
    FileTypeName 文件类型名称
    FinalDataLevel 命中最高等级
    NodeId 节点唯一Id
    NodeIp 节点IP
    NodeName 节点名称
    OperateTime 文件操作时间
    Url 文件下载Url
        :type DetectResult: str
        :param _Message: 检测执行状态描述
        :type Message: str
        """
        self._FileMd5 = None
        self._FileName = None
        self._Status = None
        self._DetectResult = None
        self._Message = None

    @property
    def FileMd5(self):
        r"""提交任务时的文件md5
        :rtype: str
        """
        return self._FileMd5

    @FileMd5.setter
    def FileMd5(self, FileMd5):
        self._FileMd5 = FileMd5

    @property
    def FileName(self):
        r"""提交任务时的文件名
        :rtype: str
        """
        return self._FileName

    @FileName.setter
    def FileName(self, FileName):
        self._FileName = FileName

    @property
    def Status(self):
        r"""检测执行状态：0未执行 1等待执行 2执行中 3执行失败 4执行完成 
        :rtype: int
        """
        return self._Status

    @Status.setter
    def Status(self, Status):
        self._Status = Status

    @property
    def DetectResult(self):
        r"""    FileAbstract:文件摘要
    FileAttr:文件属性
    FileCategory:命中分级分类 array
    FileContent:命中信息json(array)
	            RuleId:规则Id
				RuleName:规则名称
				RuleLevel:规则等级
				Hits：命中词库内容
				    LibraryId：词库Id
					LibraryType:词库类型
					LibraryName:词库名称
					Attribute: 命中属性 doc.Content文件内容|doc.FileSize文件大小|doc.Name文件名|doc.Type文件类型
					String  待匹配内容
					Content 命中内容
                HitsTotal 规则命中次数
    FileMd5 文件ND5
    FileName 文件名
    FileSize 文件大小
    FileType 文件后缀
    FileTypeName 文件类型名称
    FinalDataLevel 命中最高等级
    NodeId 节点唯一Id
    NodeIp 节点IP
    NodeName 节点名称
    OperateTime 文件操作时间
    Url 文件下载Url
        :rtype: str
        """
        return self._DetectResult

    @DetectResult.setter
    def DetectResult(self, DetectResult):
        self._DetectResult = DetectResult

    @property
    def Message(self):
        r"""检测执行状态描述
        :rtype: str
        """
        return self._Message

    @Message.setter
    def Message(self, Message):
        self._Message = Message


    def _deserialize(self, params):
        self._FileMd5 = params.get("FileMd5")
        self._FileName = params.get("FileName")
        self._Status = params.get("Status")
        self._DetectResult = params.get("DetectResult")
        self._Message = params.get("Message")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class DescribeDLPFileDetectTaskResultRequest(AbstractModel):
    r"""DescribeDLPFileDetectTaskResult请求参数结构体

    """

    def __init__(self):
        r"""
        :param _DomainInstanceId: 管理域实例ID，用于CAM管理域权限分配。若企业未进行管理域的划分，可直接传入根域"1"，此时表示针对当前企业的全部设备和账号进行接口CRUD，具体CRUD的影响范围限制于相应接口的入参。
        :type DomainInstanceId: str
        :param _TaskRequestId: 任务请求Id
        :type TaskRequestId: str
        """
        self._DomainInstanceId = None
        self._TaskRequestId = None

    @property
    def DomainInstanceId(self):
        r"""管理域实例ID，用于CAM管理域权限分配。若企业未进行管理域的划分，可直接传入根域"1"，此时表示针对当前企业的全部设备和账号进行接口CRUD，具体CRUD的影响范围限制于相应接口的入参。
        :rtype: str
        """
        return self._DomainInstanceId

    @DomainInstanceId.setter
    def DomainInstanceId(self, DomainInstanceId):
        self._DomainInstanceId = DomainInstanceId

    @property
    def TaskRequestId(self):
        r"""任务请求Id
        :rtype: str
        """
        return self._TaskRequestId

    @TaskRequestId.setter
    def TaskRequestId(self, TaskRequestId):
        self._TaskRequestId = TaskRequestId


    def _deserialize(self, params):
        self._DomainInstanceId = params.get("DomainInstanceId")
        self._TaskRequestId = params.get("TaskRequestId")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class DescribeDLPFileDetectTaskResultResponse(AbstractModel):
    r"""DescribeDLPFileDetectTaskResult返回参数结构体

    """

    def __init__(self):
        r"""
        :param _Data: 文件鉴定任务结果数据。详情查看具体数据结构
        :type Data: :class:`tencentcloud.ioa.v20220601.models.DescribeDLPFileDetectTaskResult`
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._Data = None
        self._RequestId = None

    @property
    def Data(self):
        r"""文件鉴定任务结果数据。详情查看具体数据结构
        :rtype: :class:`tencentcloud.ioa.v20220601.models.DescribeDLPFileDetectTaskResult`
        """
        return self._Data

    @Data.setter
    def Data(self, Data):
        self._Data = Data

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        if params.get("Data") is not None:
            self._Data = DescribeDLPFileDetectTaskResult()
            self._Data._deserialize(params.get("Data"))
        self._RequestId = params.get("RequestId")


class DescribeDeviceChildGroupsRequest(AbstractModel):
    r"""DescribeDeviceChildGroups请求参数结构体

    """

    def __init__(self):
        r"""
        :param _DomainInstanceId: 管理域实例ID，用于CAM管理域权限分配。若企业未进行管理域的划分，可直接传入根域"1"，此时表示针对当前企业的全部设备和账号进行接口CRUD，具体CRUD的影响范围限制于相应接口的入参。
        :type DomainInstanceId: str
        :param _Condition: 过滤条件参数（字段含义请参考接口返回值）
- Name, 类型String，支持操作：【like，ilike】，支持排序




分页参数
- PageNum 从1开始，小于等于0时使用默认参数
- PageSize 最大值5000，最好不超过100
        :type Condition: :class:`tencentcloud.ioa.v20220601.models.Condition`
        :param _ParentId: 父分组id，默认0：表示获取全网终端分组
        :type ParentId: int
        :param _OsType: 系统类型（0: win，1：linux，2: mac，4：android，5：ios，-1：全系统（SaaS一体化版本） ； 不传默认为0）(只支持32位)
        :type OsType: int
        """
        self._DomainInstanceId = None
        self._Condition = None
        self._ParentId = None
        self._OsType = None

    @property
    def DomainInstanceId(self):
        r"""管理域实例ID，用于CAM管理域权限分配。若企业未进行管理域的划分，可直接传入根域"1"，此时表示针对当前企业的全部设备和账号进行接口CRUD，具体CRUD的影响范围限制于相应接口的入参。
        :rtype: str
        """
        return self._DomainInstanceId

    @DomainInstanceId.setter
    def DomainInstanceId(self, DomainInstanceId):
        self._DomainInstanceId = DomainInstanceId

    @property
    def Condition(self):
        r"""过滤条件参数（字段含义请参考接口返回值）
- Name, 类型String，支持操作：【like，ilike】，支持排序




分页参数
- PageNum 从1开始，小于等于0时使用默认参数
- PageSize 最大值5000，最好不超过100
        :rtype: :class:`tencentcloud.ioa.v20220601.models.Condition`
        """
        return self._Condition

    @Condition.setter
    def Condition(self, Condition):
        self._Condition = Condition

    @property
    def ParentId(self):
        r"""父分组id，默认0：表示获取全网终端分组
        :rtype: int
        """
        return self._ParentId

    @ParentId.setter
    def ParentId(self, ParentId):
        self._ParentId = ParentId

    @property
    def OsType(self):
        r"""系统类型（0: win，1：linux，2: mac，4：android，5：ios，-1：全系统（SaaS一体化版本） ； 不传默认为0）(只支持32位)
        :rtype: int
        """
        return self._OsType

    @OsType.setter
    def OsType(self, OsType):
        self._OsType = OsType


    def _deserialize(self, params):
        self._DomainInstanceId = params.get("DomainInstanceId")
        if params.get("Condition") is not None:
            self._Condition = Condition()
            self._Condition._deserialize(params.get("Condition"))
        self._ParentId = params.get("ParentId")
        self._OsType = params.get("OsType")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class DescribeDeviceChildGroupsResponse(AbstractModel):
    r"""DescribeDeviceChildGroups返回参数结构体

    """

    def __init__(self):
        r"""
        :param _Data: 查询设备组子分组详情响应结构
        :type Data: :class:`tencentcloud.ioa.v20220601.models.DescribeDeviceChildGroupsRspData`
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._Data = None
        self._RequestId = None

    @property
    def Data(self):
        r"""查询设备组子分组详情响应结构
        :rtype: :class:`tencentcloud.ioa.v20220601.models.DescribeDeviceChildGroupsRspData`
        """
        return self._Data

    @Data.setter
    def Data(self, Data):
        self._Data = Data

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        if params.get("Data") is not None:
            self._Data = DescribeDeviceChildGroupsRspData()
            self._Data._deserialize(params.get("Data"))
        self._RequestId = params.get("RequestId")


class DescribeDeviceChildGroupsRspData(AbstractModel):
    r"""查询设备组子分组详情响应结构

    """

    def __init__(self):
        r"""
        :param _Items: 返回的数组列表
        :type Items: list of DeviceGroupDetail
        """
        self._Items = None

    @property
    def Items(self):
        r"""返回的数组列表
        :rtype: list of DeviceGroupDetail
        """
        return self._Items

    @Items.setter
    def Items(self, Items):
        self._Items = Items


    def _deserialize(self, params):
        if params.get("Items") is not None:
            self._Items = []
            for item in params.get("Items"):
                obj = DeviceGroupDetail()
                obj._deserialize(item)
                self._Items.append(obj)
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class DescribeDeviceDetailListData(AbstractModel):
    r"""终端详情响应对象集合

    """

    def __init__(self):
        r"""
        :param _UserName: 账号名
注意：此字段可能返回 null，表示取不到有效值。
        :type UserName: str
        :param _ComputerName: 计算机名
注意：此字段可能返回 null，表示取不到有效值。
        :type ComputerName: str
        :param _Name: 名称
注意：此字段可能返回 null，表示取不到有效值。
        :type Name: str
        :param _AccountGroupIdPath: 用户组IdPath
注意：此字段可能返回 null，表示取不到有效值。
        :type AccountGroupIdPath: str
        :param _AccountGroupId: 用户组id(只支持32位)
注意：此字段可能返回 null，表示取不到有效值。
        :type AccountGroupId: int
        :param _GroupNamePath: 终端组名path
注意：此字段可能返回 null，表示取不到有效值。
        :type GroupNamePath: str
        :param _Ip: Ip地址
注意：此字段可能返回 null，表示取不到有效值。
        :type Ip: str
        :param _AccountGroupName: 用户组名
注意：此字段可能返回 null，表示取不到有效值。
        :type AccountGroupName: str
        :param _GroupIdPath: 终端组IdPath
注意：此字段可能返回 null，表示取不到有效值。
        :type GroupIdPath: str
        :param _Mid: 唯一标识Mid
注意：此字段可能返回 null，表示取不到有效值。
        :type Mid: str
        :param _IoaUserName: IOA账号名
注意：此字段可能返回 null，表示取不到有效值。
        :type IoaUserName: str
        :param _GroupId: 所在分组Id(只支持32位)
注意：此字段可能返回 null，表示取不到有效值。
        :type GroupId: int
        :param _GroupName: 所在分组Name
注意：此字段可能返回 null，表示取不到有效值。
        :type GroupName: str
        :param _Mac: Mac地址
注意：此字段可能返回 null，表示取不到有效值。
        :type Mac: str
        :param _Version: 软件版本
注意：此字段可能返回 null，表示取不到有效值。
        :type Version: str
        :param _AccountGroupNamePath: 用户组名Path
注意：此字段可能返回 null，表示取不到有效值。
        :type AccountGroupNamePath: str
        :param _Id: 列表Id(只支持32位)
注意：此字段可能返回 null，表示取不到有效值。
        :type Id: int
        """
        self._UserName = None
        self._ComputerName = None
        self._Name = None
        self._AccountGroupIdPath = None
        self._AccountGroupId = None
        self._GroupNamePath = None
        self._Ip = None
        self._AccountGroupName = None
        self._GroupIdPath = None
        self._Mid = None
        self._IoaUserName = None
        self._GroupId = None
        self._GroupName = None
        self._Mac = None
        self._Version = None
        self._AccountGroupNamePath = None
        self._Id = None

    @property
    def UserName(self):
        r"""账号名
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._UserName

    @UserName.setter
    def UserName(self, UserName):
        self._UserName = UserName

    @property
    def ComputerName(self):
        r"""计算机名
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._ComputerName

    @ComputerName.setter
    def ComputerName(self, ComputerName):
        self._ComputerName = ComputerName

    @property
    def Name(self):
        r"""名称
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._Name

    @Name.setter
    def Name(self, Name):
        self._Name = Name

    @property
    def AccountGroupIdPath(self):
        r"""用户组IdPath
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._AccountGroupIdPath

    @AccountGroupIdPath.setter
    def AccountGroupIdPath(self, AccountGroupIdPath):
        self._AccountGroupIdPath = AccountGroupIdPath

    @property
    def AccountGroupId(self):
        r"""用户组id(只支持32位)
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: int
        """
        return self._AccountGroupId

    @AccountGroupId.setter
    def AccountGroupId(self, AccountGroupId):
        self._AccountGroupId = AccountGroupId

    @property
    def GroupNamePath(self):
        r"""终端组名path
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._GroupNamePath

    @GroupNamePath.setter
    def GroupNamePath(self, GroupNamePath):
        self._GroupNamePath = GroupNamePath

    @property
    def Ip(self):
        r"""Ip地址
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._Ip

    @Ip.setter
    def Ip(self, Ip):
        self._Ip = Ip

    @property
    def AccountGroupName(self):
        r"""用户组名
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._AccountGroupName

    @AccountGroupName.setter
    def AccountGroupName(self, AccountGroupName):
        self._AccountGroupName = AccountGroupName

    @property
    def GroupIdPath(self):
        r"""终端组IdPath
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._GroupIdPath

    @GroupIdPath.setter
    def GroupIdPath(self, GroupIdPath):
        self._GroupIdPath = GroupIdPath

    @property
    def Mid(self):
        r"""唯一标识Mid
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._Mid

    @Mid.setter
    def Mid(self, Mid):
        self._Mid = Mid

    @property
    def IoaUserName(self):
        r"""IOA账号名
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._IoaUserName

    @IoaUserName.setter
    def IoaUserName(self, IoaUserName):
        self._IoaUserName = IoaUserName

    @property
    def GroupId(self):
        r"""所在分组Id(只支持32位)
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: int
        """
        return self._GroupId

    @GroupId.setter
    def GroupId(self, GroupId):
        self._GroupId = GroupId

    @property
    def GroupName(self):
        r"""所在分组Name
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._GroupName

    @GroupName.setter
    def GroupName(self, GroupName):
        self._GroupName = GroupName

    @property
    def Mac(self):
        r"""Mac地址
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._Mac

    @Mac.setter
    def Mac(self, Mac):
        self._Mac = Mac

    @property
    def Version(self):
        r"""软件版本
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._Version

    @Version.setter
    def Version(self, Version):
        self._Version = Version

    @property
    def AccountGroupNamePath(self):
        r"""用户组名Path
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._AccountGroupNamePath

    @AccountGroupNamePath.setter
    def AccountGroupNamePath(self, AccountGroupNamePath):
        self._AccountGroupNamePath = AccountGroupNamePath

    @property
    def Id(self):
        r"""列表Id(只支持32位)
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: int
        """
        return self._Id

    @Id.setter
    def Id(self, Id):
        self._Id = Id


    def _deserialize(self, params):
        self._UserName = params.get("UserName")
        self._ComputerName = params.get("ComputerName")
        self._Name = params.get("Name")
        self._AccountGroupIdPath = params.get("AccountGroupIdPath")
        self._AccountGroupId = params.get("AccountGroupId")
        self._GroupNamePath = params.get("GroupNamePath")
        self._Ip = params.get("Ip")
        self._AccountGroupName = params.get("AccountGroupName")
        self._GroupIdPath = params.get("GroupIdPath")
        self._Mid = params.get("Mid")
        self._IoaUserName = params.get("IoaUserName")
        self._GroupId = params.get("GroupId")
        self._GroupName = params.get("GroupName")
        self._Mac = params.get("Mac")
        self._Version = params.get("Version")
        self._AccountGroupNamePath = params.get("AccountGroupNamePath")
        self._Id = params.get("Id")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class DescribeDeviceDetailListPageData(AbstractModel):
    r"""业务响应数据

    """

    def __init__(self):
        r"""
        :param _Items: 终端详情响应对象集合
注意：此字段可能返回 null，表示取不到有效值。
        :type Items: list of DescribeDeviceDetailListData
        :param _Page: 分页公共对象
注意：此字段可能返回 null，表示取不到有效值。
        :type Page: :class:`tencentcloud.ioa.v20220601.models.Paging`
        """
        self._Items = None
        self._Page = None

    @property
    def Items(self):
        r"""终端详情响应对象集合
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: list of DescribeDeviceDetailListData
        """
        return self._Items

    @Items.setter
    def Items(self, Items):
        self._Items = Items

    @property
    def Page(self):
        r"""分页公共对象
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: :class:`tencentcloud.ioa.v20220601.models.Paging`
        """
        return self._Page

    @Page.setter
    def Page(self, Page):
        self._Page = Page


    def _deserialize(self, params):
        if params.get("Items") is not None:
            self._Items = []
            for item in params.get("Items"):
                obj = DescribeDeviceDetailListData()
                obj._deserialize(item)
                self._Items.append(obj)
        if params.get("Page") is not None:
            self._Page = Paging()
            self._Page._deserialize(params.get("Page"))
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class DescribeDeviceDetailListRequest(AbstractModel):
    r"""DescribeDeviceDetailList请求参数结构体

    """

    def __init__(self):
        r"""
        :param _OsType: 系统类型(只支持32位)
        :type OsType: int
        :param _GroupId: 终端分组id(只支持32位)
        :type GroupId: int
        :param _Condition: 过滤条件、分页参数
<li>Name - String - 过滤支持：是 - 操作符:eq,like - 排序支持：是 。</li>
        :type Condition: :class:`tencentcloud.ioa.v20220601.models.Condition`
        """
        self._OsType = None
        self._GroupId = None
        self._Condition = None

    @property
    def OsType(self):
        r"""系统类型(只支持32位)
        :rtype: int
        """
        return self._OsType

    @OsType.setter
    def OsType(self, OsType):
        self._OsType = OsType

    @property
    def GroupId(self):
        r"""终端分组id(只支持32位)
        :rtype: int
        """
        return self._GroupId

    @GroupId.setter
    def GroupId(self, GroupId):
        self._GroupId = GroupId

    @property
    def Condition(self):
        r"""过滤条件、分页参数
<li>Name - String - 过滤支持：是 - 操作符:eq,like - 排序支持：是 。</li>
        :rtype: :class:`tencentcloud.ioa.v20220601.models.Condition`
        """
        return self._Condition

    @Condition.setter
    def Condition(self, Condition):
        self._Condition = Condition


    def _deserialize(self, params):
        self._OsType = params.get("OsType")
        self._GroupId = params.get("GroupId")
        if params.get("Condition") is not None:
            self._Condition = Condition()
            self._Condition._deserialize(params.get("Condition"))
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class DescribeDeviceDetailListResponse(AbstractModel):
    r"""DescribeDeviceDetailList返回参数结构体

    """

    def __init__(self):
        r"""
        :param _Data: 业务响应数据
注意：此字段可能返回 null，表示取不到有效值。
        :type Data: :class:`tencentcloud.ioa.v20220601.models.DescribeDeviceDetailListPageData`
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._Data = None
        self._RequestId = None

    @property
    def Data(self):
        r"""业务响应数据
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: :class:`tencentcloud.ioa.v20220601.models.DescribeDeviceDetailListPageData`
        """
        return self._Data

    @Data.setter
    def Data(self, Data):
        self._Data = Data

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        if params.get("Data") is not None:
            self._Data = DescribeDeviceDetailListPageData()
            self._Data._deserialize(params.get("Data"))
        self._RequestId = params.get("RequestId")


class DescribeDeviceHardwareInfoItem(AbstractModel):
    r"""终端硬件信息列表Item数据

    """

    def __init__(self):
        r"""
        :param _Id: <p>设备ID</p>
        :type Id: int
        :param _Mid: <p>设备唯一标识符</p>
        :type Mid: str
        :param _OsType: <p>OS平台 0 Windows 1 Linux 2 macOS 4 Android 5 iOS</p>
        :type OsType: int
        :param _Name: <p>终端名</p>
        :type Name: str
        :param _UserName: <p>终端用户名</p>
        :type UserName: str
        :param _Status: <p>授权状态（ 4未授权 5已授权）</p>
        :type Status: int
        :param _GroupId: <p>设备所属分组ID</p>
        :type GroupId: int
        :param _GroupName: <p>设备所属分组名</p>
        :type GroupName: str
        :param _GroupNamePath: <p>设备所属分组路径</p>
        :type GroupNamePath: str
        :param _AccountName: <p>最近登录账户的姓名</p>
        :type AccountName: str
        :param _Ip: <p>出口IP</p>
        :type Ip: str
        :param _MacAddr: <p>MAC地址</p>
        :type MacAddr: str
        :param _Cpu: <p>CPU品牌型号</p>
        :type Cpu: str
        :param _Memory: <p>内存信息</p>
        :type Memory: str
        :param _HardDiskSize: <p>硬盘信息</p>
        :type HardDiskSize: str
        :param _Monitor: <p>显示器品牌型号</p>
        :type Monitor: str
        :param _RemarkName: <p>终端备注名</p>
        :type RemarkName: str
        :param _BiosUuid: <p>BiosUUID（启动盘标识符）</p>
        :type BiosUuid: str
        """
        self._Id = None
        self._Mid = None
        self._OsType = None
        self._Name = None
        self._UserName = None
        self._Status = None
        self._GroupId = None
        self._GroupName = None
        self._GroupNamePath = None
        self._AccountName = None
        self._Ip = None
        self._MacAddr = None
        self._Cpu = None
        self._Memory = None
        self._HardDiskSize = None
        self._Monitor = None
        self._RemarkName = None
        self._BiosUuid = None

    @property
    def Id(self):
        r"""<p>设备ID</p>
        :rtype: int
        """
        return self._Id

    @Id.setter
    def Id(self, Id):
        self._Id = Id

    @property
    def Mid(self):
        r"""<p>设备唯一标识符</p>
        :rtype: str
        """
        return self._Mid

    @Mid.setter
    def Mid(self, Mid):
        self._Mid = Mid

    @property
    def OsType(self):
        r"""<p>OS平台 0 Windows 1 Linux 2 macOS 4 Android 5 iOS</p>
        :rtype: int
        """
        return self._OsType

    @OsType.setter
    def OsType(self, OsType):
        self._OsType = OsType

    @property
    def Name(self):
        r"""<p>终端名</p>
        :rtype: str
        """
        return self._Name

    @Name.setter
    def Name(self, Name):
        self._Name = Name

    @property
    def UserName(self):
        r"""<p>终端用户名</p>
        :rtype: str
        """
        return self._UserName

    @UserName.setter
    def UserName(self, UserName):
        self._UserName = UserName

    @property
    def Status(self):
        r"""<p>授权状态（ 4未授权 5已授权）</p>
        :rtype: int
        """
        return self._Status

    @Status.setter
    def Status(self, Status):
        self._Status = Status

    @property
    def GroupId(self):
        r"""<p>设备所属分组ID</p>
        :rtype: int
        """
        return self._GroupId

    @GroupId.setter
    def GroupId(self, GroupId):
        self._GroupId = GroupId

    @property
    def GroupName(self):
        r"""<p>设备所属分组名</p>
        :rtype: str
        """
        return self._GroupName

    @GroupName.setter
    def GroupName(self, GroupName):
        self._GroupName = GroupName

    @property
    def GroupNamePath(self):
        r"""<p>设备所属分组路径</p>
        :rtype: str
        """
        return self._GroupNamePath

    @GroupNamePath.setter
    def GroupNamePath(self, GroupNamePath):
        self._GroupNamePath = GroupNamePath

    @property
    def AccountName(self):
        r"""<p>最近登录账户的姓名</p>
        :rtype: str
        """
        return self._AccountName

    @AccountName.setter
    def AccountName(self, AccountName):
        self._AccountName = AccountName

    @property
    def Ip(self):
        r"""<p>出口IP</p>
        :rtype: str
        """
        return self._Ip

    @Ip.setter
    def Ip(self, Ip):
        self._Ip = Ip

    @property
    def MacAddr(self):
        r"""<p>MAC地址</p>
        :rtype: str
        """
        return self._MacAddr

    @MacAddr.setter
    def MacAddr(self, MacAddr):
        self._MacAddr = MacAddr

    @property
    def Cpu(self):
        r"""<p>CPU品牌型号</p>
        :rtype: str
        """
        return self._Cpu

    @Cpu.setter
    def Cpu(self, Cpu):
        self._Cpu = Cpu

    @property
    def Memory(self):
        r"""<p>内存信息</p>
        :rtype: str
        """
        return self._Memory

    @Memory.setter
    def Memory(self, Memory):
        self._Memory = Memory

    @property
    def HardDiskSize(self):
        r"""<p>硬盘信息</p>
        :rtype: str
        """
        return self._HardDiskSize

    @HardDiskSize.setter
    def HardDiskSize(self, HardDiskSize):
        self._HardDiskSize = HardDiskSize

    @property
    def Monitor(self):
        r"""<p>显示器品牌型号</p>
        :rtype: str
        """
        return self._Monitor

    @Monitor.setter
    def Monitor(self, Monitor):
        self._Monitor = Monitor

    @property
    def RemarkName(self):
        r"""<p>终端备注名</p>
        :rtype: str
        """
        return self._RemarkName

    @RemarkName.setter
    def RemarkName(self, RemarkName):
        self._RemarkName = RemarkName

    @property
    def BiosUuid(self):
        r"""<p>BiosUUID（启动盘标识符）</p>
        :rtype: str
        """
        return self._BiosUuid

    @BiosUuid.setter
    def BiosUuid(self, BiosUuid):
        self._BiosUuid = BiosUuid


    def _deserialize(self, params):
        self._Id = params.get("Id")
        self._Mid = params.get("Mid")
        self._OsType = params.get("OsType")
        self._Name = params.get("Name")
        self._UserName = params.get("UserName")
        self._Status = params.get("Status")
        self._GroupId = params.get("GroupId")
        self._GroupName = params.get("GroupName")
        self._GroupNamePath = params.get("GroupNamePath")
        self._AccountName = params.get("AccountName")
        self._Ip = params.get("Ip")
        self._MacAddr = params.get("MacAddr")
        self._Cpu = params.get("Cpu")
        self._Memory = params.get("Memory")
        self._HardDiskSize = params.get("HardDiskSize")
        self._Monitor = params.get("Monitor")
        self._RemarkName = params.get("RemarkName")
        self._BiosUuid = params.get("BiosUuid")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class DescribeDeviceHardwareInfoListRequest(AbstractModel):
    r"""DescribeDeviceHardwareInfoList请求参数结构体

    """

    def __init__(self):
        r"""
        :param _GroupId: <p>【必填】设备分组id（需要和OsType匹配），下面是私有化场景下默认id：id-名称-操作系统1    全网终端    Win2    未分组终端    Win30000000    服务器    Win40000101    全网终端    Linux40000102    未分组终端    Linux40000103    服务器    Linux40000201    全网终端    macOS40000202    未分组终端    macOS40000203    服务器    macOS40000401    全网终端    Android40000402    未分组终端    Android40000501    全网终端    iOS40000502    未分组终端    iOSSaaS需要调用分组接口DescribeDeviceChildGroups获取对应分组id</p>
        :type GroupId: int
        :param _OsType: <p>【必填】系统类型（0: win，1：linux，2: mac，4：android，5：ios，-1：全系统（SaaS一体化版本））(只支持32位)，需要和GroupId或者GroupIds匹配</p><p>枚举值：</p><ul><li>0： Windows</li><li>1： Linux</li><li>2： macOS</li><li>4： Android</li><li>5： iOS</li><li>-1： 全系统（SaaS一体化版本）</li></ul>
        :type OsType: int
        :param _DomainInstanceId: 管理域实例ID，用于CAM管理域权限分配。若企业未进行管理域的划分，可直接传入根域"1"，此时表示针对当前企业的全部设备和账号进行接口CRUD，具体CRUD的影响范围限制于相应接口的入参。
        :type DomainInstanceId: str
        :param _Condition: <p>过滤条件参数（字段含义请参考接口返回值）  - Name, 类型String，支持操作：【eq，like，ilike】，支持排序  - UserName, 类型String，支持操作：【eq，like，ilike】，支持排序  - IoaUserName，类型String，支持操作：【eq，like，ilike】，支持排序  - MacAddr, 类型String，支持操作：【eq，like，ilike】，支持排序  - Ip, 类型String，支持操作：【eq，like，ilike】，支持排序  - Mid, 类型String，支持操作：【eq，like，ilike】，支持排序  ，支持排序分页参数  - PageNum 从1开始，小于等于0时使用默认参数 - PageSize 最大值5000，最好不超过100</p>
        :type Condition: :class:`tencentcloud.ioa.v20220601.models.Condition`
        """
        self._GroupId = None
        self._OsType = None
        self._DomainInstanceId = None
        self._Condition = None

    @property
    def GroupId(self):
        r"""<p>【必填】设备分组id（需要和OsType匹配），下面是私有化场景下默认id：id-名称-操作系统1    全网终端    Win2    未分组终端    Win30000000    服务器    Win40000101    全网终端    Linux40000102    未分组终端    Linux40000103    服务器    Linux40000201    全网终端    macOS40000202    未分组终端    macOS40000203    服务器    macOS40000401    全网终端    Android40000402    未分组终端    Android40000501    全网终端    iOS40000502    未分组终端    iOSSaaS需要调用分组接口DescribeDeviceChildGroups获取对应分组id</p>
        :rtype: int
        """
        return self._GroupId

    @GroupId.setter
    def GroupId(self, GroupId):
        self._GroupId = GroupId

    @property
    def OsType(self):
        r"""<p>【必填】系统类型（0: win，1：linux，2: mac，4：android，5：ios，-1：全系统（SaaS一体化版本））(只支持32位)，需要和GroupId或者GroupIds匹配</p><p>枚举值：</p><ul><li>0： Windows</li><li>1： Linux</li><li>2： macOS</li><li>4： Android</li><li>5： iOS</li><li>-1： 全系统（SaaS一体化版本）</li></ul>
        :rtype: int
        """
        return self._OsType

    @OsType.setter
    def OsType(self, OsType):
        self._OsType = OsType

    @property
    def DomainInstanceId(self):
        r"""管理域实例ID，用于CAM管理域权限分配。若企业未进行管理域的划分，可直接传入根域"1"，此时表示针对当前企业的全部设备和账号进行接口CRUD，具体CRUD的影响范围限制于相应接口的入参。
        :rtype: str
        """
        return self._DomainInstanceId

    @DomainInstanceId.setter
    def DomainInstanceId(self, DomainInstanceId):
        self._DomainInstanceId = DomainInstanceId

    @property
    def Condition(self):
        r"""<p>过滤条件参数（字段含义请参考接口返回值）  - Name, 类型String，支持操作：【eq，like，ilike】，支持排序  - UserName, 类型String，支持操作：【eq，like，ilike】，支持排序  - IoaUserName，类型String，支持操作：【eq，like，ilike】，支持排序  - MacAddr, 类型String，支持操作：【eq，like，ilike】，支持排序  - Ip, 类型String，支持操作：【eq，like，ilike】，支持排序  - Mid, 类型String，支持操作：【eq，like，ilike】，支持排序  ，支持排序分页参数  - PageNum 从1开始，小于等于0时使用默认参数 - PageSize 最大值5000，最好不超过100</p>
        :rtype: :class:`tencentcloud.ioa.v20220601.models.Condition`
        """
        return self._Condition

    @Condition.setter
    def Condition(self, Condition):
        self._Condition = Condition


    def _deserialize(self, params):
        self._GroupId = params.get("GroupId")
        self._OsType = params.get("OsType")
        self._DomainInstanceId = params.get("DomainInstanceId")
        if params.get("Condition") is not None:
            self._Condition = Condition()
            self._Condition._deserialize(params.get("Condition"))
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class DescribeDeviceHardwareInfoListResponse(AbstractModel):
    r"""DescribeDeviceHardwareInfoList返回参数结构体

    """

    def __init__(self):
        r"""
        :param _Data: <p>分页的data数据</p>
        :type Data: :class:`tencentcloud.ioa.v20220601.models.DescribeDeviceHardwareInfoListRspData`
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._Data = None
        self._RequestId = None

    @property
    def Data(self):
        r"""<p>分页的data数据</p>
        :rtype: :class:`tencentcloud.ioa.v20220601.models.DescribeDeviceHardwareInfoListRspData`
        """
        return self._Data

    @Data.setter
    def Data(self, Data):
        self._Data = Data

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        if params.get("Data") is not None:
            self._Data = DescribeDeviceHardwareInfoListRspData()
            self._Data._deserialize(params.get("Data"))
        self._RequestId = params.get("RequestId")


class DescribeDeviceHardwareInfoListRspData(AbstractModel):
    r"""终端硬件信息列表响应详情

    """

    def __init__(self):
        r"""
        :param _Page: 分页数据
        :type Page: :class:`tencentcloud.ioa.v20220601.models.Paging`
        :param _Items: 终端硬件信息数据数组
        :type Items: list of DescribeDeviceHardwareInfoItem
        """
        self._Page = None
        self._Items = None

    @property
    def Page(self):
        r"""分页数据
        :rtype: :class:`tencentcloud.ioa.v20220601.models.Paging`
        """
        return self._Page

    @Page.setter
    def Page(self, Page):
        self._Page = Page

    @property
    def Items(self):
        r"""终端硬件信息数据数组
        :rtype: list of DescribeDeviceHardwareInfoItem
        """
        return self._Items

    @Items.setter
    def Items(self, Items):
        self._Items = Items


    def _deserialize(self, params):
        if params.get("Page") is not None:
            self._Page = Paging()
            self._Page._deserialize(params.get("Page"))
        if params.get("Items") is not None:
            self._Items = []
            for item in params.get("Items"):
                obj = DescribeDeviceHardwareInfoItem()
                obj._deserialize(item)
                self._Items.append(obj)
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class DescribeDeviceInfoRequest(AbstractModel):
    r"""DescribeDeviceInfo请求参数结构体

    """

    def __init__(self):
        r"""
        :param _DomainInstanceId: 管理域实例ID，用于CAM管理域权限分配。若企业未进行管理域的划分，可直接传入根域"1"，此时表示针对当前企业的全部设备和账号进行接口CRUD，具体CRUD的影响范围限制于相应接口的入参。
        :type DomainInstanceId: str
        :param _Mid: 终端id
        :type Mid: str
        :param _Type: 查询类型  process_list network_list service_list
        :type Type: str
        """
        self._DomainInstanceId = None
        self._Mid = None
        self._Type = None

    @property
    def DomainInstanceId(self):
        r"""管理域实例ID，用于CAM管理域权限分配。若企业未进行管理域的划分，可直接传入根域"1"，此时表示针对当前企业的全部设备和账号进行接口CRUD，具体CRUD的影响范围限制于相应接口的入参。
        :rtype: str
        """
        return self._DomainInstanceId

    @DomainInstanceId.setter
    def DomainInstanceId(self, DomainInstanceId):
        self._DomainInstanceId = DomainInstanceId

    @property
    def Mid(self):
        r"""终端id
        :rtype: str
        """
        return self._Mid

    @Mid.setter
    def Mid(self, Mid):
        self._Mid = Mid

    @property
    def Type(self):
        r"""查询类型  process_list network_list service_list
        :rtype: str
        """
        return self._Type

    @Type.setter
    def Type(self, Type):
        self._Type = Type


    def _deserialize(self, params):
        self._DomainInstanceId = params.get("DomainInstanceId")
        self._Mid = params.get("Mid")
        self._Type = params.get("Type")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class DescribeDeviceInfoResponse(AbstractModel):
    r"""DescribeDeviceInfo返回参数结构体

    """

    def __init__(self):
        r"""
        :param _Data: 业务响应数据
注意：此字段可能返回 null，表示取不到有效值。
        :type Data: :class:`tencentcloud.ioa.v20220601.models.DescribeDeviceInfoRspData`
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._Data = None
        self._RequestId = None

    @property
    def Data(self):
        r"""业务响应数据
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: :class:`tencentcloud.ioa.v20220601.models.DescribeDeviceInfoRspData`
        """
        return self._Data

    @Data.setter
    def Data(self, Data):
        self._Data = Data

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        if params.get("Data") is not None:
            self._Data = DescribeDeviceInfoRspData()
            self._Data._deserialize(params.get("Data"))
        self._RequestId = params.get("RequestId")


class DescribeDeviceInfoRspData(AbstractModel):
    r"""业务响应数据

    """

    def __init__(self):
        r"""
        :param _ProcessList: 分页的具体数据对象
注意：此字段可能返回 null，表示取不到有效值。
        :type ProcessList: list of DeviceProcessInfo
        :param _NetworkList: 分页的具体数据对象
注意：此字段可能返回 null，表示取不到有效值。
        :type NetworkList: list of DeviceNetworkInfo
        :param _ServiceList: 分页的具体数据对象
注意：此字段可能返回 null，表示取不到有效值。
        :type ServiceList: list of DeviceServiceInfo
        """
        self._ProcessList = None
        self._NetworkList = None
        self._ServiceList = None

    @property
    def ProcessList(self):
        r"""分页的具体数据对象
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: list of DeviceProcessInfo
        """
        return self._ProcessList

    @ProcessList.setter
    def ProcessList(self, ProcessList):
        self._ProcessList = ProcessList

    @property
    def NetworkList(self):
        r"""分页的具体数据对象
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: list of DeviceNetworkInfo
        """
        return self._NetworkList

    @NetworkList.setter
    def NetworkList(self, NetworkList):
        self._NetworkList = NetworkList

    @property
    def ServiceList(self):
        r"""分页的具体数据对象
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: list of DeviceServiceInfo
        """
        return self._ServiceList

    @ServiceList.setter
    def ServiceList(self, ServiceList):
        self._ServiceList = ServiceList


    def _deserialize(self, params):
        if params.get("ProcessList") is not None:
            self._ProcessList = []
            for item in params.get("ProcessList"):
                obj = DeviceProcessInfo()
                obj._deserialize(item)
                self._ProcessList.append(obj)
        if params.get("NetworkList") is not None:
            self._NetworkList = []
            for item in params.get("NetworkList"):
                obj = DeviceNetworkInfo()
                obj._deserialize(item)
                self._NetworkList.append(obj)
        if params.get("ServiceList") is not None:
            self._ServiceList = []
            for item in params.get("ServiceList"):
                obj = DeviceServiceInfo()
                obj._deserialize(item)
                self._ServiceList.append(obj)
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class DescribeDeviceVirtualGroupsPageRsp(AbstractModel):
    r"""查询返回终端自定义分组的Data数据

    """

    def __init__(self):
        r"""
        :param _Page: 分页公共对象
        :type Page: :class:`tencentcloud.ioa.v20220601.models.Paging`
        :param _Items: 终端自定义分组列表数据
        :type Items: list of DeviceVirtualDeviceGroupsDetail
        """
        self._Page = None
        self._Items = None

    @property
    def Page(self):
        r"""分页公共对象
        :rtype: :class:`tencentcloud.ioa.v20220601.models.Paging`
        """
        return self._Page

    @Page.setter
    def Page(self, Page):
        self._Page = Page

    @property
    def Items(self):
        r"""终端自定义分组列表数据
        :rtype: list of DeviceVirtualDeviceGroupsDetail
        """
        return self._Items

    @Items.setter
    def Items(self, Items):
        self._Items = Items


    def _deserialize(self, params):
        if params.get("Page") is not None:
            self._Page = Paging()
            self._Page._deserialize(params.get("Page"))
        if params.get("Items") is not None:
            self._Items = []
            for item in params.get("Items"):
                obj = DeviceVirtualDeviceGroupsDetail()
                obj._deserialize(item)
                self._Items.append(obj)
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class DescribeDeviceVirtualGroupsRequest(AbstractModel):
    r"""DescribeDeviceVirtualGroups请求参数结构体

    """

    def __init__(self):
        r"""
        :param _DomainInstanceId: 管理域实例ID，用于CAM管理域权限分配。若企业未进行管理域的划分，可直接传入根域"1"，此时表示针对当前企业的全部设备和账号进行接口CRUD，具体CRUD的影响范围限制于相应接口的入参。
        :type DomainInstanceId: str
        :param _Condition: 滤条件、分页参数 <li>Name - String - 是否必填：否 - 操作符: like  - 排序支持：否- 按终端自定义分组过滤。</li> <li>DeviceVirtualGroupName - String - 是否必填：否 - 操作符: like  - 排序支持：否- 按终端自定义分组过滤。</li>
        :type Condition: :class:`tencentcloud.ioa.v20220601.models.Condition`
        :param _OsType: 系统类型（0: win，1：linux，2: mac，4：android，5：ios，-1：全系统（SaaS一体化版本） ； 不传默认为0）(只支持32位)
        :type OsType: int
        :param _VirtualGroupIds: 非必填，自定义分组ids
        :type VirtualGroupIds: list of int
        """
        self._DomainInstanceId = None
        self._Condition = None
        self._OsType = None
        self._VirtualGroupIds = None

    @property
    def DomainInstanceId(self):
        r"""管理域实例ID，用于CAM管理域权限分配。若企业未进行管理域的划分，可直接传入根域"1"，此时表示针对当前企业的全部设备和账号进行接口CRUD，具体CRUD的影响范围限制于相应接口的入参。
        :rtype: str
        """
        return self._DomainInstanceId

    @DomainInstanceId.setter
    def DomainInstanceId(self, DomainInstanceId):
        self._DomainInstanceId = DomainInstanceId

    @property
    def Condition(self):
        r"""滤条件、分页参数 <li>Name - String - 是否必填：否 - 操作符: like  - 排序支持：否- 按终端自定义分组过滤。</li> <li>DeviceVirtualGroupName - String - 是否必填：否 - 操作符: like  - 排序支持：否- 按终端自定义分组过滤。</li>
        :rtype: :class:`tencentcloud.ioa.v20220601.models.Condition`
        """
        return self._Condition

    @Condition.setter
    def Condition(self, Condition):
        self._Condition = Condition

    @property
    def OsType(self):
        r"""系统类型（0: win，1：linux，2: mac，4：android，5：ios，-1：全系统（SaaS一体化版本） ； 不传默认为0）(只支持32位)
        :rtype: int
        """
        return self._OsType

    @OsType.setter
    def OsType(self, OsType):
        self._OsType = OsType

    @property
    def VirtualGroupIds(self):
        r"""非必填，自定义分组ids
        :rtype: list of int
        """
        return self._VirtualGroupIds

    @VirtualGroupIds.setter
    def VirtualGroupIds(self, VirtualGroupIds):
        self._VirtualGroupIds = VirtualGroupIds


    def _deserialize(self, params):
        self._DomainInstanceId = params.get("DomainInstanceId")
        if params.get("Condition") is not None:
            self._Condition = Condition()
            self._Condition._deserialize(params.get("Condition"))
        self._OsType = params.get("OsType")
        self._VirtualGroupIds = params.get("VirtualGroupIds")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class DescribeDeviceVirtualGroupsResponse(AbstractModel):
    r"""DescribeDeviceVirtualGroups返回参数结构体

    """

    def __init__(self):
        r"""
        :param _Data: 查询终端自定义分组的Data数据
        :type Data: :class:`tencentcloud.ioa.v20220601.models.DescribeDeviceVirtualGroupsPageRsp`
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._Data = None
        self._RequestId = None

    @property
    def Data(self):
        r"""查询终端自定义分组的Data数据
        :rtype: :class:`tencentcloud.ioa.v20220601.models.DescribeDeviceVirtualGroupsPageRsp`
        """
        return self._Data

    @Data.setter
    def Data(self, Data):
        self._Data = Data

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        if params.get("Data") is not None:
            self._Data = DescribeDeviceVirtualGroupsPageRsp()
            self._Data._deserialize(params.get("Data"))
        self._RequestId = params.get("RequestId")


class DescribeDevicesPageRsp(AbstractModel):
    r"""分页的data数据

    """

    def __init__(self):
        r"""
        :param _Paging: 数据分页信息
        :type Paging: :class:`tencentcloud.ioa.v20220601.models.Paging`
        :param _Items: 业务响应数据
        :type Items: list of DeviceDetail
        """
        self._Paging = None
        self._Items = None

    @property
    def Paging(self):
        r"""数据分页信息
        :rtype: :class:`tencentcloud.ioa.v20220601.models.Paging`
        """
        return self._Paging

    @Paging.setter
    def Paging(self, Paging):
        self._Paging = Paging

    @property
    def Items(self):
        r"""业务响应数据
        :rtype: list of DeviceDetail
        """
        return self._Items

    @Items.setter
    def Items(self, Items):
        self._Items = Items


    def _deserialize(self, params):
        if params.get("Paging") is not None:
            self._Paging = Paging()
            self._Paging._deserialize(params.get("Paging"))
        if params.get("Items") is not None:
            self._Items = []
            for item in params.get("Items"):
                obj = DeviceDetail()
                obj._deserialize(item)
                self._Items.append(obj)
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class DescribeDevicesRequest(AbstractModel):
    r"""DescribeDevices请求参数结构体

    """

    def __init__(self):
        r"""
        :param _DomainInstanceId: 管理域实例ID，用于CAM管理域权限分配。若企业未进行管理域的划分，可直接传入根域"1"，此时表示针对当前企业的全部设备和账号进行接口CRUD，具体CRUD的影响范围限制于相应接口的入参。
        :type DomainInstanceId: str
        :param _Condition: <p>过滤条件参数（字段含义请参考接口返回值）</p><ul><li>Mid, 类型String，支持操作：【eq，like，ilike】，支持排序</li><li>Name, 类型String，支持操作：【eq，like，ilike】，支持排序</li><li>Itime, 类型String，支持操作：【eq，like，ilike】，支持排序</li><li>UserName, 类型String，支持操作：【eq，like，ilike】，支持排序</li><li>MacAddr, 类型String，支持操作：【eq，like，ilike】，支持排序</li><li>UserId, 类型String，支持操作：【eq，like，ilike】，支持排序</li><li>Ip, 类型String，支持操作：【eq，like，ilike】，支持排序</li><li>Tags，类型String，支持操作：【eq，like，ilike】，支持排序</li><li>LocalIpList，类型String，支持操作：【eq，like，ilike】，支持排序</li><li>SerialNum，类型String，支持操作：【eq，like，ilike】，支持排序</li><li>Version，类型String，支持操作：【eq，like，ilike】，支持排序</li><li>StrVersion，类型String，支持操作：【eq，like，ilike】，支持排序</li><li>RtpStatus，类型String，支持操作：【eq，like，ilike】，<strong>不支持排序</strong></li><li>HostName，类型String，支持操作：【eq，like，ilike】，支持排序</li><li>IoaUserName，类型String，支持操作：【eq，like，ilike】，支持排序</li><li>GroupName，类型String，支持操作：【eq，like，ilike】，支持排序</li><li>CriticalVulListCount，<strong>类型Int</strong>，支持操作：【eq】，<strong>不支持排序</strong></li><li>RiskCount，<strong>类型Int</strong>，支持操作：【eq】，<strong>不支持排序</strong></li><li>VulVersion，类型String，支持操作：【eq，like，ilike】，<strong>不支持排序</strong></li><li>Virusver，类型String，支持操作：【eq，like，ilike】，<strong>不支持排序</strong></li><li>SysRepver，类型String，支持操作：【eq，like，ilike】，<strong>不支持排序</strong></li><li>BaseBoardSn，类型String，支持操作：【eq，like，ilike】，支持排序</li><li>Os，类型String，支持操作：【eq，like，ilike】，支持排序</li><li>ConnActiveTime，类型String，支持操作：【eq，like，ilike】，<strong>不支持排序</strong></li><li>FirewallStatus，<strong>类型Int</strong>，支持操作：【eq】，<strong>不支持排序</strong></li><li>DomainName，类型String，支持操作：【eq，like，ilike】，支持排序</li><li>SysRepVersion，类型String，支持操作：【eq，like，ilike】，支持排序</li><li>VirusVer，类型String，支持操作：【eq，like，ilike】，支持排序</li><li>Cpu，类型String，支持操作：【eq，like，ilike】，支持排序</li><li>Memory，类型String，支持操作：【eq，like，ilike】，支持排序</li><li>HardDiskSize，类型String，支持操作：【eq，like，ilike】，支持排序</li><li>AccountName，类型String，支持操作：【like.ilike】，支持排序</li><li>AccountGroupName，类型String，支持操作：【like.ilike】，支持排序</li></ul><p>分页参数</p><ul><li>PageNum 从1开始，小于等于0时使用默认参数</li><li>PageSize 最大值5000，最好不超过100</li></ul>
        :type Condition: :class:`tencentcloud.ioa.v20220601.models.Condition`
        :param _GroupId: <p>【和GroupIds必须有一个填写】设备分组id（需要和OsType匹配），下面是私有化场景下默认id：<br>id-名称-操作系统<br>1    全网终端    Win<br>2    未分组终端    Win<br>30000000    服务器    Win<br>40000101    全网终端    Linux<br>40000102    未分组终端    Linux<br>40000103    服务器    Linux<br>40000201    全网终端    macOS<br>40000202    未分组终端    macOS<br>40000203    服务器    macOS<br>40000401    全网终端    Android<br>40000402    未分组终端    Android<br>40000501    全网终端    iOS<br>40000502    未分组终端    iOS</p><p>SaaS需要调用分组接口DescribeDeviceChildGroups获取对应分组id</p>
        :type GroupId: int
        :param _OsType: <p>系统类型（0: win，1：linux，2: mac，4：android，5：ios，-1：全系统（SaaS一体化版本） ； 不传默认为0）(只支持32位)，需要和GroupId或者GroupIds匹配</p>
        :type OsType: int
        :param _OnlineStatus: <p>在线状态 （2表示在线，0或者1表示离线）</p>
        :type OnlineStatus: int
        :param _Filters: <p>过滤条件--兼容旧接口,参数同Condition</p>
        :type Filters: list of Filter
        :param _Sort: <p>排序字段--兼容旧接口,参数同Condition</p>
        :type Sort: :class:`tencentcloud.ioa.v20220601.models.Sort`
        :param _PageNum: <p>获取第几页--兼容旧接口,参数同Condition</p>
        :type PageNum: int
        :param _PageSize: <p>每页获取数--兼容旧接口,参数同Condition</p>
        :type PageSize: int
        :param _Status: <p>授权状态： 4基础授权 5高级授权</p>
        :type Status: int
        :param _GroupIds: <p>【和GroupId必须有一个填写】设备分组id列表（需要和OsType匹配）</p>
        :type GroupIds: list of int
        """
        self._DomainInstanceId = None
        self._Condition = None
        self._GroupId = None
        self._OsType = None
        self._OnlineStatus = None
        self._Filters = None
        self._Sort = None
        self._PageNum = None
        self._PageSize = None
        self._Status = None
        self._GroupIds = None

    @property
    def DomainInstanceId(self):
        r"""管理域实例ID，用于CAM管理域权限分配。若企业未进行管理域的划分，可直接传入根域"1"，此时表示针对当前企业的全部设备和账号进行接口CRUD，具体CRUD的影响范围限制于相应接口的入参。
        :rtype: str
        """
        return self._DomainInstanceId

    @DomainInstanceId.setter
    def DomainInstanceId(self, DomainInstanceId):
        self._DomainInstanceId = DomainInstanceId

    @property
    def Condition(self):
        r"""<p>过滤条件参数（字段含义请参考接口返回值）</p><ul><li>Mid, 类型String，支持操作：【eq，like，ilike】，支持排序</li><li>Name, 类型String，支持操作：【eq，like，ilike】，支持排序</li><li>Itime, 类型String，支持操作：【eq，like，ilike】，支持排序</li><li>UserName, 类型String，支持操作：【eq，like，ilike】，支持排序</li><li>MacAddr, 类型String，支持操作：【eq，like，ilike】，支持排序</li><li>UserId, 类型String，支持操作：【eq，like，ilike】，支持排序</li><li>Ip, 类型String，支持操作：【eq，like，ilike】，支持排序</li><li>Tags，类型String，支持操作：【eq，like，ilike】，支持排序</li><li>LocalIpList，类型String，支持操作：【eq，like，ilike】，支持排序</li><li>SerialNum，类型String，支持操作：【eq，like，ilike】，支持排序</li><li>Version，类型String，支持操作：【eq，like，ilike】，支持排序</li><li>StrVersion，类型String，支持操作：【eq，like，ilike】，支持排序</li><li>RtpStatus，类型String，支持操作：【eq，like，ilike】，<strong>不支持排序</strong></li><li>HostName，类型String，支持操作：【eq，like，ilike】，支持排序</li><li>IoaUserName，类型String，支持操作：【eq，like，ilike】，支持排序</li><li>GroupName，类型String，支持操作：【eq，like，ilike】，支持排序</li><li>CriticalVulListCount，<strong>类型Int</strong>，支持操作：【eq】，<strong>不支持排序</strong></li><li>RiskCount，<strong>类型Int</strong>，支持操作：【eq】，<strong>不支持排序</strong></li><li>VulVersion，类型String，支持操作：【eq，like，ilike】，<strong>不支持排序</strong></li><li>Virusver，类型String，支持操作：【eq，like，ilike】，<strong>不支持排序</strong></li><li>SysRepver，类型String，支持操作：【eq，like，ilike】，<strong>不支持排序</strong></li><li>BaseBoardSn，类型String，支持操作：【eq，like，ilike】，支持排序</li><li>Os，类型String，支持操作：【eq，like，ilike】，支持排序</li><li>ConnActiveTime，类型String，支持操作：【eq，like，ilike】，<strong>不支持排序</strong></li><li>FirewallStatus，<strong>类型Int</strong>，支持操作：【eq】，<strong>不支持排序</strong></li><li>DomainName，类型String，支持操作：【eq，like，ilike】，支持排序</li><li>SysRepVersion，类型String，支持操作：【eq，like，ilike】，支持排序</li><li>VirusVer，类型String，支持操作：【eq，like，ilike】，支持排序</li><li>Cpu，类型String，支持操作：【eq，like，ilike】，支持排序</li><li>Memory，类型String，支持操作：【eq，like，ilike】，支持排序</li><li>HardDiskSize，类型String，支持操作：【eq，like，ilike】，支持排序</li><li>AccountName，类型String，支持操作：【like.ilike】，支持排序</li><li>AccountGroupName，类型String，支持操作：【like.ilike】，支持排序</li></ul><p>分页参数</p><ul><li>PageNum 从1开始，小于等于0时使用默认参数</li><li>PageSize 最大值5000，最好不超过100</li></ul>
        :rtype: :class:`tencentcloud.ioa.v20220601.models.Condition`
        """
        return self._Condition

    @Condition.setter
    def Condition(self, Condition):
        self._Condition = Condition

    @property
    def GroupId(self):
        r"""<p>【和GroupIds必须有一个填写】设备分组id（需要和OsType匹配），下面是私有化场景下默认id：<br>id-名称-操作系统<br>1    全网终端    Win<br>2    未分组终端    Win<br>30000000    服务器    Win<br>40000101    全网终端    Linux<br>40000102    未分组终端    Linux<br>40000103    服务器    Linux<br>40000201    全网终端    macOS<br>40000202    未分组终端    macOS<br>40000203    服务器    macOS<br>40000401    全网终端    Android<br>40000402    未分组终端    Android<br>40000501    全网终端    iOS<br>40000502    未分组终端    iOS</p><p>SaaS需要调用分组接口DescribeDeviceChildGroups获取对应分组id</p>
        :rtype: int
        """
        return self._GroupId

    @GroupId.setter
    def GroupId(self, GroupId):
        self._GroupId = GroupId

    @property
    def OsType(self):
        r"""<p>系统类型（0: win，1：linux，2: mac，4：android，5：ios，-1：全系统（SaaS一体化版本） ； 不传默认为0）(只支持32位)，需要和GroupId或者GroupIds匹配</p>
        :rtype: int
        """
        return self._OsType

    @OsType.setter
    def OsType(self, OsType):
        self._OsType = OsType

    @property
    def OnlineStatus(self):
        r"""<p>在线状态 （2表示在线，0或者1表示离线）</p>
        :rtype: int
        """
        return self._OnlineStatus

    @OnlineStatus.setter
    def OnlineStatus(self, OnlineStatus):
        self._OnlineStatus = OnlineStatus

    @property
    def Filters(self):
        r"""<p>过滤条件--兼容旧接口,参数同Condition</p>
        :rtype: list of Filter
        """
        return self._Filters

    @Filters.setter
    def Filters(self, Filters):
        self._Filters = Filters

    @property
    def Sort(self):
        r"""<p>排序字段--兼容旧接口,参数同Condition</p>
        :rtype: :class:`tencentcloud.ioa.v20220601.models.Sort`
        """
        return self._Sort

    @Sort.setter
    def Sort(self, Sort):
        self._Sort = Sort

    @property
    def PageNum(self):
        r"""<p>获取第几页--兼容旧接口,参数同Condition</p>
        :rtype: int
        """
        return self._PageNum

    @PageNum.setter
    def PageNum(self, PageNum):
        self._PageNum = PageNum

    @property
    def PageSize(self):
        r"""<p>每页获取数--兼容旧接口,参数同Condition</p>
        :rtype: int
        """
        return self._PageSize

    @PageSize.setter
    def PageSize(self, PageSize):
        self._PageSize = PageSize

    @property
    def Status(self):
        r"""<p>授权状态： 4基础授权 5高级授权</p>
        :rtype: int
        """
        return self._Status

    @Status.setter
    def Status(self, Status):
        self._Status = Status

    @property
    def GroupIds(self):
        r"""<p>【和GroupId必须有一个填写】设备分组id列表（需要和OsType匹配）</p>
        :rtype: list of int
        """
        return self._GroupIds

    @GroupIds.setter
    def GroupIds(self, GroupIds):
        self._GroupIds = GroupIds


    def _deserialize(self, params):
        self._DomainInstanceId = params.get("DomainInstanceId")
        if params.get("Condition") is not None:
            self._Condition = Condition()
            self._Condition._deserialize(params.get("Condition"))
        self._GroupId = params.get("GroupId")
        self._OsType = params.get("OsType")
        self._OnlineStatus = params.get("OnlineStatus")
        if params.get("Filters") is not None:
            self._Filters = []
            for item in params.get("Filters"):
                obj = Filter()
                obj._deserialize(item)
                self._Filters.append(obj)
        if params.get("Sort") is not None:
            self._Sort = Sort()
            self._Sort._deserialize(params.get("Sort"))
        self._PageNum = params.get("PageNum")
        self._PageSize = params.get("PageSize")
        self._Status = params.get("Status")
        self._GroupIds = params.get("GroupIds")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class DescribeDevicesResponse(AbstractModel):
    r"""DescribeDevices返回参数结构体

    """

    def __init__(self):
        r"""
        :param _Data: <p>分页的data数据</p>
        :type Data: :class:`tencentcloud.ioa.v20220601.models.DescribeDevicesPageRsp`
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._Data = None
        self._RequestId = None

    @property
    def Data(self):
        r"""<p>分页的data数据</p>
        :rtype: :class:`tencentcloud.ioa.v20220601.models.DescribeDevicesPageRsp`
        """
        return self._Data

    @Data.setter
    def Data(self, Data):
        self._Data = Data

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        if params.get("Data") is not None:
            self._Data = DescribeDevicesPageRsp()
            self._Data._deserialize(params.get("Data"))
        self._RequestId = params.get("RequestId")


class DescribeDirectAccountGroupResourcesRequest(AbstractModel):
    r"""DescribeDirectAccountGroupResources请求参数结构体

    """

    def __init__(self):
        r"""
        :param _AccountGroupId: 账户组Id(只支持32位)
        :type AccountGroupId: int
        """
        self._AccountGroupId = None

    @property
    def AccountGroupId(self):
        r"""账户组Id(只支持32位)
        :rtype: int
        """
        return self._AccountGroupId

    @AccountGroupId.setter
    def AccountGroupId(self, AccountGroupId):
        self._AccountGroupId = AccountGroupId


    def _deserialize(self, params):
        self._AccountGroupId = params.get("AccountGroupId")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class DescribeDirectAccountGroupResourcesResponse(AbstractModel):
    r"""DescribeDirectAccountGroupResources返回参数结构体

    """

    def __init__(self):
        r"""
        :param _Data: 查询的数据集合
注意：此字段可能返回 null，表示取不到有效值。
        :type Data: :class:`tencentcloud.ioa.v20220601.models.DescribeAccountResourcesData`
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._Data = None
        self._RequestId = None

    @property
    def Data(self):
        r"""查询的数据集合
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: :class:`tencentcloud.ioa.v20220601.models.DescribeAccountResourcesData`
        """
        return self._Data

    @Data.setter
    def Data(self, Data):
        self._Data = Data

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        if params.get("Data") is not None:
            self._Data = DescribeAccountResourcesData()
            self._Data._deserialize(params.get("Data"))
        self._RequestId = params.get("RequestId")


class DescribeLocalAccountAccountGroupsData(AbstractModel):
    r"""所属组

    """

    def __init__(self):
        r"""
        :param _AccountGroupId: 组Id(只支持32位)
        :type AccountGroupId: int
        """
        self._AccountGroupId = None

    @property
    def AccountGroupId(self):
        r"""组Id(只支持32位)
        :rtype: int
        """
        return self._AccountGroupId

    @AccountGroupId.setter
    def AccountGroupId(self, AccountGroupId):
        self._AccountGroupId = AccountGroupId


    def _deserialize(self, params):
        self._AccountGroupId = params.get("AccountGroupId")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class DescribeLocalAccountsData(AbstractModel):
    r"""获取账号列表响应的单个对象

    """

    def __init__(self):
        r"""
        :param _Id: uid，数据库中唯一
        :type Id: int
        :param _UserId: 账号，登录账号
        :type UserId: str
        :param _UserName: 用户名
        :type UserName: str
        :param _AccountId: 账号id，同Id字段
        :type AccountId: int
        :param _GroupId: 账号所在的分组id
        :type GroupId: int
        :param _GroupName: 账号所在的分组名称
        :type GroupName: str
        :param _NamePath: 账号所在的分组名称路径，用英文.分割
        :type NamePath: str
        :param _Source: 账号来源,0表示本地账号(只支持32位)
        :type Source: int
        :param _Status: 账号状态,0禁用，1启用(只支持32位)
        :type Status: int
        :param _Itime: 账号的创建时间
        :type Itime: str
        :param _Utime: 账号的最后更新时间
        :type Utime: str
        :param _ExtraInfo: 账号的扩展信息，包含邮箱、手机号、身份证、职位等信息
        :type ExtraInfo: str
        :param _RiskLevel: 用户风险等级，枚举：none, low, middle, high
        :type RiskLevel: str
        :param _AccountGroups: 所属组
        :type AccountGroups: list of DescribeLocalAccountAccountGroupsData
        :param _MobileBindNum: 绑定手机端设备数
        :type MobileBindNum: int
        :param _PcBindNum: 绑定Pc端设备数
        :type PcBindNum: int
        :param _OnlineStatus: 账号在线状态 1：在线 2：离线
        :type OnlineStatus: int
        :param _ActiveStatus: 账号活跃状态 1：活跃 2：非活跃
        :type ActiveStatus: int
        :param _LoginTime: 账号登录时间
        :type LoginTime: str
        :param _LogoutTime: 账号登出时间
        :type LogoutTime: str
        """
        self._Id = None
        self._UserId = None
        self._UserName = None
        self._AccountId = None
        self._GroupId = None
        self._GroupName = None
        self._NamePath = None
        self._Source = None
        self._Status = None
        self._Itime = None
        self._Utime = None
        self._ExtraInfo = None
        self._RiskLevel = None
        self._AccountGroups = None
        self._MobileBindNum = None
        self._PcBindNum = None
        self._OnlineStatus = None
        self._ActiveStatus = None
        self._LoginTime = None
        self._LogoutTime = None

    @property
    def Id(self):
        r"""uid，数据库中唯一
        :rtype: int
        """
        return self._Id

    @Id.setter
    def Id(self, Id):
        self._Id = Id

    @property
    def UserId(self):
        r"""账号，登录账号
        :rtype: str
        """
        return self._UserId

    @UserId.setter
    def UserId(self, UserId):
        self._UserId = UserId

    @property
    def UserName(self):
        r"""用户名
        :rtype: str
        """
        return self._UserName

    @UserName.setter
    def UserName(self, UserName):
        self._UserName = UserName

    @property
    def AccountId(self):
        r"""账号id，同Id字段
        :rtype: int
        """
        return self._AccountId

    @AccountId.setter
    def AccountId(self, AccountId):
        self._AccountId = AccountId

    @property
    def GroupId(self):
        r"""账号所在的分组id
        :rtype: int
        """
        return self._GroupId

    @GroupId.setter
    def GroupId(self, GroupId):
        self._GroupId = GroupId

    @property
    def GroupName(self):
        r"""账号所在的分组名称
        :rtype: str
        """
        return self._GroupName

    @GroupName.setter
    def GroupName(self, GroupName):
        self._GroupName = GroupName

    @property
    def NamePath(self):
        r"""账号所在的分组名称路径，用英文.分割
        :rtype: str
        """
        return self._NamePath

    @NamePath.setter
    def NamePath(self, NamePath):
        self._NamePath = NamePath

    @property
    def Source(self):
        r"""账号来源,0表示本地账号(只支持32位)
        :rtype: int
        """
        return self._Source

    @Source.setter
    def Source(self, Source):
        self._Source = Source

    @property
    def Status(self):
        r"""账号状态,0禁用，1启用(只支持32位)
        :rtype: int
        """
        return self._Status

    @Status.setter
    def Status(self, Status):
        self._Status = Status

    @property
    def Itime(self):
        r"""账号的创建时间
        :rtype: str
        """
        return self._Itime

    @Itime.setter
    def Itime(self, Itime):
        self._Itime = Itime

    @property
    def Utime(self):
        r"""账号的最后更新时间
        :rtype: str
        """
        return self._Utime

    @Utime.setter
    def Utime(self, Utime):
        self._Utime = Utime

    @property
    def ExtraInfo(self):
        r"""账号的扩展信息，包含邮箱、手机号、身份证、职位等信息
        :rtype: str
        """
        return self._ExtraInfo

    @ExtraInfo.setter
    def ExtraInfo(self, ExtraInfo):
        self._ExtraInfo = ExtraInfo

    @property
    def RiskLevel(self):
        r"""用户风险等级，枚举：none, low, middle, high
        :rtype: str
        """
        return self._RiskLevel

    @RiskLevel.setter
    def RiskLevel(self, RiskLevel):
        self._RiskLevel = RiskLevel

    @property
    def AccountGroups(self):
        r"""所属组
        :rtype: list of DescribeLocalAccountAccountGroupsData
        """
        return self._AccountGroups

    @AccountGroups.setter
    def AccountGroups(self, AccountGroups):
        self._AccountGroups = AccountGroups

    @property
    def MobileBindNum(self):
        r"""绑定手机端设备数
        :rtype: int
        """
        return self._MobileBindNum

    @MobileBindNum.setter
    def MobileBindNum(self, MobileBindNum):
        self._MobileBindNum = MobileBindNum

    @property
    def PcBindNum(self):
        r"""绑定Pc端设备数
        :rtype: int
        """
        return self._PcBindNum

    @PcBindNum.setter
    def PcBindNum(self, PcBindNum):
        self._PcBindNum = PcBindNum

    @property
    def OnlineStatus(self):
        r"""账号在线状态 1：在线 2：离线
        :rtype: int
        """
        return self._OnlineStatus

    @OnlineStatus.setter
    def OnlineStatus(self, OnlineStatus):
        self._OnlineStatus = OnlineStatus

    @property
    def ActiveStatus(self):
        r"""账号活跃状态 1：活跃 2：非活跃
        :rtype: int
        """
        return self._ActiveStatus

    @ActiveStatus.setter
    def ActiveStatus(self, ActiveStatus):
        self._ActiveStatus = ActiveStatus

    @property
    def LoginTime(self):
        r"""账号登录时间
        :rtype: str
        """
        return self._LoginTime

    @LoginTime.setter
    def LoginTime(self, LoginTime):
        self._LoginTime = LoginTime

    @property
    def LogoutTime(self):
        r"""账号登出时间
        :rtype: str
        """
        return self._LogoutTime

    @LogoutTime.setter
    def LogoutTime(self, LogoutTime):
        self._LogoutTime = LogoutTime


    def _deserialize(self, params):
        self._Id = params.get("Id")
        self._UserId = params.get("UserId")
        self._UserName = params.get("UserName")
        self._AccountId = params.get("AccountId")
        self._GroupId = params.get("GroupId")
        self._GroupName = params.get("GroupName")
        self._NamePath = params.get("NamePath")
        self._Source = params.get("Source")
        self._Status = params.get("Status")
        self._Itime = params.get("Itime")
        self._Utime = params.get("Utime")
        self._ExtraInfo = params.get("ExtraInfo")
        self._RiskLevel = params.get("RiskLevel")
        if params.get("AccountGroups") is not None:
            self._AccountGroups = []
            for item in params.get("AccountGroups"):
                obj = DescribeLocalAccountAccountGroupsData()
                obj._deserialize(item)
                self._AccountGroups.append(obj)
        self._MobileBindNum = params.get("MobileBindNum")
        self._PcBindNum = params.get("PcBindNum")
        self._OnlineStatus = params.get("OnlineStatus")
        self._ActiveStatus = params.get("ActiveStatus")
        self._LoginTime = params.get("LoginTime")
        self._LogoutTime = params.get("LogoutTime")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class DescribeLocalAccountsPage(AbstractModel):
    r"""获取账号列表响应的分页对象

    """

    def __init__(self):
        r"""
        :param _Page: 公共分页对象
        :type Page: :class:`tencentcloud.ioa.v20220601.models.Paging`
        :param _Items: 获取账号列表响应的单个对象
        :type Items: list of DescribeLocalAccountsData
        """
        self._Page = None
        self._Items = None

    @property
    def Page(self):
        r"""公共分页对象
        :rtype: :class:`tencentcloud.ioa.v20220601.models.Paging`
        """
        return self._Page

    @Page.setter
    def Page(self, Page):
        self._Page = Page

    @property
    def Items(self):
        r"""获取账号列表响应的单个对象
        :rtype: list of DescribeLocalAccountsData
        """
        return self._Items

    @Items.setter
    def Items(self, Items):
        self._Items = Items


    def _deserialize(self, params):
        if params.get("Page") is not None:
            self._Page = Paging()
            self._Page._deserialize(params.get("Page"))
        if params.get("Items") is not None:
            self._Items = []
            for item in params.get("Items"):
                obj = DescribeLocalAccountsData()
                obj._deserialize(item)
                self._Items.append(obj)
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class DescribeLocalAccountsRequest(AbstractModel):
    r"""DescribeLocalAccounts请求参数结构体

    """

    def __init__(self):
        r"""
        :param _DomainInstanceId: 管理域实例ID，用于CAM管理域权限分配。若企业未进行管理域的划分，可直接传入根域"1"，此时表示针对当前企业的全部设备和账号进行接口CRUD，具体CRUD的影响范围限制于相应接口的入参。
        :type DomainInstanceId: str
        :param _Condition: 查询条件：过滤或排序
1、UserName，string类型，姓名
是否必填：否
过滤支持：是，支持eq、like、ilike
排序支持：否
2、UserId，string类型，账户
是否必填：否
过滤支持：是，支持eq、like、ilike
排序支持：否
3、Phone，string类型，手机号
是否必填：否
过滤支持：是，支持eq、like、ilike
排序支持：否
4、Email，string类型，邮箱
是否必填：否
过滤支持：是，支持eq、like、ilike
排序支持：否
        :type Condition: :class:`tencentcloud.ioa.v20220601.models.Condition`
        :param _AccountGroupId: 获取账号的分组ID，不传默认获取全网根账号组
        :type AccountGroupId: int
        :param _ShowFlag: 是否仅展示当前目录下用户 1： 递归显示 2：仅显示当前目录下用户
        :type ShowFlag: int
        """
        self._DomainInstanceId = None
        self._Condition = None
        self._AccountGroupId = None
        self._ShowFlag = None

    @property
    def DomainInstanceId(self):
        r"""管理域实例ID，用于CAM管理域权限分配。若企业未进行管理域的划分，可直接传入根域"1"，此时表示针对当前企业的全部设备和账号进行接口CRUD，具体CRUD的影响范围限制于相应接口的入参。
        :rtype: str
        """
        return self._DomainInstanceId

    @DomainInstanceId.setter
    def DomainInstanceId(self, DomainInstanceId):
        self._DomainInstanceId = DomainInstanceId

    @property
    def Condition(self):
        r"""查询条件：过滤或排序
1、UserName，string类型，姓名
是否必填：否
过滤支持：是，支持eq、like、ilike
排序支持：否
2、UserId，string类型，账户
是否必填：否
过滤支持：是，支持eq、like、ilike
排序支持：否
3、Phone，string类型，手机号
是否必填：否
过滤支持：是，支持eq、like、ilike
排序支持：否
4、Email，string类型，邮箱
是否必填：否
过滤支持：是，支持eq、like、ilike
排序支持：否
        :rtype: :class:`tencentcloud.ioa.v20220601.models.Condition`
        """
        return self._Condition

    @Condition.setter
    def Condition(self, Condition):
        self._Condition = Condition

    @property
    def AccountGroupId(self):
        r"""获取账号的分组ID，不传默认获取全网根账号组
        :rtype: int
        """
        return self._AccountGroupId

    @AccountGroupId.setter
    def AccountGroupId(self, AccountGroupId):
        self._AccountGroupId = AccountGroupId

    @property
    def ShowFlag(self):
        r"""是否仅展示当前目录下用户 1： 递归显示 2：仅显示当前目录下用户
        :rtype: int
        """
        return self._ShowFlag

    @ShowFlag.setter
    def ShowFlag(self, ShowFlag):
        self._ShowFlag = ShowFlag


    def _deserialize(self, params):
        self._DomainInstanceId = params.get("DomainInstanceId")
        if params.get("Condition") is not None:
            self._Condition = Condition()
            self._Condition._deserialize(params.get("Condition"))
        self._AccountGroupId = params.get("AccountGroupId")
        self._ShowFlag = params.get("ShowFlag")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class DescribeLocalAccountsResponse(AbstractModel):
    r"""DescribeLocalAccounts返回参数结构体

    """

    def __init__(self):
        r"""
        :param _Data: 获取账号列表响应的分页对象
        :type Data: :class:`tencentcloud.ioa.v20220601.models.DescribeLocalAccountsPage`
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._Data = None
        self._RequestId = None

    @property
    def Data(self):
        r"""获取账号列表响应的分页对象
        :rtype: :class:`tencentcloud.ioa.v20220601.models.DescribeLocalAccountsPage`
        """
        return self._Data

    @Data.setter
    def Data(self, Data):
        self._Data = Data

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        if params.get("Data") is not None:
            self._Data = DescribeLocalAccountsPage()
            self._Data._deserialize(params.get("Data"))
        self._RequestId = params.get("RequestId")


class DescribeResourceGrantedAccountGroupsData(AbstractModel):
    r"""账号分组授权信息

    """

    def __init__(self):
        r"""
        :param _Items: <p>授权信息</p>
        :type Items: list of GrantedAccountGroupItem
        """
        self._Items = None

    @property
    def Items(self):
        r"""<p>授权信息</p>
        :rtype: list of GrantedAccountGroupItem
        """
        return self._Items

    @Items.setter
    def Items(self, Items):
        self._Items = Items


    def _deserialize(self, params):
        if params.get("Items") is not None:
            self._Items = []
            for item in params.get("Items"):
                obj = GrantedAccountGroupItem()
                obj._deserialize(item)
                self._Items.append(obj)
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class DescribeResourceGrantedAccountGroupsRequest(AbstractModel):
    r"""DescribeResourceGrantedAccountGroups请求参数结构体

    """

    def __init__(self):
        r"""
        :param _ResourceId: 资源或资源组Id;
        :type ResourceId: int
        """
        self._ResourceId = None

    @property
    def ResourceId(self):
        r"""资源或资源组Id;
        :rtype: int
        """
        return self._ResourceId

    @ResourceId.setter
    def ResourceId(self, ResourceId):
        self._ResourceId = ResourceId


    def _deserialize(self, params):
        self._ResourceId = params.get("ResourceId")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class DescribeResourceGrantedAccountGroupsResponse(AbstractModel):
    r"""DescribeResourceGrantedAccountGroups返回参数结构体

    """

    def __init__(self):
        r"""
        :param _Data: 查询的数据集合
注意：此字段可能返回 null，表示取不到有效值。
        :type Data: :class:`tencentcloud.ioa.v20220601.models.DescribeResourceGrantedAccountGroupsData`
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._Data = None
        self._RequestId = None

    @property
    def Data(self):
        r"""查询的数据集合
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: :class:`tencentcloud.ioa.v20220601.models.DescribeResourceGrantedAccountGroupsData`
        """
        return self._Data

    @Data.setter
    def Data(self, Data):
        self._Data = Data

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        if params.get("Data") is not None:
            self._Data = DescribeResourceGrantedAccountGroupsData()
            self._Data._deserialize(params.get("Data"))
        self._RequestId = params.get("RequestId")


class DescribeResourceGrantedAccountsData(AbstractModel):
    r"""DescribeResourceGrantedAccountsData

    """

    def __init__(self):
        r"""
        :param _TotalCount: <p>总数</p>
        :type TotalCount: int
        :param _Items: <p>授权信息</p>
        :type Items: list of GrantedAccountItem
        """
        self._TotalCount = None
        self._Items = None

    @property
    def TotalCount(self):
        r"""<p>总数</p>
        :rtype: int
        """
        return self._TotalCount

    @TotalCount.setter
    def TotalCount(self, TotalCount):
        self._TotalCount = TotalCount

    @property
    def Items(self):
        r"""<p>授权信息</p>
        :rtype: list of GrantedAccountItem
        """
        return self._Items

    @Items.setter
    def Items(self, Items):
        self._Items = Items


    def _deserialize(self, params):
        self._TotalCount = params.get("TotalCount")
        if params.get("Items") is not None:
            self._Items = []
            for item in params.get("Items"):
                obj = GrantedAccountItem()
                obj._deserialize(item)
                self._Items.append(obj)
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class DescribeResourceGrantedAccountsRequest(AbstractModel):
    r"""DescribeResourceGrantedAccounts请求参数结构体

    """

    def __init__(self):
        r"""
        :param _ResourceId: 账户组Id(只支持32位)
        :type ResourceId: int
        """
        self._ResourceId = None

    @property
    def ResourceId(self):
        r"""账户组Id(只支持32位)
        :rtype: int
        """
        return self._ResourceId

    @ResourceId.setter
    def ResourceId(self, ResourceId):
        self._ResourceId = ResourceId


    def _deserialize(self, params):
        self._ResourceId = params.get("ResourceId")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class DescribeResourceGrantedAccountsResponse(AbstractModel):
    r"""DescribeResourceGrantedAccounts返回参数结构体

    """

    def __init__(self):
        r"""
        :param _Data: 查询的数据集合
        :type Data: :class:`tencentcloud.ioa.v20220601.models.DescribeResourceGrantedAccountsData`
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._Data = None
        self._RequestId = None

    @property
    def Data(self):
        r"""查询的数据集合
        :rtype: :class:`tencentcloud.ioa.v20220601.models.DescribeResourceGrantedAccountsData`
        """
        return self._Data

    @Data.setter
    def Data(self, Data):
        self._Data = Data

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        if params.get("Data") is not None:
            self._Data = DescribeResourceGrantedAccountsData()
            self._Data._deserialize(params.get("Data"))
        self._RequestId = params.get("RequestId")


class DescribeResourceGrantedVirtualGroupsData(AbstractModel):
    r"""DescribeResourceGrantedAccountsData

    """

    def __init__(self):
        r"""
        :param _Items: <p>授权信息</p>
        :type Items: list of GrantedVirtualGroupItem
        """
        self._Items = None

    @property
    def Items(self):
        r"""<p>授权信息</p>
        :rtype: list of GrantedVirtualGroupItem
        """
        return self._Items

    @Items.setter
    def Items(self, Items):
        self._Items = Items


    def _deserialize(self, params):
        if params.get("Items") is not None:
            self._Items = []
            for item in params.get("Items"):
                obj = GrantedVirtualGroupItem()
                obj._deserialize(item)
                self._Items.append(obj)
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class DescribeResourceGrantedVirtualGroupsRequest(AbstractModel):
    r"""DescribeResourceGrantedVirtualGroups请求参数结构体

    """

    def __init__(self):
        r"""
        :param _ResourceId: 资源ID
        :type ResourceId: int
        :param _ResourceType: 资源类型
        :type ResourceType: int
        """
        self._ResourceId = None
        self._ResourceType = None

    @property
    def ResourceId(self):
        r"""资源ID
        :rtype: int
        """
        return self._ResourceId

    @ResourceId.setter
    def ResourceId(self, ResourceId):
        self._ResourceId = ResourceId

    @property
    def ResourceType(self):
        r"""资源类型
        :rtype: int
        """
        return self._ResourceType

    @ResourceType.setter
    def ResourceType(self, ResourceType):
        self._ResourceType = ResourceType


    def _deserialize(self, params):
        self._ResourceId = params.get("ResourceId")
        self._ResourceType = params.get("ResourceType")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class DescribeResourceGrantedVirtualGroupsResponse(AbstractModel):
    r"""DescribeResourceGrantedVirtualGroups返回参数结构体

    """

    def __init__(self):
        r"""
        :param _Data: 查询的数据集合
        :type Data: :class:`tencentcloud.ioa.v20220601.models.DescribeResourceGrantedVirtualGroupsData`
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._Data = None
        self._RequestId = None

    @property
    def Data(self):
        r"""查询的数据集合
        :rtype: :class:`tencentcloud.ioa.v20220601.models.DescribeResourceGrantedVirtualGroupsData`
        """
        return self._Data

    @Data.setter
    def Data(self, Data):
        self._Data = Data

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        if params.get("Data") is not None:
            self._Data = DescribeResourceGrantedVirtualGroupsData()
            self._Data._deserialize(params.get("Data"))
        self._RequestId = params.get("RequestId")


class DescribeRootAccountGroupRequest(AbstractModel):
    r"""DescribeRootAccountGroup请求参数结构体

    """


class DescribeRootAccountGroupResponse(AbstractModel):
    r"""DescribeRootAccountGroup返回参数结构体

    """

    def __init__(self):
        r"""
        :param _Data: 账号根分组响应详情
        :type Data: :class:`tencentcloud.ioa.v20220601.models.GetAccountGroupData`
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._Data = None
        self._RequestId = None

    @property
    def Data(self):
        r"""账号根分组响应详情
        :rtype: :class:`tencentcloud.ioa.v20220601.models.GetAccountGroupData`
        """
        return self._Data

    @Data.setter
    def Data(self, Data):
        self._Data = Data

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        if params.get("Data") is not None:
            self._Data = GetAccountGroupData()
            self._Data._deserialize(params.get("Data"))
        self._RequestId = params.get("RequestId")


class DescribeSoftCensusListByDeviceData(AbstractModel):
    r"""软件统计响应对象集合

    """

    def __init__(self):
        r"""
        :param _UserName: 终端用户名
注意：此字段可能返回 null，表示取不到有效值。
        :type UserName: str
        :param _MacAddr: mac地址
注意：此字段可能返回 null，表示取不到有效值。
        :type MacAddr: str
        :param _Name: 终端计算机名称
注意：此字段可能返回 null，表示取不到有效值。
        :type Name: str
        :param _GroupNamePath: 终端组路径名
注意：此字段可能返回 null，表示取不到有效值。
        :type GroupNamePath: str
        :param _Ip: IP地址
注意：此字段可能返回 null，表示取不到有效值。
        :type Ip: str
        :param _Mid: 唯一标识Mid
注意：此字段可能返回 null，表示取不到有效值。
        :type Mid: str
        :param _IoaUserName: 企业账户名
注意：此字段可能返回 null，表示取不到有效值。
        :type IoaUserName: str
        :param _GroupId: 终端分组Id(只支持32位)
注意：此字段可能返回 null，表示取不到有效值。
        :type GroupId: int
        :param _GroupName: 终端组名
注意：此字段可能返回 null，表示取不到有效值。
        :type GroupName: str
        :param _Id: 终端列表Id(只支持32位)
注意：此字段可能返回 null，表示取不到有效值。
        :type Id: int
        :param _SoftNum: 软件数量(只支持32位)
注意：此字段可能返回 null，表示取不到有效值。
        :type SoftNum: int
        :param _PiracyRisk: 盗版风险（1=风险;2=未知）
注意：此字段可能返回 null，表示取不到有效值。
        :type PiracyRisk: int
        :param _RemarkName: 终端备注名
        :type RemarkName: str
        """
        self._UserName = None
        self._MacAddr = None
        self._Name = None
        self._GroupNamePath = None
        self._Ip = None
        self._Mid = None
        self._IoaUserName = None
        self._GroupId = None
        self._GroupName = None
        self._Id = None
        self._SoftNum = None
        self._PiracyRisk = None
        self._RemarkName = None

    @property
    def UserName(self):
        r"""终端用户名
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._UserName

    @UserName.setter
    def UserName(self, UserName):
        self._UserName = UserName

    @property
    def MacAddr(self):
        r"""mac地址
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._MacAddr

    @MacAddr.setter
    def MacAddr(self, MacAddr):
        self._MacAddr = MacAddr

    @property
    def Name(self):
        r"""终端计算机名称
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._Name

    @Name.setter
    def Name(self, Name):
        self._Name = Name

    @property
    def GroupNamePath(self):
        r"""终端组路径名
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._GroupNamePath

    @GroupNamePath.setter
    def GroupNamePath(self, GroupNamePath):
        self._GroupNamePath = GroupNamePath

    @property
    def Ip(self):
        r"""IP地址
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._Ip

    @Ip.setter
    def Ip(self, Ip):
        self._Ip = Ip

    @property
    def Mid(self):
        r"""唯一标识Mid
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._Mid

    @Mid.setter
    def Mid(self, Mid):
        self._Mid = Mid

    @property
    def IoaUserName(self):
        r"""企业账户名
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._IoaUserName

    @IoaUserName.setter
    def IoaUserName(self, IoaUserName):
        self._IoaUserName = IoaUserName

    @property
    def GroupId(self):
        r"""终端分组Id(只支持32位)
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: int
        """
        return self._GroupId

    @GroupId.setter
    def GroupId(self, GroupId):
        self._GroupId = GroupId

    @property
    def GroupName(self):
        r"""终端组名
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._GroupName

    @GroupName.setter
    def GroupName(self, GroupName):
        self._GroupName = GroupName

    @property
    def Id(self):
        r"""终端列表Id(只支持32位)
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: int
        """
        return self._Id

    @Id.setter
    def Id(self, Id):
        self._Id = Id

    @property
    def SoftNum(self):
        r"""软件数量(只支持32位)
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: int
        """
        return self._SoftNum

    @SoftNum.setter
    def SoftNum(self, SoftNum):
        self._SoftNum = SoftNum

    @property
    def PiracyRisk(self):
        r"""盗版风险（1=风险;2=未知）
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: int
        """
        return self._PiracyRisk

    @PiracyRisk.setter
    def PiracyRisk(self, PiracyRisk):
        self._PiracyRisk = PiracyRisk

    @property
    def RemarkName(self):
        r"""终端备注名
        :rtype: str
        """
        return self._RemarkName

    @RemarkName.setter
    def RemarkName(self, RemarkName):
        self._RemarkName = RemarkName


    def _deserialize(self, params):
        self._UserName = params.get("UserName")
        self._MacAddr = params.get("MacAddr")
        self._Name = params.get("Name")
        self._GroupNamePath = params.get("GroupNamePath")
        self._Ip = params.get("Ip")
        self._Mid = params.get("Mid")
        self._IoaUserName = params.get("IoaUserName")
        self._GroupId = params.get("GroupId")
        self._GroupName = params.get("GroupName")
        self._Id = params.get("Id")
        self._SoftNum = params.get("SoftNum")
        self._PiracyRisk = params.get("PiracyRisk")
        self._RemarkName = params.get("RemarkName")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class DescribeSoftCensusListByDevicePageData(AbstractModel):
    r"""业务响应数据

    """

    def __init__(self):
        r"""
        :param _Items: 软件统计响应对象集合
注意：此字段可能返回 null，表示取不到有效值。
        :type Items: list of DescribeSoftCensusListByDeviceData
        :param _Page: 分页公共对象
注意：此字段可能返回 null，表示取不到有效值。
        :type Page: :class:`tencentcloud.ioa.v20220601.models.Paging`
        """
        self._Items = None
        self._Page = None

    @property
    def Items(self):
        r"""软件统计响应对象集合
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: list of DescribeSoftCensusListByDeviceData
        """
        return self._Items

    @Items.setter
    def Items(self, Items):
        self._Items = Items

    @property
    def Page(self):
        r"""分页公共对象
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: :class:`tencentcloud.ioa.v20220601.models.Paging`
        """
        return self._Page

    @Page.setter
    def Page(self, Page):
        self._Page = Page


    def _deserialize(self, params):
        if params.get("Items") is not None:
            self._Items = []
            for item in params.get("Items"):
                obj = DescribeSoftCensusListByDeviceData()
                obj._deserialize(item)
                self._Items.append(obj)
        if params.get("Page") is not None:
            self._Page = Paging()
            self._Page._deserialize(params.get("Page"))
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class DescribeSoftCensusListByDeviceRequest(AbstractModel):
    r"""DescribeSoftCensusListByDevice请求参数结构体

    """

    def __init__(self):
        r"""
        :param _GroupId: 必填，终端分组ID
        :type GroupId: int
        :param _DomainInstanceId: 管理域实例ID，用于CAM管理域权限分配。若企业未进行管理域的划分，可直接传入根域"1"，此时表示针对当前企业的全部设备和账号进行接口CRUD，具体CRUD的影响范围限制于相应接口的入参。
        :type DomainInstanceId: str
        :param _OsType: 系统类型（0: win，1：linux，2: mac，4：android，5：ios  ）；默认值0
        :type OsType: int
        :param _Condition: 过滤条件、分页参数   <li>Name - String - 是否必填：否 - 操作符: eq,like,ilike  - 排序支持：否 - 备注：字段含义，终端名。</li> 	<li>UserName - String - 是否必填：否 - 操作符: eq,like,ilike  - 排序支持：否 - 备注：字段含义，终端用户名。</li> 	<li>IoaUserName - String - 是否必填：否 - 操作符: eq,like,ilike  - 排序支持：否 - 备注：字段含义，最近登录账号。</li> 	<li>Ip - String - 是否必填：否 - 操作符: eq,like,ilike  - 排序支持：否 - 备注：字段含义，IP地址。</li> 	<li>MacAddr - String - 是否必填：否 - 操作符: eq,like,ilike  - 排序支持：否 - 备注：字段含义，MAC地址。</li>
        :type Condition: :class:`tencentcloud.ioa.v20220601.models.Condition`
        """
        self._GroupId = None
        self._DomainInstanceId = None
        self._OsType = None
        self._Condition = None

    @property
    def GroupId(self):
        r"""必填，终端分组ID
        :rtype: int
        """
        return self._GroupId

    @GroupId.setter
    def GroupId(self, GroupId):
        self._GroupId = GroupId

    @property
    def DomainInstanceId(self):
        r"""管理域实例ID，用于CAM管理域权限分配。若企业未进行管理域的划分，可直接传入根域"1"，此时表示针对当前企业的全部设备和账号进行接口CRUD，具体CRUD的影响范围限制于相应接口的入参。
        :rtype: str
        """
        return self._DomainInstanceId

    @DomainInstanceId.setter
    def DomainInstanceId(self, DomainInstanceId):
        self._DomainInstanceId = DomainInstanceId

    @property
    def OsType(self):
        r"""系统类型（0: win，1：linux，2: mac，4：android，5：ios  ）；默认值0
        :rtype: int
        """
        return self._OsType

    @OsType.setter
    def OsType(self, OsType):
        self._OsType = OsType

    @property
    def Condition(self):
        r"""过滤条件、分页参数   <li>Name - String - 是否必填：否 - 操作符: eq,like,ilike  - 排序支持：否 - 备注：字段含义，终端名。</li> 	<li>UserName - String - 是否必填：否 - 操作符: eq,like,ilike  - 排序支持：否 - 备注：字段含义，终端用户名。</li> 	<li>IoaUserName - String - 是否必填：否 - 操作符: eq,like,ilike  - 排序支持：否 - 备注：字段含义，最近登录账号。</li> 	<li>Ip - String - 是否必填：否 - 操作符: eq,like,ilike  - 排序支持：否 - 备注：字段含义，IP地址。</li> 	<li>MacAddr - String - 是否必填：否 - 操作符: eq,like,ilike  - 排序支持：否 - 备注：字段含义，MAC地址。</li>
        :rtype: :class:`tencentcloud.ioa.v20220601.models.Condition`
        """
        return self._Condition

    @Condition.setter
    def Condition(self, Condition):
        self._Condition = Condition


    def _deserialize(self, params):
        self._GroupId = params.get("GroupId")
        self._DomainInstanceId = params.get("DomainInstanceId")
        self._OsType = params.get("OsType")
        if params.get("Condition") is not None:
            self._Condition = Condition()
            self._Condition._deserialize(params.get("Condition"))
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class DescribeSoftCensusListByDeviceResponse(AbstractModel):
    r"""DescribeSoftCensusListByDevice返回参数结构体

    """

    def __init__(self):
        r"""
        :param _Data: 业务响应数据
        :type Data: :class:`tencentcloud.ioa.v20220601.models.DescribeSoftCensusListByDevicePageData`
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._Data = None
        self._RequestId = None

    @property
    def Data(self):
        r"""业务响应数据
        :rtype: :class:`tencentcloud.ioa.v20220601.models.DescribeSoftCensusListByDevicePageData`
        """
        return self._Data

    @Data.setter
    def Data(self, Data):
        self._Data = Data

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        if params.get("Data") is not None:
            self._Data = DescribeSoftCensusListByDevicePageData()
            self._Data._deserialize(params.get("Data"))
        self._RequestId = params.get("RequestId")


class DescribeSoftwareInformationPageData(AbstractModel):
    r"""业务响应数据

    """

    def __init__(self):
        r"""
        :param _Items: 软件详情响应对象集合
        :type Items: list of SoftwareInformationData
        :param _Page: 分页公共对象
        :type Page: :class:`tencentcloud.ioa.v20220601.models.Paging`
        """
        self._Items = None
        self._Page = None

    @property
    def Items(self):
        r"""软件详情响应对象集合
        :rtype: list of SoftwareInformationData
        """
        return self._Items

    @Items.setter
    def Items(self, Items):
        self._Items = Items

    @property
    def Page(self):
        r"""分页公共对象
        :rtype: :class:`tencentcloud.ioa.v20220601.models.Paging`
        """
        return self._Page

    @Page.setter
    def Page(self, Page):
        self._Page = Page


    def _deserialize(self, params):
        if params.get("Items") is not None:
            self._Items = []
            for item in params.get("Items"):
                obj = SoftwareInformationData()
                obj._deserialize(item)
                self._Items.append(obj)
        if params.get("Page") is not None:
            self._Page = Paging()
            self._Page._deserialize(params.get("Page"))
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class DescribeSoftwareInformationRequest(AbstractModel):
    r"""DescribeSoftwareInformation请求参数结构体

    """

    def __init__(self):
        r"""
        :param _DomainInstanceId: 管理域实例ID，用于CAM管理域权限分配。若企业未进行管理域的划分，可直接传入根域"1"，此时表示针对当前企业的全部设备和账号进行接口CRUD，具体CRUD的影响范围限制于相应接口的入参。
        :type DomainInstanceId: str
        :param _Mid: <p>终端唯一标识Mid</p>
        :type Mid: str
        :param _Condition: <p>过滤条件、分页参数</p><li>Name - String - 过滤支持：是 - 操作符:eq,like - 排序支持：是 。</li>
        :type Condition: :class:`tencentcloud.ioa.v20220601.models.Condition`
        :param _OsType: <p>0:win 2:mac</p>
        :type OsType: int
        """
        self._DomainInstanceId = None
        self._Mid = None
        self._Condition = None
        self._OsType = None

    @property
    def DomainInstanceId(self):
        r"""管理域实例ID，用于CAM管理域权限分配。若企业未进行管理域的划分，可直接传入根域"1"，此时表示针对当前企业的全部设备和账号进行接口CRUD，具体CRUD的影响范围限制于相应接口的入参。
        :rtype: str
        """
        return self._DomainInstanceId

    @DomainInstanceId.setter
    def DomainInstanceId(self, DomainInstanceId):
        self._DomainInstanceId = DomainInstanceId

    @property
    def Mid(self):
        r"""<p>终端唯一标识Mid</p>
        :rtype: str
        """
        return self._Mid

    @Mid.setter
    def Mid(self, Mid):
        self._Mid = Mid

    @property
    def Condition(self):
        r"""<p>过滤条件、分页参数</p><li>Name - String - 过滤支持：是 - 操作符:eq,like - 排序支持：是 。</li>
        :rtype: :class:`tencentcloud.ioa.v20220601.models.Condition`
        """
        return self._Condition

    @Condition.setter
    def Condition(self, Condition):
        self._Condition = Condition

    @property
    def OsType(self):
        r"""<p>0:win 2:mac</p>
        :rtype: int
        """
        return self._OsType

    @OsType.setter
    def OsType(self, OsType):
        self._OsType = OsType


    def _deserialize(self, params):
        self._DomainInstanceId = params.get("DomainInstanceId")
        self._Mid = params.get("Mid")
        if params.get("Condition") is not None:
            self._Condition = Condition()
            self._Condition._deserialize(params.get("Condition"))
        self._OsType = params.get("OsType")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class DescribeSoftwareInformationResponse(AbstractModel):
    r"""DescribeSoftwareInformation返回参数结构体

    """

    def __init__(self):
        r"""
        :param _Data: <p>业务响应数据</p>
        :type Data: :class:`tencentcloud.ioa.v20220601.models.DescribeSoftwareInformationPageData`
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._Data = None
        self._RequestId = None

    @property
    def Data(self):
        r"""<p>业务响应数据</p>
        :rtype: :class:`tencentcloud.ioa.v20220601.models.DescribeSoftwareInformationPageData`
        """
        return self._Data

    @Data.setter
    def Data(self, Data):
        self._Data = Data

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        if params.get("Data") is not None:
            self._Data = DescribeSoftwareInformationPageData()
            self._Data._deserialize(params.get("Data"))
        self._RequestId = params.get("RequestId")


class DescribeVirtualDevicesPageRsp(AbstractModel):
    r"""返回的具体Data数据

    """

    def __init__(self):
        r"""
        :param _Paging: 数据分页信息
        :type Paging: :class:`tencentcloud.ioa.v20220601.models.Paging`
        :param _Items: 设备列表
        :type Items: list of DeviceDetail
        """
        self._Paging = None
        self._Items = None

    @property
    def Paging(self):
        r"""数据分页信息
        :rtype: :class:`tencentcloud.ioa.v20220601.models.Paging`
        """
        return self._Paging

    @Paging.setter
    def Paging(self, Paging):
        self._Paging = Paging

    @property
    def Items(self):
        r"""设备列表
        :rtype: list of DeviceDetail
        """
        return self._Items

    @Items.setter
    def Items(self, Items):
        self._Items = Items


    def _deserialize(self, params):
        if params.get("Paging") is not None:
            self._Paging = Paging()
            self._Paging._deserialize(params.get("Paging"))
        if params.get("Items") is not None:
            self._Items = []
            for item in params.get("Items"):
                obj = DeviceDetail()
                obj._deserialize(item)
                self._Items.append(obj)
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class DescribeVirtualDevicesRequest(AbstractModel):
    r"""DescribeVirtualDevices请求参数结构体

    """

    def __init__(self):
        r"""
        :param _DomainInstanceId: 管理域实例ID，用于CAM管理域权限分配。若企业未进行管理域的划分，可直接传入根域"1"，此时表示针对当前企业的全部设备和账号进行接口CRUD，具体CRUD的影响范围限制于相应接口的入参。
        :type DomainInstanceId: str
        :param _Condition: 过滤条件参数（字段含义请参考接口返回值）- Mid, 类型String，支持操作：【eq，like，ilike】，支持排序- Name, 类型String，支持操作：【eq，like，ilike】，支持排序- Itime, 类型String，支持操作：【eq，like，ilike】，支持排序- UserName, 类型String，支持操作：【eq，like，ilike】，支持排序- MacAddr, 类型String，支持操作：【eq，like，ilike】，支持排序- UserId, 类型String，支持操作：【eq，like，ilike】，支持排序- Ip, 类型String，支持操作：【eq，like，ilike】，支持排序- Tags，类型String，支持操作：【eq，like，ilike】，支持排序- LocalIpList，类型String，支持操作：【eq，like，ilike】，支持排序- SerialNum，类型String，支持操作：【eq，like，ilike】，支持排序- Version，类型String，支持操作：【eq，like，ilike】，支持排序- StrVersion，类型String，支持操作：【eq，like，ilike】，支持排序- RtpStatus，类型String，支持操作：【eq，like，ilike】，**不支持排序**- HostName，类型String，支持操作：【eq，like，ilike】，支持排序- IoaUserName，类型String，支持操作：【eq，like，ilike】，支持排序- GroupName，类型String，支持操作：【eq，like，ilike】，支持排序- CriticalVulListCount，**类型Int**，支持操作：【eq】，**不支持排序**- RiskCount，**类型Int**，支持操作：【eq】，**不支持排序**- VulVersion，类型String，支持操作：【eq，like，ilike】，**不支持排序**- Virusver，类型String，支持操作：【eq，like，ilike】，**不支持排序**- SysRepver，类型String，支持操作：【eq，like，ilike】，**不支持排序**- BaseBoardSn，类型String，支持操作：【eq，like，ilike】，支持排序- Os，类型String，支持操作：【eq，like，ilike】，支持排序- ConnActiveTime，类型String，支持操作：【eq，like，ilike】，**不支持排序**- FirewallStatus，**类型Int**，支持操作：【eq】，**不支持排序**- ProfileName，类型String，支持操作：【eq，like，ilike】，支持排序- DomainName，类型String，支持操作：【eq，like，ilike】，支持排序- SysRepVersion，类型String，支持操作：【eq，like，ilike】，支持排序- VirusVer，类型String，支持操作：【eq，like，ilike】，支持排序- Cpu，类型String，支持操作：【eq，like，ilike】，支持排序- Memory，类型String，支持操作：【eq，like，ilike】，支持排序- HardDiskSize，类型String，支持操作：【eq，like，ilike】，支持排序- HardwareChangeCount，**类型Int**，支持操作：【eq】，支持排序- AccountName，类型String，支持操作：【like.ilike】，支持排序- AccountGroupName，类型String，支持操作：【like.ilike】，支持排序- ScreenRecordingPermission，**类型Int**，支持操作：【eq】，支持排序- DiskAccessPermission，**类型Int**，支持操作：【eq】，支持排序分页参数- PageNum 从1开始，小于等于0时使用默认参数- PageSize 最大值5000，最好不超过100
        :type Condition: :class:`tencentcloud.ioa.v20220601.models.Condition`
        :param _DeviceVirtualGroupId: 终端自定义分组ID（0：获取租户全部自定义分组下的终端数据；其他值：获取具体ID分组下的终端数据）
        :type DeviceVirtualGroupId: int
        :param _OsType: 系统类型（0: win，1：linux，2: mac，4：android，5：ios，-1：全系统（SaaS一体化版本） ； 不传默认为0）(只支持32位)
        :type OsType: int
        :param _OnlineStatus: 选填，在线状态 （2表示在线，0或者1表示离线）
        :type OnlineStatus: int
        """
        self._DomainInstanceId = None
        self._Condition = None
        self._DeviceVirtualGroupId = None
        self._OsType = None
        self._OnlineStatus = None

    @property
    def DomainInstanceId(self):
        r"""管理域实例ID，用于CAM管理域权限分配。若企业未进行管理域的划分，可直接传入根域"1"，此时表示针对当前企业的全部设备和账号进行接口CRUD，具体CRUD的影响范围限制于相应接口的入参。
        :rtype: str
        """
        return self._DomainInstanceId

    @DomainInstanceId.setter
    def DomainInstanceId(self, DomainInstanceId):
        self._DomainInstanceId = DomainInstanceId

    @property
    def Condition(self):
        r"""过滤条件参数（字段含义请参考接口返回值）- Mid, 类型String，支持操作：【eq，like，ilike】，支持排序- Name, 类型String，支持操作：【eq，like，ilike】，支持排序- Itime, 类型String，支持操作：【eq，like，ilike】，支持排序- UserName, 类型String，支持操作：【eq，like，ilike】，支持排序- MacAddr, 类型String，支持操作：【eq，like，ilike】，支持排序- UserId, 类型String，支持操作：【eq，like，ilike】，支持排序- Ip, 类型String，支持操作：【eq，like，ilike】，支持排序- Tags，类型String，支持操作：【eq，like，ilike】，支持排序- LocalIpList，类型String，支持操作：【eq，like，ilike】，支持排序- SerialNum，类型String，支持操作：【eq，like，ilike】，支持排序- Version，类型String，支持操作：【eq，like，ilike】，支持排序- StrVersion，类型String，支持操作：【eq，like，ilike】，支持排序- RtpStatus，类型String，支持操作：【eq，like，ilike】，**不支持排序**- HostName，类型String，支持操作：【eq，like，ilike】，支持排序- IoaUserName，类型String，支持操作：【eq，like，ilike】，支持排序- GroupName，类型String，支持操作：【eq，like，ilike】，支持排序- CriticalVulListCount，**类型Int**，支持操作：【eq】，**不支持排序**- RiskCount，**类型Int**，支持操作：【eq】，**不支持排序**- VulVersion，类型String，支持操作：【eq，like，ilike】，**不支持排序**- Virusver，类型String，支持操作：【eq，like，ilike】，**不支持排序**- SysRepver，类型String，支持操作：【eq，like，ilike】，**不支持排序**- BaseBoardSn，类型String，支持操作：【eq，like，ilike】，支持排序- Os，类型String，支持操作：【eq，like，ilike】，支持排序- ConnActiveTime，类型String，支持操作：【eq，like，ilike】，**不支持排序**- FirewallStatus，**类型Int**，支持操作：【eq】，**不支持排序**- ProfileName，类型String，支持操作：【eq，like，ilike】，支持排序- DomainName，类型String，支持操作：【eq，like，ilike】，支持排序- SysRepVersion，类型String，支持操作：【eq，like，ilike】，支持排序- VirusVer，类型String，支持操作：【eq，like，ilike】，支持排序- Cpu，类型String，支持操作：【eq，like，ilike】，支持排序- Memory，类型String，支持操作：【eq，like，ilike】，支持排序- HardDiskSize，类型String，支持操作：【eq，like，ilike】，支持排序- HardwareChangeCount，**类型Int**，支持操作：【eq】，支持排序- AccountName，类型String，支持操作：【like.ilike】，支持排序- AccountGroupName，类型String，支持操作：【like.ilike】，支持排序- ScreenRecordingPermission，**类型Int**，支持操作：【eq】，支持排序- DiskAccessPermission，**类型Int**，支持操作：【eq】，支持排序分页参数- PageNum 从1开始，小于等于0时使用默认参数- PageSize 最大值5000，最好不超过100
        :rtype: :class:`tencentcloud.ioa.v20220601.models.Condition`
        """
        return self._Condition

    @Condition.setter
    def Condition(self, Condition):
        self._Condition = Condition

    @property
    def DeviceVirtualGroupId(self):
        r"""终端自定义分组ID（0：获取租户全部自定义分组下的终端数据；其他值：获取具体ID分组下的终端数据）
        :rtype: int
        """
        return self._DeviceVirtualGroupId

    @DeviceVirtualGroupId.setter
    def DeviceVirtualGroupId(self, DeviceVirtualGroupId):
        self._DeviceVirtualGroupId = DeviceVirtualGroupId

    @property
    def OsType(self):
        r"""系统类型（0: win，1：linux，2: mac，4：android，5：ios，-1：全系统（SaaS一体化版本） ； 不传默认为0）(只支持32位)
        :rtype: int
        """
        return self._OsType

    @OsType.setter
    def OsType(self, OsType):
        self._OsType = OsType

    @property
    def OnlineStatus(self):
        r"""选填，在线状态 （2表示在线，0或者1表示离线）
        :rtype: int
        """
        return self._OnlineStatus

    @OnlineStatus.setter
    def OnlineStatus(self, OnlineStatus):
        self._OnlineStatus = OnlineStatus


    def _deserialize(self, params):
        self._DomainInstanceId = params.get("DomainInstanceId")
        if params.get("Condition") is not None:
            self._Condition = Condition()
            self._Condition._deserialize(params.get("Condition"))
        self._DeviceVirtualGroupId = params.get("DeviceVirtualGroupId")
        self._OsType = params.get("OsType")
        self._OnlineStatus = params.get("OnlineStatus")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class DescribeVirtualDevicesResponse(AbstractModel):
    r"""DescribeVirtualDevices返回参数结构体

    """

    def __init__(self):
        r"""
        :param _Data: 返回的具体Data数据
        :type Data: :class:`tencentcloud.ioa.v20220601.models.DescribeVirtualDevicesPageRsp`
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._Data = None
        self._RequestId = None

    @property
    def Data(self):
        r"""返回的具体Data数据
        :rtype: :class:`tencentcloud.ioa.v20220601.models.DescribeVirtualDevicesPageRsp`
        """
        return self._Data

    @Data.setter
    def Data(self, Data):
        self._Data = Data

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        if params.get("Data") is not None:
            self._Data = DescribeVirtualDevicesPageRsp()
            self._Data._deserialize(params.get("Data"))
        self._RequestId = params.get("RequestId")


class DeviceDetail(AbstractModel):
    r"""业务响应数据

    """

    def __init__(self):
        r"""
        :param _Id: <p>设备ID</p>
        :type Id: int
        :param _Mid: <p>设备唯一标识码，在ioa中每个设备有唯一标识码</p>
        :type Mid: str
        :param _Name: <p>终端名（设备名）</p>
        :type Name: str
        :param _GroupId: <p>设备所在分组ID</p>
        :type GroupId: int
        :param _OsType: <p>OS平台，0：Windows 、1： Linux、 2：macOS 、4： Android、 5: iOS。默认是0</p>
        :type OsType: int
        :param _Ip: <p>设备IP地址（出口IP）</p>
        :type Ip: str
        :param _OnlineStatus: <p>在线状态，2：在线、0或者1:离线</p>
        :type OnlineStatus: int
        :param _Version: <p>客户端版本号-大整数</p>
        :type Version: str
        :param _StrVersion: <p>客户端版本号-点分字符串</p>
        :type StrVersion: str
        :param _Itime: <p>首次在线时间</p>
        :type Itime: str
        :param _ConnActiveTime: <p>最后一次在线时间</p>
        :type ConnActiveTime: str
        :param _Locked: <p>设备是否加锁 ，1：锁定 0或者2：未锁定。</p>
        :type Locked: int
        :param _LocalIpList: <p>设备本地IP列表, 包括IP</p>
        :type LocalIpList: str
        :param _HostId: <p>宿主机id（需要宿主机也安装iOA才能显示）</p>
        :type HostId: int
        :param _GroupName: <p>设备所属分组名</p>
        :type GroupName: str
        :param _GroupNamePath: <p>设备所属分组路径</p>
        :type GroupNamePath: str
        :param _CriticalVulListCount: <p>未修复高危漏洞数(只支持32位)</p>
        :type CriticalVulListCount: int
        :param _Os: <p>操作系统名称</p>
        :type Os: str
        :param _OsBits: <p>操作系统位数</p>
        :type OsBits: int
        :param _OsVersion: <p>操作系统版本</p>
        :type OsVersion: str
        :param _OsLanguage: <p>操作系统语言</p>
        :type OsLanguage: str
        :param _OsInstallDate: <p>操作系统安装时间</p>
        :type OsInstallDate: str
        :param _ComputerName: <p>设备名，和Name相同</p>
        :type ComputerName: str
        :param _DomainName: <p>登录域名</p>
        :type DomainName: str
        :param _MacAddr: <p>MAC地址</p>
        :type MacAddr: str
        :param _VulCount: <p>漏洞数</p>
        :type VulCount: int
        :param _RiskCount: <p>病毒风险数</p>
        :type RiskCount: int
        :param _VirusVer: <p>病毒库版本</p>
        :type VirusVer: str
        :param _VulVersion: <p>漏洞库版本</p>
        :type VulVersion: str
        :param _SysRepVersion: <p>系统修复引擎版本</p>
        :type SysRepVersion: str
        :param _VulCriticalList: <p>高危补丁列表</p>
        :type VulCriticalList: list of str
        :param _Tags: <p>标签</p>
        :type Tags: str
        :param _UserName: <p>终端用户名</p>
        :type UserName: str
        :param _FirewallStatus: <p>防火墙状态，不等于0表示开启</p>
        :type FirewallStatus: int
        :param _SerialNum: <p>SN序列号</p>
        :type SerialNum: str
        :param _DeviceStrategyVer: <p>设备管控策略版本</p>
        :type DeviceStrategyVer: str
        :param _NGNStrategyVer: <p>NGN策略版本</p>
        :type NGNStrategyVer: str
        :param _IOAUserName: <p>最近登录账户的账号(账号系统用户账号)</p>
        :type IOAUserName: str
        :param _DeviceNewStrategyVer: <p>设备管控新策略</p>
        :type DeviceNewStrategyVer: str
        :param _NGNNewStrategyVer: <p>NGN策略新版本</p>
        :type NGNNewStrategyVer: str
        :param _HostName: <p>宿主机名称（需要宿主机也安装iOA才能显示）</p>
        :type HostName: str
        :param _BaseBoardSn: <p>主板序列号</p>
        :type BaseBoardSn: str
        :param _AccountUsers: <p>绑定账户名称</p>
        :type AccountUsers: str
        :param _IdentityStrategyVer: <p>身份策略版本</p>
        :type IdentityStrategyVer: str
        :param _IdentityNewStrategyVer: <p>身份策略新版本</p>
        :type IdentityNewStrategyVer: str
        :param _AccountGroupName: <p>最近登录账号部门</p>
        :type AccountGroupName: str
        :param _AccountName: <p>最近登录账户的姓名(账号系统用户姓名)</p>
        :type AccountName: str
        :param _AccountGroupId: <p>账号组id</p>
        :type AccountGroupId: int
        :param _ScreenRecordingPermission: <p>是否开启录屏权限，仅macOS， 0： 未开启 、1： 开启</p>
        :type ScreenRecordingPermission: int
        :param _DiskAccessPermission: <p>是否开启磁盘访问权限，仅macOS， 0： 未开启、 1： 开启</p>
        :type DiskAccessPermission: int
        :param _RemarkName: <p>终端备注名</p>
        :type RemarkName: str
        :param _BiosUuid: <p>BiosUUID（启动盘标识符）</p>
        :type BiosUuid: str
        """
        self._Id = None
        self._Mid = None
        self._Name = None
        self._GroupId = None
        self._OsType = None
        self._Ip = None
        self._OnlineStatus = None
        self._Version = None
        self._StrVersion = None
        self._Itime = None
        self._ConnActiveTime = None
        self._Locked = None
        self._LocalIpList = None
        self._HostId = None
        self._GroupName = None
        self._GroupNamePath = None
        self._CriticalVulListCount = None
        self._Os = None
        self._OsBits = None
        self._OsVersion = None
        self._OsLanguage = None
        self._OsInstallDate = None
        self._ComputerName = None
        self._DomainName = None
        self._MacAddr = None
        self._VulCount = None
        self._RiskCount = None
        self._VirusVer = None
        self._VulVersion = None
        self._SysRepVersion = None
        self._VulCriticalList = None
        self._Tags = None
        self._UserName = None
        self._FirewallStatus = None
        self._SerialNum = None
        self._DeviceStrategyVer = None
        self._NGNStrategyVer = None
        self._IOAUserName = None
        self._DeviceNewStrategyVer = None
        self._NGNNewStrategyVer = None
        self._HostName = None
        self._BaseBoardSn = None
        self._AccountUsers = None
        self._IdentityStrategyVer = None
        self._IdentityNewStrategyVer = None
        self._AccountGroupName = None
        self._AccountName = None
        self._AccountGroupId = None
        self._ScreenRecordingPermission = None
        self._DiskAccessPermission = None
        self._RemarkName = None
        self._BiosUuid = None

    @property
    def Id(self):
        r"""<p>设备ID</p>
        :rtype: int
        """
        return self._Id

    @Id.setter
    def Id(self, Id):
        self._Id = Id

    @property
    def Mid(self):
        r"""<p>设备唯一标识码，在ioa中每个设备有唯一标识码</p>
        :rtype: str
        """
        return self._Mid

    @Mid.setter
    def Mid(self, Mid):
        self._Mid = Mid

    @property
    def Name(self):
        r"""<p>终端名（设备名）</p>
        :rtype: str
        """
        return self._Name

    @Name.setter
    def Name(self, Name):
        self._Name = Name

    @property
    def GroupId(self):
        r"""<p>设备所在分组ID</p>
        :rtype: int
        """
        return self._GroupId

    @GroupId.setter
    def GroupId(self, GroupId):
        self._GroupId = GroupId

    @property
    def OsType(self):
        r"""<p>OS平台，0：Windows 、1： Linux、 2：macOS 、4： Android、 5: iOS。默认是0</p>
        :rtype: int
        """
        return self._OsType

    @OsType.setter
    def OsType(self, OsType):
        self._OsType = OsType

    @property
    def Ip(self):
        r"""<p>设备IP地址（出口IP）</p>
        :rtype: str
        """
        return self._Ip

    @Ip.setter
    def Ip(self, Ip):
        self._Ip = Ip

    @property
    def OnlineStatus(self):
        r"""<p>在线状态，2：在线、0或者1:离线</p>
        :rtype: int
        """
        return self._OnlineStatus

    @OnlineStatus.setter
    def OnlineStatus(self, OnlineStatus):
        self._OnlineStatus = OnlineStatus

    @property
    def Version(self):
        r"""<p>客户端版本号-大整数</p>
        :rtype: str
        """
        return self._Version

    @Version.setter
    def Version(self, Version):
        self._Version = Version

    @property
    def StrVersion(self):
        r"""<p>客户端版本号-点分字符串</p>
        :rtype: str
        """
        return self._StrVersion

    @StrVersion.setter
    def StrVersion(self, StrVersion):
        self._StrVersion = StrVersion

    @property
    def Itime(self):
        r"""<p>首次在线时间</p>
        :rtype: str
        """
        return self._Itime

    @Itime.setter
    def Itime(self, Itime):
        self._Itime = Itime

    @property
    def ConnActiveTime(self):
        r"""<p>最后一次在线时间</p>
        :rtype: str
        """
        return self._ConnActiveTime

    @ConnActiveTime.setter
    def ConnActiveTime(self, ConnActiveTime):
        self._ConnActiveTime = ConnActiveTime

    @property
    def Locked(self):
        r"""<p>设备是否加锁 ，1：锁定 0或者2：未锁定。</p>
        :rtype: int
        """
        return self._Locked

    @Locked.setter
    def Locked(self, Locked):
        self._Locked = Locked

    @property
    def LocalIpList(self):
        r"""<p>设备本地IP列表, 包括IP</p>
        :rtype: str
        """
        return self._LocalIpList

    @LocalIpList.setter
    def LocalIpList(self, LocalIpList):
        self._LocalIpList = LocalIpList

    @property
    def HostId(self):
        r"""<p>宿主机id（需要宿主机也安装iOA才能显示）</p>
        :rtype: int
        """
        return self._HostId

    @HostId.setter
    def HostId(self, HostId):
        self._HostId = HostId

    @property
    def GroupName(self):
        r"""<p>设备所属分组名</p>
        :rtype: str
        """
        return self._GroupName

    @GroupName.setter
    def GroupName(self, GroupName):
        self._GroupName = GroupName

    @property
    def GroupNamePath(self):
        r"""<p>设备所属分组路径</p>
        :rtype: str
        """
        return self._GroupNamePath

    @GroupNamePath.setter
    def GroupNamePath(self, GroupNamePath):
        self._GroupNamePath = GroupNamePath

    @property
    def CriticalVulListCount(self):
        r"""<p>未修复高危漏洞数(只支持32位)</p>
        :rtype: int
        """
        return self._CriticalVulListCount

    @CriticalVulListCount.setter
    def CriticalVulListCount(self, CriticalVulListCount):
        self._CriticalVulListCount = CriticalVulListCount

    @property
    def Os(self):
        r"""<p>操作系统名称</p>
        :rtype: str
        """
        return self._Os

    @Os.setter
    def Os(self, Os):
        self._Os = Os

    @property
    def OsBits(self):
        r"""<p>操作系统位数</p>
        :rtype: int
        """
        return self._OsBits

    @OsBits.setter
    def OsBits(self, OsBits):
        self._OsBits = OsBits

    @property
    def OsVersion(self):
        r"""<p>操作系统版本</p>
        :rtype: str
        """
        return self._OsVersion

    @OsVersion.setter
    def OsVersion(self, OsVersion):
        self._OsVersion = OsVersion

    @property
    def OsLanguage(self):
        r"""<p>操作系统语言</p>
        :rtype: str
        """
        return self._OsLanguage

    @OsLanguage.setter
    def OsLanguage(self, OsLanguage):
        self._OsLanguage = OsLanguage

    @property
    def OsInstallDate(self):
        r"""<p>操作系统安装时间</p>
        :rtype: str
        """
        return self._OsInstallDate

    @OsInstallDate.setter
    def OsInstallDate(self, OsInstallDate):
        self._OsInstallDate = OsInstallDate

    @property
    def ComputerName(self):
        r"""<p>设备名，和Name相同</p>
        :rtype: str
        """
        return self._ComputerName

    @ComputerName.setter
    def ComputerName(self, ComputerName):
        self._ComputerName = ComputerName

    @property
    def DomainName(self):
        r"""<p>登录域名</p>
        :rtype: str
        """
        return self._DomainName

    @DomainName.setter
    def DomainName(self, DomainName):
        self._DomainName = DomainName

    @property
    def MacAddr(self):
        r"""<p>MAC地址</p>
        :rtype: str
        """
        return self._MacAddr

    @MacAddr.setter
    def MacAddr(self, MacAddr):
        self._MacAddr = MacAddr

    @property
    def VulCount(self):
        r"""<p>漏洞数</p>
        :rtype: int
        """
        return self._VulCount

    @VulCount.setter
    def VulCount(self, VulCount):
        self._VulCount = VulCount

    @property
    def RiskCount(self):
        r"""<p>病毒风险数</p>
        :rtype: int
        """
        return self._RiskCount

    @RiskCount.setter
    def RiskCount(self, RiskCount):
        self._RiskCount = RiskCount

    @property
    def VirusVer(self):
        r"""<p>病毒库版本</p>
        :rtype: str
        """
        return self._VirusVer

    @VirusVer.setter
    def VirusVer(self, VirusVer):
        self._VirusVer = VirusVer

    @property
    def VulVersion(self):
        r"""<p>漏洞库版本</p>
        :rtype: str
        """
        return self._VulVersion

    @VulVersion.setter
    def VulVersion(self, VulVersion):
        self._VulVersion = VulVersion

    @property
    def SysRepVersion(self):
        r"""<p>系统修复引擎版本</p>
        :rtype: str
        """
        return self._SysRepVersion

    @SysRepVersion.setter
    def SysRepVersion(self, SysRepVersion):
        self._SysRepVersion = SysRepVersion

    @property
    def VulCriticalList(self):
        r"""<p>高危补丁列表</p>
        :rtype: list of str
        """
        return self._VulCriticalList

    @VulCriticalList.setter
    def VulCriticalList(self, VulCriticalList):
        self._VulCriticalList = VulCriticalList

    @property
    def Tags(self):
        r"""<p>标签</p>
        :rtype: str
        """
        return self._Tags

    @Tags.setter
    def Tags(self, Tags):
        self._Tags = Tags

    @property
    def UserName(self):
        r"""<p>终端用户名</p>
        :rtype: str
        """
        return self._UserName

    @UserName.setter
    def UserName(self, UserName):
        self._UserName = UserName

    @property
    def FirewallStatus(self):
        r"""<p>防火墙状态，不等于0表示开启</p>
        :rtype: int
        """
        return self._FirewallStatus

    @FirewallStatus.setter
    def FirewallStatus(self, FirewallStatus):
        self._FirewallStatus = FirewallStatus

    @property
    def SerialNum(self):
        r"""<p>SN序列号</p>
        :rtype: str
        """
        return self._SerialNum

    @SerialNum.setter
    def SerialNum(self, SerialNum):
        self._SerialNum = SerialNum

    @property
    def DeviceStrategyVer(self):
        r"""<p>设备管控策略版本</p>
        :rtype: str
        """
        return self._DeviceStrategyVer

    @DeviceStrategyVer.setter
    def DeviceStrategyVer(self, DeviceStrategyVer):
        self._DeviceStrategyVer = DeviceStrategyVer

    @property
    def NGNStrategyVer(self):
        r"""<p>NGN策略版本</p>
        :rtype: str
        """
        return self._NGNStrategyVer

    @NGNStrategyVer.setter
    def NGNStrategyVer(self, NGNStrategyVer):
        self._NGNStrategyVer = NGNStrategyVer

    @property
    def IOAUserName(self):
        r"""<p>最近登录账户的账号(账号系统用户账号)</p>
        :rtype: str
        """
        return self._IOAUserName

    @IOAUserName.setter
    def IOAUserName(self, IOAUserName):
        self._IOAUserName = IOAUserName

    @property
    def DeviceNewStrategyVer(self):
        r"""<p>设备管控新策略</p>
        :rtype: str
        """
        return self._DeviceNewStrategyVer

    @DeviceNewStrategyVer.setter
    def DeviceNewStrategyVer(self, DeviceNewStrategyVer):
        self._DeviceNewStrategyVer = DeviceNewStrategyVer

    @property
    def NGNNewStrategyVer(self):
        r"""<p>NGN策略新版本</p>
        :rtype: str
        """
        return self._NGNNewStrategyVer

    @NGNNewStrategyVer.setter
    def NGNNewStrategyVer(self, NGNNewStrategyVer):
        self._NGNNewStrategyVer = NGNNewStrategyVer

    @property
    def HostName(self):
        r"""<p>宿主机名称（需要宿主机也安装iOA才能显示）</p>
        :rtype: str
        """
        return self._HostName

    @HostName.setter
    def HostName(self, HostName):
        self._HostName = HostName

    @property
    def BaseBoardSn(self):
        r"""<p>主板序列号</p>
        :rtype: str
        """
        return self._BaseBoardSn

    @BaseBoardSn.setter
    def BaseBoardSn(self, BaseBoardSn):
        self._BaseBoardSn = BaseBoardSn

    @property
    def AccountUsers(self):
        r"""<p>绑定账户名称</p>
        :rtype: str
        """
        return self._AccountUsers

    @AccountUsers.setter
    def AccountUsers(self, AccountUsers):
        self._AccountUsers = AccountUsers

    @property
    def IdentityStrategyVer(self):
        r"""<p>身份策略版本</p>
        :rtype: str
        """
        return self._IdentityStrategyVer

    @IdentityStrategyVer.setter
    def IdentityStrategyVer(self, IdentityStrategyVer):
        self._IdentityStrategyVer = IdentityStrategyVer

    @property
    def IdentityNewStrategyVer(self):
        r"""<p>身份策略新版本</p>
        :rtype: str
        """
        return self._IdentityNewStrategyVer

    @IdentityNewStrategyVer.setter
    def IdentityNewStrategyVer(self, IdentityNewStrategyVer):
        self._IdentityNewStrategyVer = IdentityNewStrategyVer

    @property
    def AccountGroupName(self):
        r"""<p>最近登录账号部门</p>
        :rtype: str
        """
        return self._AccountGroupName

    @AccountGroupName.setter
    def AccountGroupName(self, AccountGroupName):
        self._AccountGroupName = AccountGroupName

    @property
    def AccountName(self):
        r"""<p>最近登录账户的姓名(账号系统用户姓名)</p>
        :rtype: str
        """
        return self._AccountName

    @AccountName.setter
    def AccountName(self, AccountName):
        self._AccountName = AccountName

    @property
    def AccountGroupId(self):
        r"""<p>账号组id</p>
        :rtype: int
        """
        return self._AccountGroupId

    @AccountGroupId.setter
    def AccountGroupId(self, AccountGroupId):
        self._AccountGroupId = AccountGroupId

    @property
    def ScreenRecordingPermission(self):
        r"""<p>是否开启录屏权限，仅macOS， 0： 未开启 、1： 开启</p>
        :rtype: int
        """
        return self._ScreenRecordingPermission

    @ScreenRecordingPermission.setter
    def ScreenRecordingPermission(self, ScreenRecordingPermission):
        self._ScreenRecordingPermission = ScreenRecordingPermission

    @property
    def DiskAccessPermission(self):
        r"""<p>是否开启磁盘访问权限，仅macOS， 0： 未开启、 1： 开启</p>
        :rtype: int
        """
        return self._DiskAccessPermission

    @DiskAccessPermission.setter
    def DiskAccessPermission(self, DiskAccessPermission):
        self._DiskAccessPermission = DiskAccessPermission

    @property
    def RemarkName(self):
        r"""<p>终端备注名</p>
        :rtype: str
        """
        return self._RemarkName

    @RemarkName.setter
    def RemarkName(self, RemarkName):
        self._RemarkName = RemarkName

    @property
    def BiosUuid(self):
        r"""<p>BiosUUID（启动盘标识符）</p>
        :rtype: str
        """
        return self._BiosUuid

    @BiosUuid.setter
    def BiosUuid(self, BiosUuid):
        self._BiosUuid = BiosUuid


    def _deserialize(self, params):
        self._Id = params.get("Id")
        self._Mid = params.get("Mid")
        self._Name = params.get("Name")
        self._GroupId = params.get("GroupId")
        self._OsType = params.get("OsType")
        self._Ip = params.get("Ip")
        self._OnlineStatus = params.get("OnlineStatus")
        self._Version = params.get("Version")
        self._StrVersion = params.get("StrVersion")
        self._Itime = params.get("Itime")
        self._ConnActiveTime = params.get("ConnActiveTime")
        self._Locked = params.get("Locked")
        self._LocalIpList = params.get("LocalIpList")
        self._HostId = params.get("HostId")
        self._GroupName = params.get("GroupName")
        self._GroupNamePath = params.get("GroupNamePath")
        self._CriticalVulListCount = params.get("CriticalVulListCount")
        self._Os = params.get("Os")
        self._OsBits = params.get("OsBits")
        self._OsVersion = params.get("OsVersion")
        self._OsLanguage = params.get("OsLanguage")
        self._OsInstallDate = params.get("OsInstallDate")
        self._ComputerName = params.get("ComputerName")
        self._DomainName = params.get("DomainName")
        self._MacAddr = params.get("MacAddr")
        self._VulCount = params.get("VulCount")
        self._RiskCount = params.get("RiskCount")
        self._VirusVer = params.get("VirusVer")
        self._VulVersion = params.get("VulVersion")
        self._SysRepVersion = params.get("SysRepVersion")
        self._VulCriticalList = params.get("VulCriticalList")
        self._Tags = params.get("Tags")
        self._UserName = params.get("UserName")
        self._FirewallStatus = params.get("FirewallStatus")
        self._SerialNum = params.get("SerialNum")
        self._DeviceStrategyVer = params.get("DeviceStrategyVer")
        self._NGNStrategyVer = params.get("NGNStrategyVer")
        self._IOAUserName = params.get("IOAUserName")
        self._DeviceNewStrategyVer = params.get("DeviceNewStrategyVer")
        self._NGNNewStrategyVer = params.get("NGNNewStrategyVer")
        self._HostName = params.get("HostName")
        self._BaseBoardSn = params.get("BaseBoardSn")
        self._AccountUsers = params.get("AccountUsers")
        self._IdentityStrategyVer = params.get("IdentityStrategyVer")
        self._IdentityNewStrategyVer = params.get("IdentityNewStrategyVer")
        self._AccountGroupName = params.get("AccountGroupName")
        self._AccountName = params.get("AccountName")
        self._AccountGroupId = params.get("AccountGroupId")
        self._ScreenRecordingPermission = params.get("ScreenRecordingPermission")
        self._DiskAccessPermission = params.get("DiskAccessPermission")
        self._RemarkName = params.get("RemarkName")
        self._BiosUuid = params.get("BiosUuid")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class DeviceDownloadTask(AbstractModel):
    r"""业务响应数据

    """

    def __init__(self):
        r"""
        :param _DownloadURL: 同步数据下载的url
        :type DownloadURL: str
        :param _TaskId: 异步任务id，需要根据id去任务中心下载
        :type TaskId: int
        """
        self._DownloadURL = None
        self._TaskId = None

    @property
    def DownloadURL(self):
        r"""同步数据下载的url
        :rtype: str
        """
        return self._DownloadURL

    @DownloadURL.setter
    def DownloadURL(self, DownloadURL):
        self._DownloadURL = DownloadURL

    @property
    def TaskId(self):
        r"""异步任务id，需要根据id去任务中心下载
        :rtype: int
        """
        return self._TaskId

    @TaskId.setter
    def TaskId(self, TaskId):
        self._TaskId = TaskId


    def _deserialize(self, params):
        self._DownloadURL = params.get("DownloadURL")
        self._TaskId = params.get("TaskId")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class DeviceGroupDetail(AbstractModel):
    r"""返回的数组列表

    """

    def __init__(self):
        r"""
        :param _Id: 设备组id
        :type Id: int
        :param _Name: 设备组名称
        :type Name: str
        :param _Description: 设备组描述
        :type Description: str
        :param _ParentId: 父节点id
        :type ParentId: int
        :param _IdPath: 基于id的节点路径
        :type IdPath: str
        :param _NamePath: 基于名称的节点路径
        :type NamePath: str
        :param _Locked: 分组锁定状态
        :type Locked: int
        :param _OsType: 系统类型（0: win，1：linux，2: mac，4：android，5：ios   ）
        :type OsType: int
        :param _Sort: 排序
        :type Sort: int
        :param _FromAuto: 是否自动调整
        :type FromAuto: int
        :param _Count: 子节点数量
        :type Count: int
        :param _Icon: 图标
        :type Icon: str
        :param _WithIp: 是否有ip
        :type WithIp: int
        :param _HasIp: 是否有组ip
        :type HasIp: bool
        :param _IsLeaf: 是否是叶子节点
        :type IsLeaf: bool
        :param _ReadOnly: 是否只读
        :type ReadOnly: bool
        :param _BindAccount: 对应绑定的账号id
        :type BindAccount: int
        :param _BindAccountName: 绑定账号的用户名
        :type BindAccountName: str
        """
        self._Id = None
        self._Name = None
        self._Description = None
        self._ParentId = None
        self._IdPath = None
        self._NamePath = None
        self._Locked = None
        self._OsType = None
        self._Sort = None
        self._FromAuto = None
        self._Count = None
        self._Icon = None
        self._WithIp = None
        self._HasIp = None
        self._IsLeaf = None
        self._ReadOnly = None
        self._BindAccount = None
        self._BindAccountName = None

    @property
    def Id(self):
        r"""设备组id
        :rtype: int
        """
        return self._Id

    @Id.setter
    def Id(self, Id):
        self._Id = Id

    @property
    def Name(self):
        r"""设备组名称
        :rtype: str
        """
        return self._Name

    @Name.setter
    def Name(self, Name):
        self._Name = Name

    @property
    def Description(self):
        r"""设备组描述
        :rtype: str
        """
        return self._Description

    @Description.setter
    def Description(self, Description):
        self._Description = Description

    @property
    def ParentId(self):
        r"""父节点id
        :rtype: int
        """
        return self._ParentId

    @ParentId.setter
    def ParentId(self, ParentId):
        self._ParentId = ParentId

    @property
    def IdPath(self):
        r"""基于id的节点路径
        :rtype: str
        """
        return self._IdPath

    @IdPath.setter
    def IdPath(self, IdPath):
        self._IdPath = IdPath

    @property
    def NamePath(self):
        r"""基于名称的节点路径
        :rtype: str
        """
        return self._NamePath

    @NamePath.setter
    def NamePath(self, NamePath):
        self._NamePath = NamePath

    @property
    def Locked(self):
        r"""分组锁定状态
        :rtype: int
        """
        return self._Locked

    @Locked.setter
    def Locked(self, Locked):
        self._Locked = Locked

    @property
    def OsType(self):
        r"""系统类型（0: win，1：linux，2: mac，4：android，5：ios   ）
        :rtype: int
        """
        return self._OsType

    @OsType.setter
    def OsType(self, OsType):
        self._OsType = OsType

    @property
    def Sort(self):
        r"""排序
        :rtype: int
        """
        return self._Sort

    @Sort.setter
    def Sort(self, Sort):
        self._Sort = Sort

    @property
    def FromAuto(self):
        r"""是否自动调整
        :rtype: int
        """
        return self._FromAuto

    @FromAuto.setter
    def FromAuto(self, FromAuto):
        self._FromAuto = FromAuto

    @property
    def Count(self):
        r"""子节点数量
        :rtype: int
        """
        return self._Count

    @Count.setter
    def Count(self, Count):
        self._Count = Count

    @property
    def Icon(self):
        r"""图标
        :rtype: str
        """
        return self._Icon

    @Icon.setter
    def Icon(self, Icon):
        self._Icon = Icon

    @property
    def WithIp(self):
        r"""是否有ip
        :rtype: int
        """
        return self._WithIp

    @WithIp.setter
    def WithIp(self, WithIp):
        self._WithIp = WithIp

    @property
    def HasIp(self):
        r"""是否有组ip
        :rtype: bool
        """
        return self._HasIp

    @HasIp.setter
    def HasIp(self, HasIp):
        self._HasIp = HasIp

    @property
    def IsLeaf(self):
        r"""是否是叶子节点
        :rtype: bool
        """
        return self._IsLeaf

    @IsLeaf.setter
    def IsLeaf(self, IsLeaf):
        self._IsLeaf = IsLeaf

    @property
    def ReadOnly(self):
        r"""是否只读
        :rtype: bool
        """
        return self._ReadOnly

    @ReadOnly.setter
    def ReadOnly(self, ReadOnly):
        self._ReadOnly = ReadOnly

    @property
    def BindAccount(self):
        r"""对应绑定的账号id
        :rtype: int
        """
        return self._BindAccount

    @BindAccount.setter
    def BindAccount(self, BindAccount):
        self._BindAccount = BindAccount

    @property
    def BindAccountName(self):
        r"""绑定账号的用户名
        :rtype: str
        """
        return self._BindAccountName

    @BindAccountName.setter
    def BindAccountName(self, BindAccountName):
        self._BindAccountName = BindAccountName


    def _deserialize(self, params):
        self._Id = params.get("Id")
        self._Name = params.get("Name")
        self._Description = params.get("Description")
        self._ParentId = params.get("ParentId")
        self._IdPath = params.get("IdPath")
        self._NamePath = params.get("NamePath")
        self._Locked = params.get("Locked")
        self._OsType = params.get("OsType")
        self._Sort = params.get("Sort")
        self._FromAuto = params.get("FromAuto")
        self._Count = params.get("Count")
        self._Icon = params.get("Icon")
        self._WithIp = params.get("WithIp")
        self._HasIp = params.get("HasIp")
        self._IsLeaf = params.get("IsLeaf")
        self._ReadOnly = params.get("ReadOnly")
        self._BindAccount = params.get("BindAccount")
        self._BindAccountName = params.get("BindAccountName")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class DeviceNetworkInfo(AbstractModel):
    r"""分页的具体数据对象

    """

    def __init__(self):
        r"""
        :param _LocalAddr: 本地地址
注意：此字段可能返回 null，表示取不到有效值。
        :type LocalAddr: str
        :param _LocalPort: 本地端口
注意：此字段可能返回 null，表示取不到有效值。
        :type LocalPort: int
        :param _ProcessId: 进程id
注意：此字段可能返回 null，表示取不到有效值。
        :type ProcessId: int
        :param _ProcessName: 进程名称
注意：此字段可能返回 null，表示取不到有效值。
        :type ProcessName: str
        :param _Protocol: 协议
注意：此字段可能返回 null，表示取不到有效值。
        :type Protocol: str
        :param _RemoteAddr: 远程地址
注意：此字段可能返回 null，表示取不到有效值。
        :type RemoteAddr: str
        :param _RemotePort: 远程端口
注意：此字段可能返回 null，表示取不到有效值。
        :type RemotePort: int
        :param _State: 状态
注意：此字段可能返回 null，表示取不到有效值。
        :type State: int
        """
        self._LocalAddr = None
        self._LocalPort = None
        self._ProcessId = None
        self._ProcessName = None
        self._Protocol = None
        self._RemoteAddr = None
        self._RemotePort = None
        self._State = None

    @property
    def LocalAddr(self):
        r"""本地地址
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._LocalAddr

    @LocalAddr.setter
    def LocalAddr(self, LocalAddr):
        self._LocalAddr = LocalAddr

    @property
    def LocalPort(self):
        r"""本地端口
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: int
        """
        return self._LocalPort

    @LocalPort.setter
    def LocalPort(self, LocalPort):
        self._LocalPort = LocalPort

    @property
    def ProcessId(self):
        r"""进程id
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: int
        """
        return self._ProcessId

    @ProcessId.setter
    def ProcessId(self, ProcessId):
        self._ProcessId = ProcessId

    @property
    def ProcessName(self):
        r"""进程名称
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._ProcessName

    @ProcessName.setter
    def ProcessName(self, ProcessName):
        self._ProcessName = ProcessName

    @property
    def Protocol(self):
        r"""协议
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._Protocol

    @Protocol.setter
    def Protocol(self, Protocol):
        self._Protocol = Protocol

    @property
    def RemoteAddr(self):
        r"""远程地址
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._RemoteAddr

    @RemoteAddr.setter
    def RemoteAddr(self, RemoteAddr):
        self._RemoteAddr = RemoteAddr

    @property
    def RemotePort(self):
        r"""远程端口
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: int
        """
        return self._RemotePort

    @RemotePort.setter
    def RemotePort(self, RemotePort):
        self._RemotePort = RemotePort

    @property
    def State(self):
        r"""状态
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: int
        """
        return self._State

    @State.setter
    def State(self, State):
        self._State = State


    def _deserialize(self, params):
        self._LocalAddr = params.get("LocalAddr")
        self._LocalPort = params.get("LocalPort")
        self._ProcessId = params.get("ProcessId")
        self._ProcessName = params.get("ProcessName")
        self._Protocol = params.get("Protocol")
        self._RemoteAddr = params.get("RemoteAddr")
        self._RemotePort = params.get("RemotePort")
        self._State = params.get("State")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class DeviceProcessInfo(AbstractModel):
    r"""分页的具体数据对象

    """

    def __init__(self):
        r"""
        :param _CmdLine: 命令行
注意：此字段可能返回 null，表示取不到有效值。
        :type CmdLine: str
        :param _Memory: 内存
注意：此字段可能返回 null，表示取不到有效值。
        :type Memory: str
        :param _Name: 名称
注意：此字段可能返回 null，表示取不到有效值。
        :type Name: str
        :param _Path: 路径
注意：此字段可能返回 null，表示取不到有效值。
        :type Path: str
        :param _ProcessId: 进程id
注意：此字段可能返回 null，表示取不到有效值。
        :type ProcessId: int
        :param _User: 启动用户
注意：此字段可能返回 null，表示取不到有效值。
        :type User: str
        """
        self._CmdLine = None
        self._Memory = None
        self._Name = None
        self._Path = None
        self._ProcessId = None
        self._User = None

    @property
    def CmdLine(self):
        r"""命令行
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._CmdLine

    @CmdLine.setter
    def CmdLine(self, CmdLine):
        self._CmdLine = CmdLine

    @property
    def Memory(self):
        r"""内存
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._Memory

    @Memory.setter
    def Memory(self, Memory):
        self._Memory = Memory

    @property
    def Name(self):
        r"""名称
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._Name

    @Name.setter
    def Name(self, Name):
        self._Name = Name

    @property
    def Path(self):
        r"""路径
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._Path

    @Path.setter
    def Path(self, Path):
        self._Path = Path

    @property
    def ProcessId(self):
        r"""进程id
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: int
        """
        return self._ProcessId

    @ProcessId.setter
    def ProcessId(self, ProcessId):
        self._ProcessId = ProcessId

    @property
    def User(self):
        r"""启动用户
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._User

    @User.setter
    def User(self, User):
        self._User = User


    def _deserialize(self, params):
        self._CmdLine = params.get("CmdLine")
        self._Memory = params.get("Memory")
        self._Name = params.get("Name")
        self._Path = params.get("Path")
        self._ProcessId = params.get("ProcessId")
        self._User = params.get("User")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class DeviceServiceInfo(AbstractModel):
    r"""分页的具体数据对象

    """

    def __init__(self):
        r"""
        :param _CmdLine: 命令行
注意：此字段可能返回 null，表示取不到有效值。
        :type CmdLine: str
        :param _Description: 内存
注意：此字段可能返回 null，表示取不到有效值。
        :type Description: str
        :param _Name: 名称
注意：此字段可能返回 null，表示取不到有效值。
        :type Name: str
        :param _ProcessId: 进程id
注意：此字段可能返回 null，表示取不到有效值。
        :type ProcessId: int
        :param _StartType: 启动类型
注意：此字段可能返回 null，表示取不到有效值。
        :type StartType: int
        :param _State: 状态
注意：此字段可能返回 null，表示取不到有效值。
        :type State: int
        :param _User: 启动用户
注意：此字段可能返回 null，表示取不到有效值。
        :type User: str
        """
        self._CmdLine = None
        self._Description = None
        self._Name = None
        self._ProcessId = None
        self._StartType = None
        self._State = None
        self._User = None

    @property
    def CmdLine(self):
        r"""命令行
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._CmdLine

    @CmdLine.setter
    def CmdLine(self, CmdLine):
        self._CmdLine = CmdLine

    @property
    def Description(self):
        r"""内存
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._Description

    @Description.setter
    def Description(self, Description):
        self._Description = Description

    @property
    def Name(self):
        r"""名称
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._Name

    @Name.setter
    def Name(self, Name):
        self._Name = Name

    @property
    def ProcessId(self):
        r"""进程id
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: int
        """
        return self._ProcessId

    @ProcessId.setter
    def ProcessId(self, ProcessId):
        self._ProcessId = ProcessId

    @property
    def StartType(self):
        r"""启动类型
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: int
        """
        return self._StartType

    @StartType.setter
    def StartType(self, StartType):
        self._StartType = StartType

    @property
    def State(self):
        r"""状态
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: int
        """
        return self._State

    @State.setter
    def State(self, State):
        self._State = State

    @property
    def User(self):
        r"""启动用户
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._User

    @User.setter
    def User(self, User):
        self._User = User


    def _deserialize(self, params):
        self._CmdLine = params.get("CmdLine")
        self._Description = params.get("Description")
        self._Name = params.get("Name")
        self._ProcessId = params.get("ProcessId")
        self._StartType = params.get("StartType")
        self._State = params.get("State")
        self._User = params.get("User")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class DeviceVirtualDeviceGroupsDetail(AbstractModel):
    r"""终端自定义分组列表数据

    """

    def __init__(self):
        r"""
        :param _Id: 终端自定义分组id
        :type Id: int
        :param _DeviceVirtualGroupName: 自定义分组名称
        :type DeviceVirtualGroupName: str
        :param _DeviceCount: 设备数
        :type DeviceCount: int
        :param _OsType: 系统类型（0: win，1：linux，2: mac，4：android，5：ios  ）
        :type OsType: int
        :param _Itime: 创建时间
        :type Itime: str
        :param _Utime: 更新时间
        :type Utime: str
        """
        self._Id = None
        self._DeviceVirtualGroupName = None
        self._DeviceCount = None
        self._OsType = None
        self._Itime = None
        self._Utime = None

    @property
    def Id(self):
        r"""终端自定义分组id
        :rtype: int
        """
        return self._Id

    @Id.setter
    def Id(self, Id):
        self._Id = Id

    @property
    def DeviceVirtualGroupName(self):
        r"""自定义分组名称
        :rtype: str
        """
        return self._DeviceVirtualGroupName

    @DeviceVirtualGroupName.setter
    def DeviceVirtualGroupName(self, DeviceVirtualGroupName):
        self._DeviceVirtualGroupName = DeviceVirtualGroupName

    @property
    def DeviceCount(self):
        r"""设备数
        :rtype: int
        """
        return self._DeviceCount

    @DeviceCount.setter
    def DeviceCount(self, DeviceCount):
        self._DeviceCount = DeviceCount

    @property
    def OsType(self):
        r"""系统类型（0: win，1：linux，2: mac，4：android，5：ios  ）
        :rtype: int
        """
        return self._OsType

    @OsType.setter
    def OsType(self, OsType):
        self._OsType = OsType

    @property
    def Itime(self):
        r"""创建时间
        :rtype: str
        """
        return self._Itime

    @Itime.setter
    def Itime(self, Itime):
        self._Itime = Itime

    @property
    def Utime(self):
        r"""更新时间
        :rtype: str
        """
        return self._Utime

    @Utime.setter
    def Utime(self, Utime):
        self._Utime = Utime


    def _deserialize(self, params):
        self._Id = params.get("Id")
        self._DeviceVirtualGroupName = params.get("DeviceVirtualGroupName")
        self._DeviceCount = params.get("DeviceCount")
        self._OsType = params.get("OsType")
        self._Itime = params.get("Itime")
        self._Utime = params.get("Utime")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class DirectoryConfigData(AbstractModel):
    r"""企业目录的配置数据

    """

    def __init__(self):
        r"""
        :param _Id: <p>企业目录 ID</p>
        :type Id: int
        :param _Type: <p>目录对应身份源类型</p><p>枚举值：</p><ul><li>WeCom： 企业微信</li><li>Lark： 飞书</li><li>DingTalk： 钉钉</li><li>MicrosoftEntraID： 微软 AAD</li></ul>
        :type Type: str
        :param _Name: <p>企业目录名称</p>
        :type Name: str
        :param _Config: <p>使用 JSON 字符串表示的配置信息</p>
        :type Config: str
        :param _SyncEnable: <p>是否开启了定时同步</p>
        :type SyncEnable: bool
        :param _SyncPolicy: <p>定时同步的策略</p><p>枚举值：</p><ul><li>4hours： 按创建时间开始的每 4 小时</li><li>daily： 每日</li><li>weekly： 每周</li></ul>
        :type SyncPolicy: str
        :param _SyncPolicyParams: <p>JSON 字符串，针对不同类型的同步策略，提取对应不同的值</p>
        :type SyncPolicyParams: str
        :param _CreateAuthConfig: <p>是否配置了同步创建认证配置</p>
        :type CreateAuthConfig: bool
        :param _Description: <p>描述</p>
        :type Description: str
        :param _SourceId: <p>对应 Config 的配置 ID</p>
        :type SourceId: str
        :param _DisplayOnLoginPage: <p>是否在登录页展示</p>
        :type DisplayOnLoginPage: bool
        """
        self._Id = None
        self._Type = None
        self._Name = None
        self._Config = None
        self._SyncEnable = None
        self._SyncPolicy = None
        self._SyncPolicyParams = None
        self._CreateAuthConfig = None
        self._Description = None
        self._SourceId = None
        self._DisplayOnLoginPage = None

    @property
    def Id(self):
        r"""<p>企业目录 ID</p>
        :rtype: int
        """
        return self._Id

    @Id.setter
    def Id(self, Id):
        self._Id = Id

    @property
    def Type(self):
        r"""<p>目录对应身份源类型</p><p>枚举值：</p><ul><li>WeCom： 企业微信</li><li>Lark： 飞书</li><li>DingTalk： 钉钉</li><li>MicrosoftEntraID： 微软 AAD</li></ul>
        :rtype: str
        """
        return self._Type

    @Type.setter
    def Type(self, Type):
        self._Type = Type

    @property
    def Name(self):
        r"""<p>企业目录名称</p>
        :rtype: str
        """
        return self._Name

    @Name.setter
    def Name(self, Name):
        self._Name = Name

    @property
    def Config(self):
        r"""<p>使用 JSON 字符串表示的配置信息</p>
        :rtype: str
        """
        return self._Config

    @Config.setter
    def Config(self, Config):
        self._Config = Config

    @property
    def SyncEnable(self):
        r"""<p>是否开启了定时同步</p>
        :rtype: bool
        """
        return self._SyncEnable

    @SyncEnable.setter
    def SyncEnable(self, SyncEnable):
        self._SyncEnable = SyncEnable

    @property
    def SyncPolicy(self):
        r"""<p>定时同步的策略</p><p>枚举值：</p><ul><li>4hours： 按创建时间开始的每 4 小时</li><li>daily： 每日</li><li>weekly： 每周</li></ul>
        :rtype: str
        """
        return self._SyncPolicy

    @SyncPolicy.setter
    def SyncPolicy(self, SyncPolicy):
        self._SyncPolicy = SyncPolicy

    @property
    def SyncPolicyParams(self):
        r"""<p>JSON 字符串，针对不同类型的同步策略，提取对应不同的值</p>
        :rtype: str
        """
        return self._SyncPolicyParams

    @SyncPolicyParams.setter
    def SyncPolicyParams(self, SyncPolicyParams):
        self._SyncPolicyParams = SyncPolicyParams

    @property
    def CreateAuthConfig(self):
        r"""<p>是否配置了同步创建认证配置</p>
        :rtype: bool
        """
        return self._CreateAuthConfig

    @CreateAuthConfig.setter
    def CreateAuthConfig(self, CreateAuthConfig):
        self._CreateAuthConfig = CreateAuthConfig

    @property
    def Description(self):
        r"""<p>描述</p>
        :rtype: str
        """
        return self._Description

    @Description.setter
    def Description(self, Description):
        self._Description = Description

    @property
    def SourceId(self):
        r"""<p>对应 Config 的配置 ID</p>
        :rtype: str
        """
        return self._SourceId

    @SourceId.setter
    def SourceId(self, SourceId):
        self._SourceId = SourceId

    @property
    def DisplayOnLoginPage(self):
        r"""<p>是否在登录页展示</p>
        :rtype: bool
        """
        return self._DisplayOnLoginPage

    @DisplayOnLoginPage.setter
    def DisplayOnLoginPage(self, DisplayOnLoginPage):
        self._DisplayOnLoginPage = DisplayOnLoginPage


    def _deserialize(self, params):
        self._Id = params.get("Id")
        self._Type = params.get("Type")
        self._Name = params.get("Name")
        self._Config = params.get("Config")
        self._SyncEnable = params.get("SyncEnable")
        self._SyncPolicy = params.get("SyncPolicy")
        self._SyncPolicyParams = params.get("SyncPolicyParams")
        self._CreateAuthConfig = params.get("CreateAuthConfig")
        self._Description = params.get("Description")
        self._SourceId = params.get("SourceId")
        self._DisplayOnLoginPage = params.get("DisplayOnLoginPage")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class DirectoryConfigResultData(AbstractModel):
    r"""创建/编辑企业目录配置之后返回结果数据

    """

    def __init__(self):
        r"""
        :param _Id: <p>企业目录 ID</p>
        :type Id: int
        :param _Name: <p>企业目录名称</p>
        :type Name: str
        :param _IdentifySourceId: <p>身份源配置 ID</p>
        :type IdentifySourceId: str
        :param _CreateAuthConfig: <p>是否同步创建了认证配置</p>
        :type CreateAuthConfig: bool
        :param _AuthSourceId: <p>认证源配置 ID</p>
        :type AuthSourceId: str
        :param _AuthConfigId: <p>认证配置 ID</p>
        :type AuthConfigId: int
        :param _AuthPolicyId: <p>认证策略 ID</p>
        :type AuthPolicyId: int
        :param _AuthSupportPlatforms: <p>认证支持的平台, PC 或 Mobile</p>
        :type AuthSupportPlatforms: list of str
        :param _AuthMethods: <p>认证方式，授权认证/扫码认证 等</p>
        :type AuthMethods: list of str
        """
        self._Id = None
        self._Name = None
        self._IdentifySourceId = None
        self._CreateAuthConfig = None
        self._AuthSourceId = None
        self._AuthConfigId = None
        self._AuthPolicyId = None
        self._AuthSupportPlatforms = None
        self._AuthMethods = None

    @property
    def Id(self):
        r"""<p>企业目录 ID</p>
        :rtype: int
        """
        return self._Id

    @Id.setter
    def Id(self, Id):
        self._Id = Id

    @property
    def Name(self):
        r"""<p>企业目录名称</p>
        :rtype: str
        """
        return self._Name

    @Name.setter
    def Name(self, Name):
        self._Name = Name

    @property
    def IdentifySourceId(self):
        r"""<p>身份源配置 ID</p>
        :rtype: str
        """
        return self._IdentifySourceId

    @IdentifySourceId.setter
    def IdentifySourceId(self, IdentifySourceId):
        self._IdentifySourceId = IdentifySourceId

    @property
    def CreateAuthConfig(self):
        r"""<p>是否同步创建了认证配置</p>
        :rtype: bool
        """
        return self._CreateAuthConfig

    @CreateAuthConfig.setter
    def CreateAuthConfig(self, CreateAuthConfig):
        self._CreateAuthConfig = CreateAuthConfig

    @property
    def AuthSourceId(self):
        r"""<p>认证源配置 ID</p>
        :rtype: str
        """
        return self._AuthSourceId

    @AuthSourceId.setter
    def AuthSourceId(self, AuthSourceId):
        self._AuthSourceId = AuthSourceId

    @property
    def AuthConfigId(self):
        r"""<p>认证配置 ID</p>
        :rtype: int
        """
        return self._AuthConfigId

    @AuthConfigId.setter
    def AuthConfigId(self, AuthConfigId):
        self._AuthConfigId = AuthConfigId

    @property
    def AuthPolicyId(self):
        r"""<p>认证策略 ID</p>
        :rtype: int
        """
        return self._AuthPolicyId

    @AuthPolicyId.setter
    def AuthPolicyId(self, AuthPolicyId):
        self._AuthPolicyId = AuthPolicyId

    @property
    def AuthSupportPlatforms(self):
        r"""<p>认证支持的平台, PC 或 Mobile</p>
        :rtype: list of str
        """
        return self._AuthSupportPlatforms

    @AuthSupportPlatforms.setter
    def AuthSupportPlatforms(self, AuthSupportPlatforms):
        self._AuthSupportPlatforms = AuthSupportPlatforms

    @property
    def AuthMethods(self):
        r"""<p>认证方式，授权认证/扫码认证 等</p>
        :rtype: list of str
        """
        return self._AuthMethods

    @AuthMethods.setter
    def AuthMethods(self, AuthMethods):
        self._AuthMethods = AuthMethods


    def _deserialize(self, params):
        self._Id = params.get("Id")
        self._Name = params.get("Name")
        self._IdentifySourceId = params.get("IdentifySourceId")
        self._CreateAuthConfig = params.get("CreateAuthConfig")
        self._AuthSourceId = params.get("AuthSourceId")
        self._AuthConfigId = params.get("AuthConfigId")
        self._AuthPolicyId = params.get("AuthPolicyId")
        self._AuthSupportPlatforms = params.get("AuthSupportPlatforms")
        self._AuthMethods = params.get("AuthMethods")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class ExportDeviceDownloadTaskRequest(AbstractModel):
    r"""ExportDeviceDownloadTask请求参数结构体

    """

    def __init__(self):
        r"""
        :param _OsType: 系统类型（0: win，1：linux，2: mac，4：android，5：ios，-1：全系统（SaaS一体化版本） ； 不传默认为0）(只支持32位)
        :type OsType: int
        :param _DomainInstanceId: 管理域实例ID，用于CAM管理域权限分配。若企业未进行管理域的划分，可直接传入根域"1"，此时表示针对当前企业的全部设备和账号进行接口CRUD，具体CRUD的影响范围限制于相应接口的入参。
        :type DomainInstanceId: str
        :param _GroupId: 分组id
        :type GroupId: int
        :param _OnlineStatus:  在线状态 2 在线 0，1 离线
        :type OnlineStatus: int
        :param _ExportOrder: 导出顺序，接口返回的数据字段
        :type ExportOrder: str
        :param _ExportType:  导出类型， 0：终端树；7:硬件信息列表导出；
        :type ExportType: int
        :param _Condition: 过滤条件。同DescribeDevices接口
        :type Condition: :class:`tencentcloud.ioa.v20220601.models.Condition`
        """
        self._OsType = None
        self._DomainInstanceId = None
        self._GroupId = None
        self._OnlineStatus = None
        self._ExportOrder = None
        self._ExportType = None
        self._Condition = None

    @property
    def OsType(self):
        r"""系统类型（0: win，1：linux，2: mac，4：android，5：ios，-1：全系统（SaaS一体化版本） ； 不传默认为0）(只支持32位)
        :rtype: int
        """
        return self._OsType

    @OsType.setter
    def OsType(self, OsType):
        self._OsType = OsType

    @property
    def DomainInstanceId(self):
        r"""管理域实例ID，用于CAM管理域权限分配。若企业未进行管理域的划分，可直接传入根域"1"，此时表示针对当前企业的全部设备和账号进行接口CRUD，具体CRUD的影响范围限制于相应接口的入参。
        :rtype: str
        """
        return self._DomainInstanceId

    @DomainInstanceId.setter
    def DomainInstanceId(self, DomainInstanceId):
        self._DomainInstanceId = DomainInstanceId

    @property
    def GroupId(self):
        r"""分组id
        :rtype: int
        """
        return self._GroupId

    @GroupId.setter
    def GroupId(self, GroupId):
        self._GroupId = GroupId

    @property
    def OnlineStatus(self):
        r""" 在线状态 2 在线 0，1 离线
        :rtype: int
        """
        return self._OnlineStatus

    @OnlineStatus.setter
    def OnlineStatus(self, OnlineStatus):
        self._OnlineStatus = OnlineStatus

    @property
    def ExportOrder(self):
        r"""导出顺序，接口返回的数据字段
        :rtype: str
        """
        return self._ExportOrder

    @ExportOrder.setter
    def ExportOrder(self, ExportOrder):
        self._ExportOrder = ExportOrder

    @property
    def ExportType(self):
        r""" 导出类型， 0：终端树；7:硬件信息列表导出；
        :rtype: int
        """
        return self._ExportType

    @ExportType.setter
    def ExportType(self, ExportType):
        self._ExportType = ExportType

    @property
    def Condition(self):
        r"""过滤条件。同DescribeDevices接口
        :rtype: :class:`tencentcloud.ioa.v20220601.models.Condition`
        """
        return self._Condition

    @Condition.setter
    def Condition(self, Condition):
        self._Condition = Condition


    def _deserialize(self, params):
        self._OsType = params.get("OsType")
        self._DomainInstanceId = params.get("DomainInstanceId")
        self._GroupId = params.get("GroupId")
        self._OnlineStatus = params.get("OnlineStatus")
        self._ExportOrder = params.get("ExportOrder")
        self._ExportType = params.get("ExportType")
        if params.get("Condition") is not None:
            self._Condition = Condition()
            self._Condition._deserialize(params.get("Condition"))
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class ExportDeviceDownloadTaskResponse(AbstractModel):
    r"""ExportDeviceDownloadTask返回参数结构体

    """

    def __init__(self):
        r"""
        :param _Data: 业务响应数据
        :type Data: :class:`tencentcloud.ioa.v20220601.models.DeviceDownloadTask`
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._Data = None
        self._RequestId = None

    @property
    def Data(self):
        r"""业务响应数据
        :rtype: :class:`tencentcloud.ioa.v20220601.models.DeviceDownloadTask`
        """
        return self._Data

    @Data.setter
    def Data(self, Data):
        self._Data = Data

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        if params.get("Data") is not None:
            self._Data = DeviceDownloadTask()
            self._Data._deserialize(params.get("Data"))
        self._RequestId = params.get("RequestId")


class ExportSoftwareDownloadUrlRspData(AbstractModel):
    r"""业务响应数据

    """

    def __init__(self):
        r"""
        :param _DownloadURL: 下载的url
注意：此字段可能返回 null，表示取不到有效值。
        :type DownloadURL: str
        :param _TaskId: 超过一定时间走异步任务
        :type TaskId: int
        """
        self._DownloadURL = None
        self._TaskId = None

    @property
    def DownloadURL(self):
        r"""下载的url
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._DownloadURL

    @DownloadURL.setter
    def DownloadURL(self, DownloadURL):
        self._DownloadURL = DownloadURL

    @property
    def TaskId(self):
        r"""超过一定时间走异步任务
        :rtype: int
        """
        return self._TaskId

    @TaskId.setter
    def TaskId(self, TaskId):
        self._TaskId = TaskId


    def _deserialize(self, params):
        self._DownloadURL = params.get("DownloadURL")
        self._TaskId = params.get("TaskId")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class ExportSoftwareInformationListRequest(AbstractModel):
    r"""ExportSoftwareInformationList请求参数结构体

    """

    def __init__(self):
        r"""
        :param _Mid: 终端唯一标识Mid
        :type Mid: str
        :param _Condition: 过滤条件、分页参数
<li>Name - String - 过滤支持：是 - 操作符:eq,like - 排序支持：是 。</li>
        :type Condition: :class:`tencentcloud.ioa.v20220601.models.Condition`
        :param _OsType: 系统类型0:win 2:mac
        :type OsType: int
        """
        self._Mid = None
        self._Condition = None
        self._OsType = None

    @property
    def Mid(self):
        r"""终端唯一标识Mid
        :rtype: str
        """
        return self._Mid

    @Mid.setter
    def Mid(self, Mid):
        self._Mid = Mid

    @property
    def Condition(self):
        r"""过滤条件、分页参数
<li>Name - String - 过滤支持：是 - 操作符:eq,like - 排序支持：是 。</li>
        :rtype: :class:`tencentcloud.ioa.v20220601.models.Condition`
        """
        return self._Condition

    @Condition.setter
    def Condition(self, Condition):
        self._Condition = Condition

    @property
    def OsType(self):
        r"""系统类型0:win 2:mac
        :rtype: int
        """
        return self._OsType

    @OsType.setter
    def OsType(self, OsType):
        self._OsType = OsType


    def _deserialize(self, params):
        self._Mid = params.get("Mid")
        if params.get("Condition") is not None:
            self._Condition = Condition()
            self._Condition._deserialize(params.get("Condition"))
        self._OsType = params.get("OsType")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class ExportSoftwareInformationListResponse(AbstractModel):
    r"""ExportSoftwareInformationList返回参数结构体

    """

    def __init__(self):
        r"""
        :param _Data: 业务响应数据
        :type Data: :class:`tencentcloud.ioa.v20220601.models.ExportSoftwareDownloadUrlRspData`
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._Data = None
        self._RequestId = None

    @property
    def Data(self):
        r"""业务响应数据
        :rtype: :class:`tencentcloud.ioa.v20220601.models.ExportSoftwareDownloadUrlRspData`
        """
        return self._Data

    @Data.setter
    def Data(self, Data):
        self._Data = Data

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        if params.get("Data") is not None:
            self._Data = ExportSoftwareDownloadUrlRspData()
            self._Data._deserialize(params.get("Data"))
        self._RequestId = params.get("RequestId")


class Filter(AbstractModel):
    r"""Filters 条件过滤

    """

    def __init__(self):
        r"""
        :param _Field: 过滤字段
        :type Field: str
        :param _Operator: 过滤方式： eq:等于,net:不等于,like,nlike,gt:大于,lt:小于,egt:大于等于,elt:小于等于。具体支持哪些过滤方式，结合具体接口字段描述来定
        :type Operator: str
        :param _Values: 过滤条件
        :type Values: list of str
        """
        self._Field = None
        self._Operator = None
        self._Values = None

    @property
    def Field(self):
        r"""过滤字段
        :rtype: str
        """
        return self._Field

    @Field.setter
    def Field(self, Field):
        self._Field = Field

    @property
    def Operator(self):
        r"""过滤方式： eq:等于,net:不等于,like,nlike,gt:大于,lt:小于,egt:大于等于,elt:小于等于。具体支持哪些过滤方式，结合具体接口字段描述来定
        :rtype: str
        """
        return self._Operator

    @Operator.setter
    def Operator(self, Operator):
        self._Operator = Operator

    @property
    def Values(self):
        r"""过滤条件
        :rtype: list of str
        """
        return self._Values

    @Values.setter
    def Values(self, Values):
        self._Values = Values


    def _deserialize(self, params):
        self._Field = params.get("Field")
        self._Operator = params.get("Operator")
        self._Values = params.get("Values")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class FilterGroup(AbstractModel):
    r"""FilterGroups 条件过滤组

    """

    def __init__(self):
        r"""
        :param _Filters: Filters 条件过滤
        :type Filters: list of Filter
        """
        self._Filters = None

    @property
    def Filters(self):
        r"""Filters 条件过滤
        :rtype: list of Filter
        """
        return self._Filters

    @Filters.setter
    def Filters(self, Filters):
        self._Filters = Filters


    def _deserialize(self, params):
        if params.get("Filters") is not None:
            self._Filters = []
            for item in params.get("Filters"):
                obj = Filter()
                obj._deserialize(item)
                self._Filters.append(obj)
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class GetAccountGroupData(AbstractModel):
    r"""账号分组详情响应数据

    """

    def __init__(self):
        r"""
        :param _NamePath: 分组名称全路径，点分格式
        :type NamePath: str
        :param _IdPathArr: 分组ID全路径，数组格式
        :type IdPathArr: list of int
        :param _ExtraInfo: 分组扩展信息
        :type ExtraInfo: str
        :param _Utime: 最后更新时间
        :type Utime: str
        :param _ParentId: 当前分组的父分组ID
        :type ParentId: int
        :param _OrgId: 源账号组ID，该字段仅适用于第三方同步的组织架构，通过OrgId-Id构成源组织架构分组ID-现组织架构分组ID映射关系
        :type OrgId: str
        :param _Name: 分组名称
        :type Name: str
        :param _Id: 分组ID
        :type Id: int
        :param _Description: 分组描述
        :type Description: str
        :param _Source: 分组导入源(只支持32位)
        :type Source: int
        :param _IdPath: 分组ID全路径，点分格式
        :type IdPath: str
        :param _Itime: 创建时间
        :type Itime: str
        :param _ParentOrgId: 父源账号组ID，该字段仅适用于第三方同步的组织架构
        :type ParentOrgId: str
        :param _Import: 导入信息,json格式
        :type Import: str
        :param _ImportEnable: 是否开启导入架构
        :type ImportEnable: bool
        :param _ImportType: 导入类型
        :type ImportType: str
        :param _MiniIamId: miniIAMId，MiniIAM源才有
        :type MiniIamId: str
        """
        self._NamePath = None
        self._IdPathArr = None
        self._ExtraInfo = None
        self._Utime = None
        self._ParentId = None
        self._OrgId = None
        self._Name = None
        self._Id = None
        self._Description = None
        self._Source = None
        self._IdPath = None
        self._Itime = None
        self._ParentOrgId = None
        self._Import = None
        self._ImportEnable = None
        self._ImportType = None
        self._MiniIamId = None

    @property
    def NamePath(self):
        r"""分组名称全路径，点分格式
        :rtype: str
        """
        return self._NamePath

    @NamePath.setter
    def NamePath(self, NamePath):
        self._NamePath = NamePath

    @property
    def IdPathArr(self):
        r"""分组ID全路径，数组格式
        :rtype: list of int
        """
        return self._IdPathArr

    @IdPathArr.setter
    def IdPathArr(self, IdPathArr):
        self._IdPathArr = IdPathArr

    @property
    def ExtraInfo(self):
        r"""分组扩展信息
        :rtype: str
        """
        return self._ExtraInfo

    @ExtraInfo.setter
    def ExtraInfo(self, ExtraInfo):
        self._ExtraInfo = ExtraInfo

    @property
    def Utime(self):
        r"""最后更新时间
        :rtype: str
        """
        return self._Utime

    @Utime.setter
    def Utime(self, Utime):
        self._Utime = Utime

    @property
    def ParentId(self):
        r"""当前分组的父分组ID
        :rtype: int
        """
        return self._ParentId

    @ParentId.setter
    def ParentId(self, ParentId):
        self._ParentId = ParentId

    @property
    def OrgId(self):
        r"""源账号组ID，该字段仅适用于第三方同步的组织架构，通过OrgId-Id构成源组织架构分组ID-现组织架构分组ID映射关系
        :rtype: str
        """
        return self._OrgId

    @OrgId.setter
    def OrgId(self, OrgId):
        self._OrgId = OrgId

    @property
    def Name(self):
        r"""分组名称
        :rtype: str
        """
        return self._Name

    @Name.setter
    def Name(self, Name):
        self._Name = Name

    @property
    def Id(self):
        r"""分组ID
        :rtype: int
        """
        return self._Id

    @Id.setter
    def Id(self, Id):
        self._Id = Id

    @property
    def Description(self):
        r"""分组描述
        :rtype: str
        """
        return self._Description

    @Description.setter
    def Description(self, Description):
        self._Description = Description

    @property
    def Source(self):
        r"""分组导入源(只支持32位)
        :rtype: int
        """
        return self._Source

    @Source.setter
    def Source(self, Source):
        self._Source = Source

    @property
    def IdPath(self):
        r"""分组ID全路径，点分格式
        :rtype: str
        """
        return self._IdPath

    @IdPath.setter
    def IdPath(self, IdPath):
        self._IdPath = IdPath

    @property
    def Itime(self):
        r"""创建时间
        :rtype: str
        """
        return self._Itime

    @Itime.setter
    def Itime(self, Itime):
        self._Itime = Itime

    @property
    def ParentOrgId(self):
        r"""父源账号组ID，该字段仅适用于第三方同步的组织架构
        :rtype: str
        """
        return self._ParentOrgId

    @ParentOrgId.setter
    def ParentOrgId(self, ParentOrgId):
        self._ParentOrgId = ParentOrgId

    @property
    def Import(self):
        r"""导入信息,json格式
        :rtype: str
        """
        return self._Import

    @Import.setter
    def Import(self, Import):
        self._Import = Import

    @property
    def ImportEnable(self):
        r"""是否开启导入架构
        :rtype: bool
        """
        return self._ImportEnable

    @ImportEnable.setter
    def ImportEnable(self, ImportEnable):
        self._ImportEnable = ImportEnable

    @property
    def ImportType(self):
        r"""导入类型
        :rtype: str
        """
        return self._ImportType

    @ImportType.setter
    def ImportType(self, ImportType):
        self._ImportType = ImportType

    @property
    def MiniIamId(self):
        r"""miniIAMId，MiniIAM源才有
        :rtype: str
        """
        return self._MiniIamId

    @MiniIamId.setter
    def MiniIamId(self, MiniIamId):
        self._MiniIamId = MiniIamId


    def _deserialize(self, params):
        self._NamePath = params.get("NamePath")
        self._IdPathArr = params.get("IdPathArr")
        self._ExtraInfo = params.get("ExtraInfo")
        self._Utime = params.get("Utime")
        self._ParentId = params.get("ParentId")
        self._OrgId = params.get("OrgId")
        self._Name = params.get("Name")
        self._Id = params.get("Id")
        self._Description = params.get("Description")
        self._Source = params.get("Source")
        self._IdPath = params.get("IdPath")
        self._Itime = params.get("Itime")
        self._ParentOrgId = params.get("ParentOrgId")
        self._Import = params.get("Import")
        self._ImportEnable = params.get("ImportEnable")
        self._ImportType = params.get("ImportType")
        self._MiniIamId = params.get("MiniIamId")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class GrantResourceOperationByAccountGroups(AbstractModel):
    r"""授权操作

    """

    def __init__(self):
        r"""
        :param _OperationType: 操作类型: 1-增加授权 2-删除授权;
        :type OperationType: int
        :param _ResourceId: 资源或资源组Id
        :type ResourceId: int
        :param _ResourceType: 资源类型 ,1:资源 2:资源组
        :type ResourceType: int
        :param _ExpireTime: 过期时间,时间戳(秒)
        :type ExpireTime: int
        :param _AccountGroupId: 分组id
        :type AccountGroupId: int
        """
        self._OperationType = None
        self._ResourceId = None
        self._ResourceType = None
        self._ExpireTime = None
        self._AccountGroupId = None

    @property
    def OperationType(self):
        r"""操作类型: 1-增加授权 2-删除授权;
        :rtype: int
        """
        return self._OperationType

    @OperationType.setter
    def OperationType(self, OperationType):
        self._OperationType = OperationType

    @property
    def ResourceId(self):
        r"""资源或资源组Id
        :rtype: int
        """
        return self._ResourceId

    @ResourceId.setter
    def ResourceId(self, ResourceId):
        self._ResourceId = ResourceId

    @property
    def ResourceType(self):
        r"""资源类型 ,1:资源 2:资源组
        :rtype: int
        """
        return self._ResourceType

    @ResourceType.setter
    def ResourceType(self, ResourceType):
        self._ResourceType = ResourceType

    @property
    def ExpireTime(self):
        r"""过期时间,时间戳(秒)
        :rtype: int
        """
        return self._ExpireTime

    @ExpireTime.setter
    def ExpireTime(self, ExpireTime):
        self._ExpireTime = ExpireTime

    @property
    def AccountGroupId(self):
        r"""分组id
        :rtype: int
        """
        return self._AccountGroupId

    @AccountGroupId.setter
    def AccountGroupId(self, AccountGroupId):
        self._AccountGroupId = AccountGroupId


    def _deserialize(self, params):
        self._OperationType = params.get("OperationType")
        self._ResourceId = params.get("ResourceId")
        self._ResourceType = params.get("ResourceType")
        self._ExpireTime = params.get("ExpireTime")
        self._AccountGroupId = params.get("AccountGroupId")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class GrantResourceOperationByAccounts(AbstractModel):
    r"""授权操作

    """

    def __init__(self):
        r"""
        :param _OperationType: 操作类型: 1-增加授权 2-删除授权;
        :type OperationType: int
        :param _ResourceId: 资源或资源组Id
        :type ResourceId: int
        :param _ResourceType: 资源类型 ,1:资源 2:资源组
        :type ResourceType: int
        :param _ExpireTime: 过期时间,时间戳(秒)
        :type ExpireTime: int
        :param _AccountUserId: 账号userid
        :type AccountUserId: str
        :param _MenuId: 账号目录ID
        :type MenuId: int
        """
        self._OperationType = None
        self._ResourceId = None
        self._ResourceType = None
        self._ExpireTime = None
        self._AccountUserId = None
        self._MenuId = None

    @property
    def OperationType(self):
        r"""操作类型: 1-增加授权 2-删除授权;
        :rtype: int
        """
        return self._OperationType

    @OperationType.setter
    def OperationType(self, OperationType):
        self._OperationType = OperationType

    @property
    def ResourceId(self):
        r"""资源或资源组Id
        :rtype: int
        """
        return self._ResourceId

    @ResourceId.setter
    def ResourceId(self, ResourceId):
        self._ResourceId = ResourceId

    @property
    def ResourceType(self):
        r"""资源类型 ,1:资源 2:资源组
        :rtype: int
        """
        return self._ResourceType

    @ResourceType.setter
    def ResourceType(self, ResourceType):
        self._ResourceType = ResourceType

    @property
    def ExpireTime(self):
        r"""过期时间,时间戳(秒)
        :rtype: int
        """
        return self._ExpireTime

    @ExpireTime.setter
    def ExpireTime(self, ExpireTime):
        self._ExpireTime = ExpireTime

    @property
    def AccountUserId(self):
        r"""账号userid
        :rtype: str
        """
        return self._AccountUserId

    @AccountUserId.setter
    def AccountUserId(self, AccountUserId):
        self._AccountUserId = AccountUserId

    @property
    def MenuId(self):
        r"""账号目录ID
        :rtype: int
        """
        return self._MenuId

    @MenuId.setter
    def MenuId(self, MenuId):
        self._MenuId = MenuId


    def _deserialize(self, params):
        self._OperationType = params.get("OperationType")
        self._ResourceId = params.get("ResourceId")
        self._ResourceType = params.get("ResourceType")
        self._ExpireTime = params.get("ExpireTime")
        self._AccountUserId = params.get("AccountUserId")
        self._MenuId = params.get("MenuId")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class GrantResourceOperationByVirtualGroups(AbstractModel):
    r"""授权操作

    """

    def __init__(self):
        r"""
        :param _OperationType: 操作类型: 1-增加授权 2-删除授权;
        :type OperationType: int
        :param _ResourceId: 资源或资源组Id
        :type ResourceId: int
        :param _ResourceType: 资源类型 ,1:资源 2:资源组
        :type ResourceType: int
        :param _ExpireTime: 过期时间,时间戳(秒)
        :type ExpireTime: int
        :param _VirtualAccountGroupId: 分组id
        :type VirtualAccountGroupId: int
        """
        self._OperationType = None
        self._ResourceId = None
        self._ResourceType = None
        self._ExpireTime = None
        self._VirtualAccountGroupId = None

    @property
    def OperationType(self):
        r"""操作类型: 1-增加授权 2-删除授权;
        :rtype: int
        """
        return self._OperationType

    @OperationType.setter
    def OperationType(self, OperationType):
        self._OperationType = OperationType

    @property
    def ResourceId(self):
        r"""资源或资源组Id
        :rtype: int
        """
        return self._ResourceId

    @ResourceId.setter
    def ResourceId(self, ResourceId):
        self._ResourceId = ResourceId

    @property
    def ResourceType(self):
        r"""资源类型 ,1:资源 2:资源组
        :rtype: int
        """
        return self._ResourceType

    @ResourceType.setter
    def ResourceType(self, ResourceType):
        self._ResourceType = ResourceType

    @property
    def ExpireTime(self):
        r"""过期时间,时间戳(秒)
        :rtype: int
        """
        return self._ExpireTime

    @ExpireTime.setter
    def ExpireTime(self, ExpireTime):
        self._ExpireTime = ExpireTime

    @property
    def VirtualAccountGroupId(self):
        r"""分组id
        :rtype: int
        """
        return self._VirtualAccountGroupId

    @VirtualAccountGroupId.setter
    def VirtualAccountGroupId(self, VirtualAccountGroupId):
        self._VirtualAccountGroupId = VirtualAccountGroupId


    def _deserialize(self, params):
        self._OperationType = params.get("OperationType")
        self._ResourceId = params.get("ResourceId")
        self._ResourceType = params.get("ResourceType")
        self._ExpireTime = params.get("ExpireTime")
        self._VirtualAccountGroupId = params.get("VirtualAccountGroupId")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class GrantResourcesByAccountGroupsRequest(AbstractModel):
    r"""GrantResourcesByAccountGroups请求参数结构体

    """

    def __init__(self):
        r"""
        :param _Operations:  
        :type Operations: list of GrantResourceOperationByAccountGroups
        """
        self._Operations = None

    @property
    def Operations(self):
        r""" 
        :rtype: list of GrantResourceOperationByAccountGroups
        """
        return self._Operations

    @Operations.setter
    def Operations(self, Operations):
        self._Operations = Operations


    def _deserialize(self, params):
        if params.get("Operations") is not None:
            self._Operations = []
            for item in params.get("Operations"):
                obj = GrantResourceOperationByAccountGroups()
                obj._deserialize(item)
                self._Operations.append(obj)
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class GrantResourcesByAccountGroupsResponse(AbstractModel):
    r"""GrantResourcesByAccountGroups返回参数结构体

    """

    def __init__(self):
        r"""
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._RequestId = None

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        self._RequestId = params.get("RequestId")


class GrantResourcesByAccountsRequest(AbstractModel):
    r"""GrantResourcesByAccounts请求参数结构体

    """

    def __init__(self):
        r"""
        :param _Operations:  
        :type Operations: list of GrantResourceOperationByAccounts
        """
        self._Operations = None

    @property
    def Operations(self):
        r""" 
        :rtype: list of GrantResourceOperationByAccounts
        """
        return self._Operations

    @Operations.setter
    def Operations(self, Operations):
        self._Operations = Operations


    def _deserialize(self, params):
        if params.get("Operations") is not None:
            self._Operations = []
            for item in params.get("Operations"):
                obj = GrantResourceOperationByAccounts()
                obj._deserialize(item)
                self._Operations.append(obj)
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class GrantResourcesByAccountsResponse(AbstractModel):
    r"""GrantResourcesByAccounts返回参数结构体

    """

    def __init__(self):
        r"""
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._RequestId = None

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        self._RequestId = params.get("RequestId")


class GrantResourcesByVirtualGroupsRequest(AbstractModel):
    r"""GrantResourcesByVirtualGroups请求参数结构体

    """

    def __init__(self):
        r"""
        :param _Operations:  
        :type Operations: list of GrantResourceOperationByVirtualGroups
        """
        self._Operations = None

    @property
    def Operations(self):
        r""" 
        :rtype: list of GrantResourceOperationByVirtualGroups
        """
        return self._Operations

    @Operations.setter
    def Operations(self, Operations):
        self._Operations = Operations


    def _deserialize(self, params):
        if params.get("Operations") is not None:
            self._Operations = []
            for item in params.get("Operations"):
                obj = GrantResourceOperationByVirtualGroups()
                obj._deserialize(item)
                self._Operations.append(obj)
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class GrantResourcesByVirtualGroupsResponse(AbstractModel):
    r"""GrantResourcesByVirtualGroups返回参数结构体

    """

    def __init__(self):
        r"""
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._RequestId = None

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        self._RequestId = params.get("RequestId")


class GrantedAccountGroupItem(AbstractModel):
    r"""GrantedAccountItem

    """

    def __init__(self):
        r"""
        :param _AccountGroupId: 账户组Id
        :type AccountGroupId: int
        :param _Name: 分组名称
        :type Name: str
        :param _IdPathArray: 所属分组Id
        :type IdPathArray: list of int non-negative
        :param _NamePathArray: 所属分组NamePathArray
        :type NamePathArray: list of str
        :param _AccountCount: 目录id
        :type AccountCount: int
        :param _ExpireTime: 过期时间
        :type ExpireTime: int
        :param _RelationId: 关联id
        :type RelationId: int
        """
        self._AccountGroupId = None
        self._Name = None
        self._IdPathArray = None
        self._NamePathArray = None
        self._AccountCount = None
        self._ExpireTime = None
        self._RelationId = None

    @property
    def AccountGroupId(self):
        r"""账户组Id
        :rtype: int
        """
        return self._AccountGroupId

    @AccountGroupId.setter
    def AccountGroupId(self, AccountGroupId):
        self._AccountGroupId = AccountGroupId

    @property
    def Name(self):
        r"""分组名称
        :rtype: str
        """
        return self._Name

    @Name.setter
    def Name(self, Name):
        self._Name = Name

    @property
    def IdPathArray(self):
        r"""所属分组Id
        :rtype: list of int non-negative
        """
        return self._IdPathArray

    @IdPathArray.setter
    def IdPathArray(self, IdPathArray):
        self._IdPathArray = IdPathArray

    @property
    def NamePathArray(self):
        r"""所属分组NamePathArray
        :rtype: list of str
        """
        return self._NamePathArray

    @NamePathArray.setter
    def NamePathArray(self, NamePathArray):
        self._NamePathArray = NamePathArray

    @property
    def AccountCount(self):
        r"""目录id
        :rtype: int
        """
        return self._AccountCount

    @AccountCount.setter
    def AccountCount(self, AccountCount):
        self._AccountCount = AccountCount

    @property
    def ExpireTime(self):
        r"""过期时间
        :rtype: int
        """
        return self._ExpireTime

    @ExpireTime.setter
    def ExpireTime(self, ExpireTime):
        self._ExpireTime = ExpireTime

    @property
    def RelationId(self):
        r"""关联id
        :rtype: int
        """
        return self._RelationId

    @RelationId.setter
    def RelationId(self, RelationId):
        self._RelationId = RelationId


    def _deserialize(self, params):
        self._AccountGroupId = params.get("AccountGroupId")
        self._Name = params.get("Name")
        self._IdPathArray = params.get("IdPathArray")
        self._NamePathArray = params.get("NamePathArray")
        self._AccountCount = params.get("AccountCount")
        self._ExpireTime = params.get("ExpireTime")
        self._RelationId = params.get("RelationId")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class GrantedAccountItem(AbstractModel):
    r"""GrantedAccountItem

    """

    def __init__(self):
        r"""
        :param _AccountId: 账户Id
        :type AccountId: int
        :param _UserId: 用户UserId
        :type UserId: str
        :param _UserName: 用户名称
        :type UserName: str
        :param _GroupId: 所属分组Id
        :type GroupId: int
        :param _GroupIdPathArray: 分组路劲GroupIdPathArray
        :type GroupIdPathArray: list of int non-negative
        :param _GroupNamePathArray: 所属分组NamePathArray
        :type GroupNamePathArray: list of str
        :param _MenuId: 目录id
        :type MenuId: int
        :param _ExpireTime: 过期时间
        :type ExpireTime: int
        :param _RelationId: 关联id
        :type RelationId: int
        """
        self._AccountId = None
        self._UserId = None
        self._UserName = None
        self._GroupId = None
        self._GroupIdPathArray = None
        self._GroupNamePathArray = None
        self._MenuId = None
        self._ExpireTime = None
        self._RelationId = None

    @property
    def AccountId(self):
        r"""账户Id
        :rtype: int
        """
        return self._AccountId

    @AccountId.setter
    def AccountId(self, AccountId):
        self._AccountId = AccountId

    @property
    def UserId(self):
        r"""用户UserId
        :rtype: str
        """
        return self._UserId

    @UserId.setter
    def UserId(self, UserId):
        self._UserId = UserId

    @property
    def UserName(self):
        r"""用户名称
        :rtype: str
        """
        return self._UserName

    @UserName.setter
    def UserName(self, UserName):
        self._UserName = UserName

    @property
    def GroupId(self):
        r"""所属分组Id
        :rtype: int
        """
        return self._GroupId

    @GroupId.setter
    def GroupId(self, GroupId):
        self._GroupId = GroupId

    @property
    def GroupIdPathArray(self):
        r"""分组路劲GroupIdPathArray
        :rtype: list of int non-negative
        """
        return self._GroupIdPathArray

    @GroupIdPathArray.setter
    def GroupIdPathArray(self, GroupIdPathArray):
        self._GroupIdPathArray = GroupIdPathArray

    @property
    def GroupNamePathArray(self):
        r"""所属分组NamePathArray
        :rtype: list of str
        """
        return self._GroupNamePathArray

    @GroupNamePathArray.setter
    def GroupNamePathArray(self, GroupNamePathArray):
        self._GroupNamePathArray = GroupNamePathArray

    @property
    def MenuId(self):
        r"""目录id
        :rtype: int
        """
        return self._MenuId

    @MenuId.setter
    def MenuId(self, MenuId):
        self._MenuId = MenuId

    @property
    def ExpireTime(self):
        r"""过期时间
        :rtype: int
        """
        return self._ExpireTime

    @ExpireTime.setter
    def ExpireTime(self, ExpireTime):
        self._ExpireTime = ExpireTime

    @property
    def RelationId(self):
        r"""关联id
        :rtype: int
        """
        return self._RelationId

    @RelationId.setter
    def RelationId(self, RelationId):
        self._RelationId = RelationId


    def _deserialize(self, params):
        self._AccountId = params.get("AccountId")
        self._UserId = params.get("UserId")
        self._UserName = params.get("UserName")
        self._GroupId = params.get("GroupId")
        self._GroupIdPathArray = params.get("GroupIdPathArray")
        self._GroupNamePathArray = params.get("GroupNamePathArray")
        self._MenuId = params.get("MenuId")
        self._ExpireTime = params.get("ExpireTime")
        self._RelationId = params.get("RelationId")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class GrantedVirtualGroupItem(AbstractModel):
    r"""GrantedAccountItem

    """

    def __init__(self):
        r"""
        :param _VirtualGroupId: 账户组Id
        :type VirtualGroupId: int
        :param _Name: 分组名称
        :type Name: str
        :param _Description: 描述信息
        :type Description: str
        :param _AccountCount: 目录id
        :type AccountCount: int
        :param _ExpireTime: 过期时间
        :type ExpireTime: int
        :param _RelationId: 关联id
        :type RelationId: int
        """
        self._VirtualGroupId = None
        self._Name = None
        self._Description = None
        self._AccountCount = None
        self._ExpireTime = None
        self._RelationId = None

    @property
    def VirtualGroupId(self):
        r"""账户组Id
        :rtype: int
        """
        return self._VirtualGroupId

    @VirtualGroupId.setter
    def VirtualGroupId(self, VirtualGroupId):
        self._VirtualGroupId = VirtualGroupId

    @property
    def Name(self):
        r"""分组名称
        :rtype: str
        """
        return self._Name

    @Name.setter
    def Name(self, Name):
        self._Name = Name

    @property
    def Description(self):
        r"""描述信息
        :rtype: str
        """
        return self._Description

    @Description.setter
    def Description(self, Description):
        self._Description = Description

    @property
    def AccountCount(self):
        r"""目录id
        :rtype: int
        """
        return self._AccountCount

    @AccountCount.setter
    def AccountCount(self, AccountCount):
        self._AccountCount = AccountCount

    @property
    def ExpireTime(self):
        r"""过期时间
        :rtype: int
        """
        return self._ExpireTime

    @ExpireTime.setter
    def ExpireTime(self, ExpireTime):
        self._ExpireTime = ExpireTime

    @property
    def RelationId(self):
        r"""关联id
        :rtype: int
        """
        return self._RelationId

    @RelationId.setter
    def RelationId(self, RelationId):
        self._RelationId = RelationId


    def _deserialize(self, params):
        self._VirtualGroupId = params.get("VirtualGroupId")
        self._Name = params.get("Name")
        self._Description = params.get("Description")
        self._AccountCount = params.get("AccountCount")
        self._ExpireTime = params.get("ExpireTime")
        self._RelationId = params.get("RelationId")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class ModifyBusinessResourceRequest(AbstractModel):
    r"""ModifyBusinessResource请求参数结构体

    """

    def __init__(self):
        r"""
        :param _AreaId: 业务资源所在的模块id，没有资源模块先创建资源模块(只支持32位)
        :type AreaId: int
        :param _Protocol: 业务资源协议类型,3：所有,2：UDP，1：TCP(只支持32位)
        :type Protocol: int
        :param _ServiceName: 业务资源名称，同一个资源模块下面不可重复
        :type ServiceName: str
        :param _Levels: 业务资源优先级 1-65535(只支持32位)
        :type Levels: int
        :param _ServiceType: 业务资源类型:ip,domain,ip_section，对应ip、域名、ip段
        :type ServiceType: str
        :param _ServicePort: 业务资源端口 all,1-65535
        :type ServicePort: str
        :param _ServiceId: 修改业务资源的id(只支持32位)
        :type ServiceId: int
        :param _ServiceAddress: 业务资源地址(ip、域名、ip段)
        :type ServiceAddress: str
        :param _DirectConn: 是否走代理,该参数不传，默认为0, 2：内外网直连，1：内网直连， 0：不启用代理配置(只支持32位)
        :type DirectConn: int
        """
        self._AreaId = None
        self._Protocol = None
        self._ServiceName = None
        self._Levels = None
        self._ServiceType = None
        self._ServicePort = None
        self._ServiceId = None
        self._ServiceAddress = None
        self._DirectConn = None

    @property
    def AreaId(self):
        r"""业务资源所在的模块id，没有资源模块先创建资源模块(只支持32位)
        :rtype: int
        """
        return self._AreaId

    @AreaId.setter
    def AreaId(self, AreaId):
        self._AreaId = AreaId

    @property
    def Protocol(self):
        r"""业务资源协议类型,3：所有,2：UDP，1：TCP(只支持32位)
        :rtype: int
        """
        return self._Protocol

    @Protocol.setter
    def Protocol(self, Protocol):
        self._Protocol = Protocol

    @property
    def ServiceName(self):
        r"""业务资源名称，同一个资源模块下面不可重复
        :rtype: str
        """
        return self._ServiceName

    @ServiceName.setter
    def ServiceName(self, ServiceName):
        self._ServiceName = ServiceName

    @property
    def Levels(self):
        r"""业务资源优先级 1-65535(只支持32位)
        :rtype: int
        """
        return self._Levels

    @Levels.setter
    def Levels(self, Levels):
        self._Levels = Levels

    @property
    def ServiceType(self):
        r"""业务资源类型:ip,domain,ip_section，对应ip、域名、ip段
        :rtype: str
        """
        return self._ServiceType

    @ServiceType.setter
    def ServiceType(self, ServiceType):
        self._ServiceType = ServiceType

    @property
    def ServicePort(self):
        r"""业务资源端口 all,1-65535
        :rtype: str
        """
        return self._ServicePort

    @ServicePort.setter
    def ServicePort(self, ServicePort):
        self._ServicePort = ServicePort

    @property
    def ServiceId(self):
        r"""修改业务资源的id(只支持32位)
        :rtype: int
        """
        return self._ServiceId

    @ServiceId.setter
    def ServiceId(self, ServiceId):
        self._ServiceId = ServiceId

    @property
    def ServiceAddress(self):
        r"""业务资源地址(ip、域名、ip段)
        :rtype: str
        """
        return self._ServiceAddress

    @ServiceAddress.setter
    def ServiceAddress(self, ServiceAddress):
        self._ServiceAddress = ServiceAddress

    @property
    def DirectConn(self):
        r"""是否走代理,该参数不传，默认为0, 2：内外网直连，1：内网直连， 0：不启用代理配置(只支持32位)
        :rtype: int
        """
        return self._DirectConn

    @DirectConn.setter
    def DirectConn(self, DirectConn):
        self._DirectConn = DirectConn


    def _deserialize(self, params):
        self._AreaId = params.get("AreaId")
        self._Protocol = params.get("Protocol")
        self._ServiceName = params.get("ServiceName")
        self._Levels = params.get("Levels")
        self._ServiceType = params.get("ServiceType")
        self._ServicePort = params.get("ServicePort")
        self._ServiceId = params.get("ServiceId")
        self._ServiceAddress = params.get("ServiceAddress")
        self._DirectConn = params.get("DirectConn")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class ModifyBusinessResourceResponse(AbstractModel):
    r"""ModifyBusinessResource返回参数结构体

    """

    def __init__(self):
        r"""
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._RequestId = None

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        self._RequestId = params.get("RequestId")


class ModifyCompanyDirectoryConfigRequest(AbstractModel):
    r"""ModifyCompanyDirectoryConfig请求参数结构体

    """

    def __init__(self):
        r"""
        :param _Type: <p>企业目录类型</p>
        :type Type: str
        :param _Name: <p>企业目录名</p>
        :type Name: str
        :param _Config: <p>使用 JSON 字符串表示的配置信息</p><p>调用此接口前，需要先调用DescribeCompanyDirectoryConfig获取完整的配置，然后对里面需要更新的配置进行修改，请求的时候必须传完整配置，否则可能导致配置缺失出现错误。如果是脱敏的信息，保持原样的脱敏格式提交，如果和脱敏格式不一致，会认为是新的配置值更新原有配置</p>
        :type Config: str
        :param _SyncEnable: <p>是否开启定时同步</p>
        :type SyncEnable: bool
        :param _SyncPolicy: <p>定时同步的策略，枚举值：支持每4小时（4hours）/每日定时（daily）/每周定时（weekly）</p>
        :type SyncPolicy: str
        :param _SyncPolicyParams: <p>JSON 字符串，针对不同类型的同步策略，提取对应不同的值</p>
        :type SyncPolicyParams: str
        :param _CreateAuthConfig: <p>是否同步创建认证源</p>
        :type CreateAuthConfig: bool
        :param _DisplayOnLoginPage: <p>是否在登录页展示</p>
        :type DisplayOnLoginPage: bool
        :param _Id: <p>企业目录 ID</p>
        :type Id: int
        :param _Description: <p>描述</p>
        :type Description: str
        """
        self._Type = None
        self._Name = None
        self._Config = None
        self._SyncEnable = None
        self._SyncPolicy = None
        self._SyncPolicyParams = None
        self._CreateAuthConfig = None
        self._DisplayOnLoginPage = None
        self._Id = None
        self._Description = None

    @property
    def Type(self):
        r"""<p>企业目录类型</p>
        :rtype: str
        """
        return self._Type

    @Type.setter
    def Type(self, Type):
        self._Type = Type

    @property
    def Name(self):
        r"""<p>企业目录名</p>
        :rtype: str
        """
        return self._Name

    @Name.setter
    def Name(self, Name):
        self._Name = Name

    @property
    def Config(self):
        r"""<p>使用 JSON 字符串表示的配置信息</p><p>调用此接口前，需要先调用DescribeCompanyDirectoryConfig获取完整的配置，然后对里面需要更新的配置进行修改，请求的时候必须传完整配置，否则可能导致配置缺失出现错误。如果是脱敏的信息，保持原样的脱敏格式提交，如果和脱敏格式不一致，会认为是新的配置值更新原有配置</p>
        :rtype: str
        """
        return self._Config

    @Config.setter
    def Config(self, Config):
        self._Config = Config

    @property
    def SyncEnable(self):
        r"""<p>是否开启定时同步</p>
        :rtype: bool
        """
        return self._SyncEnable

    @SyncEnable.setter
    def SyncEnable(self, SyncEnable):
        self._SyncEnable = SyncEnable

    @property
    def SyncPolicy(self):
        r"""<p>定时同步的策略，枚举值：支持每4小时（4hours）/每日定时（daily）/每周定时（weekly）</p>
        :rtype: str
        """
        return self._SyncPolicy

    @SyncPolicy.setter
    def SyncPolicy(self, SyncPolicy):
        self._SyncPolicy = SyncPolicy

    @property
    def SyncPolicyParams(self):
        r"""<p>JSON 字符串，针对不同类型的同步策略，提取对应不同的值</p>
        :rtype: str
        """
        return self._SyncPolicyParams

    @SyncPolicyParams.setter
    def SyncPolicyParams(self, SyncPolicyParams):
        self._SyncPolicyParams = SyncPolicyParams

    @property
    def CreateAuthConfig(self):
        r"""<p>是否同步创建认证源</p>
        :rtype: bool
        """
        return self._CreateAuthConfig

    @CreateAuthConfig.setter
    def CreateAuthConfig(self, CreateAuthConfig):
        self._CreateAuthConfig = CreateAuthConfig

    @property
    def DisplayOnLoginPage(self):
        r"""<p>是否在登录页展示</p>
        :rtype: bool
        """
        return self._DisplayOnLoginPage

    @DisplayOnLoginPage.setter
    def DisplayOnLoginPage(self, DisplayOnLoginPage):
        self._DisplayOnLoginPage = DisplayOnLoginPage

    @property
    def Id(self):
        r"""<p>企业目录 ID</p>
        :rtype: int
        """
        return self._Id

    @Id.setter
    def Id(self, Id):
        self._Id = Id

    @property
    def Description(self):
        r"""<p>描述</p>
        :rtype: str
        """
        return self._Description

    @Description.setter
    def Description(self, Description):
        self._Description = Description


    def _deserialize(self, params):
        self._Type = params.get("Type")
        self._Name = params.get("Name")
        self._Config = params.get("Config")
        self._SyncEnable = params.get("SyncEnable")
        self._SyncPolicy = params.get("SyncPolicy")
        self._SyncPolicyParams = params.get("SyncPolicyParams")
        self._CreateAuthConfig = params.get("CreateAuthConfig")
        self._DisplayOnLoginPage = params.get("DisplayOnLoginPage")
        self._Id = params.get("Id")
        self._Description = params.get("Description")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class ModifyCompanyDirectoryConfigResponse(AbstractModel):
    r"""ModifyCompanyDirectoryConfig返回参数结构体

    """

    def __init__(self):
        r"""
        :param _Data: <p>编辑企业目录配置的结果</p>
        :type Data: :class:`tencentcloud.ioa.v20220601.models.DirectoryConfigResultData`
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._Data = None
        self._RequestId = None

    @property
    def Data(self):
        r"""<p>编辑企业目录配置的结果</p>
        :rtype: :class:`tencentcloud.ioa.v20220601.models.DirectoryConfigResultData`
        """
        return self._Data

    @Data.setter
    def Data(self, Data):
        self._Data = Data

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        if params.get("Data") is not None:
            self._Data = DirectoryConfigResultData()
            self._Data._deserialize(params.get("Data"))
        self._RequestId = params.get("RequestId")


class ModifyDeviceTrustStatusRequest(AbstractModel):
    r"""ModifyDeviceTrustStatus请求参数结构体

    """

    def __init__(self):
        r"""
        :param _Status: <p>设备状态，1表示拉黑，0表示加白</p>
        :type Status: int
        :param _DeviceIDList: <p>设备MID列表</p>
        :type DeviceIDList: list of str
        :param _BlackStatusDeadline: <p>设备拉黑有效期，UnixTime, 单位是 ms,0表示永久有效，默认值是0</p>
        :type BlackStatusDeadline: int
        :param _IdList: <p>DescribeAccuserList返回的Id 列表</p>
        :type IdList: list of int
        :param _UpdateFlags: <p>默认值：0，根据id更新，1根据DeviceIDList</p>
        :type UpdateFlags: int
        """
        self._Status = None
        self._DeviceIDList = None
        self._BlackStatusDeadline = None
        self._IdList = None
        self._UpdateFlags = None

    @property
    def Status(self):
        r"""<p>设备状态，1表示拉黑，0表示加白</p>
        :rtype: int
        """
        return self._Status

    @Status.setter
    def Status(self, Status):
        self._Status = Status

    @property
    def DeviceIDList(self):
        r"""<p>设备MID列表</p>
        :rtype: list of str
        """
        return self._DeviceIDList

    @DeviceIDList.setter
    def DeviceIDList(self, DeviceIDList):
        self._DeviceIDList = DeviceIDList

    @property
    def BlackStatusDeadline(self):
        r"""<p>设备拉黑有效期，UnixTime, 单位是 ms,0表示永久有效，默认值是0</p>
        :rtype: int
        """
        return self._BlackStatusDeadline

    @BlackStatusDeadline.setter
    def BlackStatusDeadline(self, BlackStatusDeadline):
        self._BlackStatusDeadline = BlackStatusDeadline

    @property
    def IdList(self):
        r"""<p>DescribeAccuserList返回的Id 列表</p>
        :rtype: list of int
        """
        return self._IdList

    @IdList.setter
    def IdList(self, IdList):
        self._IdList = IdList

    @property
    def UpdateFlags(self):
        r"""<p>默认值：0，根据id更新，1根据DeviceIDList</p>
        :rtype: int
        """
        return self._UpdateFlags

    @UpdateFlags.setter
    def UpdateFlags(self, UpdateFlags):
        self._UpdateFlags = UpdateFlags


    def _deserialize(self, params):
        self._Status = params.get("Status")
        self._DeviceIDList = params.get("DeviceIDList")
        self._BlackStatusDeadline = params.get("BlackStatusDeadline")
        self._IdList = params.get("IdList")
        self._UpdateFlags = params.get("UpdateFlags")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class ModifyDeviceTrustStatusResponse(AbstractModel):
    r"""ModifyDeviceTrustStatus返回参数结构体

    """

    def __init__(self):
        r"""
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._RequestId = None

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        self._RequestId = params.get("RequestId")


class ModifyVirtualDeviceGroupsReqItem(AbstractModel):
    r"""操作的设备列表

    """

    def __init__(self):
        r"""
        :param _DeviceMid: 设备mid
        :type DeviceMid: str
        :param _Operation: 操作标识  0:删除设备 1:添加设备
        :type Operation: int
        """
        self._DeviceMid = None
        self._Operation = None

    @property
    def DeviceMid(self):
        r"""设备mid
        :rtype: str
        """
        return self._DeviceMid

    @DeviceMid.setter
    def DeviceMid(self, DeviceMid):
        self._DeviceMid = DeviceMid

    @property
    def Operation(self):
        r"""操作标识  0:删除设备 1:添加设备
        :rtype: int
        """
        return self._Operation

    @Operation.setter
    def Operation(self, Operation):
        self._Operation = Operation


    def _deserialize(self, params):
        self._DeviceMid = params.get("DeviceMid")
        self._Operation = params.get("Operation")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class ModifyVirtualDeviceGroupsRequest(AbstractModel):
    r"""ModifyVirtualDeviceGroups请求参数结构体

    """

    def __init__(self):
        r"""
        :param _DeviceList: 必填，操作的设备列表数据
        :type DeviceList: list of ModifyVirtualDeviceGroupsReqItem
        :param _DomainInstanceId: 管理域实例ID，用于CAM管理域权限分配。若企业未进行管理域的划分，可直接传入根域"1"，此时表示针对当前企业的全部设备和账号进行接口CRUD，具体CRUD的影响范围限制于相应接口的入参。
        :type DomainInstanceId: str
        :param _DeviceVirtualGroupId: 添加到的终端自定义分组id。和DeviceVirtualGroupIds互斥，必填其一，优先使用本参数
        :type DeviceVirtualGroupId: int
        :param _DeviceVirtualGroupIds: 要添加的终端自定义分组id列表
        :type DeviceVirtualGroupIds: list of int
        :param _OsType: 系统类型（0: win，1：linux，2: mac，4：android，5：ios，-1：全系统（SaaS一体化版本） ； 不传默认为0）(只支持32位)
        :type OsType: int
        """
        self._DeviceList = None
        self._DomainInstanceId = None
        self._DeviceVirtualGroupId = None
        self._DeviceVirtualGroupIds = None
        self._OsType = None

    @property
    def DeviceList(self):
        r"""必填，操作的设备列表数据
        :rtype: list of ModifyVirtualDeviceGroupsReqItem
        """
        return self._DeviceList

    @DeviceList.setter
    def DeviceList(self, DeviceList):
        self._DeviceList = DeviceList

    @property
    def DomainInstanceId(self):
        r"""管理域实例ID，用于CAM管理域权限分配。若企业未进行管理域的划分，可直接传入根域"1"，此时表示针对当前企业的全部设备和账号进行接口CRUD，具体CRUD的影响范围限制于相应接口的入参。
        :rtype: str
        """
        return self._DomainInstanceId

    @DomainInstanceId.setter
    def DomainInstanceId(self, DomainInstanceId):
        self._DomainInstanceId = DomainInstanceId

    @property
    def DeviceVirtualGroupId(self):
        r"""添加到的终端自定义分组id。和DeviceVirtualGroupIds互斥，必填其一，优先使用本参数
        :rtype: int
        """
        return self._DeviceVirtualGroupId

    @DeviceVirtualGroupId.setter
    def DeviceVirtualGroupId(self, DeviceVirtualGroupId):
        self._DeviceVirtualGroupId = DeviceVirtualGroupId

    @property
    def DeviceVirtualGroupIds(self):
        r"""要添加的终端自定义分组id列表
        :rtype: list of int
        """
        return self._DeviceVirtualGroupIds

    @DeviceVirtualGroupIds.setter
    def DeviceVirtualGroupIds(self, DeviceVirtualGroupIds):
        self._DeviceVirtualGroupIds = DeviceVirtualGroupIds

    @property
    def OsType(self):
        r"""系统类型（0: win，1：linux，2: mac，4：android，5：ios，-1：全系统（SaaS一体化版本） ； 不传默认为0）(只支持32位)
        :rtype: int
        """
        return self._OsType

    @OsType.setter
    def OsType(self, OsType):
        self._OsType = OsType


    def _deserialize(self, params):
        if params.get("DeviceList") is not None:
            self._DeviceList = []
            for item in params.get("DeviceList"):
                obj = ModifyVirtualDeviceGroupsReqItem()
                obj._deserialize(item)
                self._DeviceList.append(obj)
        self._DomainInstanceId = params.get("DomainInstanceId")
        self._DeviceVirtualGroupId = params.get("DeviceVirtualGroupId")
        self._DeviceVirtualGroupIds = params.get("DeviceVirtualGroupIds")
        self._OsType = params.get("OsType")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class ModifyVirtualDeviceGroupsResponse(AbstractModel):
    r"""ModifyVirtualDeviceGroups返回参数结构体

    """

    def __init__(self):
        r"""
        :param _RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :type RequestId: str
        """
        self._RequestId = None

    @property
    def RequestId(self):
        r"""唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        :rtype: str
        """
        return self._RequestId

    @RequestId.setter
    def RequestId(self, RequestId):
        self._RequestId = RequestId


    def _deserialize(self, params):
        self._RequestId = params.get("RequestId")


class Paging(AbstractModel):
    r"""页码

    """

    def __init__(self):
        r"""
        :param _PageSize: 每页条数
        :type PageSize: int
        :param _PageNum: 页码
        :type PageNum: int
        :param _PageCount: 总页数
        :type PageCount: int
        :param _Total: 记录总数
        :type Total: int
        """
        self._PageSize = None
        self._PageNum = None
        self._PageCount = None
        self._Total = None

    @property
    def PageSize(self):
        r"""每页条数
        :rtype: int
        """
        return self._PageSize

    @PageSize.setter
    def PageSize(self, PageSize):
        self._PageSize = PageSize

    @property
    def PageNum(self):
        r"""页码
        :rtype: int
        """
        return self._PageNum

    @PageNum.setter
    def PageNum(self, PageNum):
        self._PageNum = PageNum

    @property
    def PageCount(self):
        r"""总页数
        :rtype: int
        """
        return self._PageCount

    @PageCount.setter
    def PageCount(self, PageCount):
        self._PageCount = PageCount

    @property
    def Total(self):
        r"""记录总数
        :rtype: int
        """
        return self._Total

    @Total.setter
    def Total(self, Total):
        self._Total = Total


    def _deserialize(self, params):
        self._PageSize = params.get("PageSize")
        self._PageNum = params.get("PageNum")
        self._PageCount = params.get("PageCount")
        self._Total = params.get("Total")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class RuleExpression(AbstractModel):
    r"""规则表达式

    """

    def __init__(self):
        r"""
        :param _Items: 规则元数据
        :type Items: list of RuleItem
        :param _Relation: 关系
        :type Relation: str
        """
        self._Items = None
        self._Relation = None

    @property
    def Items(self):
        r"""规则元数据
        :rtype: list of RuleItem
        """
        return self._Items

    @Items.setter
    def Items(self, Items):
        self._Items = Items

    @property
    def Relation(self):
        r"""关系
        :rtype: str
        """
        return self._Relation

    @Relation.setter
    def Relation(self, Relation):
        self._Relation = Relation


    def _deserialize(self, params):
        if params.get("Items") is not None:
            self._Items = []
            for item in params.get("Items"):
                obj = RuleItem()
                obj._deserialize(item)
                self._Items.append(obj)
        self._Relation = params.get("Relation")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class RuleItem(AbstractModel):
    r"""规则元数据

    """

    def __init__(self):
        r"""
        :param _Key: 字段名称
        :type Key: str
        :param _Operate: 操作关系（等于、不等于、包含、不包含）
        :type Operate: str
        :param _Value: 内容
        :type Value: str
        :param _Values: 内容，v2多值版本使用
        :type Values: list of str
        """
        self._Key = None
        self._Operate = None
        self._Value = None
        self._Values = None

    @property
    def Key(self):
        r"""字段名称
        :rtype: str
        """
        return self._Key

    @Key.setter
    def Key(self, Key):
        self._Key = Key

    @property
    def Operate(self):
        r"""操作关系（等于、不等于、包含、不包含）
        :rtype: str
        """
        return self._Operate

    @Operate.setter
    def Operate(self, Operate):
        self._Operate = Operate

    @property
    def Value(self):
        r"""内容
        :rtype: str
        """
        return self._Value

    @Value.setter
    def Value(self, Value):
        self._Value = Value

    @property
    def Values(self):
        r"""内容，v2多值版本使用
        :rtype: list of str
        """
        return self._Values

    @Values.setter
    def Values(self, Values):
        self._Values = Values


    def _deserialize(self, params):
        self._Key = params.get("Key")
        self._Operate = params.get("Operate")
        self._Value = params.get("Value")
        self._Values = params.get("Values")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class RulePayload(AbstractModel):
    r"""条件筛选

    """

    def __init__(self):
        r"""
        :param _Groups: 条件组
注意：此字段可能返回 null，表示取不到有效值。
        :type Groups: list of RulePayloadItem
        :param _RelateOption: 条件关系 or/and
注意：此字段可能返回 null，表示取不到有效值。
        :type RelateOption: str
        """
        self._Groups = None
        self._RelateOption = None

    @property
    def Groups(self):
        r"""条件组
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: list of RulePayloadItem
        """
        return self._Groups

    @Groups.setter
    def Groups(self, Groups):
        self._Groups = Groups

    @property
    def RelateOption(self):
        r"""条件关系 or/and
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._RelateOption

    @RelateOption.setter
    def RelateOption(self, RelateOption):
        self._RelateOption = RelateOption


    def _deserialize(self, params):
        if params.get("Groups") is not None:
            self._Groups = []
            for item in params.get("Groups"):
                obj = RulePayloadItem()
                obj._deserialize(item)
                self._Groups.append(obj)
        self._RelateOption = params.get("RelateOption")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class RulePayloadItem(AbstractModel):
    r"""条件

    """

    def __init__(self):
        r"""
        :param _FieldKey: 字段Key
注意：此字段可能返回 null，表示取不到有效值。
        :type FieldKey: str
        :param _Option: 选项（eq:等于,neq:不等于,like,nlike,gt:大于,lt:小于,egt:大于等于,elt:小于等于）
注意：此字段可能返回 null，表示取不到有效值。
        :type Option: str
        :param _Value: 值
注意：此字段可能返回 null，表示取不到有效值。
        :type Value: list of str
        :param _Groups: 嵌套条件组
注意：此字段可能返回 null，表示取不到有效值。
        :type Groups: list of RulePayloadItem
        :param _RelateOption: RelateOption 关系操作符（and/or），用于根级别条件关系
注意：此字段可能返回 null，表示取不到有效值。
        :type RelateOption: str
        :param _ValueType: 值类型
注意：此字段可能返回 null，表示取不到有效值。
        :type ValueType: str
        """
        self._FieldKey = None
        self._Option = None
        self._Value = None
        self._Groups = None
        self._RelateOption = None
        self._ValueType = None

    @property
    def FieldKey(self):
        r"""字段Key
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._FieldKey

    @FieldKey.setter
    def FieldKey(self, FieldKey):
        self._FieldKey = FieldKey

    @property
    def Option(self):
        r"""选项（eq:等于,neq:不等于,like,nlike,gt:大于,lt:小于,egt:大于等于,elt:小于等于）
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._Option

    @Option.setter
    def Option(self, Option):
        self._Option = Option

    @property
    def Value(self):
        r"""值
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: list of str
        """
        return self._Value

    @Value.setter
    def Value(self, Value):
        self._Value = Value

    @property
    def Groups(self):
        r"""嵌套条件组
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: list of RulePayloadItem
        """
        return self._Groups

    @Groups.setter
    def Groups(self, Groups):
        self._Groups = Groups

    @property
    def RelateOption(self):
        r"""RelateOption 关系操作符（and/or），用于根级别条件关系
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._RelateOption

    @RelateOption.setter
    def RelateOption(self, RelateOption):
        self._RelateOption = RelateOption

    @property
    def ValueType(self):
        r"""值类型
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._ValueType

    @ValueType.setter
    def ValueType(self, ValueType):
        self._ValueType = ValueType


    def _deserialize(self, params):
        self._FieldKey = params.get("FieldKey")
        self._Option = params.get("Option")
        self._Value = params.get("Value")
        if params.get("Groups") is not None:
            self._Groups = []
            for item in params.get("Groups"):
                obj = RulePayloadItem()
                obj._deserialize(item)
                self._Groups.append(obj)
        self._RelateOption = params.get("RelateOption")
        self._ValueType = params.get("ValueType")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class SimpleRule(AbstractModel):
    r"""简单规则表达式

    """

    def __init__(self):
        r"""
        :param _Expressions: 规则表达式
        :type Expressions: list of RuleExpression
        :param _Relation: 表达式间逻辑关系
        :type Relation: str
        """
        self._Expressions = None
        self._Relation = None

    @property
    def Expressions(self):
        r"""规则表达式
        :rtype: list of RuleExpression
        """
        return self._Expressions

    @Expressions.setter
    def Expressions(self, Expressions):
        self._Expressions = Expressions

    @property
    def Relation(self):
        r"""表达式间逻辑关系
        :rtype: str
        """
        return self._Relation

    @Relation.setter
    def Relation(self, Relation):
        self._Relation = Relation


    def _deserialize(self, params):
        if params.get("Expressions") is not None:
            self._Expressions = []
            for item in params.get("Expressions"):
                obj = RuleExpression()
                obj._deserialize(item)
                self._Expressions.append(obj)
        self._Relation = params.get("Relation")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class SoftVersionAndNum(AbstractModel):
    r"""软件版本与安装数量

    """

    def __init__(self):
        r"""
        :param _Version: 软件版本
注意：此字段可能返回 null，表示取不到有效值。
        :type Version: str
        :param _Num: 安装数
注意：此字段可能返回 null，表示取不到有效值。
        :type Num: int
        """
        self._Version = None
        self._Num = None

    @property
    def Version(self):
        r"""软件版本
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._Version

    @Version.setter
    def Version(self, Version):
        self._Version = Version

    @property
    def Num(self):
        r"""安装数
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: int
        """
        return self._Num

    @Num.setter
    def Num(self, Num):
        self._Num = Num


    def _deserialize(self, params):
        self._Version = params.get("Version")
        self._Num = params.get("Num")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class SoftwareInformationData(AbstractModel):
    r"""软件详情响应对象集合

    """

    def __init__(self):
        r"""
        :param _Name: 软件名称
        :type Name: str
        :param _InstallDate: 安装时间
        :type InstallDate: str
        :param _SoftwareId: 软件列表id(只支持32位)
        :type SoftwareId: int
        :param _Mid: 唯一标识Mid
        :type Mid: str
        :param _Version: 软件版本
        :type Version: str
        :param _CorpName: 公司名
        :type CorpName: str
        :param _Id: 列表Id(只支持32位)
        :type Id: int
        :param _PiracyRisk: 盗版风险（0:未支持，1:风险，2:未发现，3:未开启）
        :type PiracyRisk: int
        :param _DeviceId: 设备id
        :type DeviceId: int
        :param _OsType: 平台类型
        :type OsType: int
        """
        self._Name = None
        self._InstallDate = None
        self._SoftwareId = None
        self._Mid = None
        self._Version = None
        self._CorpName = None
        self._Id = None
        self._PiracyRisk = None
        self._DeviceId = None
        self._OsType = None

    @property
    def Name(self):
        r"""软件名称
        :rtype: str
        """
        return self._Name

    @Name.setter
    def Name(self, Name):
        self._Name = Name

    @property
    def InstallDate(self):
        r"""安装时间
        :rtype: str
        """
        return self._InstallDate

    @InstallDate.setter
    def InstallDate(self, InstallDate):
        self._InstallDate = InstallDate

    @property
    def SoftwareId(self):
        r"""软件列表id(只支持32位)
        :rtype: int
        """
        return self._SoftwareId

    @SoftwareId.setter
    def SoftwareId(self, SoftwareId):
        self._SoftwareId = SoftwareId

    @property
    def Mid(self):
        r"""唯一标识Mid
        :rtype: str
        """
        return self._Mid

    @Mid.setter
    def Mid(self, Mid):
        self._Mid = Mid

    @property
    def Version(self):
        r"""软件版本
        :rtype: str
        """
        return self._Version

    @Version.setter
    def Version(self, Version):
        self._Version = Version

    @property
    def CorpName(self):
        r"""公司名
        :rtype: str
        """
        return self._CorpName

    @CorpName.setter
    def CorpName(self, CorpName):
        self._CorpName = CorpName

    @property
    def Id(self):
        r"""列表Id(只支持32位)
        :rtype: int
        """
        return self._Id

    @Id.setter
    def Id(self, Id):
        self._Id = Id

    @property
    def PiracyRisk(self):
        r"""盗版风险（0:未支持，1:风险，2:未发现，3:未开启）
        :rtype: int
        """
        return self._PiracyRisk

    @PiracyRisk.setter
    def PiracyRisk(self, PiracyRisk):
        self._PiracyRisk = PiracyRisk

    @property
    def DeviceId(self):
        r"""设备id
        :rtype: int
        """
        return self._DeviceId

    @DeviceId.setter
    def DeviceId(self, DeviceId):
        self._DeviceId = DeviceId

    @property
    def OsType(self):
        r"""平台类型
        :rtype: int
        """
        return self._OsType

    @OsType.setter
    def OsType(self, OsType):
        self._OsType = OsType


    def _deserialize(self, params):
        self._Name = params.get("Name")
        self._InstallDate = params.get("InstallDate")
        self._SoftwareId = params.get("SoftwareId")
        self._Mid = params.get("Mid")
        self._Version = params.get("Version")
        self._CorpName = params.get("CorpName")
        self._Id = params.get("Id")
        self._PiracyRisk = params.get("PiracyRisk")
        self._DeviceId = params.get("DeviceId")
        self._OsType = params.get("OsType")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        


class Sort(AbstractModel):
    r"""Sort 排序字段

    """

    def __init__(self):
        r"""
        :param _Field: 排序字段
        :type Field: str
        :param _Order: 排序方式
        :type Order: str
        """
        self._Field = None
        self._Order = None

    @property
    def Field(self):
        r"""排序字段
        :rtype: str
        """
        return self._Field

    @Field.setter
    def Field(self, Field):
        self._Field = Field

    @property
    def Order(self):
        r"""排序方式
        :rtype: str
        """
        return self._Order

    @Order.setter
    def Order(self, Order):
        self._Order = Order


    def _deserialize(self, params):
        self._Field = params.get("Field")
        self._Order = params.get("Order")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))
        