tencentcloud-sdk-python-waf 3.1.98__tar.gz → 3.1.100__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (17) hide show
  1. {tencentcloud_sdk_python_waf-3.1.98 → tencentcloud_sdk_python_waf-3.1.100}/PKG-INFO +2 -2
  2. {tencentcloud_sdk_python_waf-3.1.98 → tencentcloud_sdk_python_waf-3.1.100}/setup.py +1 -1
  3. {tencentcloud_sdk_python_waf-3.1.98 → tencentcloud_sdk_python_waf-3.1.100}/tencentcloud/__init__.py +1 -1
  4. {tencentcloud_sdk_python_waf-3.1.98 → tencentcloud_sdk_python_waf-3.1.100}/tencentcloud/waf/v20180125/errorcodes.py +39 -0
  5. {tencentcloud_sdk_python_waf-3.1.98 → tencentcloud_sdk_python_waf-3.1.100}/tencentcloud/waf/v20180125/models.py +803 -0
  6. {tencentcloud_sdk_python_waf-3.1.98 → tencentcloud_sdk_python_waf-3.1.100}/tencentcloud/waf/v20180125/waf_client.py +46 -0
  7. {tencentcloud_sdk_python_waf-3.1.98 → tencentcloud_sdk_python_waf-3.1.100}/tencentcloud/waf/v20180125/waf_client_async.py +36 -0
  8. {tencentcloud_sdk_python_waf-3.1.98 → tencentcloud_sdk_python_waf-3.1.100}/tencentcloud_sdk_python_waf.egg-info/PKG-INFO +2 -2
  9. tencentcloud_sdk_python_waf-3.1.100/tencentcloud_sdk_python_waf.egg-info/requires.txt +1 -0
  10. tencentcloud_sdk_python_waf-3.1.98/tencentcloud_sdk_python_waf.egg-info/requires.txt +0 -1
  11. {tencentcloud_sdk_python_waf-3.1.98 → tencentcloud_sdk_python_waf-3.1.100}/README.rst +0 -0
  12. {tencentcloud_sdk_python_waf-3.1.98 → tencentcloud_sdk_python_waf-3.1.100}/setup.cfg +0 -0
  13. {tencentcloud_sdk_python_waf-3.1.98 → tencentcloud_sdk_python_waf-3.1.100}/tencentcloud/waf/__init__.py +0 -0
  14. {tencentcloud_sdk_python_waf-3.1.98 → tencentcloud_sdk_python_waf-3.1.100}/tencentcloud/waf/v20180125/__init__.py +0 -0
  15. {tencentcloud_sdk_python_waf-3.1.98 → tencentcloud_sdk_python_waf-3.1.100}/tencentcloud_sdk_python_waf.egg-info/SOURCES.txt +0 -0
  16. {tencentcloud_sdk_python_waf-3.1.98 → tencentcloud_sdk_python_waf-3.1.100}/tencentcloud_sdk_python_waf.egg-info/dependency_links.txt +0 -0
  17. {tencentcloud_sdk_python_waf-3.1.98 → tencentcloud_sdk_python_waf-3.1.100}/tencentcloud_sdk_python_waf.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: tencentcloud-sdk-python-waf
3
- Version: 3.1.98
3
+ Version: 3.1.100
4
4
  Summary: Tencent Cloud Waf SDK for Python
5
5
  Home-page: https://github.com/TencentCloud/tencentcloud-sdk-python
6
6
  Author: Tencent Cloud
@@ -15,7 +15,7 @@ Classifier: Programming Language :: Python :: 2.7
15
15
  Classifier: Programming Language :: Python :: 3
16
16
  Classifier: Programming Language :: Python :: 3.6
17
17
  Classifier: Programming Language :: Python :: 3.7
18
- Requires-Dist: tencentcloud-sdk-python-common<4.0.0,>=3.1.98
18
+ Requires-Dist: tencentcloud-sdk-python-common<4.0.0,>=3.1.100
19
19
 
20
20
  ============================
21
21
  Tencent Cloud SDK for Python
@@ -8,7 +8,7 @@ ROOT = os.path.dirname(__file__)
8
8
 
