tencentcloud-sdk-cloudaudit 1.0.200

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,1045 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Copyright (c) 2017-2018 THL A29 Limited, a Tencent company. All Rights Reserved.
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+
17
+ module TencentCloud
18
+ module Cloudaudit
19
+ module V20190319
20
+ # AttributeKey值详情
21
+ class AttributeKeyDetail < TencentCloud::Common::AbstractModel
22
+ # @param LabelType: 输入框类型
23
+ # @type LabelType: String
24
+ # @param Starter: 初始化展示
25
+ # @type Starter: String
26
+ # @param Order: 展示排序
27
+ # @type Order: Integer
28
+ # @param Value: AttributeKey值
29
+ # @type Value: String
30
+ # @param Label: 中文标签
31
+ # @type Label: String
32
+
33
+ attr_accessor :LabelType, :Starter, :Order, :Value, :Label
34
+
35
+ def initialize(labeltype=nil, starter=nil, order=nil, value=nil, label=nil)
36
+ @LabelType = labeltype
37
+ @Starter = starter
38
+ @Order = order
39
+ @Value = value
40
+ @Label = label
41
+ end
42
+
43
+ def deserialize(params)
44
+ @LabelType = params['LabelType']
45
+ @Starter = params['Starter']
46
+ @Order = params['Order']
47
+ @Value = params['Value']
48
+ @Label = params['Label']
49
+ end
50
+ end
51
+
52
+ # 跟踪集概览
53
+ class AuditSummary < TencentCloud::Common::AbstractModel
54
+ # @param AuditStatus: 跟踪集状态,1:开启,0:关闭
55
+ # @type AuditStatus: Integer
56
+ # @param CosBucketName: COS存储桶名称
57
+ # @type CosBucketName: String
58
+ # @param AuditName: 跟踪集名称
59
+ # @type AuditName: String
60
+ # @param LogFilePrefix: 日志前缀
61
+ # @type LogFilePrefix: String
62
+
63
+ attr_accessor :AuditStatus, :CosBucketName, :AuditName, :LogFilePrefix
64
+
65
+ def initialize(auditstatus=nil, cosbucketname=nil, auditname=nil, logfileprefix=nil)
66
+ @AuditStatus = auditstatus
67
+ @CosBucketName = cosbucketname
68
+ @AuditName = auditname
69
+ @LogFilePrefix = logfileprefix
70
+ end
71
+
72
+ def deserialize(params)
73
+ @AuditStatus = params['AuditStatus']
74
+ @CosBucketName = params['CosBucketName']
75
+ @AuditName = params['AuditName']
76
+ @LogFilePrefix = params['LogFilePrefix']
77
+ end
78
+ end
79
+
80
+ # cmq地域信息
81
+ class CmqRegionInfo < TencentCloud::Common::AbstractModel
82
+ # @param CmqRegionName: 地域描述
83
+ # @type CmqRegionName: String
84
+ # @param CmqRegion: cmq地域
85
+ # @type CmqRegion: String
86
+
87
+ attr_accessor :CmqRegionName, :CmqRegion
88
+
89
+ def initialize(cmqregionname=nil, cmqregion=nil)
90
+ @CmqRegionName = cmqregionname
91
+ @CmqRegion = cmqregion
92
+ end
93
+
94
+ def deserialize(params)
95
+ @CmqRegionName = params['CmqRegionName']
96
+ @CmqRegion = params['CmqRegion']
97
+ end
98
+ end
99
+
100
+ # cos地域信息
101
+ class CosRegionInfo < TencentCloud::Common::AbstractModel
102
+ # @param CosRegion: cos地域
103
+ # @type CosRegion: String
104
+ # @param CosRegionName: 地域描述
105
+ # @type CosRegionName: String
106
+
107
+ attr_accessor :CosRegion, :CosRegionName
108
+
109
+ def initialize(cosregion=nil, cosregionname=nil)
110
+ @CosRegion = cosregion
111
+ @CosRegionName = cosregionname
112
+ end
113
+
114
+ def deserialize(params)
115
+ @CosRegion = params['CosRegion']
116
+ @CosRegionName = params['CosRegionName']
117
+ end
118
+ end
119
+
120
+ # CreateAudit请求参数结构体
121
+ class CreateAuditRequest < TencentCloud::Common::AbstractModel
122
+ # @param IsEnableCmqNotify: 是否开启cmq消息通知。1:是,0:否。目前仅支持cmq的队列服务。如果开启cmq消息通知服务,云审计会将您的日志内容实时投递到您指定地域的指定队列中。
123
+ # @type IsEnableCmqNotify: Integer
124
+ # @param ReadWriteAttribute: 管理事件的读写属性。1:只读,2:只写,3:全部。
125
+ # @type ReadWriteAttribute: Integer
126
+ # @param AuditName: 跟踪集名称。3-128字符,只能包含 ASCII 编码字母 a-z,A-Z,数字 0-9,下划线 _。
127
+ # @type AuditName: String
128
+ # @param CosRegion: cos地域。目前支持的地域可以使用ListCosEnableRegion来获取。
129
+ # @type CosRegion: String
130
+ # @param IsCreateNewBucket: 是否创建新的cos存储桶。1:是,0:否。
131
+ # @type IsCreateNewBucket: Integer
132
+ # @param CosBucketName: cos的存储桶名称。仅支持小写英文字母和数字即[a-z,0-9]、中划线“-”及其组合。用户自定义的字符串支持1 - 40个字符。存储桶命名不能以“-”开头或结尾。如果不是新创建的存储桶,云审计不会去校验该存储桶是否真的存在,请谨慎填写,避免日志投递不成功,导致您的数据丢失。
133
+ # @type CosBucketName: String
134
+ # @param KeyId: CMK的全局唯一标识符,如果不是新创建的kms,该值是必填值。可以通过ListKeyAliasByRegion来获取。云审计不会校验KeyId的合法性,请您谨慎填写,避免给您的数据造成损失。
135
+ # @type KeyId: String
136
+ # @param CmqQueueName: 队列名称。队列名称是一个不超过64个字符的字符串,必须以字母为首字符,剩余部分可以包含字母、数字和横划线(-)。如果IsEnableCmqNotify值是1的话,此值属于必填字段。如果不是新创建的队列,云审计不会去校验该队列是否真的存在,请谨慎填写,避免日志通知不成功,导致您的数据丢失。
137
+ # @type CmqQueueName: String
138
+ # @param KmsRegion: kms地域。目前支持的地域可以使用ListKmsEnableRegion来获取。必须要和cos的地域保持一致。
139
+ # @type KmsRegion: String
140
+ # @param IsEnableKmsEncry: 是否开启kms加密。1:是,0:否。如果开启KMS加密,数据在投递到cos时,会将数据加密。
141
+ # @type IsEnableKmsEncry: Integer
142
+ # @param CmqRegion: 队列所在的地域。可以通过ListCmqEnableRegion获取支持的cmq地域。如果IsEnableCmqNotify值是1的话,此值属于必填字段。
143
+ # @type CmqRegion: String
144
+ # @param LogFilePrefix: 日志文件前缀。3-40个字符,只能包含 ASCII 编码字母 a-z,A-Z,数字 0-9。可以不填,默认以账号ID作为日志前缀。
145
+ # @type LogFilePrefix: String
146
+ # @param IsCreateNewQueue: 是否创建新的队列。1:是,0:否。如果IsEnableCmqNotify值是1的话,此值属于必填字段。
147
+ # @type IsCreateNewQueue: Integer
148
+
149
+ attr_accessor :IsEnableCmqNotify, :ReadWriteAttribute, :AuditName, :CosRegion, :IsCreateNewBucket, :CosBucketName, :KeyId, :CmqQueueName, :KmsRegion, :IsEnableKmsEncry, :CmqRegion, :LogFilePrefix, :IsCreateNewQueue
150
+
151
+ def initialize(isenablecmqnotify=nil, readwriteattribute=nil, auditname=nil, cosregion=nil, iscreatenewbucket=nil, cosbucketname=nil, keyid=nil, cmqqueuename=nil, kmsregion=nil, isenablekmsencry=nil, cmqregion=nil, logfileprefix=nil, iscreatenewqueue=nil)
152
+ @IsEnableCmqNotify = isenablecmqnotify
153
+ @ReadWriteAttribute = readwriteattribute
154
+ @AuditName = auditname
155
+ @CosRegion = cosregion
156
+ @IsCreateNewBucket = iscreatenewbucket
157
+ @CosBucketName = cosbucketname
158
+ @KeyId = keyid
159
+ @CmqQueueName = cmqqueuename
160
+ @KmsRegion = kmsregion
161
+ @IsEnableKmsEncry = isenablekmsencry
162
+ @CmqRegion = cmqregion
163
+ @LogFilePrefix = logfileprefix
164
+ @IsCreateNewQueue = iscreatenewqueue
165
+ end
166
+
167
+ def deserialize(params)
168
+ @IsEnableCmqNotify = params['IsEnableCmqNotify']
169
+ @ReadWriteAttribute = params['ReadWriteAttribute']
170
+ @AuditName = params['AuditName']
171
+ @CosRegion = params['CosRegion']
172
+ @IsCreateNewBucket = params['IsCreateNewBucket']
173
+ @CosBucketName = params['CosBucketName']
174
+ @KeyId = params['KeyId']
175
+ @CmqQueueName = params['CmqQueueName']
176
+ @KmsRegion = params['KmsRegion']
177
+ @IsEnableKmsEncry = params['IsEnableKmsEncry']
178
+ @CmqRegion = params['CmqRegion']
179
+ @LogFilePrefix = params['LogFilePrefix']
180
+ @IsCreateNewQueue = params['IsCreateNewQueue']
181
+ end
182
+ end
183
+
184
+ # CreateAudit返回参数结构体
185
+ class CreateAuditResponse < TencentCloud::Common::AbstractModel
186
+ # @param IsSuccess: 是否创建成功。
187
+ # @type IsSuccess: Integer
188
+ # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
189
+ # @type RequestId: String
190
+
191
+ attr_accessor :IsSuccess, :RequestId
192
+
193
+ def initialize(issuccess=nil, requestid=nil)
194
+ @IsSuccess = issuccess
195
+ @RequestId = requestid
196
+ end
197
+
198
+ def deserialize(params)
199
+ @IsSuccess = params['IsSuccess']
200
+ @RequestId = params['RequestId']
201
+ end
202
+ end
203
+
204
+ # DeleteAudit请求参数结构体
205
+ class DeleteAuditRequest < TencentCloud::Common::AbstractModel
206
+ # @param AuditName: 跟踪集名称
207
+ # @type AuditName: String
208
+
209
+ attr_accessor :AuditName
210
+
211
+ def initialize(auditname=nil)
212
+ @AuditName = auditname
213
+ end
214
+
215
+ def deserialize(params)
216
+ @AuditName = params['AuditName']
217
+ end
218
+ end
219
+
220
+ # DeleteAudit返回参数结构体
221
+ class DeleteAuditResponse < TencentCloud::Common::AbstractModel
222
+ # @param IsSuccess: 是否删除成功
223
+ # @type IsSuccess: Integer
224
+ # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
225
+ # @type RequestId: String
226
+
227
+ attr_accessor :IsSuccess, :RequestId
228
+
229
+ def initialize(issuccess=nil, requestid=nil)
230
+ @IsSuccess = issuccess
231
+ @RequestId = requestid
232
+ end
233
+
234
+ def deserialize(params)
235
+ @IsSuccess = params['IsSuccess']
236
+ @RequestId = params['RequestId']
237
+ end
238
+ end
239
+
240
+ # DescribeAudit请求参数结构体
241
+ class DescribeAuditRequest < TencentCloud::Common::AbstractModel
242
+ # @param AuditName: 跟踪集名称
243
+ # @type AuditName: String
244
+
245
+ attr_accessor :AuditName
246
+
247
+ def initialize(auditname=nil)
248
+ @AuditName = auditname
249
+ end
250
+
251
+ def deserialize(params)
252
+ @AuditName = params['AuditName']
253
+ end
254
+ end
255
+
256
+ # DescribeAudit返回参数结构体
257
+ class DescribeAuditResponse < TencentCloud::Common::AbstractModel
258
+ # @param IsEnableCmqNotify: 是否开启cmq消息通知。1:是,0:否。
259
+ # @type IsEnableCmqNotify: Integer
260
+ # @param ReadWriteAttribute: 管理事件读写属性,1:只读,2:只写,3:全部
261
+ # @type ReadWriteAttribute: Integer
262
+ # @param KeyId: CMK的全局唯一标识符。
263
+ # @type KeyId: String
264
+ # @param AuditStatus: 跟踪集状态,1:开启,0:停止。
265
+ # @type AuditStatus: Integer
266
+ # @param AuditName: 跟踪集名称。
267
+ # @type AuditName: String
268
+ # @param CosRegion: cos存储桶所在地域。
269
+ # @type CosRegion: String
270
+ # @param CmqQueueName: 队列名称。
271
+ # @type CmqQueueName: String
272
+ # @param KmsAlias: CMK别名。
273
+ # @type KmsAlias: String
274
+ # @param KmsRegion: kms地域。
275
+ # @type KmsRegion: String
276
+ # @param IsEnableKmsEncry: 是否开启kms加密。1:是,0:否。如果开启KMS加密,数据在投递到cos时,会将数据加密。
277
+ # @type IsEnableKmsEncry: Integer
278
+ # @param CosBucketName: cos存储桶名称。
279
+ # @type CosBucketName: String
280
+ # @param CmqRegion: 队列所在地域。
281
+ # @type CmqRegion: String
282
+ # @param LogFilePrefix: 日志前缀。
283
+ # @type LogFilePrefix: String
284
+ # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
285
+ # @type RequestId: String
286
+
287
+ attr_accessor :IsEnableCmqNotify, :ReadWriteAttribute, :KeyId, :AuditStatus, :AuditName, :CosRegion, :CmqQueueName, :KmsAlias, :KmsRegion, :IsEnableKmsEncry, :CosBucketName, :CmqRegion, :LogFilePrefix, :RequestId
288
+
289
+ def initialize(isenablecmqnotify=nil, readwriteattribute=nil, keyid=nil, auditstatus=nil, auditname=nil, cosregion=nil, cmqqueuename=nil, kmsalias=nil, kmsregion=nil, isenablekmsencry=nil, cosbucketname=nil, cmqregion=nil, logfileprefix=nil, requestid=nil)
290
+ @IsEnableCmqNotify = isenablecmqnotify
291
+ @ReadWriteAttribute = readwriteattribute
292
+ @KeyId = keyid
293
+ @AuditStatus = auditstatus
294
+ @AuditName = auditname
295
+ @CosRegion = cosregion
296
+ @CmqQueueName = cmqqueuename
297
+ @KmsAlias = kmsalias
298
+ @KmsRegion = kmsregion
299
+ @IsEnableKmsEncry = isenablekmsencry
300
+ @CosBucketName = cosbucketname
301
+ @CmqRegion = cmqregion
302
+ @LogFilePrefix = logfileprefix
303
+ @RequestId = requestid
304
+ end
305
+
306
+ def deserialize(params)
307
+ @IsEnableCmqNotify = params['IsEnableCmqNotify']
308
+ @ReadWriteAttribute = params['ReadWriteAttribute']
309
+ @KeyId = params['KeyId']
310
+ @AuditStatus = params['AuditStatus']
311
+ @AuditName = params['AuditName']
312
+ @CosRegion = params['CosRegion']
313
+ @CmqQueueName = params['CmqQueueName']
314
+ @KmsAlias = params['KmsAlias']
315
+ @KmsRegion = params['KmsRegion']
316
+ @IsEnableKmsEncry = params['IsEnableKmsEncry']
317
+ @CosBucketName = params['CosBucketName']
318
+ @CmqRegion = params['CmqRegion']
319
+ @LogFilePrefix = params['LogFilePrefix']
320
+ @RequestId = params['RequestId']
321
+ end
322
+ end
323
+
324
+ # DescribeEvents请求参数结构体
325
+ class DescribeEventsRequest < TencentCloud::Common::AbstractModel
326
+ # @param StartTime: 起始时间戳(单位秒,不超过当前时间 90 天)
327
+ # @type StartTime: Integer
328
+ # @param EndTime: 结束时间戳(单位秒,查询时间跨度小于 30 天)
329
+ # @type EndTime: Integer
330
+ # @param NextToken: 查看更多日志的凭证
331
+ # @type NextToken: Integer
332
+ # @param MaxResults: 返回日志的最大条数(最大 50 条)
333
+ # @type MaxResults: Integer
334
+ # @param LookupAttributes: 检索条件(目前支持 RequestId:请求 ID、EventName:事件名称、ActionType:操作类型(Write:写;Read:读)、PrincipalId:子账号、ResourceType:资源类型、ResourceName:资源名称、AccessKeyId:密钥 ID、SensitiveAction:是否敏感操作、ApiErrorCode:API 错误码、CamErrorCode:CAM 错误码)
335
+ # @type LookupAttributes: Array
336
+ # @param IsReturnLocation: 是否返回 IP 归属地(1 返回,0 不返回)
337
+ # @type IsReturnLocation: Integer
338
+
339
+ attr_accessor :StartTime, :EndTime, :NextToken, :MaxResults, :LookupAttributes, :IsReturnLocation
340
+
341
+ def initialize(starttime=nil, endtime=nil, nexttoken=nil, maxresults=nil, lookupattributes=nil, isreturnlocation=nil)
342
+ @StartTime = starttime
343
+ @EndTime = endtime
344
+ @NextToken = nexttoken
345
+ @MaxResults = maxresults
346
+ @LookupAttributes = lookupattributes
347
+ @IsReturnLocation = isreturnlocation
348
+ end
349
+
350
+ def deserialize(params)
351
+ @StartTime = params['StartTime']
352
+ @EndTime = params['EndTime']
353
+ @NextToken = params['NextToken']
354
+ @MaxResults = params['MaxResults']
355
+ unless params['LookupAttributes'].nil?
356
+ @LookupAttributes = []
357
+ params['LookupAttributes'].each do |i|
358
+ lookupattribute_tmp = LookupAttribute.new
359
+ lookupattribute_tmp.deserialize(i)
360
+ @LookupAttributes << lookupattribute_tmp
361
+ end
362
+ end
363
+ @IsReturnLocation = params['IsReturnLocation']
364
+ end
365
+ end
366
+
367
+ # DescribeEvents返回参数结构体
368
+ class DescribeEventsResponse < TencentCloud::Common::AbstractModel
369
+ # @param ListOver: 日志集合是否结束
370
+ # @type ListOver: Boolean
371
+ # @param NextToken: 查看更多日志的凭证
372
+ # @type NextToken: Integer
373
+ # @param Events: 日志集合
374
+ # 注意:此字段可能返回 null,表示取不到有效值。
375
+ # @type Events: Array
376
+ # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
377
+ # @type RequestId: String
378
+
379
+ attr_accessor :ListOver, :NextToken, :Events, :RequestId
380
+
381
+ def initialize(listover=nil, nexttoken=nil, events=nil, requestid=nil)
382
+ @ListOver = listover
383
+ @NextToken = nexttoken
384
+ @Events = events
385
+ @RequestId = requestid
386
+ end
387
+
388
+ def deserialize(params)
389
+ @ListOver = params['ListOver']
390
+ @NextToken = params['NextToken']
391
+ unless params['Events'].nil?
392
+ @Events = []
393
+ params['Events'].each do |i|
394
+ event_tmp = Event.new
395
+ event_tmp.deserialize(i)
396
+ @Events << event_tmp
397
+ end
398
+ end
399
+ @RequestId = params['RequestId']
400
+ end
401
+ end
402
+
403
+ # 日志详情
404
+ class Event < TencentCloud::Common::AbstractModel
405
+ # @param EventId: 日志ID
406
+ # @type EventId: String
407
+ # @param Username: 用户名
408
+ # @type Username: String
409
+ # @param EventTime: 事件时间
410
+ # @type EventTime: String
411
+ # @param CloudAuditEvent: 日志详情
412
+ # @type CloudAuditEvent: String
413
+ # @param ResourceTypeCn: 资源类型中文描述(此字段请按需使用,如果您是其他语言使用者,可以忽略该字段描述)
414
+ # @type ResourceTypeCn: String
415
+ # @param ErrorCode: 鉴权错误码
416
+ # @type ErrorCode: Integer
417
+ # @param EventName: 事件名称
418
+ # @type EventName: String
419
+ # @param SecretId: 证书ID
420
+ # 注意:此字段可能返回 null,表示取不到有效值。
421
+ # @type SecretId: String
422
+ # @param EventSource: 请求来源
423
+ # @type EventSource: String
424
+ # @param RequestID: 请求ID
425
+ # @type RequestID: String
426
+ # @param ResourceRegion: 资源地域
427
+ # @type ResourceRegion: String
428
+ # @param AccountID: 主账号ID
429
+ # @type AccountID: Integer
430
+ # @param SourceIPAddress: 源IP
431
+ # 注意:此字段可能返回 null,表示取不到有效值。
432
+ # @type SourceIPAddress: String
433
+ # @param EventNameCn: 事件名称中文描述(此字段请按需使用,如果您是其他语言使用者,可以忽略该字段描述)
434
+ # @type EventNameCn: String
435
+ # @param Resources: 资源对
436
+ # @type Resources: :class:`Tencentcloud::Cloudaudit.v20190319.models.Resource`
437
+ # @param EventRegion: 事件地域
438
+ # @type EventRegion: String
439
+ # @param Location: IP 归属地
440
+ # @type Location: String
441
+
442
+ attr_accessor :EventId, :Username, :EventTime, :CloudAuditEvent, :ResourceTypeCn, :ErrorCode, :EventName, :SecretId, :EventSource, :RequestID, :ResourceRegion, :AccountID, :SourceIPAddress, :EventNameCn, :Resources, :EventRegion, :Location
443
+
444
+ def initialize(eventid=nil, username=nil, eventtime=nil, cloudauditevent=nil, resourcetypecn=nil, errorcode=nil, eventname=nil, secretid=nil, eventsource=nil, requestid=nil, resourceregion=nil, accountid=nil, sourceipaddress=nil, eventnamecn=nil, resources=nil, eventregion=nil, location=nil)
445
+ @EventId = eventid
446
+ @Username = username
447
+ @EventTime = eventtime
448
+ @CloudAuditEvent = cloudauditevent
449
+ @ResourceTypeCn = resourcetypecn
450
+ @ErrorCode = errorcode
451
+ @EventName = eventname
452
+ @SecretId = secretid
453
+ @EventSource = eventsource
454
+ @RequestID = requestid
455
+ @ResourceRegion = resourceregion
456
+ @AccountID = accountid
457
+ @SourceIPAddress = sourceipaddress
458
+ @EventNameCn = eventnamecn
459
+ @Resources = resources
460
+ @EventRegion = eventregion
461
+ @Location = location
462
+ end
463
+
464
+ def deserialize(params)
465
+ @EventId = params['EventId']
466
+ @Username = params['Username']
467
+ @EventTime = params['EventTime']
468
+ @CloudAuditEvent = params['CloudAuditEvent']
469
+ @ResourceTypeCn = params['ResourceTypeCn']
470
+ @ErrorCode = params['ErrorCode']
471
+ @EventName = params['EventName']
472
+ @SecretId = params['SecretId']
473
+ @EventSource = params['EventSource']
474
+ @RequestID = params['RequestID']
475
+ @ResourceRegion = params['ResourceRegion']
476
+ @AccountID = params['AccountID']
477
+ @SourceIPAddress = params['SourceIPAddress']
478
+ @EventNameCn = params['EventNameCn']
479
+ unless params['Resources'].nil?
480
+ @Resources = Resource.new
481
+ @Resources.deserialize(params['Resources'])
482
+ end
483
+ @EventRegion = params['EventRegion']
484
+ @Location = params['Location']
485
+ end
486
+ end
487
+
488
+ # GetAttributeKey请求参数结构体
489
+ class GetAttributeKeyRequest < TencentCloud::Common::AbstractModel
490
+ # @param WebsiteType: 网站类型,取值范围是zh和en。如果不传值默认zh
491
+ # @type WebsiteType: String
492
+
493
+ attr_accessor :WebsiteType
494
+
495
+ def initialize(websitetype=nil)
496
+ @WebsiteType = websitetype
497
+ end
498
+
499
+ def deserialize(params)
500
+ @WebsiteType = params['WebsiteType']
501
+ end
502
+ end
503
+
504
+ # GetAttributeKey返回参数结构体
505
+ class GetAttributeKeyResponse < TencentCloud::Common::AbstractModel
506
+ # @param AttributeKeyDetails: AttributeKey的有效取值范围
507
+ # @type AttributeKeyDetails: Array
508
+ # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
509
+ # @type RequestId: String
510
+
511
+ attr_accessor :AttributeKeyDetails, :RequestId
512
+
513
+ def initialize(attributekeydetails=nil, requestid=nil)
514
+ @AttributeKeyDetails = attributekeydetails
515
+ @RequestId = requestid
516
+ end
517
+
518
+ def deserialize(params)
519
+ unless params['AttributeKeyDetails'].nil?
520
+ @AttributeKeyDetails = []
521
+ params['AttributeKeyDetails'].each do |i|
522
+ attributekeydetail_tmp = AttributeKeyDetail.new
523
+ attributekeydetail_tmp.deserialize(i)
524
+ @AttributeKeyDetails << attributekeydetail_tmp
525
+ end
526
+ end
527
+ @RequestId = params['RequestId']
528
+ end
529
+ end
530
+
531
+ # InquireAuditCredit请求参数结构体
532
+ class InquireAuditCreditRequest < TencentCloud::Common::AbstractModel
533
+
534
+
535
+ def initialize()
536
+ end
537
+
538
+ def deserialize(params)
539
+ end
540
+ end
541
+
542
+ # InquireAuditCredit返回参数结构体
543
+ class InquireAuditCreditResponse < TencentCloud::Common::AbstractModel
544
+ # @param AuditAmount: 可创建跟踪集的数量
545
+ # @type AuditAmount: Integer
546
+ # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
547
+ # @type RequestId: String
548
+
549
+ attr_accessor :AuditAmount, :RequestId
550
+
551
+ def initialize(auditamount=nil, requestid=nil)
552
+ @AuditAmount = auditamount
553
+ @RequestId = requestid
554
+ end
555
+
556
+ def deserialize(params)
557
+ @AuditAmount = params['AuditAmount']
558
+ @RequestId = params['RequestId']
559
+ end
560
+ end
561
+
562
+ # CMK属性
563
+ class KeyMetadata < TencentCloud::Common::AbstractModel
564
+ # @param Alias: 作为密钥更容易辨识,更容易被人看懂的别名
565
+ # @type Alias: String
566
+ # @param KeyId: CMK的全局唯一标识
567
+ # @type KeyId: String
568
+
569
+ attr_accessor :Alias, :KeyId
570
+
571
+ def initialize(_alias=nil, keyid=nil)
572
+ @Alias = _alias
573
+ @KeyId = keyid
574
+ end
575
+
576
+ def deserialize(params)
577
+ @Alias = params['Alias']
578
+ @KeyId = params['KeyId']
579
+ end
580
+ end
581
+
582
+ # ListAudits请求参数结构体
583
+ class ListAuditsRequest < TencentCloud::Common::AbstractModel
584
+
585
+
586
+ def initialize()
587
+ end
588
+
589
+ def deserialize(params)
590
+ end
591
+ end
592
+
593
+ # ListAudits返回参数结构体
594
+ class ListAuditsResponse < TencentCloud::Common::AbstractModel
595
+ # @param AuditSummarys: 查询跟踪集概要集合
596
+ # 注意:此字段可能返回 null,表示取不到有效值。
597
+ # @type AuditSummarys: Array
598
+ # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
599
+ # @type RequestId: String
600
+
601
+ attr_accessor :AuditSummarys, :RequestId
602
+
603
+ def initialize(auditsummarys=nil, requestid=nil)
604
+ @AuditSummarys = auditsummarys
605
+ @RequestId = requestid
606
+ end
607
+
608
+ def deserialize(params)
609
+ unless params['AuditSummarys'].nil?
610
+ @AuditSummarys = []
611
+ params['AuditSummarys'].each do |i|
612
+ auditsummary_tmp = AuditSummary.new
613
+ auditsummary_tmp.deserialize(i)
614
+ @AuditSummarys << auditsummary_tmp
615
+ end
616
+ end
617
+ @RequestId = params['RequestId']
618
+ end
619
+ end
620
+
621
+ # ListCmqEnableRegion请求参数结构体
622
+ class ListCmqEnableRegionRequest < TencentCloud::Common::AbstractModel
623
+ # @param WebsiteType: 站点类型。zh表示中国区,en表示国际区。默认中国区。
624
+ # @type WebsiteType: String
625
+
626
+ attr_accessor :WebsiteType
627
+
628
+ def initialize(websitetype=nil)
629
+ @WebsiteType = websitetype
630
+ end
631
+
632
+ def deserialize(params)
633
+ @WebsiteType = params['WebsiteType']
634
+ end
635
+ end
636
+
637
+ # ListCmqEnableRegion返回参数结构体
638
+ class ListCmqEnableRegionResponse < TencentCloud::Common::AbstractModel
639
+ # @param EnableRegions: 云审计支持的cmq的可用区
640
+ # @type EnableRegions: Array
641
+ # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
642
+ # @type RequestId: String
643
+
644
+ attr_accessor :EnableRegions, :RequestId
645
+
646
+ def initialize(enableregions=nil, requestid=nil)
647
+ @EnableRegions = enableregions
648
+ @RequestId = requestid
649
+ end
650
+
651
+ def deserialize(params)
652
+ unless params['EnableRegions'].nil?
653
+ @EnableRegions = []
654
+ params['EnableRegions'].each do |i|
655
+ cmqregioninfo_tmp = CmqRegionInfo.new
656
+ cmqregioninfo_tmp.deserialize(i)
657
+ @EnableRegions << cmqregioninfo_tmp
658
+ end
659
+ end
660
+ @RequestId = params['RequestId']
661
+ end
662
+ end
663
+
664
+ # ListCosEnableRegion请求参数结构体
665
+ class ListCosEnableRegionRequest < TencentCloud::Common::AbstractModel
666
+ # @param WebsiteType: 站点类型。zh表示中国区,en表示国际区。默认中国区。
667
+ # @type WebsiteType: String
668
+
669
+ attr_accessor :WebsiteType
670
+
671
+ def initialize(websitetype=nil)
672
+ @WebsiteType = websitetype
673
+ end
674
+
675
+ def deserialize(params)
676
+ @WebsiteType = params['WebsiteType']
677
+ end
678
+ end
679
+
680
+ # ListCosEnableRegion返回参数结构体
681
+ class ListCosEnableRegionResponse < TencentCloud::Common::AbstractModel
682
+ # @param EnableRegions: 云审计支持的cos可用区
683
+ # @type EnableRegions: Array
684
+ # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
685
+ # @type RequestId: String
686
+
687
+ attr_accessor :EnableRegions, :RequestId
688
+
689
+ def initialize(enableregions=nil, requestid=nil)
690
+ @EnableRegions = enableregions
691
+ @RequestId = requestid
692
+ end
693
+
694
+ def deserialize(params)
695
+ unless params['EnableRegions'].nil?
696
+ @EnableRegions = []
697
+ params['EnableRegions'].each do |i|
698
+ cosregioninfo_tmp = CosRegionInfo.new
699
+ cosregioninfo_tmp.deserialize(i)
700
+ @EnableRegions << cosregioninfo_tmp
701
+ end
702
+ end
703
+ @RequestId = params['RequestId']
704
+ end
705
+ end
706
+
707
+ # ListKeyAliasByRegion请求参数结构体
708
+ class ListKeyAliasByRegionRequest < TencentCloud::Common::AbstractModel
709
+ # @param KmsRegion: Kms地域
710
+ # @type KmsRegion: String
711
+ # @param Limit: 含义跟 SQL 查询的 Limit 一致,表示本次获最多获取 Limit 个元素。缺省值为10,最大值为200
712
+ # @type Limit: Integer
713
+ # @param Offset: 含义跟 SQL 查询的 Offset 一致,表示本次获取从按一定顺序排列数组的第 Offset 个元素开始,缺省为0
714
+ # @type Offset: Integer
715
+
716
+ attr_accessor :KmsRegion, :Limit, :Offset
717
+
718
+ def initialize(kmsregion=nil, limit=nil, offset=nil)
719
+ @KmsRegion = kmsregion
720
+ @Limit = limit
721
+ @Offset = offset
722
+ end
723
+
724
+ def deserialize(params)
725
+ @KmsRegion = params['KmsRegion']
726
+ @Limit = params['Limit']
727
+ @Offset = params['Offset']
728
+ end
729
+ end
730
+
731
+ # ListKeyAliasByRegion返回参数结构体
732
+ class ListKeyAliasByRegionResponse < TencentCloud::Common::AbstractModel
733
+ # @param TotalCount: CMK的总数量
734
+ # @type TotalCount: Integer
735
+ # @param KeyMetadatas: 密钥别名
736
+ # @type KeyMetadatas: Array
737
+ # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
738
+ # @type RequestId: String
739
+
740
+ attr_accessor :TotalCount, :KeyMetadatas, :RequestId
741
+
742
+ def initialize(totalcount=nil, keymetadatas=nil, requestid=nil)
743
+ @TotalCount = totalcount
744
+ @KeyMetadatas = keymetadatas
745
+ @RequestId = requestid
746
+ end
747
+
748
+ def deserialize(params)
749
+ @TotalCount = params['TotalCount']
750
+ unless params['KeyMetadatas'].nil?
751
+ @KeyMetadatas = []
752
+ params['KeyMetadatas'].each do |i|
753
+ keymetadata_tmp = KeyMetadata.new
754
+ keymetadata_tmp.deserialize(i)
755
+ @KeyMetadatas << keymetadata_tmp
756
+ end
757
+ end
758
+ @RequestId = params['RequestId']
759
+ end
760
+ end
761
+
762
+ # LookUpEvents请求参数结构体
763
+ class LookUpEventsRequest < TencentCloud::Common::AbstractModel
764
+ # @param StartTime: 开始时间
765
+ # @type StartTime: Integer
766
+ # @param EndTime: 结束时间
767
+ # @type EndTime: Integer
768
+ # @param LookupAttributes: 检索条件
769
+ # @type LookupAttributes: Array
770
+ # @param NextToken: 查看更多日志的凭证
771
+ # @type NextToken: String
772
+ # @param MaxResults: 返回日志的最大条数
773
+ # @type MaxResults: Integer
774
+ # @param Mode: 云审计模式,有效值:standard | quick,其中standard是标准模式,quick是极速模式。默认为标准模式
775
+ # @type Mode: String
776
+
777
+ attr_accessor :StartTime, :EndTime, :LookupAttributes, :NextToken, :MaxResults, :Mode
778
+
779
+ def initialize(starttime=nil, endtime=nil, lookupattributes=nil, nexttoken=nil, maxresults=nil, mode=nil)
780
+ @StartTime = starttime
781
+ @EndTime = endtime
782
+ @LookupAttributes = lookupattributes
783
+ @NextToken = nexttoken
784
+ @MaxResults = maxresults
785
+ @Mode = mode
786
+ end
787
+
788
+ def deserialize(params)
789
+ @StartTime = params['StartTime']
790
+ @EndTime = params['EndTime']
791
+ unless params['LookupAttributes'].nil?
792
+ @LookupAttributes = []
793
+ params['LookupAttributes'].each do |i|
794
+ lookupattribute_tmp = LookupAttribute.new
795
+ lookupattribute_tmp.deserialize(i)
796
+ @LookupAttributes << lookupattribute_tmp
797
+ end
798
+ end
799
+ @NextToken = params['NextToken']
800
+ @MaxResults = params['MaxResults']
801
+ @Mode = params['Mode']
802
+ end
803
+ end
804
+
805
+ # LookUpEvents返回参数结构体
806
+ class LookUpEventsResponse < TencentCloud::Common::AbstractModel
807
+ # @param NextToken: 查看更多日志的凭证
808
+ # 注意:此字段可能返回 null,表示取不到有效值。
809
+ # @type NextToken: String
810
+ # @param Events: 日志集合
811
+ # 注意:此字段可能返回 null,表示取不到有效值。
812
+ # @type Events: Array
813
+ # @param ListOver: 日志集合是否结束
814
+ # 注意:此字段可能返回 null,表示取不到有效值。
815
+ # @type ListOver: Boolean
816
+ # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
817
+ # @type RequestId: String
818
+
819
+ attr_accessor :NextToken, :Events, :ListOver, :RequestId
820
+
821
+ def initialize(nexttoken=nil, events=nil, listover=nil, requestid=nil)
822
+ @NextToken = nexttoken
823
+ @Events = events
824
+ @ListOver = listover
825
+ @RequestId = requestid
826
+ end
827
+
828
+ def deserialize(params)
829
+ @NextToken = params['NextToken']
830
+ unless params['Events'].nil?
831
+ @Events = []
832
+ params['Events'].each do |i|
833
+ event_tmp = Event.new
834
+ event_tmp.deserialize(i)
835
+ @Events << event_tmp
836
+ end
837
+ end
838
+ @ListOver = params['ListOver']
839
+ @RequestId = params['RequestId']
840
+ end
841
+ end
842
+
843
+ # 检索条件
844
+ class LookupAttribute < TencentCloud::Common::AbstractModel
845
+ # @param AttributeKey: AttributeKey的有效取值范围是:RequestId、EventName、ReadOnly、Username、ResourceType、ResourceName和AccessKeyId,EventId
846
+ # 注意:此字段可能返回 null,表示取不到有效值。
847
+ # @type AttributeKey: String
848
+ # @param AttributeValue: AttributeValue的值
849
+ # 注意:此字段可能返回 null,表示取不到有效值。
850
+ # @type AttributeValue: String
851
+
852
+ attr_accessor :AttributeKey, :AttributeValue
853
+
854
+ def initialize(attributekey=nil, attributevalue=nil)
855
+ @AttributeKey = attributekey
856
+ @AttributeValue = attributevalue
857
+ end
858
+
859
+ def deserialize(params)
860
+ @AttributeKey = params['AttributeKey']
861
+ @AttributeValue = params['AttributeValue']
862
+ end
863
+ end
864
+
865
+ # 资源类型
866
+ class Resource < TencentCloud::Common::AbstractModel
867
+ # @param ResourceType: 资源类型
868
+ # @type ResourceType: String
869
+ # @param ResourceName: 资源名称
870
+ # 注意:此字段可能返回 null,表示取不到有效值。
871
+ # @type ResourceName: String
872
+
873
+ attr_accessor :ResourceType, :ResourceName
874
+
875
+ def initialize(resourcetype=nil, resourcename=nil)
876
+ @ResourceType = resourcetype
877
+ @ResourceName = resourcename
878
+ end
879
+
880
+ def deserialize(params)
881
+ @ResourceType = params['ResourceType']
882
+ @ResourceName = params['ResourceName']
883
+ end
884
+ end
885
+
886
+ # StartLogging请求参数结构体
887
+ class StartLoggingRequest < TencentCloud::Common::AbstractModel
888
+ # @param AuditName: 跟踪集名称
889
+ # @type AuditName: String
890
+
891
+ attr_accessor :AuditName
892
+
893
+ def initialize(auditname=nil)
894
+ @AuditName = auditname
895
+ end
896
+
897
+ def deserialize(params)
898
+ @AuditName = params['AuditName']
899
+ end
900
+ end
901
+
902
+ # StartLogging返回参数结构体
903
+ class StartLoggingResponse < TencentCloud::Common::AbstractModel
904
+ # @param IsSuccess: 是否开启成功
905
+ # @type IsSuccess: Integer
906
+ # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
907
+ # @type RequestId: String
908
+
909
+ attr_accessor :IsSuccess, :RequestId
910
+
911
+ def initialize(issuccess=nil, requestid=nil)
912
+ @IsSuccess = issuccess
913
+ @RequestId = requestid
914
+ end
915
+
916
+ def deserialize(params)
917
+ @IsSuccess = params['IsSuccess']
918
+ @RequestId = params['RequestId']
919
+ end
920
+ end
921
+
922
+ # StopLogging请求参数结构体
923
+ class StopLoggingRequest < TencentCloud::Common::AbstractModel
924
+ # @param AuditName: 跟踪集名称
925
+ # @type AuditName: String
926
+
927
+ attr_accessor :AuditName
928
+
929
+ def initialize(auditname=nil)
930
+ @AuditName = auditname
931
+ end
932
+
933
+ def deserialize(params)
934
+ @AuditName = params['AuditName']
935
+ end
936
+ end
937
+
938
+ # StopLogging返回参数结构体
939
+ class StopLoggingResponse < TencentCloud::Common::AbstractModel
940
+ # @param IsSuccess: 是否关闭成功
941
+ # @type IsSuccess: Integer
942
+ # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
943
+ # @type RequestId: String
944
+
945
+ attr_accessor :IsSuccess, :RequestId
946
+
947
+ def initialize(issuccess=nil, requestid=nil)
948
+ @IsSuccess = issuccess
949
+ @RequestId = requestid
950
+ end
951
+
952
+ def deserialize(params)
953
+ @IsSuccess = params['IsSuccess']
954
+ @RequestId = params['RequestId']
955
+ end
956
+ end
957
+
958
+ # UpdateAudit请求参数结构体
959
+ class UpdateAuditRequest < TencentCloud::Common::AbstractModel
960
+ # @param AuditName: 跟踪集名称
961
+ # @type AuditName: String
962
+ # @param IsEnableCmqNotify: 是否开启cmq消息通知。1:是,0:否。目前仅支持cmq的队列服务。如果开启cmq消息通知服务,云审计会将您的日志内容实时投递到您指定地域的指定队列中。
963
+ # @type IsEnableCmqNotify: Integer
964
+ # @param ReadWriteAttribute: 管理事件的读写属性。1:只读,2:只写,3:全部。
965
+ # @type ReadWriteAttribute: Integer
966
+ # @param KeyId: CMK的全局唯一标识符,如果不是新创建的kms,该值是必填值。可以通过ListKeyAliasByRegion来获取。云审计不会校验KeyId的合法性,请您谨慎填写,避免给您的数据造成损失。
967
+ # @type KeyId: String
968
+ # @param CosRegion: cos地域。目前支持的地域可以使用ListCosEnableRegion来获取。
969
+ # @type CosRegion: String
970
+ # @param CmqQueueName: 队列名称。队列名称是一个不超过64个字符的字符串,必须以字母为首字符,剩余部分可以包含字母、数字和横划线(-)。如果IsEnableCmqNotify值是1的话,此值属于必填字段。如果不是新创建的队列,云审计不会去校验该队列是否真的存在,请谨慎填写,避免日志通知不成功,导致您的数据丢失。
971
+ # @type CmqQueueName: String
972
+ # @param IsCreateNewBucket: 是否创建新的cos存储桶。1:是,0:否。
973
+ # @type IsCreateNewBucket: Integer
974
+ # @param KmsRegion: kms地域。目前支持的地域可以使用ListKmsEnableRegion来获取。必须要和cos的地域保持一致。
975
+ # @type KmsRegion: String
976
+ # @param IsEnableKmsEncry: 是否开启kms加密。1:是,0:否。如果开启KMS加密,数据在投递到cos时,会将数据加密。
977
+ # @type IsEnableKmsEncry: Integer
978
+ # @param CosBucketName: cos的存储桶名称。仅支持小写英文字母和数字即[a-z,0-9]、中划线“-”及其组合。用户自定义的字符串支持1 - 40个字符。存储桶命名不能以“-”开头或结尾。如果不是新创建的存储桶,云审计不会去校验该存储桶是否真的存在,请谨慎填写,避免日志投递不成功,导致您的数据丢失。
979
+ # @type CosBucketName: String
980
+ # @param CmqRegion: 队列所在的地域。可以通过ListCmqEnableRegion获取支持的cmq地域。如果IsEnableCmqNotify值是1的话,此值属于必填字段。
981
+ # @type CmqRegion: String
982
+ # @param LogFilePrefix: 日志文件前缀。3-40个字符,只能包含 ASCII 编码字母 a-z,A-Z,数字 0-9。
983
+ # @type LogFilePrefix: String
984
+ # @param IsCreateNewQueue: 是否创建新的队列。1:是,0:否。如果IsEnableCmqNotify值是1的话,此值属于必填字段。
985
+ # @type IsCreateNewQueue: Integer
986
+
987
+ attr_accessor :AuditName, :IsEnableCmqNotify, :ReadWriteAttribute, :KeyId, :CosRegion, :CmqQueueName, :IsCreateNewBucket, :KmsRegion, :IsEnableKmsEncry, :CosBucketName, :CmqRegion, :LogFilePrefix, :IsCreateNewQueue
988
+
989
+ def initialize(auditname=nil, isenablecmqnotify=nil, readwriteattribute=nil, keyid=nil, cosregion=nil, cmqqueuename=nil, iscreatenewbucket=nil, kmsregion=nil, isenablekmsencry=nil, cosbucketname=nil, cmqregion=nil, logfileprefix=nil, iscreatenewqueue=nil)
990
+ @AuditName = auditname
991
+ @IsEnableCmqNotify = isenablecmqnotify
992
+ @ReadWriteAttribute = readwriteattribute
993
+ @KeyId = keyid
994
+ @CosRegion = cosregion
995
+ @CmqQueueName = cmqqueuename
996
+ @IsCreateNewBucket = iscreatenewbucket
997
+ @KmsRegion = kmsregion
998
+ @IsEnableKmsEncry = isenablekmsencry
999
+ @CosBucketName = cosbucketname
1000
+ @CmqRegion = cmqregion
1001
+ @LogFilePrefix = logfileprefix
1002
+ @IsCreateNewQueue = iscreatenewqueue
1003
+ end
1004
+
1005
+ def deserialize(params)
1006
+ @AuditName = params['AuditName']
1007
+ @IsEnableCmqNotify = params['IsEnableCmqNotify']
1008
+ @ReadWriteAttribute = params['ReadWriteAttribute']
1009
+ @KeyId = params['KeyId']
1010
+ @CosRegion = params['CosRegion']
1011
+ @CmqQueueName = params['CmqQueueName']
1012
+ @IsCreateNewBucket = params['IsCreateNewBucket']
1013
+ @KmsRegion = params['KmsRegion']
1014
+ @IsEnableKmsEncry = params['IsEnableKmsEncry']
1015
+ @CosBucketName = params['CosBucketName']
1016
+ @CmqRegion = params['CmqRegion']
1017
+ @LogFilePrefix = params['LogFilePrefix']
1018
+ @IsCreateNewQueue = params['IsCreateNewQueue']
1019
+ end
1020
+ end
1021
+
1022
+ # UpdateAudit返回参数结构体
1023
+ class UpdateAuditResponse < TencentCloud::Common::AbstractModel
1024
+ # @param IsSuccess: 是否更新成功
1025
+ # @type IsSuccess: Integer
1026
+ # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
1027
+ # @type RequestId: String
1028
+
1029
+ attr_accessor :IsSuccess, :RequestId
1030
+
1031
+ def initialize(issuccess=nil, requestid=nil)
1032
+ @IsSuccess = issuccess
1033
+ @RequestId = requestid
1034
+ end
1035
+
1036
+ def deserialize(params)
1037
+ @IsSuccess = params['IsSuccess']
1038
+ @RequestId = params['RequestId']
1039
+ end
1040
+ end
1041
+
1042
+ end
1043
+ end
1044
+ end
1045
+