# -*- coding: utf8 -*- # Copyright (c) 2017-2021 THL A29 Limited, a Tencent company. 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 AffectedComponent(AbstractModel): """受漏洞影响的组件信息。 """ def __init__(self): r""" :param _Name: 受漏洞影响的组件名称 注意:此字段可能返回 null,表示取不到有效值。 :type Name: str :param _AffectedVersionList: 受漏洞影响的版本 注意:此字段可能返回 null,表示取不到有效值。 :type AffectedVersionList: list of str :param _FixedVersionList: 修复此漏洞的版本 注意:此字段可能返回 null,表示取不到有效值。 :type FixedVersionList: list of str """ self._Name = None self._AffectedVersionList = None self._FixedVersionList = None @property def Name(self): """受漏洞影响的组件名称 注意:此字段可能返回 null,表示取不到有效值。 :rtype: str """ return self._Name @Name.setter def Name(self, Name): self._Name = Name @property def AffectedVersionList(self): """受漏洞影响的版本 注意:此字段可能返回 null,表示取不到有效值。 :rtype: list of str """ return self._AffectedVersionList @AffectedVersionList.setter def AffectedVersionList(self, AffectedVersionList): self._AffectedVersionList = AffectedVersionList @property def FixedVersionList(self): """修复此漏洞的版本 注意:此字段可能返回 null,表示取不到有效值。 :rtype: list of str """ return self._FixedVersionList @FixedVersionList.setter def FixedVersionList(self, FixedVersionList): self._FixedVersionList = FixedVersionList def _deserialize(self, params): self._Name = params.get("Name") self._AffectedVersionList = params.get("AffectedVersionList") self._FixedVersionList = params.get("FixedVersionList") 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 CVSSV2Info(AbstractModel): """CVSSv2.0详细信息。 """ def __init__(self): r""" :param _CVSS: CVE评分。 :type CVSS: float :param _AccessVector: AccessVector 攻击途径。 取值范围: <li>NETWORK 远程</li> <li>ADJACENT_NETWORK 近邻</li> <li>LOCAL 本地</li> :type AccessVector: str :param _AccessComplexity: AccessComplexity 攻击复杂度。 取值范围: <li>HIGH 高</li> <li>MEDIUM 中</li> <li>LOW 低</li> :type AccessComplexity: str :param _Authentication: Authentication 身份验证。 取值范围: <li>MULTIPLE 多系统认证</li> <li>SINGLE 单系统认证</li> <li>NONE 无</li> :type Authentication: str :param _ConImpact: ConfidentialityImpact 机密性影响。 取值范围: <li>NONE 无</li> <li>PARTIAL 部分</li> <li>COMPLETE 完整</li> :type ConImpact: str :param _IntegrityImpact: IntegrityImpact 完整性影响。 取值范围: <li>NONE 无</li> <li>PARTIAL 部分</li> <li>COMPLETE 完整</li> :type IntegrityImpact: str :param _AvailabilityImpact: AvailabilityImpact 可用性影响。 取值范围: <li>NONE 无</li> <li>PARTIAL 部分</li> <li>COMPLETE 完整</li> :type AvailabilityImpact: str """ self._CVSS = None self._AccessVector = None self._AccessComplexity = None self._Authentication = None self._ConImpact = None self._IntegrityImpact = None self._AvailabilityImpact = None @property def CVSS(self): """CVE评分。 :rtype: float """ return self._CVSS @CVSS.setter def CVSS(self, CVSS): self._CVSS = CVSS @property def AccessVector(self): """AccessVector 攻击途径。 取值范围: <li>NETWORK 远程</li> <li>ADJACENT_NETWORK 近邻</li> <li>LOCAL 本地</li> :rtype: str """ return self._AccessVector @AccessVector.setter def AccessVector(self, AccessVector): self._AccessVector = AccessVector @property def AccessComplexity(self): """AccessComplexity 攻击复杂度。 取值范围: <li>HIGH 高</li> <li>MEDIUM 中</li> <li>LOW 低</li> :rtype: str """ return self._AccessComplexity @AccessComplexity.setter def AccessComplexity(self, AccessComplexity): self._AccessComplexity = AccessComplexity @property def Authentication(self): """Authentication 身份验证。 取值范围: <li>MULTIPLE 多系统认证</li> <li>SINGLE 单系统认证</li> <li>NONE 无</li> :rtype: str """ return self._Authentication @Authentication.setter def Authentication(self, Authentication): self._Authentication = Authentication @property def ConImpact(self): """ConfidentialityImpact 机密性影响。 取值范围: <li>NONE 无</li> <li>PARTIAL 部分</li> <li>COMPLETE 完整</li> :rtype: str """ return self._ConImpact @ConImpact.setter def ConImpact(self, ConImpact): self._ConImpact = ConImpact @property def IntegrityImpact(self): """IntegrityImpact 完整性影响。 取值范围: <li>NONE 无</li> <li>PARTIAL 部分</li> <li>COMPLETE 完整</li> :rtype: str """ return self._IntegrityImpact @IntegrityImpact.setter def IntegrityImpact(self, IntegrityImpact): self._IntegrityImpact = IntegrityImpact @property def AvailabilityImpact(self): """AvailabilityImpact 可用性影响。 取值范围: <li>NONE 无</li> <li>PARTIAL 部分</li> <li>COMPLETE 完整</li> :rtype: str """ return self._AvailabilityImpact @AvailabilityImpact.setter def AvailabilityImpact(self, AvailabilityImpact): self._AvailabilityImpact = AvailabilityImpact def _deserialize(self, params): self._CVSS = params.get("CVSS") self._AccessVector = params.get("AccessVector") self._AccessComplexity = params.get("AccessComplexity") self._Authentication = params.get("Authentication") self._ConImpact = params.get("ConImpact") self._IntegrityImpact = params.get("IntegrityImpact") self._AvailabilityImpact = params.get("AvailabilityImpact") 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 CVSSV3Info(AbstractModel): """Cvssv3.0详细信息。 """ def __init__(self): r""" :param _CVSS: CVE评分。 :type CVSS: float :param _AttackVector: AttackVector 攻击途径。 取值范围: <li>NETWORK 远程</li> <li>ADJACENT_NETWORK 近邻</li> <li>LOCAL 本地</li> <li>PHYSICAL 物理</li> :type AttackVector: str :param _AttackComplexity: AttackComplexity 攻击复杂度。 取值范围: <li>HIGH 高</li> <li>LOW 低</li> :type AttackComplexity: str :param _PrivilegesRequired: PrivilegesRequired 触发特权。 取值范围: <li>HIGH 高</li> <li>LOW 低</li> <li>NONE 无</li> :type PrivilegesRequired: str :param _UserInteraction: UserInteraction 交互必要性。 取值范围: <li>NONE 无</li> <li>REQUIRED 需要</li> :type UserInteraction: str :param _Scope: Scope 绕过安全边界。 取值范围: <li>UNCHANGED 否</li> <li>CHANGED 能</li> :type Scope: str :param _ConImpact: ConfidentialityImpact 机密性影响。 取值范围: <li>NONE 无</li> <li>LOW 低</li> <li>HIGH 高</li> :type ConImpact: str :param _IntegrityImpact: IntegrityImpact 完整性影响。 取值范围: <li>NONE 无</li> <li>LOW 低</li> <li>HIGH 高</li> :type IntegrityImpact: str :param _AvailabilityImpact: AvailabilityImpact 可用性影响。 取值范围: <li>NONE 无</li> <li>LOW 低</li> <li>HIGH 高</li> :type AvailabilityImpact: str """ self._CVSS = None self._AttackVector = None self._AttackComplexity = None self._PrivilegesRequired = None self._UserInteraction = None self._Scope = None self._ConImpact = None self._IntegrityImpact = None self._AvailabilityImpact = None @property def CVSS(self): """CVE评分。 :rtype: float """ return self._CVSS @CVSS.setter def CVSS(self, CVSS): self._CVSS = CVSS @property def AttackVector(self): """AttackVector 攻击途径。 取值范围: <li>NETWORK 远程</li> <li>ADJACENT_NETWORK 近邻</li> <li>LOCAL 本地</li> <li>PHYSICAL 物理</li> :rtype: str """ return self._AttackVector @AttackVector.setter def AttackVector(self, AttackVector): self._AttackVector = AttackVector @property def AttackComplexity(self): """AttackComplexity 攻击复杂度。 取值范围: <li>HIGH 高</li> <li>LOW 低</li> :rtype: str """ return self._AttackComplexity @AttackComplexity.setter def AttackComplexity(self, AttackComplexity): self._AttackComplexity = AttackComplexity @property def PrivilegesRequired(self): """PrivilegesRequired 触发特权。 取值范围: <li>HIGH 高</li> <li>LOW 低</li> <li>NONE 无</li> :rtype: str """ return self._PrivilegesRequired @PrivilegesRequired.setter def PrivilegesRequired(self, PrivilegesRequired): self._PrivilegesRequired = PrivilegesRequired @property def UserInteraction(self): """UserInteraction 交互必要性。 取值范围: <li>NONE 无</li> <li>REQUIRED 需要</li> :rtype: str """ return self._UserInteraction @UserInteraction.setter def UserInteraction(self, UserInteraction): self._UserInteraction = UserInteraction @property def Scope(self): """Scope 绕过安全边界。 取值范围: <li>UNCHANGED 否</li> <li>CHANGED 能</li> :rtype: str """ return self._Scope @Scope.setter def Scope(self, Scope): self._Scope = Scope @property def ConImpact(self): """ConfidentialityImpact 机密性影响。 取值范围: <li>NONE 无</li> <li>LOW 低</li> <li>HIGH 高</li> :rtype: str """ return self._ConImpact @ConImpact.setter def ConImpact(self, ConImpact): self._ConImpact = ConImpact @property def IntegrityImpact(self): """IntegrityImpact 完整性影响。 取值范围: <li>NONE 无</li> <li>LOW 低</li> <li>HIGH 高</li> :rtype: str """ return self._IntegrityImpact @IntegrityImpact.setter def IntegrityImpact(self, IntegrityImpact): self._IntegrityImpact = IntegrityImpact @property def AvailabilityImpact(self): """AvailabilityImpact 可用性影响。 取值范围: <li>NONE 无</li> <li>LOW 低</li> <li>HIGH 高</li> :rtype: str """ return self._AvailabilityImpact @AvailabilityImpact.setter def AvailabilityImpact(self, AvailabilityImpact): self._AvailabilityImpact = AvailabilityImpact def _deserialize(self, params): self._CVSS = params.get("CVSS") self._AttackVector = params.get("AttackVector") self._AttackComplexity = params.get("AttackComplexity") self._PrivilegesRequired = params.get("PrivilegesRequired") self._UserInteraction = params.get("UserInteraction") self._Scope = params.get("Scope") self._ConImpact = params.get("ConImpact") self._IntegrityImpact = params.get("IntegrityImpact") self._AvailabilityImpact = params.get("AvailabilityImpact") 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 Component(AbstractModel): """描述一个第三方组件的源信息。 """ def __init__(self): r""" :param _PURL: 第三方组件的PURL :type PURL: :class:`tencentcloud.bsca.v20210811.models.PURL` :param _Homepage: 第三方组件的主页 :type Homepage: str :param _Summary: 第三方组件的简介 :type Summary: str :param _NicknameList: 第三方组件的别名列表 注意:此字段可能返回 null,表示取不到有效值。 :type NicknameList: list of str :param _CodeLocationList: 第三方组件的代码位置列表 注意:此字段可能返回 null,表示取不到有效值。 :type CodeLocationList: list of str :param _LicenseExpression: 第三方组件的许可证表达式 :type LicenseExpression: str :param _VersionInfo: 第三方组件的版本信息(如果匹配到版本) 注意:此字段可能返回 null,表示取不到有效值。 :type VersionInfo: :class:`tencentcloud.bsca.v20210811.models.ComponentVersionInfo` :param _LastUpdateTime: 第三方组件的最后更新时间 注意:此字段可能返回 null,表示取不到有效值。 :type LastUpdateTime: str :param _TagList: 第三方组件的类型标签 注意:此字段可能返回 null,表示取不到有效值。 :type TagList: list of str """ self._PURL = None self._Homepage = None self._Summary = None self._NicknameList = None self._CodeLocationList = None self._LicenseExpression = None self._VersionInfo = None self._LastUpdateTime = None self._TagList = None @property def PURL(self): """第三方组件的PURL :rtype: :class:`tencentcloud.bsca.v20210811.models.PURL` """ return self._PURL @PURL.setter def PURL(self, PURL): self._PURL = PURL @property def Homepage(self): """第三方组件的主页 :rtype: str """ return self._Homepage @Homepage.setter def Homepage(self, Homepage): self._Homepage = Homepage @property def Summary(self): """第三方组件的简介 :rtype: str """ return self._Summary @Summary.setter def Summary(self, Summary): self._Summary = Summary @property def NicknameList(self): """第三方组件的别名列表 注意:此字段可能返回 null,表示取不到有效值。 :rtype: list of str """ return self._NicknameList @NicknameList.setter def NicknameList(self, NicknameList): self._NicknameList = NicknameList @property def CodeLocationList(self): """第三方组件的代码位置列表 注意:此字段可能返回 null,表示取不到有效值。 :rtype: list of str """ return self._CodeLocationList @CodeLocationList.setter def CodeLocationList(self, CodeLocationList): self._CodeLocationList = CodeLocationList @property def LicenseExpression(self): """第三方组件的许可证表达式 :rtype: str """ return self._LicenseExpression @LicenseExpression.setter def LicenseExpression(self, LicenseExpression): self._LicenseExpression = LicenseExpression @property def VersionInfo(self): """第三方组件的版本信息(如果匹配到版本) 注意:此字段可能返回 null,表示取不到有效值。 :rtype: :class:`tencentcloud.bsca.v20210811.models.ComponentVersionInfo` """ return self._VersionInfo @VersionInfo.setter def VersionInfo(self, VersionInfo): self._VersionInfo = VersionInfo @property def LastUpdateTime(self): """第三方组件的最后更新时间 注意:此字段可能返回 null,表示取不到有效值。 :rtype: str """ return self._LastUpdateTime @LastUpdateTime.setter def LastUpdateTime(self, LastUpdateTime): self._LastUpdateTime = LastUpdateTime @property def TagList(self): """第三方组件的类型标签 注意:此字段可能返回 null,表示取不到有效值。 :rtype: list of str """ return self._TagList @TagList.setter def TagList(self, TagList): self._TagList = TagList def _deserialize(self, params): if params.get("PURL") is not None: self._PURL = PURL() self._PURL._deserialize(params.get("PURL")) self._Homepage = params.get("Homepage") self._Summary = params.get("Summary") self._NicknameList = params.get("NicknameList") self._CodeLocationList = params.get("CodeLocationList") self._LicenseExpression = params.get("LicenseExpression") if params.get("VersionInfo") is not None: self._VersionInfo = ComponentVersionInfo() self._VersionInfo._deserialize(params.get("VersionInfo")) self._LastUpdateTime = params.get("LastUpdateTime") self._TagList = params.get("TagList") 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 ComponentTagFilter(AbstractModel): """筛选条件,同一个Tag不能同时出现在IncludeTags和ExcludeTags,可能的Tag包括:"CopyrightUpdated", "LicenseUpdated", "ContainsVulnerability" """ def __init__(self): r""" :param _IncludeTags: 包括的Tag :type IncludeTags: list of str :param _ExcludeTags: 排除的Tag :type ExcludeTags: list of str """ self._IncludeTags = None self._ExcludeTags = None @property def IncludeTags(self): """包括的Tag :rtype: list of str """ return self._IncludeTags @IncludeTags.setter def IncludeTags(self, IncludeTags): self._IncludeTags = IncludeTags @property def ExcludeTags(self): """排除的Tag :rtype: list of str """ return self._ExcludeTags @ExcludeTags.setter def ExcludeTags(self, ExcludeTags): self._ExcludeTags = ExcludeTags def _deserialize(self, params): self._IncludeTags = params.get("IncludeTags") self._ExcludeTags = params.get("ExcludeTags") 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 ComponentVersion(AbstractModel): """描述一个组件版本。 """ def __init__(self): r""" :param _PURL: 该组件的PURL 注意:此字段可能返回 null,表示取不到有效值。 :type PURL: :class:`tencentcloud.bsca.v20210811.models.PURL` :param _LicenseExpression: 该组件版本的许可证表达式 注意:此字段可能返回 null,表示取不到有效值。 :type LicenseExpression: str :param _VersionInfo: 组件的版本信息 注意:此字段可能返回 null,表示取不到有效值。 :type VersionInfo: :class:`tencentcloud.bsca.v20210811.models.ComponentVersionInfo` """ self._PURL = None self._LicenseExpression = None self._VersionInfo = None @property def PURL(self): """该组件的PURL 注意:此字段可能返回 null,表示取不到有效值。 :rtype: :class:`tencentcloud.bsca.v20210811.models.PURL` """ return self._PURL @PURL.setter def PURL(self, PURL): self._PURL = PURL @property def LicenseExpression(self): """该组件版本的许可证表达式 注意:此字段可能返回 null,表示取不到有效值。 :rtype: str """ return self._LicenseExpression @LicenseExpression.setter def LicenseExpression(self, LicenseExpression): self._LicenseExpression = LicenseExpression @property def VersionInfo(self): """组件的版本信息 注意:此字段可能返回 null,表示取不到有效值。 :rtype: :class:`tencentcloud.bsca.v20210811.models.ComponentVersionInfo` """ return self._VersionInfo @VersionInfo.setter def VersionInfo(self, VersionInfo): self._VersionInfo = VersionInfo def _deserialize(self, params): if params.get("PURL") is not None: self._PURL = PURL() self._PURL._deserialize(params.get("PURL")) self._LicenseExpression = params.get("LicenseExpression") if params.get("VersionInfo") is not None: self._VersionInfo = ComponentVersionInfo() self._VersionInfo._deserialize(params.get("VersionInfo")) 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 ComponentVersionInfo(AbstractModel): """描述组件版本的详情,包含组件发布时间、Copyright列表、组件描述Tag。 """ def __init__(self): r""" :param _PublishTime: 版本发布时间 注意:此字段可能返回 null,表示取不到有效值。 :type PublishTime: str :param _CopyrightList: 当前版本的所有copyright 注意:此字段可能返回 null,表示取不到有效值。 :type CopyrightList: list of str :param _TagList: 版本标签 注意:此字段可能返回 null,表示取不到有效值。 :type TagList: list of str """ self._PublishTime = None self._CopyrightList = None self._TagList = None @property def PublishTime(self): """版本发布时间 注意:此字段可能返回 null,表示取不到有效值。 :rtype: str """ return self._PublishTime @PublishTime.setter def PublishTime(self, PublishTime): self._PublishTime = PublishTime @property def CopyrightList(self): """当前版本的所有copyright 注意:此字段可能返回 null,表示取不到有效值。 :rtype: list of str """ return self._CopyrightList @CopyrightList.setter def CopyrightList(self, CopyrightList): self._CopyrightList = CopyrightList @property def TagList(self): """版本标签 注意:此字段可能返回 null,表示取不到有效值。 :rtype: list of str """ return self._TagList @TagList.setter def TagList(self, TagList): self._TagList = TagList def _deserialize(self, params): self._PublishTime = params.get("PublishTime") self._CopyrightList = params.get("CopyrightList") self._TagList = params.get("TagList") 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 ComponentVulnerabilitySummary(AbstractModel): """与输入组件相关的漏洞信息摘要信息。 """ def __init__(self): r""" :param _PURL: 用于匹配漏洞的PURL 注意:此字段可能返回 null,表示取不到有效值。 :type PURL: :class:`tencentcloud.bsca.v20210811.models.PURL` :param _CanBeFixed: 该组件是否包含修复漏洞的官方补丁 :type CanBeFixed: bool :param _FixedVersion: 修复漏洞的组件版本号 :type FixedVersion: str :param _AffectedVersion: 漏洞影响的组件版本号 :type AffectedVersion: str :param _AffectedComponent: 漏洞影响组件 :type AffectedComponent: str :param _RiskLevel: 漏洞在该产品中的风险等级 <li>Critical</li> <li>High</li> <li>Medium</li> <li>Low</li> :type RiskLevel: str """ self._PURL = None self._CanBeFixed = None self._FixedVersion = None self._AffectedVersion = None self._AffectedComponent = None self._RiskLevel = None @property def PURL(self): """用于匹配漏洞的PURL 注意:此字段可能返回 null,表示取不到有效值。 :rtype: :class:`tencentcloud.bsca.v20210811.models.PURL` """ return self._PURL @PURL.setter def PURL(self, PURL): self._PURL = PURL @property def CanBeFixed(self): """该组件是否包含修复漏洞的官方补丁 :rtype: bool """ return self._CanBeFixed @CanBeFixed.setter def CanBeFixed(self, CanBeFixed): self._CanBeFixed = CanBeFixed @property def FixedVersion(self): """修复漏洞的组件版本号 :rtype: str """ return self._FixedVersion @FixedVersion.setter def FixedVersion(self, FixedVersion): self._FixedVersion = FixedVersion @property def AffectedVersion(self): """漏洞影响的组件版本号 :rtype: str """ return self._AffectedVersion @AffectedVersion.setter def AffectedVersion(self, AffectedVersion): self._AffectedVersion = AffectedVersion @property def AffectedComponent(self): """漏洞影响组件 :rtype: str """ return self._AffectedComponent @AffectedComponent.setter def AffectedComponent(self, AffectedComponent): self._AffectedComponent = AffectedComponent @property def RiskLevel(self): """漏洞在该产品中的风险等级 <li>Critical</li> <li>High</li> <li>Medium</li> <li>Low</li> :rtype: str """ return self._RiskLevel @RiskLevel.setter def RiskLevel(self, RiskLevel): self._RiskLevel = RiskLevel def _deserialize(self, params): if params.get("PURL") is not None: self._PURL = PURL() self._PURL._deserialize(params.get("PURL")) self._CanBeFixed = params.get("CanBeFixed") self._FixedVersion = params.get("FixedVersion") self._AffectedVersion = params.get("AffectedVersion") self._AffectedComponent = params.get("AffectedComponent") self._RiskLevel = params.get("RiskLevel") 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 ComponentVulnerabilityUnion(AbstractModel): """描述组件漏洞相关概览信息。 """ def __init__(self): r""" :param _Summary: 漏洞概览信息 :type Summary: :class:`tencentcloud.bsca.v20210811.models.VulnerabilitySummary` :param _SummaryInComponent: 与组件相关的漏洞概览信息 :type SummaryInComponent: :class:`tencentcloud.bsca.v20210811.models.ComponentVulnerabilitySummary` """ self._Summary = None self._SummaryInComponent = None @property def Summary(self): """漏洞概览信息 :rtype: :class:`tencentcloud.bsca.v20210811.models.VulnerabilitySummary` """ return self._Summary @Summary.setter def Summary(self, Summary): self._Summary = Summary @property def SummaryInComponent(self): """与组件相关的漏洞概览信息 :rtype: :class:`tencentcloud.bsca.v20210811.models.ComponentVulnerabilitySummary` """ return self._SummaryInComponent @SummaryInComponent.setter def SummaryInComponent(self, SummaryInComponent): self._SummaryInComponent = SummaryInComponent def _deserialize(self, params): if params.get("Summary") is not None: self._Summary = VulnerabilitySummary() self._Summary._deserialize(params.get("Summary")) if params.get("SummaryInComponent") is not None: self._SummaryInComponent = ComponentVulnerabilitySummary() self._SummaryInComponent._deserialize(params.get("SummaryInComponent")) 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 DescribeKBComponentRequest(AbstractModel): """DescribeKBComponent请求参数结构体 """ def __init__(self): r""" :param _PURL: 组件的PURL :type PURL: :class:`tencentcloud.bsca.v20210811.models.PURL` """ self._PURL = None @property def PURL(self): """组件的PURL :rtype: :class:`tencentcloud.bsca.v20210811.models.PURL` """ return self._PURL @PURL.setter def PURL(self, PURL): self._PURL = PURL def _deserialize(self, params): if params.get("PURL") is not None: self._PURL = PURL() self._PURL._deserialize(params.get("PURL")) 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 DescribeKBComponentResponse(AbstractModel): """DescribeKBComponent返回参数结构体 """ def __init__(self): r""" :param _Component: 匹配的组件信息 :type Component: :class:`tencentcloud.bsca.v20210811.models.Component` :param _RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。 :type RequestId: str """ self._Component = None self._RequestId = None @property def Component(self): """匹配的组件信息 :rtype: :class:`tencentcloud.bsca.v20210811.models.Component` """ return self._Component @Component.setter def Component(self, Component): self._Component = Component @property def RequestId(self): """唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。 :rtype: str """ return self._RequestId @RequestId.setter def RequestId(self, RequestId): self._RequestId = RequestId def _deserialize(self, params): if params.get("Component") is not None: self._Component = Component() self._Component._deserialize(params.get("Component")) self._RequestId = params.get("RequestId") class DescribeKBComponentVersionListRequest(AbstractModel): """DescribeKBComponentVersionList请求参数结构体 """ def __init__(self): r""" :param _PURL: 要查询的组件 PURL :type PURL: :class:`tencentcloud.bsca.v20210811.models.PURL` :param _PageNumber: 页号 :type PageNumber: int :param _PageSize: 页大小 :type PageSize: int :param _Order: 排序方式,可以是"ASC"或"DESC",默认"DESC" :type Order: str :param _OrderBy: 排序字段,可能的字段包括“Version”、"PublishTime" :type OrderBy: list of str :param _Filter: Tag筛选 :type Filter: :class:`tencentcloud.bsca.v20210811.models.ComponentTagFilter` """ self._PURL = None self._PageNumber = None self._PageSize = None self._Order = None self._OrderBy = None self._Filter = None @property def PURL(self): """要查询的组件 PURL :rtype: :class:`tencentcloud.bsca.v20210811.models.PURL` """ return self._PURL @PURL.setter def PURL(self, PURL): self._PURL = PURL @property def PageNumber(self): """页号 :rtype: int """ return self._PageNumber @PageNumber.setter def PageNumber(self, PageNumber): self._PageNumber = PageNumber @property def PageSize(self): """页大小 :rtype: int """ return self._PageSize @PageSize.setter def PageSize(self, PageSize): self._PageSize = PageSize @property def Order(self): """排序方式,可以是"ASC"或"DESC",默认"DESC" :rtype: str """ return self._Order @Order.setter def Order(self, Order): self._Order = Order @property def OrderBy(self): """排序字段,可能的字段包括“Version”、"PublishTime" :rtype: list of str """ return self._OrderBy @OrderBy.setter def OrderBy(self, OrderBy): self._OrderBy = OrderBy @property def Filter(self): """Tag筛选 :rtype: :class:`tencentcloud.bsca.v20210811.models.ComponentTagFilter` """ return self._Filter @Filter.setter def Filter(self, Filter): self._Filter = Filter def _deserialize(self, params): if params.get("PURL") is not None: self._PURL = PURL() self._PURL._deserialize(params.get("PURL")) self._PageNumber = params.get("PageNumber") self._PageSize = params.get("PageSize") self._Order = params.get("Order") self._OrderBy = params.get("OrderBy") if params.get("Filter") is not None: self._Filter = ComponentTagFilter() self._Filter._deserialize(params.get("Filter")) 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 DescribeKBComponentVersionListResponse(AbstractModel): """DescribeKBComponentVersionList返回参数结构体 """ def __init__(self): r""" :param _VersionList: 该组件的版本列表信息 :type VersionList: list of ComponentVersion :param _RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。 :type RequestId: str """ self._VersionList = None self._RequestId = None @property def VersionList(self): """该组件的版本列表信息 :rtype: list of ComponentVersion """ return self._VersionList @VersionList.setter def VersionList(self, VersionList): self._VersionList = VersionList @property def RequestId(self): """唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。 :rtype: str """ return self._RequestId @RequestId.setter def RequestId(self, RequestId): self._RequestId = RequestId def _deserialize(self, params): if params.get("VersionList") is not None: self._VersionList = [] for item in params.get("VersionList"): obj = ComponentVersion() obj._deserialize(item) self._VersionList.append(obj) self._RequestId = params.get("RequestId") class DescribeKBComponentVulnerabilityRequest(AbstractModel): """DescribeKBComponentVulnerability请求参数结构体 """ def __init__(self): r""" :param _PURL: 组件的PURL,其中Name和Version为必填字段 :type PURL: :class:`tencentcloud.bsca.v20210811.models.PURL` :param _Language: 语言,ZH或EN :type Language: str """ self._PURL = None self._Language = None @property def PURL(self): """组件的PURL,其中Name和Version为必填字段 :rtype: :class:`tencentcloud.bsca.v20210811.models.PURL` """ return self._PURL @PURL.setter def PURL(self, PURL): self._PURL = PURL @property def Language(self): """语言,ZH或EN :rtype: str """ return self._Language @Language.setter def Language(self, Language): self._Language = Language def _deserialize(self, params): if params.get("PURL") is not None: self._PURL = PURL() self._PURL._deserialize(params.get("PURL")) self._Language = params.get("Language") 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 DescribeKBComponentVulnerabilityResponse(AbstractModel): """DescribeKBComponentVulnerability返回参数结构体 """ def __init__(self): r""" :param _VulnerabilityList: 漏洞信息列表 注意:此字段可能返回 null,表示取不到有效值。 :type VulnerabilityList: list of ComponentVulnerabilityUnion :param _PURL: 组件purl :type PURL: :class:`tencentcloud.bsca.v20210811.models.PURL` :param _RecommendedVersion: 推荐版本,最小无高危/严重漏洞的版本。无法升级到安全版本时的备选方案。 :type RecommendedVersion: str :param _SecureVersion: 安全版本(首选),最小无漏洞的版本。当无法升级到安全版本时可考虑使用推荐版本。 :type SecureVersion: str :param _RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。 :type RequestId: str """ self._VulnerabilityList = None self._PURL = None self._RecommendedVersion = None self._SecureVersion = None self._RequestId = None @property def VulnerabilityList(self): """漏洞信息列表 注意:此字段可能返回 null,表示取不到有效值。 :rtype: list of ComponentVulnerabilityUnion """ return self._VulnerabilityList @VulnerabilityList.setter def VulnerabilityList(self, VulnerabilityList): self._VulnerabilityList = VulnerabilityList @property def PURL(self): """组件purl :rtype: :class:`tencentcloud.bsca.v20210811.models.PURL` """ return self._PURL @PURL.setter def PURL(self, PURL): self._PURL = PURL @property def RecommendedVersion(self): """推荐版本,最小无高危/严重漏洞的版本。无法升级到安全版本时的备选方案。 :rtype: str """ return self._RecommendedVersion @RecommendedVersion.setter def RecommendedVersion(self, RecommendedVersion): self._RecommendedVersion = RecommendedVersion @property def SecureVersion(self): """安全版本(首选),最小无漏洞的版本。当无法升级到安全版本时可考虑使用推荐版本。 :rtype: str """ return self._SecureVersion @SecureVersion.setter def SecureVersion(self, SecureVersion): self._SecureVersion = SecureVersion @property def RequestId(self): """唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。 :rtype: str """ return self._RequestId @RequestId.setter def RequestId(self, RequestId): self._RequestId = RequestId def _deserialize(self, params): if params.get("VulnerabilityList") is not None: self._VulnerabilityList = [] for item in params.get("VulnerabilityList"): obj = ComponentVulnerabilityUnion() obj._deserialize(item) self._VulnerabilityList.append(obj) if params.get("PURL") is not None: self._PURL = PURL() self._PURL._deserialize(params.get("PURL")) self._RecommendedVersion = params.get("RecommendedVersion") self._SecureVersion = params.get("SecureVersion") self._RequestId = params.get("RequestId") class DescribeKBLicenseRequest(AbstractModel): """DescribeKBLicense请求参数结构体 """ def __init__(self): r""" :param _LicenseExpression: License表达式 :type LicenseExpression: str """ self._LicenseExpression = None @property def LicenseExpression(self): """License表达式 :rtype: str """ return self._LicenseExpression @LicenseExpression.setter def LicenseExpression(self, LicenseExpression): self._LicenseExpression = LicenseExpression def _deserialize(self, params): self._LicenseExpression = params.get("LicenseExpression") 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 DescribeKBLicenseResponse(AbstractModel): """DescribeKBLicense返回参数结构体 """ def __init__(self): r""" :param _LicenseList: 许可证列表 注意:此字段可能返回 null,表示取不到有效值。 :type LicenseList: list of LicenseUnion :param _NormalizedLicenseExpression: 用于匹配的License表达式 :type NormalizedLicenseExpression: str :param _RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。 :type RequestId: str """ self._LicenseList = None self._NormalizedLicenseExpression = None self._RequestId = None @property def LicenseList(self): """许可证列表 注意:此字段可能返回 null,表示取不到有效值。 :rtype: list of LicenseUnion """ return self._LicenseList @LicenseList.setter def LicenseList(self, LicenseList): self._LicenseList = LicenseList @property def NormalizedLicenseExpression(self): """用于匹配的License表达式 :rtype: str """ return self._NormalizedLicenseExpression @NormalizedLicenseExpression.setter def NormalizedLicenseExpression(self, NormalizedLicenseExpression): self._NormalizedLicenseExpression = NormalizedLicenseExpression @property def RequestId(self): """唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。 :rtype: str """ return self._RequestId @RequestId.setter def RequestId(self, RequestId): self._RequestId = RequestId def _deserialize(self, params): if params.get("LicenseList") is not None: self._LicenseList = [] for item in params.get("LicenseList"): obj = LicenseUnion() obj._deserialize(item) self._LicenseList.append(obj) self._NormalizedLicenseExpression = params.get("NormalizedLicenseExpression") self._RequestId = params.get("RequestId") class DescribeKBVulnerabilityRequest(AbstractModel): """DescribeKBVulnerability请求参数结构体 """ def __init__(self): r""" :param _CVEID: 根据CVE ID查询(不能与其他参数同时存在) :type CVEID: list of str :param _VulID: 根据Vul ID查询(不能与其他参数同时存在) :type VulID: list of str :param _CNVDID: 根据CNVD ID查询(不能与其他参数同时存在) :type CNVDID: list of str :param _CNNVDID: 根据CNNVD ID查询(不能与其他参数同时存在) :type CNNVDID: list of str :param _Language: 语言,ZH或EN :type Language: str """ self._CVEID = None self._VulID = None self._CNVDID = None self._CNNVDID = None self._Language = None @property def CVEID(self): """根据CVE ID查询(不能与其他参数同时存在) :rtype: list of str """ return self._CVEID @CVEID.setter def CVEID(self, CVEID): self._CVEID = CVEID @property def VulID(self): """根据Vul ID查询(不能与其他参数同时存在) :rtype: list of str """ return self._VulID @VulID.setter def VulID(self, VulID): self._VulID = VulID @property def CNVDID(self): """根据CNVD ID查询(不能与其他参数同时存在) :rtype: list of str """ return self._CNVDID @CNVDID.setter def CNVDID(self, CNVDID): self._CNVDID = CNVDID @property def CNNVDID(self): """根据CNNVD ID查询(不能与其他参数同时存在) :rtype: list of str """ return self._CNNVDID @CNNVDID.setter def CNNVDID(self, CNNVDID): self._CNNVDID = CNNVDID @property def Language(self): """语言,ZH或EN :rtype: str """ return self._Language @Language.setter def Language(self, Language): self._Language = Language def _deserialize(self, params): self._CVEID = params.get("CVEID") self._VulID = params.get("VulID") self._CNVDID = params.get("CNVDID") self._CNNVDID = params.get("CNNVDID") self._Language = params.get("Language") 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 DescribeKBVulnerabilityResponse(AbstractModel): """DescribeKBVulnerability返回参数结构体 """ def __init__(self): r""" :param _VulnerabilityDetailList: 漏洞详细信息列表 注意:此字段可能返回 null,表示取不到有效值。 :type VulnerabilityDetailList: list of VulnerabilityUnion :param _RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。 :type RequestId: str """ self._VulnerabilityDetailList = None self._RequestId = None @property def VulnerabilityDetailList(self): """漏洞详细信息列表 注意:此字段可能返回 null,表示取不到有效值。 :rtype: list of VulnerabilityUnion """ return self._VulnerabilityDetailList @VulnerabilityDetailList.setter def VulnerabilityDetailList(self, VulnerabilityDetailList): self._VulnerabilityDetailList = VulnerabilityDetailList @property def RequestId(self): """唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。 :rtype: str """ return self._RequestId @RequestId.setter def RequestId(self, RequestId): self._RequestId = RequestId def _deserialize(self, params): if params.get("VulnerabilityDetailList") is not None: self._VulnerabilityDetailList = [] for item in params.get("VulnerabilityDetailList"): obj = VulnerabilityUnion() obj._deserialize(item) self._VulnerabilityDetailList.append(obj) self._RequestId = params.get("RequestId") class LicenseDetail(AbstractModel): """描述许可证的详细信息。 """ def __init__(self): r""" :param _Content: 许可证内容 :type Content: str :param _ConditionSet: 许可证允许信息列表 :type ConditionSet: list of LicenseRestriction :param _ForbiddenSet: 许可证要求信息列表 :type ForbiddenSet: list of LicenseRestriction :param _PermissionSet: 许可证禁止信息列表 :type PermissionSet: list of LicenseRestriction """ self._Content = None self._ConditionSet = None self._ForbiddenSet = None self._PermissionSet = None @property def Content(self): """许可证内容 :rtype: str """ return self._Content @Content.setter def Content(self, Content): self._Content = Content @property def ConditionSet(self): """许可证允许信息列表 :rtype: list of LicenseRestriction """ return self._ConditionSet @ConditionSet.setter def ConditionSet(self, ConditionSet): self._ConditionSet = ConditionSet @property def ForbiddenSet(self): """许可证要求信息列表 :rtype: list of LicenseRestriction """ return self._ForbiddenSet @ForbiddenSet.setter def ForbiddenSet(self, ForbiddenSet): self._ForbiddenSet = ForbiddenSet @property def PermissionSet(self): """许可证禁止信息列表 :rtype: list of LicenseRestriction """ return self._PermissionSet @PermissionSet.setter def PermissionSet(self, PermissionSet): self._PermissionSet = PermissionSet def _deserialize(self, params): self._Content = params.get("Content") if params.get("ConditionSet") is not None: self._ConditionSet = [] for item in params.get("ConditionSet"): obj = LicenseRestriction() obj._deserialize(item) self._ConditionSet.append(obj) if params.get("ForbiddenSet") is not None: self._ForbiddenSet = [] for item in params.get("ForbiddenSet"): obj = LicenseRestriction() obj._deserialize(item) self._ForbiddenSet.append(obj) if params.get("PermissionSet") is not None: self._PermissionSet = [] for item in params.get("PermissionSet"): obj = LicenseRestriction() obj._deserialize(item) self._PermissionSet.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 LicenseRestriction(AbstractModel): """License约束信息。 """ def __init__(self): r""" :param _Name: license约束的名称。 :type Name: str :param _Description: license约束的描述。 :type Description: str """ self._Name = None self._Description = None @property def Name(self): """license约束的名称。 :rtype: str """ return self._Name @Name.setter def Name(self, Name): self._Name = Name @property def Description(self): """license约束的描述。 :rtype: str """ return self._Description @Description.setter def Description(self, Description): self._Description = Description def _deserialize(self, params): self._Name = params.get("Name") 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 LicenseSummary(AbstractModel): """描述许可证的概览信息。 """ def __init__(self): r""" :param _Key: 许可证标识符 :type Key: str :param _SPDXKey: 许可证的SPDX标识符,见 https://spdx.org/licenses/ :type SPDXKey: str :param _ShortName: 许可证短名称 :type ShortName: str :param _Name: 许可证完整名称 :type Name: str :param _Risk: License风险等级 <li>NotDefined</li> <li>LowRisk</li> <li>MediumRisk</li> <li>HighRisk</li> :type Risk: str :param _Source: 许可证来源URL :type Source: str """ self._Key = None self._SPDXKey = None self._ShortName = None self._Name = None self._Risk = None self._Source = None @property def Key(self): """许可证标识符 :rtype: str """ return self._Key @Key.setter def Key(self, Key): self._Key = Key @property def SPDXKey(self): """许可证的SPDX标识符,见 https://spdx.org/licenses/ :rtype: str """ return self._SPDXKey @SPDXKey.setter def SPDXKey(self, SPDXKey): self._SPDXKey = SPDXKey @property def ShortName(self): """许可证短名称 :rtype: str """ return self._ShortName @ShortName.setter def ShortName(self, ShortName): self._ShortName = ShortName @property def Name(self): """许可证完整名称 :rtype: str """ return self._Name @Name.setter def Name(self, Name): self._Name = Name @property def Risk(self): """License风险等级 <li>NotDefined</li> <li>LowRisk</li> <li>MediumRisk</li> <li>HighRisk</li> :rtype: str """ return self._Risk @Risk.setter def Risk(self, Risk): self._Risk = Risk @property def Source(self): """许可证来源URL :rtype: str """ return self._Source @Source.setter def Source(self, Source): self._Source = Source def _deserialize(self, params): self._Key = params.get("Key") self._SPDXKey = params.get("SPDXKey") self._ShortName = params.get("ShortName") self._Name = params.get("Name") self._Risk = params.get("Risk") self._Source = params.get("Source") 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 LicenseUnion(AbstractModel): """许可证详细信息。 """ def __init__(self): r""" :param _LicenseSummary: 许可证概览信息 :type LicenseSummary: :class:`tencentcloud.bsca.v20210811.models.LicenseSummary` :param _LicenseDetail: 许可证详细信息 :type LicenseDetail: :class:`tencentcloud.bsca.v20210811.models.LicenseDetail` """ self._LicenseSummary = None self._LicenseDetail = None @property def LicenseSummary(self): """许可证概览信息 :rtype: :class:`tencentcloud.bsca.v20210811.models.LicenseSummary` """ return self._LicenseSummary @LicenseSummary.setter def LicenseSummary(self, LicenseSummary): self._LicenseSummary = LicenseSummary @property def LicenseDetail(self): """许可证详细信息 :rtype: :class:`tencentcloud.bsca.v20210811.models.LicenseDetail` """ return self._LicenseDetail @LicenseDetail.setter def LicenseDetail(self, LicenseDetail): self._LicenseDetail = LicenseDetail def _deserialize(self, params): if params.get("LicenseSummary") is not None: self._LicenseSummary = LicenseSummary() self._LicenseSummary._deserialize(params.get("LicenseSummary")) if params.get("LicenseDetail") is not None: self._LicenseDetail = LicenseDetail() self._LicenseDetail._deserialize(params.get("LicenseDetail")) 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 MatchKBPURLListRequest(AbstractModel): """MatchKBPURLList请求参数结构体 """ def __init__(self): r""" :param _SHA1: SHA1。 :type SHA1: str """ self._SHA1 = None @property def SHA1(self): """SHA1。 :rtype: str """ return self._SHA1 @SHA1.setter def SHA1(self, SHA1): self._SHA1 = SHA1 def _deserialize(self, params): self._SHA1 = params.get("SHA1") 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 MatchKBPURLListResponse(AbstractModel): """MatchKBPURLList返回参数结构体 """ def __init__(self): r""" :param _PURLList: 组件列表。 :type PURLList: list of PURL :param _Hit: 是否命中数据库。 :type Hit: bool :param _RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。 :type RequestId: str """ self._PURLList = None self._Hit = None self._RequestId = None @property def PURLList(self): """组件列表。 :rtype: list of PURL """ return self._PURLList @PURLList.setter def PURLList(self, PURLList): self._PURLList = PURLList @property def Hit(self): """是否命中数据库。 :rtype: bool """ return self._Hit @Hit.setter def Hit(self, Hit): self._Hit = Hit @property def RequestId(self): """唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。 :rtype: str """ return self._RequestId @RequestId.setter def RequestId(self, RequestId): self._RequestId = RequestId def _deserialize(self, params): if params.get("PURLList") is not None: self._PURLList = [] for item in params.get("PURLList"): obj = PURL() obj._deserialize(item) self._PURLList.append(obj) self._Hit = params.get("Hit") self._RequestId = params.get("RequestId") class PURL(AbstractModel): """PURL(Package URL)用于定位一个产品或组件,见 https://github.com/package-url/purl-spec。 """ def __init__(self): r""" :param _Name: 组件名称 :type Name: str :param _Protocol: 组件所属的类型,如:github, gitlab, generic, deb, rpm, maven 等 :type Protocol: str :param _Namespace: 组件名的前缀名,如github和gitlab的用户名,deb的操作系统,maven包的group id等 :type Namespace: str :param _Qualifiers: 修饰组件的额外属性 注意:此字段可能返回 null,表示取不到有效值。 :type Qualifiers: list of Qualifier :param _Subpath: 相对于组件包根位置的子目录 :type Subpath: str :param _Version: 组件版本号 :type Version: str """ self._Name = None self._Protocol = None self._Namespace = None self._Qualifiers = None self._Subpath = None self._Version = None @property def Name(self): """组件名称 :rtype: str """ return self._Name @Name.setter def Name(self, Name): self._Name = Name @property def Protocol(self): """组件所属的类型,如:github, gitlab, generic, deb, rpm, maven 等 :rtype: str """ return self._Protocol @Protocol.setter def Protocol(self, Protocol): self._Protocol = Protocol @property def Namespace(self): """组件名的前缀名,如github和gitlab的用户名,deb的操作系统,maven包的group id等 :rtype: str """ return self._Namespace @Namespace.setter def Namespace(self, Namespace): self._Namespace = Namespace @property def Qualifiers(self): """修饰组件的额外属性 注意:此字段可能返回 null,表示取不到有效值。 :rtype: list of Qualifier """ return self._Qualifiers @Qualifiers.setter def Qualifiers(self, Qualifiers): self._Qualifiers = Qualifiers @property def Subpath(self): """相对于组件包根位置的子目录 :rtype: str """ return self._Subpath @Subpath.setter def Subpath(self, Subpath): self._Subpath = Subpath @property def Version(self): """组件版本号 :rtype: str """ return self._Version @Version.setter def Version(self, Version): self._Version = Version def _deserialize(self, params): self._Name = params.get("Name") self._Protocol = params.get("Protocol") self._Namespace = params.get("Namespace") if params.get("Qualifiers") is not None: self._Qualifiers = [] for item in params.get("Qualifiers"): obj = Qualifier() obj._deserialize(item) self._Qualifiers.append(obj) self._Subpath = params.get("Subpath") self._Version = params.get("Version") 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 Qualifier(AbstractModel): """PURL下的Qualifier属性类型,用于定义第三方组件的额外属性,见 https://github.com/package-url/purl-spec。 """ def __init__(self): r""" :param _Key: 额外属性的名称。 :type Key: str :param _Value: 额外属性的值。 :type Value: str """ self._Key = None self._Value = None @property def Key(self): """额外属性的名称。 :rtype: str """ return self._Key @Key.setter def Key(self, Key): self._Key = Key @property def Value(self): """额外属性的值。 :rtype: str """ return self._Value @Value.setter def Value(self, Value): self._Value = Value def _deserialize(self, params): self._Key = params.get("Key") self._Value = params.get("Value") 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 SearchKBComponentRequest(AbstractModel): """SearchKBComponent请求参数结构体 """ def __init__(self): r""" :param _Query: 需要搜索的组件名 :type Query: str :param _Protocol: 需要搜索的组件类型 :type Protocol: str :param _PageNumber: 分页参数,从 0 开始 :type PageNumber: int :param _PageSize: 分页参数,设置每页返回的结果数量 :type PageSize: int """ self._Query = None self._Protocol = None self._PageNumber = None self._PageSize = None @property def Query(self): """需要搜索的组件名 :rtype: str """ return self._Query @Query.setter def Query(self, Query): self._Query = Query @property def Protocol(self): """需要搜索的组件类型 :rtype: str """ return self._Protocol @Protocol.setter def Protocol(self, Protocol): self._Protocol = Protocol @property def PageNumber(self): """分页参数,从 0 开始 :rtype: int """ return self._PageNumber @PageNumber.setter def PageNumber(self, PageNumber): self._PageNumber = PageNumber @property def PageSize(self): """分页参数,设置每页返回的结果数量 :rtype: int """ return self._PageSize @PageSize.setter def PageSize(self, PageSize): self._PageSize = PageSize def _deserialize(self, params): self._Query = params.get("Query") self._Protocol = params.get("Protocol") self._PageNumber = params.get("PageNumber") self._PageSize = params.get("PageSize") 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 SearchKBComponentResponse(AbstractModel): """SearchKBComponent返回参数结构体 """ def __init__(self): r""" :param _ComponentList: 满足搜索条件的组件列表 :type ComponentList: list of Component :param _Total: 满足搜索条件的总个数 :type Total: int :param _RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。 :type RequestId: str """ self._ComponentList = None self._Total = None self._RequestId = None @property def ComponentList(self): """满足搜索条件的组件列表 :rtype: list of Component """ return self._ComponentList @ComponentList.setter def ComponentList(self, ComponentList): self._ComponentList = ComponentList @property def Total(self): """满足搜索条件的总个数 :rtype: int """ return self._Total @Total.setter def Total(self, Total): self._Total = Total @property def RequestId(self): """唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。 :rtype: str """ return self._RequestId @RequestId.setter def RequestId(self, RequestId): self._RequestId = RequestId def _deserialize(self, params): if params.get("ComponentList") is not None: self._ComponentList = [] for item in params.get("ComponentList"): obj = Component() obj._deserialize(item) self._ComponentList.append(obj) self._Total = params.get("Total") self._RequestId = params.get("RequestId") class VulnerabilityDetail(AbstractModel): """描述漏洞详细信息。 """ def __init__(self): r""" :param _Category: 漏洞类别 :type Category: str :param _CategoryType: 漏洞分类 :type CategoryType: str :param _Description: 漏洞描述 :type Description: str :param _OfficialSolution: 漏洞官方解决方案 :type OfficialSolution: str :param _ReferenceList: 漏洞信息参考列表 :type ReferenceList: list of str :param _DefenseSolution: 漏洞防御方案 :type DefenseSolution: str :param _CVSSv2Info: 漏洞CVSSv2信息 注意:此字段可能返回 null,表示取不到有效值。 :type CVSSv2Info: :class:`tencentcloud.bsca.v20210811.models.CVSSV2Info` :param _CVSSv3Info: 漏洞CVSSv3信息 注意:此字段可能返回 null,表示取不到有效值。 :type CVSSv3Info: :class:`tencentcloud.bsca.v20210811.models.CVSSV3Info` :param _SubmitTime: 漏洞提交时间 :type SubmitTime: str :param _UpdateTime: 漏洞更新时间 :type UpdateTime: str :param _CWEID: CWE编号 :type CWEID: str :param _CVSSv2Vector: 漏洞CVSSv2向量 :type CVSSv2Vector: str :param _CVSSv3Vector: 漏洞CVSSv3向量 :type CVSSv3Vector: str :param _AffectedComponentList: 漏洞影响的组件列表,仅当查询单个漏洞时有效 :type AffectedComponentList: list of AffectedComponent """ self._Category = None self._CategoryType = None self._Description = None self._OfficialSolution = None self._ReferenceList = None self._DefenseSolution = None self._CVSSv2Info = None self._CVSSv3Info = None self._SubmitTime = None self._UpdateTime = None self._CWEID = None self._CVSSv2Vector = None self._CVSSv3Vector = None self._AffectedComponentList = None @property def Category(self): """漏洞类别 :rtype: str """ return self._Category @Category.setter def Category(self, Category): self._Category = Category @property def CategoryType(self): """漏洞分类 :rtype: str """ return self._CategoryType @CategoryType.setter def CategoryType(self, CategoryType): self._CategoryType = CategoryType @property def Description(self): """漏洞描述 :rtype: str """ return self._Description @Description.setter def Description(self, Description): self._Description = Description @property def OfficialSolution(self): """漏洞官方解决方案 :rtype: str """ return self._OfficialSolution @OfficialSolution.setter def OfficialSolution(self, OfficialSolution): self._OfficialSolution = OfficialSolution @property def ReferenceList(self): """漏洞信息参考列表 :rtype: list of str """ return self._ReferenceList @ReferenceList.setter def ReferenceList(self, ReferenceList): self._ReferenceList = ReferenceList @property def DefenseSolution(self): """漏洞防御方案 :rtype: str """ return self._DefenseSolution @DefenseSolution.setter def DefenseSolution(self, DefenseSolution): self._DefenseSolution = DefenseSolution @property def CVSSv2Info(self): """漏洞CVSSv2信息 注意:此字段可能返回 null,表示取不到有效值。 :rtype: :class:`tencentcloud.bsca.v20210811.models.CVSSV2Info` """ return self._CVSSv2Info @CVSSv2Info.setter def CVSSv2Info(self, CVSSv2Info): self._CVSSv2Info = CVSSv2Info @property def CVSSv3Info(self): """漏洞CVSSv3信息 注意:此字段可能返回 null,表示取不到有效值。 :rtype: :class:`tencentcloud.bsca.v20210811.models.CVSSV3Info` """ return self._CVSSv3Info @CVSSv3Info.setter def CVSSv3Info(self, CVSSv3Info): self._CVSSv3Info = CVSSv3Info @property def SubmitTime(self): """漏洞提交时间 :rtype: str """ return self._SubmitTime @SubmitTime.setter def SubmitTime(self, SubmitTime): self._SubmitTime = SubmitTime @property def UpdateTime(self): """漏洞更新时间 :rtype: str """ return self._UpdateTime @UpdateTime.setter def UpdateTime(self, UpdateTime): self._UpdateTime = UpdateTime @property def CWEID(self): """CWE编号 :rtype: str """ return self._CWEID @CWEID.setter def CWEID(self, CWEID): self._CWEID = CWEID @property def CVSSv2Vector(self): """漏洞CVSSv2向量 :rtype: str """ return self._CVSSv2Vector @CVSSv2Vector.setter def CVSSv2Vector(self, CVSSv2Vector): self._CVSSv2Vector = CVSSv2Vector @property def CVSSv3Vector(self): """漏洞CVSSv3向量 :rtype: str """ return self._CVSSv3Vector @CVSSv3Vector.setter def CVSSv3Vector(self, CVSSv3Vector): self._CVSSv3Vector = CVSSv3Vector @property def AffectedComponentList(self): """漏洞影响的组件列表,仅当查询单个漏洞时有效 :rtype: list of AffectedComponent """ return self._AffectedComponentList @AffectedComponentList.setter def AffectedComponentList(self, AffectedComponentList): self._AffectedComponentList = AffectedComponentList def _deserialize(self, params): self._Category = params.get("Category") self._CategoryType = params.get("CategoryType") self._Description = params.get("Description") self._OfficialSolution = params.get("OfficialSolution") self._ReferenceList = params.get("ReferenceList") self._DefenseSolution = params.get("DefenseSolution") if params.get("CVSSv2Info") is not None: self._CVSSv2Info = CVSSV2Info() self._CVSSv2Info._deserialize(params.get("CVSSv2Info")) if params.get("CVSSv3Info") is not None: self._CVSSv3Info = CVSSV3Info() self._CVSSv3Info._deserialize(params.get("CVSSv3Info")) self._SubmitTime = params.get("SubmitTime") self._UpdateTime = params.get("UpdateTime") self._CWEID = params.get("CWEID") self._CVSSv2Vector = params.get("CVSSv2Vector") self._CVSSv3Vector = params.get("CVSSv3Vector") if params.get("AffectedComponentList") is not None: self._AffectedComponentList = [] for item in params.get("AffectedComponentList"): obj = AffectedComponent() obj._deserialize(item) self._AffectedComponentList.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 VulnerabilitySummary(AbstractModel): """描述漏洞的摘要信息。 """ def __init__(self): r""" :param _VulID: 漏洞ID :type VulID: str :param _CVEID: 漏洞所属CVE编号 :type CVEID: str :param _CNVDID: 漏洞所属CNVD编号 :type CNVDID: str :param _CNNVDID: 漏洞所属CNNVD编号 :type CNNVDID: str :param _Name: 漏洞名称 :type Name: str :param _IsSuggest: 该漏洞是否是需重点关注的漏洞 :type IsSuggest: bool :param _Severity: 漏洞风险等级 <li>Critical</li> <li>High</li> <li>Medium</li> <li>Low</li> :type Severity: str :param _Architecture: 架构信息,如x86、ARM等,废弃,请使用ArchitectureList 注意:此字段可能返回 null,表示取不到有效值。 :type Architecture: list of str :param _ArchitectureList: 架构信息,如x86、ARM等 注意:此字段可能返回 null,表示取不到有效值。 :type ArchitectureList: list of str :param _PatchUrlList: patch链接 注意:此字段可能返回 null,表示取不到有效值。 :type PatchUrlList: list of str """ self._VulID = None self._CVEID = None self._CNVDID = None self._CNNVDID = None self._Name = None self._IsSuggest = None self._Severity = None self._Architecture = None self._ArchitectureList = None self._PatchUrlList = None @property def VulID(self): """漏洞ID :rtype: str """ return self._VulID @VulID.setter def VulID(self, VulID): self._VulID = VulID @property def CVEID(self): """漏洞所属CVE编号 :rtype: str """ return self._CVEID @CVEID.setter def CVEID(self, CVEID): self._CVEID = CVEID @property def CNVDID(self): """漏洞所属CNVD编号 :rtype: str """ return self._CNVDID @CNVDID.setter def CNVDID(self, CNVDID): self._CNVDID = CNVDID @property def CNNVDID(self): """漏洞所属CNNVD编号 :rtype: str """ return self._CNNVDID @CNNVDID.setter def CNNVDID(self, CNNVDID): self._CNNVDID = CNNVDID @property def Name(self): """漏洞名称 :rtype: str """ return self._Name @Name.setter def Name(self, Name): self._Name = Name @property def IsSuggest(self): """该漏洞是否是需重点关注的漏洞 :rtype: bool """ return self._IsSuggest @IsSuggest.setter def IsSuggest(self, IsSuggest): self._IsSuggest = IsSuggest @property def Severity(self): """漏洞风险等级 <li>Critical</li> <li>High</li> <li>Medium</li> <li>Low</li> :rtype: str """ return self._Severity @Severity.setter def Severity(self, Severity): self._Severity = Severity @property def Architecture(self): warnings.warn("parameter `Architecture` is deprecated", DeprecationWarning) """架构信息,如x86、ARM等,废弃,请使用ArchitectureList 注意:此字段可能返回 null,表示取不到有效值。 :rtype: list of str """ return self._Architecture @Architecture.setter def Architecture(self, Architecture): warnings.warn("parameter `Architecture` is deprecated", DeprecationWarning) self._Architecture = Architecture @property def ArchitectureList(self): """架构信息,如x86、ARM等 注意:此字段可能返回 null,表示取不到有效值。 :rtype: list of str """ return self._ArchitectureList @ArchitectureList.setter def ArchitectureList(self, ArchitectureList): self._ArchitectureList = ArchitectureList @property def PatchUrlList(self): """patch链接 注意:此字段可能返回 null,表示取不到有效值。 :rtype: list of str """ return self._PatchUrlList @PatchUrlList.setter def PatchUrlList(self, PatchUrlList): self._PatchUrlList = PatchUrlList def _deserialize(self, params): self._VulID = params.get("VulID") self._CVEID = params.get("CVEID") self._CNVDID = params.get("CNVDID") self._CNNVDID = params.get("CNNVDID") self._Name = params.get("Name") self._IsSuggest = params.get("IsSuggest") self._Severity = params.get("Severity") self._Architecture = params.get("Architecture") self._ArchitectureList = params.get("ArchitectureList") self._PatchUrlList = params.get("PatchUrlList") 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 VulnerabilityUnion(AbstractModel): """描述漏洞的详细信息。 """ def __init__(self): r""" :param _Summary: 漏洞概览信息 :type Summary: :class:`tencentcloud.bsca.v20210811.models.VulnerabilitySummary` :param _Detail: 漏洞详细信息 :type Detail: :class:`tencentcloud.bsca.v20210811.models.VulnerabilityDetail` """ self._Summary = None self._Detail = None @property def Summary(self): """漏洞概览信息 :rtype: :class:`tencentcloud.bsca.v20210811.models.VulnerabilitySummary` """ return self._Summary @Summary.setter def Summary(self, Summary): self._Summary = Summary @property def Detail(self): """漏洞详细信息 :rtype: :class:`tencentcloud.bsca.v20210811.models.VulnerabilityDetail` """ return self._Detail @Detail.setter def Detail(self, Detail): self._Detail = Detail def _deserialize(self, params): if params.get("Summary") is not None: self._Summary = VulnerabilitySummary() self._Summary._deserialize(params.get("Summary")) if params.get("Detail") is not None: self._Detail = VulnerabilityDetail() self._Detail._deserialize(params.get("Detail")) 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))
Memory