9
9
  setup(
10
10
  name='tencentcloud-sdk-python-waf',
11
- install_requires=["tencentcloud-sdk-python-common>=3.1.98,<4.0.0"],
11
+ install_requires=["tencentcloud-sdk-python-common>=3.1.100,<4.0.0"],
12
12
 
13
13
  version=tencentcloud.__version__,
14
14
  description='Tencent Cloud Waf SDK for Python',
@@ -14,4 +14,4 @@
14
14
  # limitations under the License.
15
15
 
16
16
 
17
- __version__ = '3.1.98'
17
+ __version__ = '3.1.100'
@@ -197,6 +197,45 @@ INVALIDPARAMETER_QUERYSTRINGSYNTAXERR = 'InvalidParameter.QueryStringSyntaxErr'
197
197
  # 语法错误:SQL检索语句必须遵循特定的语法规则,如果语法错误,就会导致SQL语句无法执行。例如,缺少关键字、拼写错误、缺少分号等。
198
198
  INVALIDPARAMETER_SQLSYNTAXERR = 'InvalidParameter.SQLSyntaxErr'
199
199
 
200
+ # API Key 已被禁用
201
+ INVALIDPARAMETER_SKILLSCANAPIKEYDISABLED = 'InvalidParameter.SkillScanApiKeyDisabled'
202
+
203
+ # 创建扫描任务失败(服务内部错误)
204
+ INVALIDPARAMETER_SKILLSCANCREATESCANFAILED = 'InvalidParameter.SkillScanCreateScanFailed'
205
+
206
+ # FileData 不是有效的 Base64 编码
207
+ INVALIDPARAMETER_SKILLSCANINVALIDBASE64 = 'InvalidParameter.SkillScanInvalidBase64'
208
+
209
+ # 文件不是有效的 ZIP 格式
210
+ INVALIDPARAMETER_SKILLSCANINVALIDFILEFORMAT = 'InvalidParameter.SkillScanInvalidFileFormat'
211
+
212
+ # 参数校验失败(如 content_hash 格式不合法、缺少必填字段)
213
+ INVALIDPARAMETER_SKILLSCANINVALIDPARAM = 'InvalidParameter.SkillScanInvalidParam'
214
+
215
+ # 请求格式错误(如 Content-Type 不正确、JSON 解析失败)
216
+ INVALIDPARAMETER_SKILLSCANINVALIDREQUEST = 'InvalidParameter.SkillScanInvalidRequest'
217
+
218
+ # 未检测到上传文件
219
+ INVALIDPARAMETER_SKILLSCANNOFILES = 'InvalidParameter.SkillScanNoFiles'
220
+
221
+ # 查询失败(服务内部错误)
222
+ INVALIDPARAMETER_SKILLSCANQUERYFAILED = 'InvalidParameter.SkillScanQueryFailed'
223
+
224
+ # 请求频率超出限制
225
+ INVALIDPARAMETER_SKILLSCANRATELIMITEXCEEDED = 'InvalidParameter.SkillScanRateLimitExceeded'
226
+
227
+ # ServiceId 为空
228
+ INVALIDPARAMETER_SKILLSCANSERVICEIDEMPTY = 'InvalidParameter.SkillScanServiceIdEmpty'
229
+
230
+ # 防护开关未开启
231
+ INVALIDPARAMETER_SKILLSCANSWITCHOFF = 'InvalidParameter.SkillScanSwitchOff'
232
+
233
+ # 触发检测任务失败(服务内部错误)
234
+ INVALIDPARAMETER_SKILLSCANTRIGGERFAILED = 'InvalidParameter.SkillScanTriggerFailed'
235
+
236
+ # API Key 缺失或无效
237
+ INVALIDPARAMETER_SKILLSCANUNAUTHORIZED = 'InvalidParameter.SkillScanUnauthorized'
238
+
200
239
  # 当前实例版本不支持开启TLS自定义,请升级到高级版及以上
201
240
  INVALIDPARAMETER_SUPPORTTLSCONFFAILED = 'InvalidParameter.SupportTLSConfFailed'
202
241
 
@@ -25921,6 +25921,10 @@ class DescribeLLMContentSecCheckRequest(AbstractModel):
25921
25921
  :type TokenUsage: int
25922
25922
  :param _ImageEncode: <p>图片base64编码后的数据,body大小最大支持10M</p>
25923
25923
  :type ImageEncode: str
25924
+ :param _ToolName: <p>tool_call 场景工具名称</p>
25925
+ :type ToolName: str
25926
+ :param _ToolArgs: <p>tool_call 场景工具参数</p>
25927
+ :type ToolArgs: str
25924
25928
  """
25925
25929
  self._ServiceId = None
25926
25930
  self._Type = None
@@ -25930,6 +25934,8 @@ class DescribeLLMContentSecCheckRequest(AbstractModel):
25930
25934
  self._UserId = None
25931
25935
  self._TokenUsage = None
25932
25936
  self._ImageEncode = None
25937
+ self._ToolName = None
25938
+ self._ToolArgs = None
25933
25939
 
25934
25940
  @property
25935
25941
  def ServiceId(self):
@@ -26019,6 +26025,28 @@ class DescribeLLMContentSecCheckRequest(AbstractModel):
26019
26025
  def ImageEncode(self, ImageEncode):
26020
26026
  self._ImageEncode = ImageEncode
26021
26027
 
26028
+ @property
26029
+ def ToolName(self):
26030
+ r"""<p>tool_call 场景工具名称</p>
26031
+ :rtype: str
26032
+ """
26033
+ return self._ToolName
26034
+
26035
+ @ToolName.setter
26036
+ def ToolName(self, ToolName):
26037
+ self._ToolName = ToolName
26038
+
26039
+ @property
26040
+ def ToolArgs(self):
26041
+ r"""<p>tool_call 场景工具参数</p>
26042
+ :rtype: str
26043
+ """
26044
+ return self._ToolArgs
26045
+
26046
+ @ToolArgs.setter
26047
+ def ToolArgs(self, ToolArgs):
26048
+ self._ToolArgs = ToolArgs
26049
+
26022
26050
 
26023
26051
  def _deserialize(self, params):
26024
26052
  self._ServiceId = params.get("ServiceId")
@@ -26029,6 +26057,8 @@ class DescribeLLMContentSecCheckRequest(AbstractModel):
26029
26057
  self._UserId = params.get("UserId")
26030
26058
  self._TokenUsage = params.get("TokenUsage")
26031
26059
  self._ImageEncode = params.get("ImageEncode")
26060
+ self._ToolName = params.get("ToolName")
26061
+ self._ToolArgs = params.get("ToolArgs")
26032
26062
  memeber_set = set(params.keys())
26033
26063
  for name, value in vars(self).items():
26034
26064
  property_name = name[1:]
@@ -29030,6 +29060,117 @@ class DescribeSessionResponse(AbstractModel):
29030
29060
  self._RequestId = params.get("RequestId")
29031
29061
 
29032
29062
 
29063
+ class DescribeSkillSecScanResultRequest(AbstractModel):
29064
+ r"""DescribeSkillSecScanResult请求参数结构体
29065
+
29066
+ """
29067
+
29068
+ def __init__(self):
29069
+ r"""
29070
+ :param _ServiceId: <p>服务ID</p>
29071
+ :type ServiceId: str
29072
+ :param _ContentHash: <p>ZIP 文件的 SHA256 哈希值,格式为 sha256:hex_digest,请严格遵循文档中的zip打包规范</p>
29073
+ :type ContentHash: str
29074
+ :param _Lang: <p>返回语言。支持 zh / en,默认 zh</p>
29075
+ :type Lang: str
29076
+ """
29077
+ self._ServiceId = None
29078
+ self._ContentHash = None
29079
+ self._Lang = None
29080
+
29081
+ @property
29082
+ def ServiceId(self):
29083
+ r"""<p>服务ID</p>
29084
+ :rtype: str
29085
+ """
29086
+ return self._ServiceId
29087
+
29088
+ @ServiceId.setter
29089
+ def ServiceId(self, ServiceId):
29090
+ self._ServiceId = ServiceId
29091
+
29092
+ @property
29093
+ def ContentHash(self):
29094
+ r"""<p>ZIP 文件的 SHA256 哈希值,格式为 sha256:hex_digest,请严格遵循文档中的zip打包规范</p>
29095
+ :rtype: str
29096
+ """
29097
+ return self._ContentHash
29098
+
29099
+ @ContentHash.setter
29100
+ def ContentHash(self, ContentHash):
29101
+ self._ContentHash = ContentHash
29102
+
29103
+ @property
29104
+ def Lang(self):
29105
+ r"""<p>返回语言。支持 zh / en,默认 zh</p>
29106
+ :rtype: str
29107
+ """
29108
+ return self._Lang
29109
+
29110
+ @Lang.setter
29111
+ def Lang(self, Lang):
29112
+ self._Lang = Lang
29113
+
29114
+
29115
+ def _deserialize(self, params):
29116
+ self._ServiceId = params.get("ServiceId")
29117
+ self._ContentHash = params.get("ContentHash")
29118
+ self._Lang = params.get("Lang")
29119
+ memeber_set = set(params.keys())
29120
+ for name, value in vars(self).items():
29121
+ property_name = name[1:]
29122
+ if property_name in memeber_set:
29123
+ memeber_set.remove(property_name)
29124
+ if len(memeber_set) > 0:
29125
+ warnings.warn("%s fileds are useless." % ",".join(memeber_set))
29126
+
29127
+
29128
+
29129
+ class DescribeSkillSecScanResultResponse(AbstractModel):
29130
+ r"""DescribeSkillSecScanResult返回参数结构体
29131
+
29132
+ """
29133
+
29134
+ def __init__(self):
29135
+ r"""
29136
+ :param _Data: <p>检测结果</p>
29137
+ :type Data: :class:`tencentcloud.waf.v20180125.models.SkillScanQueryData`
29138
+ :param _RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
29139
+ :type RequestId: str
29140
+ """
29141
+ self._Data = None
29142
+ self._RequestId = None
29143
+
29144
+ @property
29145
+ def Data(self):
29146
+ r"""<p>检测结果</p>
29147
+ :rtype: :class:`tencentcloud.waf.v20180125.models.SkillScanQueryData`
29148
+ """
29149
+ return self._Data
29150
+
29151
+ @Data.setter
29152
+ def Data(self, Data):
29153
+ self._Data = Data
29154
+
29155
+ @property
29156
+ def RequestId(self):
29157
+ r"""唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
29158
+ :rtype: str
29159
+ """
29160
+ return self._RequestId
29161
+
29162
+ @RequestId.setter
29163
+ def RequestId(self, RequestId):
29164
+ self._RequestId = RequestId
29165
+
29166
+
29167
+ def _deserialize(self, params):
29168
+ if params.get("Data") is not None:
29169
+ self._Data = SkillScanQueryData()
29170
+ self._Data._deserialize(params.get("Data"))
29171
+ self._RequestId = params.get("RequestId")
29172
+
29173
+
29033
29174
  class DescribeSpartaProtectionInfoRequest(AbstractModel):
29034
29175
  r"""DescribeSpartaProtectionInfo请求参数结构体
29035
29176
 
@@ -56182,6 +56323,557 @@ class SessionItem(AbstractModel):
56182
56323
 
56183
56324
 
56184
56325
 
56326
+ class SkillRuleCatalogItem(AbstractModel):
56327
+ r"""skills检测命中规则名录
56328
+
56329
+ """
56330
+
56331
+ def __init__(self):
56332
+ r"""
56333
+ :param _Key: <p>规则分类标识(如 static_analysis、ai_analysis)</p>
56334
+ :type Key: str
56335
+ :param _Value: <p>规则分类中文名称</p>
56336
+ :type Value: str
56337
+ """
56338
+ self._Key = None
56339
+ self._Value = None
56340
+
56341
+ @property
56342
+ def Key(self):
56343
+ r"""<p>规则分类标识(如 static_analysis、ai_analysis)</p>
56344
+ :rtype: str
56345
+ """
56346
+ return self._Key
56347
+
56348
+ @Key.setter
56349
+ def Key(self, Key):
56350
+ self._Key = Key
56351
+
56352
+ @property
56353
+ def Value(self):
56354
+ r"""<p>规则分类中文名称</p>
56355
+ :rtype: str
56356
+ """
56357
+ return self._Value
56358
+
56359
+ @Value.setter
56360
+ def Value(self, Value):
56361
+ self._Value = Value
56362
+
56363
+
56364
+ def _deserialize(self, params):
56365
+ self._Key = params.get("Key")
56366
+ self._Value = params.get("Value")
56367
+ memeber_set = set(params.keys())
56368
+ for name, value in vars(self).items():
56369
+ property_name = name[1:]
56370
+ if property_name in memeber_set:
56371
+ memeber_set.remove(property_name)
56372
+ if len(memeber_set) > 0:
56373
+ warnings.warn("%s fileds are useless." % ",".join(memeber_set))
56374
+
56375
+
56376
+
56377
+ class SkillScanCapabilityTag(AbstractModel):
56378
+ r"""skills检测能力标签
56379
+
56380
+ """
56381
+
56382
+ def __init__(self):
56383
+ r"""
56384
+ :param _Id: <p>标签唯一ID</p>
56385
+ :type Id: str
56386
+ :param _Name: <p>标签名称(如 network_access、file_system 等)</p>
56387
+ :type Name: str
56388
+ """
56389
+ self._Id = None
56390
+ self._Name = None
56391
+
56392
+ @property
56393
+ def Id(self):
56394
+ r"""<p>标签唯一ID</p>
56395
+ :rtype: str
56396
+ """
56397
+ return self._Id
56398
+
56399
+ @Id.setter
56400
+ def Id(self, Id):
56401
+ self._Id = Id
56402
+
56403
+ @property
56404
+ def Name(self):
56405
+ r"""<p>标签名称(如 network_access、file_system 等)</p>
56406
+ :rtype: str
56407
+ """
56408
+ return self._Name
56409
+
56410
+ @Name.setter
56411
+ def Name(self, Name):
56412
+ self._Name = Name
56413
+
56414
+
56415
+ def _deserialize(self, params):
56416
+ self._Id = params.get("Id")
56417
+ self._Name = params.get("Name")
56418
+ memeber_set = set(params.keys())
56419
+ for name, value in vars(self).items():
56420
+ property_name = name[1:]
56421
+ if property_name in memeber_set:
56422
+ memeber_set.remove(property_name)
56423
+ if len(memeber_set) > 0:
56424
+ warnings.warn("%s fileds are useless." % ",".join(memeber_set))
56425
+
56426
+
56427
+
56428
+ class SkillScanItem(AbstractModel):
56429
+ r"""扫描结果详情(按子引擎分组)
56430
+
56431
+ """
56432
+
56433
+ def __init__(self):
56434
+ r"""
56435
+ :param _ScanType: <p>子引擎类型:AI(AI 分析)/ STATIC(静态分析)</p>
56436
+ :type ScanType: str
56437
+ :param _RuleList: <p>该引擎命中的规则列表</p>
56438
+ :type RuleList: list of SkillScanRuleHit
56439
+ """
56440
+ self._ScanType = None
56441
+ self._RuleList = None
56442
+
56443
+ @property
56444
+ def ScanType(self):
56445
+ r"""<p>子引擎类型:AI(AI 分析)/ STATIC(静态分析)</p>
56446
+ :rtype: str
56447
+ """
56448
+ return self._ScanType
56449
+
56450
+ @ScanType.setter
56451
+ def ScanType(self, ScanType):
56452
+ self._ScanType = ScanType
56453
+
56454
+ @property
56455
+ def RuleList(self):
56456
+ r"""<p>该引擎命中的规则列表</p>
56457
+ :rtype: list of SkillScanRuleHit
56458
+ """
56459
+ return self._RuleList
56460
+
56461
+ @RuleList.setter
56462
+ def RuleList(self, RuleList):
56463
+ self._RuleList = RuleList
56464
+
56465
+
56466
+ def _deserialize(self, params):
56467
+ self._ScanType = params.get("ScanType")
56468
+ if params.get("RuleList") is not None:
56469
+ self._RuleList = []
56470
+ for item in params.get("RuleList"):
56471
+ obj = SkillScanRuleHit()
56472
+ obj._deserialize(item)
56473
+ self._RuleList.append(obj)
56474
+ memeber_set = set(params.keys())
56475
+ for name, value in vars(self).items():
56476
+ property_name = name[1:]
56477
+ if property_name in memeber_set:
56478
+ memeber_set.remove(property_name)
56479
+ if len(memeber_set) > 0:
56480
+ warnings.warn("%s fileds are useless." % ",".join(memeber_set))
56481
+
56482
+
56483
+
56484
+ class SkillScanQueryData(AbstractModel):
56485
+ r"""skills检测结果列表
56486
+
56487
+ """
56488
+
56489
+ def __init__(self):
56490
+ r"""
56491
+ :param _Status: <p>检测状态:success(检测完成,有结果)、scanning(检测进行中)、not_found(无记录)、failed(检测失败)</p><p>枚举值:</p><ul><li>success: 检测完成,有结果</li><li>scanning: 检测进行中</li><li>not_found: 无记录</li><li>failed: 检测失败</li></ul>
56492
+ :type Status: str
56493
+ :param _SkillName: <p>Skill 名称,用于页面展示、结果列表呈现和人工研判</p>
56494
+ :type SkillName: str
56495
+ :param _SkillDescription: <p>Skill 描述,通常来自 Skill 元数据或说明信息,用于帮助调用方理解 Skill 的用途</p>
56496
+ :type SkillDescription: str
56497
+ :param _ContentHash: <p>ZIP 文件的 SHA256 哈希值,格式为 sha256:hex_digest</p>
56498
+ :type ContentHash: str
56499
+ :param _RiskLevel: <p>风险等级:malicious(恶意)、suspicious(可疑)、benign(可信)</p>
56500
+ :type RiskLevel: str
56501
+ :param _Mitigation: <p>综合处置建议字段,位于 data 顶层,用于给出本次检测结果的总体修复、缓解或人工处置建议</p>
56502
+ :type Mitigation: str
56503
+ :param _SecurityScore: <p>安全评分(0-100,100 为最安全)</p><p>取值范围:[0, 100]</p>
56504
+ :type SecurityScore: int
56505
+ :param _EngineVersion: <p>本次扫描使用的引擎版本号</p>
56506
+ :type EngineVersion: int
56507
+ :param _CapabilityTags: <p>Skill 的能力标签列表,对外固定返回格式为 [{id,name}]。该字段用于描述 Skill 具备的能力特征或适用场景,便于调用方做检索、展示或分类;不等同于风险标签,也不表示风险高低或命中规则结果。当 lang=en 时,仅 name 会切换为英文,id 保持不变</p>
56508
+ :type CapabilityTags: list of SkillScanCapabilityTag
56509
+ :param _RuleCatalog: <p>融合规则目录全集,key 为融合 rule_id(9xxxx),value 为风险类别名称;包含所有融合规则类别,调用方可据此展示分类标签,无需本地维护映射表。传 lang=en 时返回英文名称。该对象是名称映射表,不表达主标签优先级</p>
56510
+ :type RuleCatalog: list of SkillRuleCatalogItem
56511
+ :param _ScanItems: <p>扫描结果详情,按子引擎分组,每个元素包含 scan_type(引擎类型)和 rule_list(命中的规则列表);规则中的 rule_id 使用融合编码(9xxxx),可与 rule_catalog 交叉引用。传 lang=en 时,description 返回英文文本</p>
56512
+ :type ScanItems: list of SkillScanItem
56513
+ :param _ReportUrl: <p>综合安全审计报告地址。调用方可通过 report_url_expire_hours 指定有效期,不传时默认返回 1 年有效期地址</p>
56514
+ :type ReportUrl: str
56515
+ :param _ScannedAt: <p>扫描完成时间</p>
56516
+ :type ScannedAt: str
56517
+ :param _CreatedAt: <p>任务创建时间</p>
56518
+ :type CreatedAt: str
56519
+ :param _FailedAt: <p>失败时间</p>
56520
+ :type FailedAt: str
56521
+ :param _Message: <p>失败原因描述</p>
56522
+ :type Message: str
56523
+ """
56524
+ self._Status = None
56525
+ self._SkillName = None
56526
+ self._SkillDescription = None
56527
+ self._ContentHash = None
56528
+ self._RiskLevel = None
56529
+ self._Mitigation = None
56530
+ self._SecurityScore = None
56531
+ self._EngineVersion = None
56532
+ self._CapabilityTags = None
56533
+ self._RuleCatalog = None
56534
+ self._ScanItems = None
56535
+ self._ReportUrl = None
56536
+ self._ScannedAt = None
56537
+ self._CreatedAt = None
56538
+ self._FailedAt = None
56539
+ self._Message = None
56540
+
56541
+ @property
56542
+ def Status(self):
56543
+ r"""<p>检测状态:success(检测完成,有结果)、scanning(检测进行中)、not_found(无记录)、failed(检测失败)</p><p>枚举值:</p><ul><li>success: 检测完成,有结果</li><li>scanning: 检测进行中</li><li>not_found: 无记录</li><li>failed: 检测失败</li></ul>
56544
+ :rtype: str
56545
+ """
56546
+ return self._Status
56547
+
56548
+ @Status.setter
56549
+ def Status(self, Status):
56550
+ self._Status = Status
56551
+
56552
+ @property
56553
+ def SkillName(self):
56554
+ r"""<p>Skill 名称,用于页面展示、结果列表呈现和人工研判</p>
56555
+ :rtype: str
56556
+ """
56557
+ return self._SkillName
56558
+
56559
+ @SkillName.setter
56560
+ def SkillName(self, SkillName):
56561
+ self._SkillName = SkillName
56562
+
56563
+ @property
56564
+ def SkillDescription(self):
56565
+ r"""<p>Skill 描述,通常来自 Skill 元数据或说明信息,用于帮助调用方理解 Skill 的用途</p>
56566
+ :rtype: str
56567
+ """
56568
+ return self._SkillDescription
56569
+
56570
+ @SkillDescription.setter
56571
+ def SkillDescription(self, SkillDescription):
56572
+ self._SkillDescription = SkillDescription
56573
+
56574
+ @property
56575
+ def ContentHash(self):
56576
+ r"""<p>ZIP 文件的 SHA256 哈希值,格式为 sha256:hex_digest</p>
56577
+ :rtype: str
56578
+ """
56579
+ return self._ContentHash
56580
+
56581
+ @ContentHash.setter
56582
+ def ContentHash(self, ContentHash):
56583
+ self._ContentHash = ContentHash
56584
+
56585
+ @property
56586
+ def RiskLevel(self):
56587
+ r"""<p>风险等级:malicious(恶意)、suspicious(可疑)、benign(可信)</p>
56588
+ :rtype: str
56589
+ """
56590
+ return self._RiskLevel
56591
+
56592
+ @RiskLevel.setter
56593
+ def RiskLevel(self, RiskLevel):
56594
+ self._RiskLevel = RiskLevel
56595
+
56596
+ @property
56597
+ def Mitigation(self):
56598
+ r"""<p>综合处置建议字段,位于 data 顶层,用于给出本次检测结果的总体修复、缓解或人工处置建议</p>
56599
+ :rtype: str
56600
+ """
56601
+ return self._Mitigation
56602
+
56603
+ @Mitigation.setter
56604
+ def Mitigation(self, Mitigation):
56605
+ self._Mitigation = Mitigation
56606
+
56607
+ @property
56608
+ def SecurityScore(self):
56609
+ r"""<p>安全评分(0-100,100 为最安全)</p><p>取值范围:[0, 100]</p>
56610
+ :rtype: int
56611
+ """
56612
+ return self._SecurityScore
56613
+
56614
+ @SecurityScore.setter
56615
+ def SecurityScore(self, SecurityScore):
56616
+ self._SecurityScore = SecurityScore
56617
+
56618
+ @property
56619
+ def EngineVersion(self):
56620
+ r"""<p>本次扫描使用的引擎版本号</p>
56621
+ :rtype: int
56622
+ """
56623
+ return self._EngineVersion
56624
+
56625
+ @EngineVersion.setter
56626
+ def EngineVersion(self, EngineVersion):
56627
+ self._EngineVersion = EngineVersion
56628
+
56629
+ @property
56630
+ def CapabilityTags(self):
56631
+ r"""<p>Skill 的能力标签列表,对外固定返回格式为 [{id,name}]。该字段用于描述 Skill 具备的能力特征或适用场景,便于调用方做检索、展示或分类;不等同于风险标签,也不表示风险高低或命中规则结果。当 lang=en 时,仅 name 会切换为英文,id 保持不变</p>
56632
+ :rtype: list of SkillScanCapabilityTag
56633
+ """
56634
+ return self._CapabilityTags
56635
+
56636
+ @CapabilityTags.setter
56637
+ def CapabilityTags(self, CapabilityTags):
56638
+ self._CapabilityTags = CapabilityTags
56639
+
56640
+ @property
56641
+ def RuleCatalog(self):
56642
+ r"""<p>融合规则目录全集,key 为融合 rule_id(9xxxx),value 为风险类别名称;包含所有融合规则类别,调用方可据此展示分类标签,无需本地维护映射表。传 lang=en 时返回英文名称。该对象是名称映射表,不表达主标签优先级</p>
56643
+ :rtype: list of SkillRuleCatalogItem
56644
+ """
56645
+ return self._RuleCatalog
56646
+
56647
+ @RuleCatalog.setter
56648
+ def RuleCatalog(self, RuleCatalog):
56649
+ self._RuleCatalog = RuleCatalog
56650
+
56651
+ @property
56652
+ def ScanItems(self):
56653
+ r"""<p>扫描结果详情,按子引擎分组,每个元素包含 scan_type(引擎类型)和 rule_list(命中的规则列表);规则中的 rule_id 使用融合编码(9xxxx),可与 rule_catalog 交叉引用。传 lang=en 时,description 返回英文文本</p>
56654
+ :rtype: list of SkillScanItem
56655
+ """
56656
+ return self._ScanItems
56657
+
56658
+ @ScanItems.setter
56659
+ def ScanItems(self, ScanItems):
56660
+ self._ScanItems = ScanItems
56661
+
56662
+ @property
56663
+ def ReportUrl(self):
56664
+ r"""<p>综合安全审计报告地址。调用方可通过 report_url_expire_hours 指定有效期,不传时默认返回 1 年有效期地址</p>
56665
+ :rtype: str
56666
+ """
56667
+ return self._ReportUrl
56668
+
56669
+ @ReportUrl.setter
56670
+ def ReportUrl(self, ReportUrl):
56671
+ self._ReportUrl = ReportUrl
56672
+
56673
+ @property
56674
+ def ScannedAt(self):
56675
+ r"""<p>扫描完成时间</p>
56676
+ :rtype: str
56677
+ """
56678
+ return self._ScannedAt
56679
+
56680
+ @ScannedAt.setter
56681
+ def ScannedAt(self, ScannedAt):
56682
+ self._ScannedAt = ScannedAt
56683
+
56684
+ @property
56685
+ def CreatedAt(self):
56686
+ r"""<p>任务创建时间</p>
56687
+ :rtype: str
56688
+ """
56689
+ return self._CreatedAt
56690
+
56691
+ @CreatedAt.setter
56692
+ def CreatedAt(self, CreatedAt):
56693
+ self._CreatedAt = CreatedAt
56694
+
56695
+ @property
56696
+ def FailedAt(self):
56697
+ r"""<p>失败时间</p>
56698
+ :rtype: str
56699
+ """
56700
+ return self._FailedAt
56701
+
56702
+ @FailedAt.setter
56703
+ def FailedAt(self, FailedAt):
56704
+ self._FailedAt = FailedAt
56705
+
56706
+ @property
56707
+ def Message(self):
56708
+ r"""<p>失败原因描述</p>
56709
+ :rtype: str
56710
+ """
56711
+ return self._Message
56712
+
56713
+ @Message.setter
56714
+ def Message(self, Message):
56715
+ self._Message = Message
56716
+
56717
+
56718
+ def _deserialize(self, params):
56719
+ self._Status = params.get("Status")
56720
+ self._SkillName = params.get("SkillName")
56721
+ self._SkillDescription = params.get("SkillDescription")
56722
+ self._ContentHash = params.get("ContentHash")
56723
+ self._RiskLevel = params.get("RiskLevel")
56724
+ self._Mitigation = params.get("Mitigation")
56725
+ self._SecurityScore = params.get("SecurityScore")
56726
+ self._EngineVersion = params.get("EngineVersion")
56727
+ if params.get("CapabilityTags") is not None:
56728
+ self._CapabilityTags = []
56729
+ for item in params.get("CapabilityTags"):
56730
+ obj = SkillScanCapabilityTag()
56731
+ obj._deserialize(item)
56732
+ self._CapabilityTags.append(obj)
56733
+ if params.get("RuleCatalog") is not None:
56734
+ self._RuleCatalog = []
56735
+ for item in params.get("RuleCatalog"):
56736
+ obj = SkillRuleCatalogItem()
56737
+ obj._deserialize(item)
56738
+ self._RuleCatalog.append(obj)
56739
+ if params.get("ScanItems") is not None:
56740
+ self._ScanItems = []
56741
+ for item in params.get("ScanItems"):
56742
+ obj = SkillScanItem()
56743
+ obj._deserialize(item)
56744
+ self._ScanItems.append(obj)
56745
+ self._ReportUrl = params.get("ReportUrl")
56746
+ self._ScannedAt = params.get("ScannedAt")
56747
+ self._CreatedAt = params.get("CreatedAt")
56748
+ self._FailedAt = params.get("FailedAt")
56749
+ self._Message = params.get("Message")
56750
+ memeber_set = set(params.keys())
56751
+ for name, value in vars(self).items():
56752
+ property_name = name[1:]
56753
+ if property_name in memeber_set:
56754
+ memeber_set.remove(property_name)
56755
+ if len(memeber_set) > 0:
56756
+ warnings.warn("%s fileds are useless." % ",".join(memeber_set))
56757
+
56758
+
56759
+
56760
+ class SkillScanRuleHit(AbstractModel):
56761
+ r"""SkillScanRuleHit 命中的规则
56762
+
56763
+ """
56764
+
56765
+ def __init__(self):
56766
+ r"""
56767
+ :param _RuleId: <p>规则唯一ID</p>
56768
+ :type RuleId: str
56769
+ :param _Description: <p>规则描述(命中原因说明)</p>
56770
+ :type Description: str
56771
+ """
56772
+ self._RuleId = None
56773
+ self._Description = None
56774
+
56775
+ @property
56776
+ def RuleId(self):
56777
+ r"""<p>规则唯一ID</p>
56778
+ :rtype: str
56779
+ """
56780
+ return self._RuleId
56781
+
56782
+ @RuleId.setter
56783
+ def RuleId(self, RuleId):
56784
+ self._RuleId = RuleId
56785
+
56786
+ @property
56787
+ def Description(self):
56788
+ r"""<p>规则描述(命中原因说明)</p>
56789
+ :rtype: str
56790
+ """
56791
+ return self._Description
56792
+
56793
+ @Description.setter
56794
+ def Description(self, Description):
56795
+ self._Description = Description
56796
+
56797
+
56798
+ def _deserialize(self, params):
56799
+ self._RuleId = params.get("RuleId")
56800
+ self._Description = params.get("Description")
56801
+ memeber_set = set(params.keys())
56802
+ for name, value in vars(self).items():
56803
+ property_name = name[1:]
56804
+ if property_name in memeber_set:
56805
+ memeber_set.remove(property_name)
56806
+ if len(memeber_set) > 0:
56807
+ warnings.warn("%s fileds are useless." % ",".join(memeber_set))
56808
+
56809
+
56810
+
56811
+ class SkillScanUploadData(AbstractModel):
56812
+ r"""skills 上检测接口返回信息
56813
+
56814
+ """
56815
+
56816
+ def __init__(self):
56817
+ r"""
56818
+ :param _ContentHash: <p>文件的 SHA256 Hash,用于轮询查询接口</p>
56819
+ :type ContentHash: str
56820
+ :param _Status: <p>固定为 scanning,表示任务已接收</p>
56821
+ :type Status: str
56822
+ :param _Message: <p>可读的操作结果描述</p>
56823
+ :type Message: str
56824
+ """
56825
+ self._ContentHash = None
56826
+ self._Status = None
56827
+ self._Message = None
56828
+
56829
+ @property
56830
+ def ContentHash(self):
56831
+ r"""<p>文件的 SHA256 Hash,用于轮询查询接口</p>
56832
+ :rtype: str
56833
+ """
56834
+ return self._ContentHash
56835
+
56836
+ @ContentHash.setter
56837
+ def ContentHash(self, ContentHash):
56838
+ self._ContentHash = ContentHash
56839
+
56840
+ @property
56841
+ def Status(self):
56842
+ r"""<p>固定为 scanning,表示任务已接收</p>
56843
+ :rtype: str
56844
+ """
56845
+ return self._Status
56846
+
56847
+ @Status.setter
56848
+ def Status(self, Status):
56849
+ self._Status = Status
56850
+
56851
+ @property
56852
+ def Message(self):
56853
+ r"""<p>可读的操作结果描述</p>
56854
+ :rtype: str
56855
+ """
56856
+ return self._Message
56857
+
56858
+ @Message.setter
56859
+ def Message(self, Message):
56860
+ self._Message = Message
56861
+
56862
+
56863
+ def _deserialize(self, params):
56864
+ self._ContentHash = params.get("ContentHash")
56865
+ self._Status = params.get("Status")
56866
+ self._Message = params.get("Message")
56867
+ memeber_set = set(params.keys())
56868
+ for name, value in vars(self).items():
56869
+ property_name = name[1:]
56870
+ if property_name in memeber_set:
56871
+ memeber_set.remove(property_name)
56872
+ if len(memeber_set) > 0:
56873
+ warnings.warn("%s fileds are useless." % ",".join(memeber_set))
56874
+
56875
+
56876
+
56185
56877
  class SpartaProtectionPort(AbstractModel):
56186
56878
  r"""waf斯巴达-编辑防护域名中的端口结构
56187
56879
 
@@ -58543,6 +59235,117 @@ class UpdateRateLimitV2Response(AbstractModel):
58543
59235
  self._RequestId = params.get("RequestId")
58544
59236
 
58545
59237
 
59238
+ class UploadSkillSecScanRequest(AbstractModel):
59239
+ r"""UploadSkillSecScan请求参数结构体
59240
+
59241
+ """
59242
+
59243
+ def __init__(self):
59244
+ r"""
59245
+ :param _ServiceId: <p>服务ID</p>
59246
+ :type ServiceId: str
59247
+ :param _FileData: <p>zip压缩包base64编码后的数据</p>
59248
+ :type FileData: str
59249
+ :param _FileName: <p>skills文件压缩之后的文件名,.zip结尾</p>
59250
+ :type FileName: str
59251
+ """
59252
+ self._ServiceId = None
59253
+ self._FileData = None
59254
+ self._FileName = None
59255
+
59256
+ @property
59257
+ def ServiceId(self):
59258
+ r"""<p>服务ID</p>
59259
+ :rtype: str
59260
+ """
59261
+ return self._ServiceId
59262
+
59263
+ @ServiceId.setter
59264
+ def ServiceId(self, ServiceId):
59265
+ self._ServiceId = ServiceId
59266
+
59267
+ @property
59268
+ def FileData(self):
59269
+ r"""<p>zip压缩包base64编码后的数据</p>
59270
+ :rtype: str
59271
+ """
59272
+ return self._FileData
59273
+
59274
+ @FileData.setter
59275
+ def FileData(self, FileData):
59276
+ self._FileData = FileData
59277
+
59278
+ @property
59279
+ def FileName(self):
59280
+ r"""<p>skills文件压缩之后的文件名,.zip结尾</p>
59281
+ :rtype: str
59282
+ """
59283
+ return self._FileName
59284
+
59285
+ @FileName.setter
59286
+ def FileName(self, FileName):
59287
+ self._FileName = FileName
59288
+
59289
+
59290
+ def _deserialize(self, params):
59291
+ self._ServiceId = params.get("ServiceId")
59292
+ self._FileData = params.get("FileData")
59293
+ self._FileName = params.get("FileName")
59294
+ memeber_set = set(params.keys())
59295
+ for name, value in vars(self).items():
59296
+ property_name = name[1:]
59297
+ if property_name in memeber_set:
59298
+ memeber_set.remove(property_name)
59299
+ if len(memeber_set) > 0:
59300
+ warnings.warn("%s fileds are useless." % ",".join(memeber_set))
59301
+
59302
+
59303
+
59304
+ class UploadSkillSecScanResponse(AbstractModel):
59305
+ r"""UploadSkillSecScan返回参数结构体
59306
+
59307
+ """
59308
+
59309
+ def __init__(self):
59310
+ r"""
59311
+ :param _Data: <p>上传结果</p>
59312
+ :type Data: :class:`tencentcloud.waf.v20180125.models.SkillScanUploadData`
59313
+ :param _RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
59314
+ :type RequestId: str
59315
+ """
59316
+ self._Data = None
59317
+ self._RequestId = None
59318
+
59319
+ @property
59320
+ def Data(self):
59321
+ r"""<p>上传结果</p>
59322
+ :rtype: :class:`tencentcloud.waf.v20180125.models.SkillScanUploadData`
59323
+ """
59324
+ return self._Data
59325
+
59326
+ @Data.setter
59327
+ def Data(self, Data):
59328
+ self._Data = Data
59329
+
59330
+ @property
59331
+ def RequestId(self):
59332
+ r"""唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
59333
+ :rtype: str
59334
+ """
59335
+ return self._RequestId
59336
+
59337
+ @RequestId.setter
59338
+ def RequestId(self, RequestId):
59339
+ self._RequestId = RequestId
59340
+
59341
+
59342
+ def _deserialize(self, params):
59343
+ if params.get("Data") is not None:
59344
+ self._Data = SkillScanUploadData()
59345
+ self._Data._deserialize(params.get("Data"))
59346
+ self._RequestId = params.get("RequestId")
59347
+
59348
+
58546
59349
  class UpsertCCAutoStatusRequest(AbstractModel):
58547
59350
  r"""UpsertCCAutoStatus请求参数结构体
58548
59351
 
@@ -2694,6 +2694,29 @@ class WafClient(AbstractClient):
2694
2694
  raise TencentCloudSDKException(type(e).__name__, str(e))
2695
2695
 
2696
2696
 
2697
+ def DescribeSkillSecScanResult(self, request):
2698
+ r"""根据文件Hash查询Skill安全检测结果
2699
+
2700
+ :param request: Request instance for DescribeSkillSecScanResult.
2701
+ :type request: :class:`tencentcloud.waf.v20180125.models.DescribeSkillSecScanResultRequest`
2702
+ :rtype: :class:`tencentcloud.waf.v20180125.models.DescribeSkillSecScanResultResponse`
2703
+
2704
+ """
2705
+ try:
2706
+ params = request._serialize()
2707
+ headers = request.headers
2708
+ body = self.call("DescribeSkillSecScanResult", params, headers=headers)
2709
+ response = json.loads(body)
2710
+ model = models.DescribeSkillSecScanResultResponse()
2711
+ model._deserialize(response["Response"])
2712
+ return model
2713
+ except Exception as e:
2714
+ if isinstance(e, TencentCloudSDKException):
2715
+ raise
2716
+ else:
2717
+ raise TencentCloudSDKException(type(e).__name__, str(e))
2718
+
2719
+
2697
2720
  def DescribeSpartaProtectionInfo(self, request):
2698
2721
  r"""waf斯巴达-获取防护域名信息
2699
2722
 
@@ -4972,6 +4995,29 @@ class WafClient(AbstractClient):
4972
4995
  raise TencentCloudSDKException(type(e).__name__, str(e))
4973
4996
 
4974
4997
 
4998
+ def UploadSkillSecScan(self, request):
4999
+ r"""上传Skill ZIP文件,触发异步安全检测
5000
+
5001
+ :param request: Request instance for UploadSkillSecScan.
5002
+ :type request: :class:`tencentcloud.waf.v20180125.models.UploadSkillSecScanRequest`
5003
+ :rtype: :class:`tencentcloud.waf.v20180125.models.UploadSkillSecScanResponse`
5004
+
5005
+ """
5006
+ try:
5007
+ params = request._serialize()
5008
+ headers = request.headers
5009
+ body = self.call("UploadSkillSecScan", params, headers=headers)
5010
+ response = json.loads(body)
5011
+ model = models.UploadSkillSecScanResponse()
5012
+ model._deserialize(response["Response"])
5013
+ return model
5014
+ except Exception as e:
5015
+ if isinstance(e, TencentCloudSDKException):
5016
+ raise
5017
+ else:
5018
+ raise TencentCloudSDKException(type(e).__name__, str(e))
5019
+
5020
+
4975
5021
  def UpsertCCAutoStatus(self, request):
4976
5022
  r"""编辑SAAS型接入的紧急CC防护状态
4977
5023
 
@@ -2113,6 +2113,24 @@ class WafClient(AbstractClient):
2113
2113
 
2114
2114
  return await self.call_and_deserialize(**kwargs)
2115
2115
 
2116
+ async def DescribeSkillSecScanResult(
2117
+ self,
2118
+ request: models.DescribeSkillSecScanResultRequest,
2119
+ opts: Dict = None,
2120
+ ) -> models.DescribeSkillSecScanResultResponse:
2121
+ """
2122
+ 根据文件Hash查询Skill安全检测结果
2123
+ """
2124
+
2125
+ kwargs = {}
2126
+ kwargs["action"] = "DescribeSkillSecScanResult"
2127
+ kwargs["params"] = request._serialize()
2128
+ kwargs["resp_cls"] = models.DescribeSkillSecScanResultResponse
2129
+ kwargs["headers"] = request.headers
2130
+ kwargs["opts"] = opts or {}
2131
+
2132
+ return await self.call_and_deserialize(**kwargs)
2133
+
2116
2134
  async def DescribeSpartaProtectionInfo(
2117
2135
  self,
2118
2136
  request: models.DescribeSpartaProtectionInfoRequest,
@@ -3901,6 +3919,24 @@ class WafClient(AbstractClient):
3901
3919
 
3902
3920
  return await self.call_and_deserialize(**kwargs)
3903
3921
 
3922
+ async def UploadSkillSecScan(
3923
+ self,
3924
+ request: models.UploadSkillSecScanRequest,
3925
+ opts: Dict = None,
3926
+ ) -> models.UploadSkillSecScanResponse:
3927
+ """
3928
+ 上传Skill ZIP文件,触发异步安全检测
3929
+ """
3930
+
3931
+ kwargs = {}
3932
+ kwargs["action"] = "UploadSkillSecScan"
3933
+ kwargs["params"] = request._serialize()
3934
+ kwargs["resp_cls"] = models.UploadSkillSecScanResponse
3935
+ kwargs["headers"] = request.headers
3936
+ kwargs["opts"] = opts or {}
3937
+
3938
+ return await self.call_and_deserialize(**kwargs)
3939
+
3904
3940
  async def UpsertCCAutoStatus(
3905
3941
  self,
3906
3942
  request: models.UpsertCCAutoStatusRequest,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: tencentcloud-sdk-python-waf
3
- Version: 3.1.98
3
+ Version: 3.1.100
4
4
  Summary: Tencent Cloud Waf SDK for Python
5
5
  Home-page: https://github.com/TencentCloud/tencentcloud-sdk-python
6
6
  Author: Tencent Cloud
@@ -15,7 +15,7 @@ Classifier: Programming Language :: Python :: 2.7
15
15
  Classifier: Programming Language :: Python :: 3
16
16
  Classifier: Programming Language :: Python :: 3.6
17
17
  Classifier: Programming Language :: Python :: 3.7
18
- Requires-Dist: tencentcloud-sdk-python-common<4.0.0,>=3.1.98
18
+ Requires-Dist: tencentcloud-sdk-python-common<4.0.0,>=3.1.100
19
19
 
20
20
  ============================
21
21
  Tencent Cloud SDK for Python
@@ -0,0 +1 @@
1
+ tencentcloud-sdk-python-common<4.0.0,>=3.1.100
@@ -1 +0,0 @@
1
- tencentcloud-sdk-python-common<4.0.0,>=3.1.98