@@ -255,6 +255,88 @@ def __repr__(self) -> str:
255
255
)
256
256
257
257
258
+ class SecretIncidentSchema (BaseSchema ):
259
+ id = fields .Integer (required = True )
260
+ date = fields .AwareDateTime (required = True , allow_none = True )
261
+ detector = fields .Dict (required = False , allow_none = True )
262
+ secret_hash = fields .String (required = False )
263
+ hmsl_hash = fields .String (required = False , allow_none = True )
264
+ gitguardian_url = fields .String (required = False )
265
+ status = fields .String (required = True )
266
+ assignee_id = fields .Integer (required = False , allow_none = True )
267
+ assignee_email = fields .String (required = False , allow_none = True )
268
+ occurrences_count = fields .Integer (required = True )
269
+ ignore_reason = fields .String (required = False , allow_none = True )
270
+ triggered_at = fields .AwareDateTime (required = False )
271
+ ignored_at = fields .AwareDateTime (required = False , allow_none = True )
272
+ secret_revoked = fields .Boolean (required = False )
273
+ severity = fields .String (required = False )
274
+ validity = fields .String (required = False )
275
+ resolved_at = fields .AwareDateTime (required = False , allow_none = True )
276
+ share_url = fields .String (required = False , allow_none = True )
277
+ tags = fields .List (fields .String (), required = False )
278
+
279
+ @post_load
280
+ def make_incident (self , data : Dict [str , Any ], ** kwargs : Any ) -> "SecretIncident" :
281
+ return SecretIncident (** data )
282
+
283
+
284
+ class SecretIncident (Base , FromDictMixin ):
285
+ """
286
+ Secret Incident describes a leaked secret incident.
287
+ """
288
+
289
+ SCHEMA = SecretIncidentSchema ()
290
+
291
+ def __init__ (
292
+ self ,
293
+ id : int ,
294
+ date : date ,
295
+ detector : Optional [Dict [str , Any ]] = None ,
296
+ secret_hash : Optional [str ] = None ,
297
+ hmsl_hash : Optional [str ] = None ,
298
+ gitguardian_url : Optional [str ] = None ,
299
+ status : Optional [str ] = None ,
300
+ assignee_id : Optional [int ] = None ,
301
+ assignee_email : Optional [str ] = None ,
302
+ occurrences_count : Optional [int ] = None ,
303
+ ignore_reason : Optional [str ] = None ,
304
+ triggered_at : Optional [datetime ] = None ,
305
+ ignored_at : Optional [datetime ] = None ,
306
+ secret_revoked : Optional [bool ] = None ,
307
+ severity : Optional [str ] = None ,
308
+ validity : Optional [str ] = None ,
309
+ resolved_at : Optional [datetime ] = None ,
310
+ share_url : Optional [str ] = None ,
311
+ tags : Optional [List [str ]] = None ,
312
+ ):
313
+ super ().__init__ ()
314
+ self .id = id
315
+ self .date = date
316
+ self .detector = detector
317
+ self .secret_hash = secret_hash
318
+ self .hmsl_hash = hmsl_hash
319
+ self .gitguardian_url = gitguardian_url
320
+ self .status = status
321
+ self .assignee_id = assignee_id
322
+ self .assignee_email = assignee_email
323
+ self .occurrences_count = occurrences_count
324
+ self .ignore_reason = ignore_reason
325
+ self .triggered_at = triggered_at
326
+ self .ignored_at = ignored_at
327
+ self .secret_revoked = secret_revoked
328
+ self .severity = severity
329
+ self .validity = validity
330
+ self .resolved_at = resolved_at
331
+ self .share_url = share_url
332
+
333
+ def __repr__ (self ) -> str :
334
+ return (
335
+ f"id:{ self .id } , detector_name:{ self .detector .get ('name' ) if self .detector else None } ,"
336
+ f"secret_hash:{ self .secret_hash } , url:{ self .gitguardian_url } "
337
+ )
338
+
339
+
258
340
class PolicyBreakSchema (BaseSchema ):
259
341
break_type = fields .String (data_key = "type" , required = True )
260
342
policy = fields .String (required = True )
0 commit comments