tccli 3.0.1251.1__py2.py3-none-any.whl → 3.0.1253.1__py2.py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
- tccli/__init__.py +1 -1
- tccli/services/aiart/v20221229/api.json +12 -3
- tccli/services/bi/v20220105/api.json +6 -6
- tccli/services/ca/v20230228/api.json +16 -16
- tccli/services/cat/v20180409/api.json +25 -24
- tccli/services/cat/v20180409/examples.json +17 -17
- tccli/services/ccc/ccc_client.py +53 -0
- tccli/services/ccc/v20200210/api.json +89 -0
- tccli/services/ccc/v20200210/examples.json +8 -0
- tccli/services/cdb/v20170320/api.json +12 -0
- tccli/services/cdwdoris/v20211228/api.json +522 -479
- tccli/services/cdwdoris/v20211228/examples.json +55 -37
- tccli/services/clb/v20180317/api.json +88 -6
- tccli/services/clb/v20180317/examples.json +4 -4
- tccli/services/cloudaudit/v20190319/api.json +2 -2
- tccli/services/cloudaudit/v20190319/examples.json +2 -2
- tccli/services/config/v20220802/api.json +20 -9
- tccli/services/config/v20220802/examples.json +1 -1
- tccli/services/dc/v20180410/api.json +21 -2
- tccli/services/dc/v20180410/examples.json +2 -2
- tccli/services/dcdb/v20180411/api.json +1 -1
- tccli/services/dcdb/v20180411/examples.json +1 -1
- tccli/services/dlc/v20210125/api.json +53 -4
- tccli/services/emr/v20190103/api.json +161 -141
- tccli/services/ess/v20201111/api.json +100 -98
- tccli/services/ess/v20201111/examples.json +18 -18
- tccli/services/essbasic/v20210526/api.json +9 -9
- tccli/services/essbasic/v20210526/examples.json +6 -6
- tccli/services/hunyuan/v20230901/api.json +25 -5
- tccli/services/lcic/v20220817/api.json +1 -1
- tccli/services/lke/v20231130/api.json +9 -0
- tccli/services/lkeap/v20240522/api.json +2 -2
- tccli/services/mariadb/v20170312/api.json +1 -1
- tccli/services/mariadb/v20170312/examples.json +1 -1
- tccli/services/monitor/v20180724/api.json +68 -50
- tccli/services/monitor/v20180724/examples.json +21 -21
- tccli/services/mps/mps_client.py +379 -61
- tccli/services/mps/v20190612/api.json +499 -17
- tccli/services/mps/v20190612/examples.json +48 -0
- tccli/services/ocr/v20181119/api.json +28 -0
- tccli/services/ssl/v20191205/api.json +3 -3
- tccli/services/ssl/v20191205/examples.json +1 -1
- tccli/services/tchd/v20230306/api.json +3 -3
- tccli/services/tiw/v20190919/api.json +1 -1
- tccli/services/trtc/v20190722/api.json +11 -0
- tccli/services/tse/v20201207/api.json +10 -0
- tccli/services/vpc/v20170312/api.json +249 -19
- tccli/services/vpc/v20170312/examples.json +4 -4
- tccli/services/wedata/v20210820/api.json +382 -96
- tccli/services/wedata/v20210820/examples.json +1 -1
- {tccli-3.0.1251.1.dist-info → tccli-3.0.1253.1.dist-info}/METADATA +2 -2
- {tccli-3.0.1251.1.dist-info → tccli-3.0.1253.1.dist-info}/RECORD +55 -55
- {tccli-3.0.1251.1.dist-info → tccli-3.0.1253.1.dist-info}/WHEEL +0 -0
- {tccli-3.0.1251.1.dist-info → tccli-3.0.1253.1.dist-info}/entry_points.txt +0 -0
- {tccli-3.0.1251.1.dist-info → tccli-3.0.1253.1.dist-info}/license_files/LICENSE +0 -0
tccli/__init__.py
CHANGED
@@ -1 +1 @@
|
|
1
|
-
__version__ = '3.0.
|
1
|
+
__version__ = '3.0.1253.1'
|
@@ -1072,7 +1072,7 @@
|
|
1072
1072
|
},
|
1073
1073
|
{
|
1074
1074
|
"disabled": false,
|
1075
|
-
"document": "对新背景的文本描述。\n最多支持256个 utf-8
|
1075
|
+
"document": "对新背景的文本描述。\n最多支持256个 utf-8 字符,支持中、英文。\n如果 Prompt = \"BackgroundTemplate\" 代表启用背景模板,需要在参数 BackgroundTemplate 中指定一个背景名称。",
|
1076
1076
|
"example": "放在充满鲜花的环境里,简洁风格,清新自然,广告摄影",
|
1077
1077
|
"member": "string",
|
1078
1078
|
"name": "Prompt",
|
@@ -1097,6 +1097,15 @@
|
|
1097
1097
|
"required": false,
|
1098
1098
|
"type": "string"
|
1099
1099
|
},
|
1100
|
+
{
|
1101
|
+
"disabled": false,
|
1102
|
+
"document": "背景模板。\n仅当 Prompt = \"BackgroundTemplate\" 时生效,可支持的模板详见 [商品背景模板列表](https://cloud.tencent.com/document/product/1668/115391) ,请传入字段“背景名称”中的值。",
|
1103
|
+
"example": "彩虹渐变",
|
1104
|
+
"member": "string",
|
1105
|
+
"name": "BackgroundTemplate",
|
1106
|
+
"required": false,
|
1107
|
+
"type": "string"
|
1108
|
+
},
|
1100
1109
|
{
|
1101
1110
|
"disabled": false,
|
1102
1111
|
"document": "商品 Mask 图 Url,要求背景透明,保留商品主体。\n如果不传,将自动使用内置的商品分割算法得到 Mask。\n支持自定义上传 Mask,如果该参数不为空,则以实际上传的数据为准。\n图片限制:Mask 图必须和商品原图分辨率一致,转成 Base64 字符串后小于 6MB,格式仅支持 png。",
|
@@ -1151,7 +1160,7 @@
|
|
1151
1160
|
{
|
1152
1161
|
"disabled": false,
|
1153
1162
|
"document": "根据入参 RspImgType 填入不同,返回不同的内容。\n如果传入 base64 则返回生成图 Base64 编码。\n如果传入 url 则返回的生成图 URL , 有效期1小时,请及时保存。",
|
1154
|
-
"example": "https://aiart-xxx.cos.ap-guangzhou.myqcloud.com/xxx.jpg
|
1163
|
+
"example": "https://aiart-xxx.cos.ap-guangzhou.myqcloud.com/xxx.jpg",
|
1155
1164
|
"member": "string",
|
1156
1165
|
"name": "ResultImage",
|
1157
1166
|
"output_required": true,
|
@@ -1161,7 +1170,7 @@
|
|
1161
1170
|
{
|
1162
1171
|
"disabled": false,
|
1163
1172
|
"document": "如果 MaskUrl 未传,则返回使用内置商品分割算法得到的 Mask 结果。",
|
1164
|
-
"example": "https://aiart-xxx.cos.ap-guangzhou.myqcloud.com/mask.jpg
|
1173
|
+
"example": "https://aiart-xxx.cos.ap-guangzhou.myqcloud.com/mask.jpg",
|
1165
1174
|
"member": "string",
|
1166
1175
|
"name": "MaskImage",
|
1167
1176
|
"output_required": false,
|
@@ -3032,7 +3032,7 @@
|
|
3032
3032
|
{
|
3033
3033
|
"disabled": false,
|
3034
3034
|
"document": "错误说明字段\n注意:此字段可能返回 null,表示取不到有效值。",
|
3035
|
-
"example": "
|
3035
|
+
"example": "错误提示",
|
3036
3036
|
"member": "string",
|
3037
3037
|
"name": "ErrorTip",
|
3038
3038
|
"output_required": false,
|
@@ -3042,7 +3042,7 @@
|
|
3042
3042
|
{
|
3043
3043
|
"disabled": false,
|
3044
3044
|
"document": "原始异常信息\n注意:此字段可能返回 null,表示取不到有效值。",
|
3045
|
-
"example": "
|
3045
|
+
"example": "错误提示消息",
|
3046
3046
|
"member": "string",
|
3047
3047
|
"name": "ErrorMessage",
|
3048
3048
|
"output_required": false,
|
@@ -3052,7 +3052,7 @@
|
|
3052
3052
|
{
|
3053
3053
|
"disabled": false,
|
3054
3054
|
"document": "错误等级字段\nERROR\nWARN\nINFO\n注意:此字段可能返回 null,表示取不到有效值。",
|
3055
|
-
"example": "
|
3055
|
+
"example": "INFO",
|
3056
3056
|
"member": "string",
|
3057
3057
|
"name": "ErrorLevel",
|
3058
3058
|
"output_required": false,
|
@@ -3062,7 +3062,7 @@
|
|
3062
3062
|
{
|
3063
3063
|
"disabled": false,
|
3064
3064
|
"document": "指引文档链接\n注意:此字段可能返回 null,表示取不到有效值。",
|
3065
|
-
"example": "
|
3065
|
+
"example": "文档链接说明",
|
3066
3066
|
"member": "string",
|
3067
3067
|
"name": "DocLink",
|
3068
3068
|
"output_required": false,
|
@@ -3072,7 +3072,7 @@
|
|
3072
3072
|
{
|
3073
3073
|
"disabled": false,
|
3074
3074
|
"document": "快速指引说明\n注意:此字段可能返回 null,表示取不到有效值。",
|
3075
|
-
"example": "
|
3075
|
+
"example": "常见问题",
|
3076
3076
|
"member": "string",
|
3077
3077
|
"name": "FAQ",
|
3078
3078
|
"output_required": false,
|
@@ -3082,7 +3082,7 @@
|
|
3082
3082
|
{
|
3083
3083
|
"disabled": false,
|
3084
3084
|
"document": "预留字段1\n注意:此字段可能返回 null,表示取不到有效值。",
|
3085
|
-
"example": "
|
3085
|
+
"example": "1",
|
3086
3086
|
"member": "string",
|
3087
3087
|
"name": "ReservedField",
|
3088
3088
|
"output_required": false,
|
@@ -35,7 +35,7 @@
|
|
35
35
|
{
|
36
36
|
"disabled": false,
|
37
37
|
"document": "姓名",
|
38
|
-
"example": "
|
38
|
+
"example": "张三",
|
39
39
|
"member": "string",
|
40
40
|
"name": "Name",
|
41
41
|
"required": false,
|
@@ -44,7 +44,7 @@
|
|
44
44
|
{
|
45
45
|
"disabled": false,
|
46
46
|
"document": "唯一身份id",
|
47
|
-
"example": "
|
47
|
+
"example": "h1h****bsd",
|
48
48
|
"member": "string",
|
49
49
|
"name": "IdentityUniqueId",
|
50
50
|
"required": false,
|
@@ -53,7 +53,7 @@
|
|
53
53
|
{
|
54
54
|
"disabled": false,
|
55
55
|
"document": "身份证号",
|
56
|
-
"example": "
|
56
|
+
"example": "610********4219",
|
57
57
|
"member": "string",
|
58
58
|
"name": "IdCardNumber",
|
59
59
|
"required": false,
|
@@ -113,7 +113,7 @@
|
|
113
113
|
{
|
114
114
|
"disabled": false,
|
115
115
|
"document": "验签申请经办人电话",
|
116
|
-
"example": "
|
116
|
+
"example": "187****6446",
|
117
117
|
"member": "string",
|
118
118
|
"name": "ApplyMobile",
|
119
119
|
"required": true,
|
@@ -122,7 +122,7 @@
|
|
122
122
|
{
|
123
123
|
"disabled": false,
|
124
124
|
"document": "验签文件id",
|
125
|
-
"example": "
|
125
|
+
"example": "5419c4b9f60*****a4f77bb517b092f5",
|
126
126
|
"member": "string",
|
127
127
|
"name": "FileId",
|
128
128
|
"required": true,
|
@@ -131,7 +131,7 @@
|
|
131
131
|
{
|
132
132
|
"disabled": false,
|
133
133
|
"document": "验签申请经办人邮箱",
|
134
|
-
"example": "
|
134
|
+
"example": "zhangsan**@qq.com",
|
135
135
|
"member": "string",
|
136
136
|
"name": "ApplyEmail",
|
137
137
|
"required": false,
|
@@ -155,7 +155,7 @@
|
|
155
155
|
{
|
156
156
|
"disabled": false,
|
157
157
|
"document": "签名id",
|
158
|
-
"example": "
|
158
|
+
"example": "695128****98250752",
|
159
159
|
"member": "string",
|
160
160
|
"name": "SignatureId",
|
161
161
|
"output_required": false,
|
@@ -165,7 +165,7 @@
|
|
165
165
|
{
|
166
166
|
"disabled": false,
|
167
167
|
"document": "code",
|
168
|
-
"example": "
|
168
|
+
"example": "0",
|
169
169
|
"member": "string",
|
170
170
|
"name": "Code",
|
171
171
|
"output_required": false,
|
@@ -175,7 +175,7 @@
|
|
175
175
|
{
|
176
176
|
"disabled": false,
|
177
177
|
"document": "message",
|
178
|
-
"example": "
|
178
|
+
"example": "签章请求接收成功",
|
179
179
|
"member": "string",
|
180
180
|
"name": "Message",
|
181
181
|
"output_required": false,
|
@@ -197,7 +197,7 @@
|
|
197
197
|
{
|
198
198
|
"disabled": false,
|
199
199
|
"document": "签名id",
|
200
|
-
"example": "
|
200
|
+
"example": "6921757****1854336",
|
201
201
|
"member": "string",
|
202
202
|
"name": "SignatureId",
|
203
203
|
"required": true,
|
@@ -212,7 +212,7 @@
|
|
212
212
|
{
|
213
213
|
"disabled": false,
|
214
214
|
"document": "下载url",
|
215
|
-
"example": "
|
215
|
+
"example": "https://file.nmgsca.com/verified/*********",
|
216
216
|
"member": "string",
|
217
217
|
"name": "ReportUrl",
|
218
218
|
"output_required": false,
|
@@ -222,7 +222,7 @@
|
|
222
222
|
{
|
223
223
|
"disabled": false,
|
224
224
|
"document": "code",
|
225
|
-
"example": "
|
225
|
+
"example": "0",
|
226
226
|
"member": "string",
|
227
227
|
"name": "Code",
|
228
228
|
"output_required": false,
|
@@ -232,7 +232,7 @@
|
|
232
232
|
{
|
233
233
|
"disabled": false,
|
234
234
|
"document": "message",
|
235
|
-
"example": "
|
235
|
+
"example": "验签报告查询成功",
|
236
236
|
"member": "string",
|
237
237
|
"name": "Message",
|
238
238
|
"output_required": false,
|
@@ -254,7 +254,7 @@
|
|
254
254
|
{
|
255
255
|
"disabled": false,
|
256
256
|
"document": "BASE64编码后的文件内容",
|
257
|
-
"example": "
|
257
|
+
"example": "shia*****klsnj",
|
258
258
|
"member": "string",
|
259
259
|
"name": "FileBody",
|
260
260
|
"required": false,
|
@@ -293,7 +293,7 @@
|
|
293
293
|
{
|
294
294
|
"disabled": false,
|
295
295
|
"document": "文件id列表",
|
296
|
-
"example": "
|
296
|
+
"example": "[\"5419c4b9f60*****a4f77bb517b092f5\"]",
|
297
297
|
"member": "string",
|
298
298
|
"name": "FileIds",
|
299
299
|
"output_required": true,
|
@@ -303,7 +303,7 @@
|
|
303
303
|
{
|
304
304
|
"disabled": false,
|
305
305
|
"document": "文件id总数",
|
306
|
-
"example": "
|
306
|
+
"example": "1",
|
307
307
|
"member": "int64",
|
308
308
|
"name": "TotalCount",
|
309
309
|
"output_required": true,
|
@@ -10,7 +10,7 @@
|
|
10
10
|
"DeleteProbeTask": {
|
11
11
|
"document": "删除拨测任务",
|
12
12
|
"input": "DeleteProbeTaskRequest",
|
13
|
-
"name": "
|
13
|
+
"name": "删除任务",
|
14
14
|
"output": "DeleteProbeTaskResponse",
|
15
15
|
"status": "online"
|
16
16
|
},
|
@@ -64,9 +64,9 @@
|
|
64
64
|
"status": "online"
|
65
65
|
},
|
66
66
|
"SuspendProbeTask": {
|
67
|
-
"document": "
|
67
|
+
"document": "暂停任务",
|
68
68
|
"input": "SuspendProbeTaskRequest",
|
69
|
-
"name": "
|
69
|
+
"name": "暂停任务",
|
70
70
|
"output": "SuspendProbeTaskResponse",
|
71
71
|
"status": "online"
|
72
72
|
},
|
@@ -134,7 +134,7 @@
|
|
134
134
|
{
|
135
135
|
"disabled": false,
|
136
136
|
"document": "拨测参数,详细可参考云拨测官方文档,链接:https://cloud.tencent.com/document/product/248/87308#createprobetasks。",
|
137
|
-
"example": "
|
137
|
+
"example": "无",
|
138
138
|
"member": "string",
|
139
139
|
"name": "Parameters",
|
140
140
|
"required": true,
|
@@ -161,7 +161,7 @@
|
|
161
161
|
{
|
162
162
|
"disabled": false,
|
163
163
|
"document": "资源标签值",
|
164
|
-
"example": "[{\"TagKey\":\"
|
164
|
+
"example": "[{\"TagKey\":\"运营部门\", \"TagValue\": \"云产一\"}]",
|
165
165
|
"member": "Tag",
|
166
166
|
"name": "Tag",
|
167
167
|
"required": false,
|
@@ -206,7 +206,7 @@
|
|
206
206
|
{
|
207
207
|
"disabled": false,
|
208
208
|
"document": "供应商子账户同步标志",
|
209
|
-
"example": "
|
209
|
+
"example": "0",
|
210
210
|
"member": "int64",
|
211
211
|
"name": "SubSyncFlag",
|
212
212
|
"required": false,
|
@@ -261,7 +261,7 @@
|
|
261
261
|
"example": "1",
|
262
262
|
"member": "int64",
|
263
263
|
"name": "Total",
|
264
|
-
"
|
264
|
+
"output_required": true,
|
265
265
|
"type": "int",
|
266
266
|
"value_allowed_null": false
|
267
267
|
},
|
@@ -271,17 +271,17 @@
|
|
271
271
|
"example": "1",
|
272
272
|
"member": "int64",
|
273
273
|
"name": "SuccessCount",
|
274
|
-
"
|
274
|
+
"output_required": true,
|
275
275
|
"type": "int",
|
276
276
|
"value_allowed_null": true
|
277
277
|
},
|
278
278
|
{
|
279
279
|
"disabled": false,
|
280
280
|
"document": "任务执行结果\n注意:此字段可能返回 null,表示取不到有效值。",
|
281
|
-
"example": "
|
281
|
+
"example": "无",
|
282
282
|
"member": "TaskResult",
|
283
283
|
"name": "Results",
|
284
|
-
"
|
284
|
+
"output_required": true,
|
285
285
|
"type": "list",
|
286
286
|
"value_allowed_null": true
|
287
287
|
},
|
@@ -507,10 +507,10 @@
|
|
507
507
|
{
|
508
508
|
"disabled": false,
|
509
509
|
"document": "任务\n注意:此字段可能返回 null,表示取不到有效值。",
|
510
|
-
"example": "
|
510
|
+
"example": "无",
|
511
511
|
"member": "SingleInstantTask",
|
512
512
|
"name": "Tasks",
|
513
|
-
"
|
513
|
+
"output_required": true,
|
514
514
|
"type": "list",
|
515
515
|
"value_allowed_null": true
|
516
516
|
},
|
@@ -520,7 +520,7 @@
|
|
520
520
|
"example": "10",
|
521
521
|
"member": "uint64",
|
522
522
|
"name": "Total",
|
523
|
-
"
|
523
|
+
"output_required": true,
|
524
524
|
"type": "int",
|
525
525
|
"value_allowed_null": false
|
526
526
|
},
|
@@ -602,6 +602,7 @@
|
|
602
602
|
"example": "[{\"Code\":1000, \"Type\":1, \"Name\":\"北京\"}]",
|
603
603
|
"member": "NodeDefineExt",
|
604
604
|
"name": "NodeSet",
|
605
|
+
"output_required": true,
|
605
606
|
"type": "list",
|
606
607
|
"value_allowed_null": true
|
607
608
|
},
|
@@ -680,7 +681,7 @@
|
|
680
681
|
{
|
681
682
|
"disabled": false,
|
682
683
|
"document": " 返回指标 JSON 序列化后的字符串,具体如下所示:\"[{\\\"name\\\":\\\"task_navigate_request_gauge\\\",\\\"columns\\\":[\\\"time\\\",\\\"avg(first_screen_time) / 1000\\\"],\\\"values\\\":[[1641571200,6.756600000000001]],\\\"tags\\\":null}]\"",
|
683
|
-
"example": "
|
684
|
+
"example": "gauge",
|
684
685
|
"member": "string",
|
685
686
|
"name": "MetricSet",
|
686
687
|
"output_required": true,
|
@@ -898,7 +899,7 @@
|
|
898
899
|
{
|
899
900
|
"disabled": false,
|
900
901
|
"document": "任务列表\n注意:此字段可能返回 null,表示取不到有效值。",
|
901
|
-
"example": "
|
902
|
+
"example": "无",
|
902
903
|
"member": "ProbeTask",
|
903
904
|
"name": "TaskSet",
|
904
905
|
"output_required": true,
|
@@ -1496,7 +1497,7 @@
|
|
1496
1497
|
"example": "1",
|
1497
1498
|
"member": "int64",
|
1498
1499
|
"name": "Total",
|
1499
|
-
"
|
1500
|
+
"output_required": true,
|
1500
1501
|
"type": "int",
|
1501
1502
|
"value_allowed_null": false
|
1502
1503
|
},
|
@@ -1506,17 +1507,17 @@
|
|
1506
1507
|
"example": "1",
|
1507
1508
|
"member": "int64",
|
1508
1509
|
"name": "SuccessCount",
|
1509
|
-
"
|
1510
|
+
"output_required": true,
|
1510
1511
|
"type": "int",
|
1511
1512
|
"value_allowed_null": true
|
1512
1513
|
},
|
1513
1514
|
{
|
1514
1515
|
"disabled": false,
|
1515
1516
|
"document": "任务执行详情\n注意:此字段可能返回 null,表示取不到有效值。",
|
1516
|
-
"example": "
|
1517
|
+
"example": "无",
|
1517
1518
|
"member": "TaskResult",
|
1518
1519
|
"name": "Results",
|
1519
|
-
"
|
1520
|
+
"output_required": true,
|
1520
1521
|
"type": "list",
|
1521
1522
|
"value_allowed_null": true
|
1522
1523
|
},
|
@@ -1639,7 +1640,7 @@
|
|
1639
1640
|
"example": "1",
|
1640
1641
|
"member": "int64",
|
1641
1642
|
"name": "Total",
|
1642
|
-
"
|
1643
|
+
"output_required": true,
|
1643
1644
|
"type": "int",
|
1644
1645
|
"value_allowed_null": false
|
1645
1646
|
},
|
@@ -1649,17 +1650,17 @@
|
|
1649
1650
|
"example": "1",
|
1650
1651
|
"member": "int64",
|
1651
1652
|
"name": "SuccessCount",
|
1652
|
-
"
|
1653
|
+
"output_required": true,
|
1653
1654
|
"type": "int",
|
1654
1655
|
"value_allowed_null": true
|
1655
1656
|
},
|
1656
1657
|
{
|
1657
1658
|
"disabled": false,
|
1658
1659
|
"document": "任务执行结果\n注意:此字段可能返回 null,表示取不到有效值。",
|
1659
|
-
"example": "
|
1660
|
+
"example": "无",
|
1660
1661
|
"member": "TaskResult",
|
1661
1662
|
"name": "Results",
|
1662
|
-
"
|
1663
|
+
"output_required": true,
|
1663
1664
|
"type": "list",
|
1664
1665
|
"value_allowed_null": true
|
1665
1666
|
},
|
@@ -1803,7 +1804,7 @@
|
|
1803
1804
|
{
|
1804
1805
|
"disabled": false,
|
1805
1806
|
"document": "拨测参数,详细参数配置可参考云拨测官网文档。",
|
1806
|
-
"example": "
|
1807
|
+
"example": "无",
|
1807
1808
|
"member": "string",
|
1808
1809
|
"name": "Parameters",
|
1809
1810
|
"required": true,
|
@@ -9,24 +9,24 @@
|
|
9
9
|
},
|
10
10
|
{
|
11
11
|
"document": "",
|
12
|
-
"input": "POST / HTTP/1.1\nHost: cat.tencentcloudapi.com\nContent-Type: application/json\nX-TC-Action: CreateProbeTasks\n<公共请求参数>\n\n{\n \"BatchTasks\": [\n {\n \"Name\": \"probe\",\n \"TargetAddress\": \"http://www.baidu.com\"\n }\n ],\n \"Parameters\": \"{\\\"ipType\\\":0,\\\"grabBag\\\":0,\\\"netIcmpOn\\\":1,\\\"netIcmpActivex\\\":0,\\\"netIcmpTimeout\\\":20,\\\"netIcmpInterval\\\":0.5,\\\"netIcmpNum\\\":20,\\\"netIcmpSize\\\":32,\\\"netIcmpDataCut\\\":1,\\\"netDnsOn\\\":1,\\\"netDnsTimeout\\\":5,\\\"netDnsQuerymethod\\\":1,\\\"netDnsNs\\\":\\\"\\\",\\\"netDigOn\\\":1,\\\"netDnsServer\\\":2,\\\"netTracertOn\\\":1,\\\"netTracertTimeout\\\":60,\\\"netTracertNum\\\":30,\\\"whiteList\\\":\\\"\\\",\\\"blackList\\\":\\\"\\\",\\\"netIcmpActivexStr\\\":\\\"\\\"}\",\n \"Interval\": 30,\n \"TaskCategory\": 1,\n \"TaskType\": 5,\n \"Nodes\": [\n \"10001\"\n ],\n \"Cron\": \"* 0-6 * * *\",\n \"Tag\": [\n {\n \"TagKey\": \"
|
13
|
-
"output": "{\n \"Response\": {\n \"TaskIDs\": [\n \"abc\"\n ],\n \"RequestId\": \"
|
12
|
+
"input": "POST / HTTP/1.1\nHost: cat.tencentcloudapi.com\nContent-Type: application/json\nX-TC-Action: CreateProbeTasks\n<公共请求参数>\n\n{\n \"BatchTasks\": [\n {\n \"Name\": \"probe\",\n \"TargetAddress\": \"http://www.baidu.com\"\n }\n ],\n \"Parameters\": \"{\\\"ipType\\\":0,\\\"grabBag\\\":0,\\\"netIcmpOn\\\":1,\\\"netIcmpActivex\\\":0,\\\"netIcmpTimeout\\\":20,\\\"netIcmpInterval\\\":0.5,\\\"netIcmpNum\\\":20,\\\"netIcmpSize\\\":32,\\\"netIcmpDataCut\\\":1,\\\"netDnsOn\\\":1,\\\"netDnsTimeout\\\":5,\\\"netDnsQuerymethod\\\":1,\\\"netDnsNs\\\":\\\"\\\",\\\"netDigOn\\\":1,\\\"netDnsServer\\\":2,\\\"netTracertOn\\\":1,\\\"netTracertTimeout\\\":60,\\\"netTracertNum\\\":30,\\\"whiteList\\\":\\\"\\\",\\\"blackList\\\":\\\"\\\",\\\"netIcmpActivexStr\\\":\\\"\\\"}\",\n \"Interval\": 30,\n \"TaskCategory\": 1,\n \"TaskType\": 5,\n \"Nodes\": [\n \"10001\"\n ],\n \"Cron\": \"* 0-6 * * *\",\n \"Tag\": [\n {\n \"TagKey\": \"运营部门\",\n \"TagValue\": \"产一\"\n }\n ]\n}",
|
13
|
+
"output": "{\n \"Response\": {\n \"TaskIDs\": [\n \"task-abc\"\n ],\n \"RequestId\": \"720b3231-5a85-4f05-aaab-c9b9596xxxxx\"\n }\n}",
|
14
14
|
"title": "批量创建拨测任务"
|
15
15
|
}
|
16
16
|
],
|
17
17
|
"DeleteProbeTask": [
|
18
18
|
{
|
19
19
|
"document": "",
|
20
|
-
"input": "POST / HTTP/1.1\nHost: cat.tencentcloudapi.com\nContent-Type: application/json\nX-TC-Action: DeleteProbeTask\n<公共请求参数>\n\n{\n \"TaskIds\": [\n \"
|
21
|
-
"output": "{\n \"Response\": {\n \"SuccessCount\": 0,\n \"Total\": 0,\n \"Results\": [\n {\n \"ErrorMessage\": \"
|
22
|
-
"title": "
|
20
|
+
"input": "POST / HTTP/1.1\nHost: cat.tencentcloudapi.com\nContent-Type: application/json\nX-TC-Action: DeleteProbeTask\n<公共请求参数>\n\n{\n \"TaskIds\": [\n \"task-xxx\"\n ]\n}",
|
21
|
+
"output": "{\n \"Response\": {\n \"SuccessCount\": 0,\n \"Total\": 0,\n \"Results\": [\n {\n \"ErrorMessage\": \"\",\n \"Success\": true,\n \"TaskId\": \"task-xxx\"\n }\n ],\n \"RequestId\": \"720b3231-5a85-4f05-aaab-c9b9596xxxxx\"\n }\n}",
|
22
|
+
"title": "删除任务"
|
23
23
|
}
|
24
24
|
],
|
25
25
|
"DescribeDetailedSingleProbeData": [
|
26
26
|
{
|
27
27
|
"document": "列出单次拨测详情数据",
|
28
|
-
"input": "POST / HTTP/1.1\nHost: cat.tencentcloudapi.com\nContent-Type: application/json\nX-TC-Action: DescribeDetailedSingleProbeData\n<公共请求参数>\n\n{\n \"BeginTime\": 1679899994107,\n \"EndTime\": 1679903594107,\n \"TaskType\": \"AnalyzeTaskType_Network\",\n \"SortField\": \"ProbeTime\",\n \"Ascending\": true,\n \"Offset\": 0,\n \"Limit\": 10,\n \"SelectedFields\": [\n \"ProbeTime\",\n \"City\",\n \"Operator\",\n \"ProbeIP\"\n ],\n \"TaskID\": [\n \"task-p4najqd4\"\n ],\n \"ScrollID\": \"
|
29
|
-
"output": "{\n \"Response\": {\n \"ScrollID\": \"
|
28
|
+
"input": "POST / HTTP/1.1\nHost: cat.tencentcloudapi.com\nContent-Type: application/json\nX-TC-Action: DescribeDetailedSingleProbeData\n<公共请求参数>\n\n{\n \"BeginTime\": 1679899994107,\n \"EndTime\": 1679903594107,\n \"TaskType\": \"AnalyzeTaskType_Network\",\n \"SortField\": \"ProbeTime\",\n \"Ascending\": true,\n \"Offset\": 0,\n \"Limit\": 10,\n \"SelectedFields\": [\n \"ProbeTime\",\n \"City\",\n \"Operator\",\n \"ProbeIP\"\n ],\n \"TaskID\": [\n \"task-p4najqd4\"\n ],\n \"ScrollID\": \"DXF1ZXJ5QW5kRmV0Y2gBAAAAAQEPczgWVU1RMC12VHhSUWlYa1I0dnU4aXlxxx==\"\n}",
|
29
|
+
"output": "{\n \"Response\": {\n \"ScrollID\": \"DXF1ZXJ5QW5kRmV0Y2gBAAAAAQEPczgWVU1RMC12VHhSUWlYa1I0dnU4aXlxxx==\",\n \"TotalNumber\": 10,\n \"DataSet\": [\n {\n \"ProbeTime\": 1,\n \"Labels\": [\n {\n \"ID\": 0,\n \"Name\": \"City\",\n \"Value\": \"上海市\"\n }\n ],\n \"Fields\": [\n {\n \"ID\": 0,\n \"Name\": \"ProbeTime\",\n \"Value\": 1679903537000\n }\n ]\n }\n ],\n \"RequestId\": \"720b3231-5a85-4f05-aaab-c9b9596xxxxx\"\n }\n}",
|
30
30
|
"title": "列出单次拨测详情数据"
|
31
31
|
}
|
32
32
|
],
|
@@ -34,7 +34,7 @@
|
|
34
34
|
{
|
35
35
|
"document": "",
|
36
36
|
"input": "POST / HTTP/1.1\nHost: cat.tencentcloudapi.com\nContent-Type: application/json\nX-TC-Action: DescribeInstantTasks\n<公共请求参数>\n\n{\n \"Limit\": 1,\n \"Offset\": 1\n}",
|
37
|
-
"output": "{\n \"Response\": {\n \"Tasks\": [\n {\n \"Status\": \"
|
37
|
+
"output": "{\n \"Response\": {\n \"Tasks\": [\n {\n \"Status\": \"1\",\n \"ProbeTime\": \"1641917822000\",\n \"TaskCategory\": 1,\n \"SuccessRate\": 0.0,\n \"TargetAddress\": \"www.test.com\",\n \"TaskId\": \"task-xxx\",\n \"TaskType\": 1,\n \"NodeCount\": 1\n }\n ],\n \"RequestId\": \"720b3231-5a85-4f05-aaab-c9b9596xxxxx\",\n \"Total\": 1\n }\n}",
|
38
38
|
"title": "获取历史即时拨测任务"
|
39
39
|
}
|
40
40
|
],
|
@@ -42,7 +42,7 @@
|
|
42
42
|
{
|
43
43
|
"document": "获取拨测节点",
|
44
44
|
"input": "POST / HTTP/1.1\nHost: cat.tencentcloudapi.com\nContent-Type: application/json\nX-TC-Action: DescribeNodes\n<公共请求参数>\n\n{\n \"NodeType\": 1\n}",
|
45
|
-
"output": "{\n \"Response\": {\n \"NodeSet\": [\n {\n \"City\": \"北京\",\n \"Code\": \"10001\",\n \"Name\": \"
|
45
|
+
"output": "{\n \"Response\": {\n \"NodeSet\": [\n {\n \"City\": \"北京\",\n \"Code\": \"10001\",\n \"Name\": \"test_task\",\n \"District\": \"beijing\",\n \"NetService\": \"中国电信\",\n \"Location\": 0,\n \"Type\": 1,\n \"IPType\": 0,\n \"TaskTypes\": [\n 1,\n 2\n ],\n \"CodeType\": \"\"\n }\n ],\n \"RequestId\": \"720b3231-5a85-4f05-aaab-c9b9596xxxxx\"\n }\n}",
|
46
46
|
"title": "获取拨测节点"
|
47
47
|
}
|
48
48
|
],
|
@@ -50,7 +50,7 @@
|
|
50
50
|
{
|
51
51
|
"document": "请求浏览数据",
|
52
52
|
"input": "POST / HTTP/1.1\nHost: cat.tencentcloudapi.com\nContent-Type: application/json\nX-TC-Action: DescribeProbeMetricData\n<公共请求参数>\n\n{\n \"AnalyzeTaskType\": \"AnalyzeTaskType_Network\",\n \"MetricType\": \"gauge\",\n \"Field\": \"sum(\\\"error_count\\\")\",\n \"GroupBy\": \"time(30d), \\\"operator\\\"\",\n \"Filters\": [\n \"\\\"host\\\" = 'default-host'\",\n \"time >= now()-1h\"\n ]\n}",
|
53
|
-
"output": "{\n \"Response\": {\n \"MetricSet\": \"[{\\\"name\\\":\\\"netenv_request_gauge\\\",\\\"columns\\\":[\\\"time\\\",\\\"sum(error_count)\\\"],\\\"values\\\":[[xxxxx,xxxxx]],\\\"tags\\\":null}]\",\n \"RequestId\": \"
|
53
|
+
"output": "{\n \"Response\": {\n \"MetricSet\": \"[{\\\"name\\\":\\\"netenv_request_gauge\\\",\\\"columns\\\":[\\\"time\\\",\\\"sum(error_count)\\\"],\\\"values\\\":[[xxxxx,xxxxx]],\\\"tags\\\":null}]\",\n \"RequestId\": \"720b3231-5a85-4f05-aaab-c9b9596xxxxx\"\n }\n}",
|
54
54
|
"title": "请求浏览数据"
|
55
55
|
}
|
56
56
|
],
|
@@ -84,7 +84,7 @@
|
|
84
84
|
{
|
85
85
|
"document": "",
|
86
86
|
"input": "POST / HTTP/1.1\nHost: cat.tencentcloudapi.com\nContent-Type: application/json\nX-TC-Action: DescribeProbeTasks\n<公共请求参数>\n\n{\n \"TaskIDs\": [\n \"task-xx\"\n ],\n \"TagFilters\": [\n {\n \"Key\": \"name\",\n \"Value\": \"zhangsan\"\n }\n ]\n}",
|
87
|
-
"output": "{\n \"Response\": {\n \"TaskSet\": [\n {\n \"Name\": \"
|
87
|
+
"output": "{\n \"Response\": {\n \"TaskSet\": [\n {\n \"Name\": \"cron测试\",\n \"TaskId\": \"task-xx\",\n \"TaskType\": 0,\n \"Nodes\": [\n \"10000\"\n ],\n \"NodeIpType\": 0,\n \"Interval\": 0,\n \"Parameters\": \"{\\\"ipType\\\":0,\\\"netIcmpOn\\\":1,\\\"netIcmpActivex\\\":0,\\\"netIcmpTimeout\\\":20,\\\"netIcmpInterval\\\":\\\"0.5\\\",\\\"netIcmpNum\\\":4,\\\"netIcmpSize\\\":4,\\\"netIcmpDataCut\\\":1,\\\"netDnsOn\\\":0,\\\"netTracertOn\\\":1,\\\"netTracertTimeout\\\":20,\\\"netTracertNum\\\":0}\",\n \"Status\": 0,\n \"TargetAddress\": \"www.test.com\",\n \"PayMode\": 0,\n \"OrderState\": 0,\n \"TaskCategory\": 0,\n \"CreatedAt\": \"2024-01-02 16:57:15\",\n \"Cron\": \"* 0-6 * * *\",\n \"CronState\": 0,\n \"TagInfoList\": [\n {\n \"Key\": \"部门\",\n \"Value\": \"部门 1\"\n }\n ]\n }\n ],\n \"Total\": 0,\n \"RequestId\": \"720b3231-5a85-4f05-aaab-c9b9596xxxxx\"\n }\n}",
|
88
88
|
"title": "查询拨测任务列表"
|
89
89
|
}
|
90
90
|
],
|
@@ -92,7 +92,7 @@
|
|
92
92
|
{
|
93
93
|
"document": "",
|
94
94
|
"input": "POST / HTTP/1.1\nHost: cat.tencentcloudapi.com\nContent-Type: application/json\nX-TC-Action: ResumeProbeTask\n<公共请求参数>\n\n{\n \"TaskIds\": [\n \"task-xx\"\n ]\n}",
|
95
|
-
"output": "{\n \"Response\": {\n \"SuccessCount\": 0,\n \"Total\": 0,\n \"Results\": [\n {\n \"ErrorMessage\": \"
|
95
|
+
"output": "{\n \"Response\": {\n \"SuccessCount\": 0,\n \"Total\": 0,\n \"Results\": [\n {\n \"ErrorMessage\": \"\",\n \"Success\": true,\n \"TaskId\": \"task-xx\"\n }\n ],\n \"RequestId\": \"720b3231-5a85-4f05-aaab-c9b9596xxxxx\"\n }\n}",
|
96
96
|
"title": "恢复拨测任务"
|
97
97
|
}
|
98
98
|
],
|
@@ -100,14 +100,14 @@
|
|
100
100
|
{
|
101
101
|
"document": "",
|
102
102
|
"input": "POST / HTTP/1.1\nHost: cat.tencentcloudapi.com\nContent-Type: application/json\nX-TC-Action: SuspendProbeTask\n<公共请求参数>\n\n{\n \"TaskIds\": [\n \"task-xxx\"\n ]\n}",
|
103
|
-
"output": "{\n \"Response\": {\n \"SuccessCount\": 1,\n \"Total\": 1,\n \"Results\": [\n {\n \"ErrorMessage\": \"
|
104
|
-
"title": "
|
103
|
+
"output": "{\n \"Response\": {\n \"SuccessCount\": 1,\n \"Total\": 1,\n \"Results\": [\n {\n \"ErrorMessage\": \"\",\n \"Success\": true,\n \"TaskId\": \"task-xxx\"\n }\n ],\n \"RequestId\": \"720b3231-5a85-4f05-aaab-c9b9596xxxxx\"\n }\n}",
|
104
|
+
"title": "暂停任务"
|
105
105
|
}
|
106
106
|
],
|
107
107
|
"UpdateProbeTaskAttributes": [
|
108
108
|
{
|
109
109
|
"document": "",
|
110
|
-
"input": "POST / HTTP/1.1\nHost: cat.tencentcloudapi.com\nContent-Type: application/json\nX-TC-Action: UpdateProbeTaskAttributes\n<公共请求参数>\n\n{\n \"TaskId\": \"task-a3a9qbqy\",\n \"Name\": \"
|
110
|
+
"input": "POST / HTTP/1.1\nHost: cat.tencentcloudapi.com\nContent-Type: application/json\nX-TC-Action: UpdateProbeTaskAttributes\n<公共请求参数>\n\n{\n \"TaskId\": \"task-a3a9qbqy\",\n \"Name\": \"qq_Test\"\n}",
|
111
111
|
"output": "{\n \"Response\": {\n \"RequestId\": \"db996865-85af-496f-b081-3e2fff7e5af2\"\n }\n}",
|
112
112
|
"title": "更新探测任务属性"
|
113
113
|
}
|
@@ -115,8 +115,8 @@
|
|
115
115
|
"UpdateProbeTaskConfigurationList": [
|
116
116
|
{
|
117
117
|
"document": "",
|
118
|
-
"input": "POST / HTTP/1.1\nHost: cat.tencentcloudapi.com\nContent-Type: application/json\nX-TC-Action: UpdateProbeTaskConfigurationList\n<公共请求参数>\n\n{\n \"TaskIds\": [\n \"task-xx\"\n ],\n \"Interval\": 30,\n \"Nodes\": [\n \"10001\"\n ],\n \"Parameters\": \"{}\",\n \"Cron\": \"* 0-6 * * *\"\n}",
|
119
|
-
"output": "{\n \"Response\": {\n \"RequestId\": \"
|
118
|
+
"input": "POST / HTTP/1.1\nHost: cat.tencentcloudapi.com\nContent-Type: application/json\nX-TC-Action: UpdateProbeTaskConfigurationList\n<公共请求参数>\n\n{\n \"TaskIds\": [\n \"task-xx\"\n ],\n \"Interval\": 30,\n \"Nodes\": [\n \"10001\"\n ],\n \"Parameters\": \"{\\\"ipType\\\":0,\\\"netIcmpOn\\\":1,\\\"netIcmpActivex\\\":0,\\\"netIcmpTimeout\\\":20,\\\"netIcmpInterval\\\":\\\"0.5\\\",\\\"netIcmpNum\\\":4,\\\"netIcmpSize\\\":4,\\\"netIcmpDataCut\\\":1,\\\"netDnsOn\\\":0,\\\"netTracertOn\\\":1,\\\"netTracertTimeout\\\":20,\\\"netTracertNum\\\":0}\",\n \"Cron\": \"* 0-6 * * *\"\n}",
|
119
|
+
"output": "{\n \"Response\": {\n \"RequestId\": \"720b3231-5a85-4f05-aaab-c9b9596xxxxx\"\n }\n}",
|
120
120
|
"title": "更新拨测任务配置"
|
121
121
|
}
|
122
122
|
]
|
tccli/services/ccc/ccc_client.py
CHANGED
@@ -3137,6 +3137,58 @@ def doDescribeCompanyList(args, parsed_globals):
|
|
3137
3137
|
FormatOutput.output("action", json_obj, g_param[OptionsDefine.Output], g_param[OptionsDefine.Filter])
|
3138
3138
|
|
3139
3139
|
|
3140
|
+
def doCreateAIAgentCall(args, parsed_globals):
|
3141
|
+
g_param = parse_global_arg(parsed_globals)
|
3142
|
+
|
3143
|
+
if g_param[OptionsDefine.UseCVMRole.replace('-', '_')]:
|
3144
|
+
cred = credential.CVMRoleCredential()
|
3145
|
+
elif g_param[OptionsDefine.RoleArn.replace('-', '_')] and g_param[OptionsDefine.RoleSessionName.replace('-', '_')]:
|
3146
|
+
cred = credential.STSAssumeRoleCredential(
|
3147
|
+
g_param[OptionsDefine.SecretId], g_param[OptionsDefine.SecretKey], g_param[OptionsDefine.RoleArn.replace('-', '_')],
|
3148
|
+
g_param[OptionsDefine.RoleSessionName.replace('-', '_')], endpoint=g_param["sts_cred_endpoint"]
|
3149
|
+
)
|
3150
|
+
elif os.getenv(OptionsDefine.ENV_TKE_REGION) and os.getenv(OptionsDefine.ENV_TKE_PROVIDER_ID) and os.getenv(OptionsDefine.ENV_TKE_WEB_IDENTITY_TOKEN_FILE) and os.getenv(OptionsDefine.ENV_TKE_ROLE_ARN):
|
3151
|
+
cred = credential.DefaultTkeOIDCRoleArnProvider().get_credentials()
|
3152
|
+
else:
|
3153
|
+
cred = credential.Credential(
|
3154
|
+
g_param[OptionsDefine.SecretId], g_param[OptionsDefine.SecretKey], g_param[OptionsDefine.Token]
|
3155
|
+
)
|
3156
|
+
http_profile = HttpProfile(
|
3157
|
+
reqTimeout=60 if g_param[OptionsDefine.Timeout] is None else int(g_param[OptionsDefine.Timeout]),
|
3158
|
+
reqMethod="POST",
|
3159
|
+
endpoint=g_param[OptionsDefine.Endpoint],
|
3160
|
+
proxy=g_param[OptionsDefine.HttpsProxy.replace('-', '_')]
|
3161
|
+
)
|
3162
|
+
profile = ClientProfile(httpProfile=http_profile, signMethod="HmacSHA256")
|
3163
|
+
if g_param[OptionsDefine.Language]:
|
3164
|
+
profile.language = g_param[OptionsDefine.Language]
|
3165
|
+
mod = CLIENT_MAP[g_param[OptionsDefine.Version]]
|
3166
|
+
client = mod.CccClient(cred, g_param[OptionsDefine.Region], profile)
|
3167
|
+
client._sdkVersion += ("_CLI_" + __version__)
|
3168
|
+
models = MODELS_MAP[g_param[OptionsDefine.Version]]
|
3169
|
+
model = models.CreateAIAgentCallRequest()
|
3170
|
+
model.from_json_string(json.dumps(args))
|
3171
|
+
start_time = time.time()
|
3172
|
+
while True:
|
3173
|
+
rsp = client.CreateAIAgentCall(model)
|
3174
|
+
result = rsp.to_json_string()
|
3175
|
+
try:
|
3176
|
+
json_obj = json.loads(result)
|
3177
|
+
except TypeError as e:
|
3178
|
+
json_obj = json.loads(result.decode('utf-8')) # python3.3
|
3179
|
+
if not g_param[OptionsDefine.Waiter] or search(g_param['OptionsDefine.WaiterInfo']['expr'], json_obj) == g_param['OptionsDefine.WaiterInfo']['to']:
|
3180
|
+
break
|
3181
|
+
cur_time = time.time()
|
3182
|
+
if cur_time - start_time >= g_param['OptionsDefine.WaiterInfo']['timeout']:
|
3183
|
+
raise ClientError('Request timeout, wait `%s` to `%s` timeout, last request is %s' %
|
3184
|
+
(g_param['OptionsDefine.WaiterInfo']['expr'], g_param['OptionsDefine.WaiterInfo']['to'],
|
3185
|
+
search(g_param['OptionsDefine.WaiterInfo']['expr'], json_obj)))
|
3186
|
+
else:
|
3187
|
+
print('Inquiry result is %s.' % search(g_param['OptionsDefine.WaiterInfo']['expr'], json_obj))
|
3188
|
+
time.sleep(g_param['OptionsDefine.WaiterInfo']['interval'])
|
3189
|
+
FormatOutput.output("action", json_obj, g_param[OptionsDefine.Output], g_param[OptionsDefine.Filter])
|
3190
|
+
|
3191
|
+
|
3140
3192
|
def doDeletePredictiveDialingCampaign(args, parsed_globals):
|
3141
3193
|
g_param = parse_global_arg(parsed_globals)
|
3142
3194
|
|
@@ -3312,6 +3364,7 @@ ACTION_MAP = {
|
|
3312
3364
|
"DescribeNumbers": doDescribeNumbers,
|
3313
3365
|
"AbortPredictiveDialingCampaign": doAbortPredictiveDialingCampaign,
|
3314
3366
|
"DescribeCompanyList": doDescribeCompanyList,
|
3367
|
+
"CreateAIAgentCall": doCreateAIAgentCall,
|
3315
3368
|
"DeletePredictiveDialingCampaign": doDeletePredictiveDialingCampaign,
|
3316
3369
|
"UpdatePredictiveDialingCampaign": doUpdatePredictiveDialingCampaign,
|
3317
3370
|
|