capo-codeguru-security 0.1.0__py3-none-any.whl

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 (132) hide show
  1. capo_codeguru_security/__init__.py +74 -0
  2. capo_codeguru_security/_async.py +25 -0
  3. capo_codeguru_security/_auth/_identity.py +16 -0
  4. capo_codeguru_security/_auth/_providers.py +886 -0
  5. capo_codeguru_security/_auth/_signers.py +88 -0
  6. capo_codeguru_security/_auth/_sigv4.py +434 -0
  7. capo_codeguru_security/_auth/_zapros_handler.py +80 -0
  8. capo_codeguru_security/_iter.py +113 -0
  9. capo_codeguru_security/_operations/aws_code_guru_security/batch_get_findings.py +167 -0
  10. capo_codeguru_security/_operations/aws_code_guru_security/create_scan.py +183 -0
  11. capo_codeguru_security/_operations/aws_code_guru_security/create_upload_url.py +165 -0
  12. capo_codeguru_security/_operations/aws_code_guru_security/get_account_configuration.py +161 -0
  13. capo_codeguru_security/_operations/aws_code_guru_security/get_findings.py +191 -0
  14. capo_codeguru_security/_operations/aws_code_guru_security/get_metrics_summary.py +176 -0
  15. capo_codeguru_security/_operations/aws_code_guru_security/get_scan.py +173 -0
  16. capo_codeguru_security/_operations/aws_code_guru_security/list_findings_metrics.py +185 -0
  17. capo_codeguru_security/_operations/aws_code_guru_security/list_scans.py +167 -0
  18. capo_codeguru_security/_operations/aws_code_guru_security/list_tags_for_resource.py +173 -0
  19. capo_codeguru_security/_operations/aws_code_guru_security/tag_resource.py +173 -0
  20. capo_codeguru_security/_operations/aws_code_guru_security/untag_resource.py +171 -0
  21. capo_codeguru_security/_operations/aws_code_guru_security/update_account_configuration.py +172 -0
  22. capo_codeguru_security/_pagination.py +21 -0
  23. capo_codeguru_security/_protocol/__init__.py +1 -0
  24. capo_codeguru_security/_protocol/errors.py +93 -0
  25. capo_codeguru_security/_protocol/eventstream.py +238 -0
  26. capo_codeguru_security/_protocol/serialize.py +47 -0
  27. capo_codeguru_security/_protocol/xml.py +33 -0
  28. capo_codeguru_security/_rule_engine/__init__.py +0 -0
  29. capo_codeguru_security/_rule_engine/_aws_partition.py +160 -0
  30. capo_codeguru_security/_rule_engine/_endpoint_rule_set.py +137 -0
  31. capo_codeguru_security/_rule_engine/_endpoint_runtime.py +389 -0
  32. capo_codeguru_security/_services/_aws_config.py +160 -0
  33. capo_codeguru_security/_services/_pipeline.py +198 -0
  34. capo_codeguru_security/_services/async_code_guru_security.py +934 -0
  35. capo_codeguru_security/_services/code_guru_security.py +921 -0
  36. capo_codeguru_security/errors/__init__.py +33 -0
  37. capo_codeguru_security/errors/_base.py +94 -0
  38. capo_codeguru_security/errors/access_denied_exception.py +67 -0
  39. capo_codeguru_security/errors/conflict_exception.py +67 -0
  40. capo_codeguru_security/errors/internal_server_exception.py +53 -0
  41. capo_codeguru_security/errors/resource_not_found_exception.py +69 -0
  42. capo_codeguru_security/errors/throttling_exception.py +65 -0
  43. capo_codeguru_security/errors/validation_exception.py +98 -0
  44. capo_codeguru_security/py.typed +0 -0
  45. capo_codeguru_security/types/_prelude/blob.py +12 -0
  46. capo_codeguru_security/types/_prelude/timestamp.py +17 -0
  47. capo_codeguru_security/types/account_findings_metric.py +118 -0
  48. capo_codeguru_security/types/analysis_type.py +17 -0
  49. capo_codeguru_security/types/batch_get_findings_error.py +61 -0
  50. capo_codeguru_security/types/batch_get_findings_errors.py +35 -0
  51. capo_codeguru_security/types/batch_get_findings_request.py +47 -0
  52. capo_codeguru_security/types/batch_get_findings_response.py +61 -0
  53. capo_codeguru_security/types/categories_with_most_findings.py +37 -0
  54. capo_codeguru_security/types/category_with_finding_num.py +29 -0
  55. capo_codeguru_security/types/client_token.py +5 -0
  56. capo_codeguru_security/types/code_line.py +29 -0
  57. capo_codeguru_security/types/code_snippet.py +29 -0
  58. capo_codeguru_security/types/create_scan_request.py +101 -0
  59. capo_codeguru_security/types/create_scan_response.py +78 -0
  60. capo_codeguru_security/types/create_upload_url_request.py +31 -0
  61. capo_codeguru_security/types/create_upload_url_response.py +59 -0
  62. capo_codeguru_security/types/detector_tags.py +14 -0
  63. capo_codeguru_security/types/encryption_config.py +28 -0
  64. capo_codeguru_security/types/error_code.py +20 -0
  65. capo_codeguru_security/types/error_message.py +5 -0
  66. capo_codeguru_security/types/file_path.py +62 -0
  67. capo_codeguru_security/types/finding.py +207 -0
  68. capo_codeguru_security/types/finding_identifier.py +33 -0
  69. capo_codeguru_security/types/finding_identifiers.py +33 -0
  70. capo_codeguru_security/types/finding_metrics_value_per_severity.py +87 -0
  71. capo_codeguru_security/types/findings.py +29 -0
  72. capo_codeguru_security/types/findings_metric_list.py +35 -0
  73. capo_codeguru_security/types/get_account_configuration_request.py +18 -0
  74. capo_codeguru_security/types/get_account_configuration_response.py +45 -0
  75. capo_codeguru_security/types/get_findings_request.py +32 -0
  76. capo_codeguru_security/types/get_findings_response.py +43 -0
  77. capo_codeguru_security/types/get_metrics_summary_request.py +24 -0
  78. capo_codeguru_security/types/get_metrics_summary_response.py +42 -0
  79. capo_codeguru_security/types/get_scan_request.py +27 -0
  80. capo_codeguru_security/types/get_scan_response.py +132 -0
  81. capo_codeguru_security/types/header_key.py +5 -0
  82. capo_codeguru_security/types/header_value.py +5 -0
  83. capo_codeguru_security/types/kms_key_arn.py +5 -0
  84. capo_codeguru_security/types/list_findings_metrics_request.py +32 -0
  85. capo_codeguru_security/types/list_findings_metrics_response.py +49 -0
  86. capo_codeguru_security/types/list_scans_request.py +26 -0
  87. capo_codeguru_security/types/list_scans_response.py +43 -0
  88. capo_codeguru_security/types/list_tags_for_resource_request.py +24 -0
  89. capo_codeguru_security/types/list_tags_for_resource_response.py +34 -0
  90. capo_codeguru_security/types/metrics_summary.py +121 -0
  91. capo_codeguru_security/types/next_token.py +5 -0
  92. capo_codeguru_security/types/recommendation.py +29 -0
  93. capo_codeguru_security/types/reference_urls.py +14 -0
  94. capo_codeguru_security/types/related_vulnerabilities.py +14 -0
  95. capo_codeguru_security/types/remediation.py +63 -0
  96. capo_codeguru_security/types/request_header_map.py +29 -0
  97. capo_codeguru_security/types/resource.py +29 -0
  98. capo_codeguru_security/types/resource_id.py +32 -0
  99. capo_codeguru_security/types/s3_url.py +5 -0
  100. capo_codeguru_security/types/scan_name.py +5 -0
  101. capo_codeguru_security/types/scan_name_arn.py +5 -0
  102. capo_codeguru_security/types/scan_name_with_finding_num.py +29 -0
  103. capo_codeguru_security/types/scan_state.py +18 -0
  104. capo_codeguru_security/types/scan_summaries.py +29 -0
  105. capo_codeguru_security/types/scan_summary.py +99 -0
  106. capo_codeguru_security/types/scan_type.py +17 -0
  107. capo_codeguru_security/types/scans_with_most_open_critical_findings.py +37 -0
  108. capo_codeguru_security/types/scans_with_most_open_findings.py +37 -0
  109. capo_codeguru_security/types/severity.py +20 -0
  110. capo_codeguru_security/types/status.py +18 -0
  111. capo_codeguru_security/types/suggested_fix.py +29 -0
  112. capo_codeguru_security/types/suggested_fixes.py +31 -0
  113. capo_codeguru_security/types/tag_key.py +5 -0
  114. capo_codeguru_security/types/tag_key_list.py +17 -0
  115. capo_codeguru_security/types/tag_map.py +29 -0
  116. capo_codeguru_security/types/tag_resource_request.py +40 -0
  117. capo_codeguru_security/types/tag_resource_response.py +18 -0
  118. capo_codeguru_security/types/tag_value.py +5 -0
  119. capo_codeguru_security/types/untag_resource_request.py +27 -0
  120. capo_codeguru_security/types/untag_resource_response.py +18 -0
  121. capo_codeguru_security/types/update_account_configuration_request.py +45 -0
  122. capo_codeguru_security/types/update_account_configuration_response.py +45 -0
  123. capo_codeguru_security/types/uuid.py +5 -0
  124. capo_codeguru_security/types/validation_exception_field.py +33 -0
  125. capo_codeguru_security/types/validation_exception_field_list.py +37 -0
  126. capo_codeguru_security/types/validation_exception_reason.py +20 -0
  127. capo_codeguru_security/types/vulnerability.py +90 -0
  128. capo_codeguru_security-0.1.0.dist-info/METADATA +101 -0
  129. capo_codeguru_security-0.1.0.dist-info/RECORD +132 -0
  130. capo_codeguru_security-0.1.0.dist-info/WHEEL +5 -0
  131. capo_codeguru_security-0.1.0.dist-info/licenses/LICENSE +21 -0
  132. capo_codeguru_security-0.1.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,121 @@
1
+ """Generated from Smithy shape ``com.amazonaws.codegurusecurity#MetricsSummary``."""
2
+
3
+ from typing import TYPE_CHECKING
4
+
5
+ from typing_extensions import NotRequired, TypedDict
6
+
7
+ if TYPE_CHECKING:
8
+ import datetime
9
+
10
+ import capo_codeguru_security.types.categories_with_most_findings
11
+ import capo_codeguru_security.types.finding_metrics_value_per_severity
12
+ import capo_codeguru_security.types.scans_with_most_open_critical_findings
13
+ import capo_codeguru_security.types.scans_with_most_open_findings
14
+
15
+
16
+ class MetricsSummary(TypedDict, closed=True):
17
+ date: NotRequired["datetime.datetime"]
18
+ """<p>The date from which the metrics summary information was retrieved.</p>"""
19
+ open_findings: NotRequired[
20
+ "capo_codeguru_security.types.finding_metrics_value_per_severity.FindingMetricsValuePerSeverity"
21
+ ]
22
+ """<p>The number of open findings of each severity.</p>"""
23
+ categories_with_most_findings: NotRequired[
24
+ "capo_codeguru_security.types.categories_with_most_findings.CategoriesWithMostFindings"
25
+ ]
26
+ """<p>A list of <code>CategoryWithFindingNum</code> objects for the top 5 finding categories with the most findings.</p>"""
27
+ scans_with_most_open_findings: NotRequired[
28
+ "capo_codeguru_security.types.scans_with_most_open_findings.ScansWithMostOpenFindings"
29
+ ]
30
+ """<p>A list of <code>ScanNameWithFindingNum</code> objects for the top 3 scans with the most number of open findings.</p>"""
31
+ scans_with_most_open_critical_findings: NotRequired[
32
+ "capo_codeguru_security.types.scans_with_most_open_critical_findings.ScansWithMostOpenCriticalFindings"
33
+ ]
34
+ """<p>A list of <code>ScanNameWithFindingNum</code> objects for the top 3 scans with the most number of open critical findings.</p>"""
35
+
36
+
37
+ # --- restJson1 ser/de ---
38
+ def serialize_json(value: MetricsSummary) -> dict:
39
+ out: dict = {}
40
+ if "date" in value:
41
+ import capo_codeguru_security.types._prelude.timestamp
42
+
43
+ out["date"] = capo_codeguru_security.types._prelude.timestamp.serialize_json(
44
+ value["date"]
45
+ )
46
+ if "open_findings" in value:
47
+ import capo_codeguru_security.types.finding_metrics_value_per_severity
48
+
49
+ out["openFindings"] = (
50
+ capo_codeguru_security.types.finding_metrics_value_per_severity.serialize_json(
51
+ value["open_findings"]
52
+ )
53
+ )
54
+ if "categories_with_most_findings" in value:
55
+ import capo_codeguru_security.types.categories_with_most_findings
56
+
57
+ out["categoriesWithMostFindings"] = (
58
+ capo_codeguru_security.types.categories_with_most_findings.serialize_json(
59
+ value["categories_with_most_findings"]
60
+ )
61
+ )
62
+ if "scans_with_most_open_findings" in value:
63
+ import capo_codeguru_security.types.scans_with_most_open_findings
64
+
65
+ out["scansWithMostOpenFindings"] = (
66
+ capo_codeguru_security.types.scans_with_most_open_findings.serialize_json(
67
+ value["scans_with_most_open_findings"]
68
+ )
69
+ )
70
+ if "scans_with_most_open_critical_findings" in value:
71
+ import capo_codeguru_security.types.scans_with_most_open_critical_findings
72
+
73
+ out["scansWithMostOpenCriticalFindings"] = (
74
+ capo_codeguru_security.types.scans_with_most_open_critical_findings.serialize_json(
75
+ value["scans_with_most_open_critical_findings"]
76
+ )
77
+ )
78
+ return out
79
+
80
+
81
+ def deserialize_json(data: dict) -> MetricsSummary:
82
+ out: MetricsSummary = {} # type: ignore[typeddict-item]
83
+ if data.get("date") is not None:
84
+ import capo_codeguru_security.types._prelude.timestamp
85
+
86
+ out["date"] = capo_codeguru_security.types._prelude.timestamp.deserialize_json(
87
+ data["date"]
88
+ )
89
+ if data.get("openFindings") is not None:
90
+ import capo_codeguru_security.types.finding_metrics_value_per_severity
91
+
92
+ out["open_findings"] = (
93
+ capo_codeguru_security.types.finding_metrics_value_per_severity.deserialize_json(
94
+ data["openFindings"]
95
+ )
96
+ )
97
+ if data.get("categoriesWithMostFindings") is not None:
98
+ import capo_codeguru_security.types.categories_with_most_findings
99
+
100
+ out["categories_with_most_findings"] = (
101
+ capo_codeguru_security.types.categories_with_most_findings.deserialize_json(
102
+ data["categoriesWithMostFindings"]
103
+ )
104
+ )
105
+ if data.get("scansWithMostOpenFindings") is not None:
106
+ import capo_codeguru_security.types.scans_with_most_open_findings
107
+
108
+ out["scans_with_most_open_findings"] = (
109
+ capo_codeguru_security.types.scans_with_most_open_findings.deserialize_json(
110
+ data["scansWithMostOpenFindings"]
111
+ )
112
+ )
113
+ if data.get("scansWithMostOpenCriticalFindings") is not None:
114
+ import capo_codeguru_security.types.scans_with_most_open_critical_findings
115
+
116
+ out["scans_with_most_open_critical_findings"] = (
117
+ capo_codeguru_security.types.scans_with_most_open_critical_findings.deserialize_json(
118
+ data["scansWithMostOpenCriticalFindings"]
119
+ )
120
+ )
121
+ return out
@@ -0,0 +1,5 @@
1
+ """Generated from Smithy shape ``com.amazonaws.codegurusecurity#NextToken``."""
2
+
3
+ from typing import TypeAlias
4
+
5
+ NextToken: TypeAlias = str
@@ -0,0 +1,29 @@
1
+ """Generated from Smithy shape ``com.amazonaws.codegurusecurity#Recommendation``."""
2
+
3
+ from typing_extensions import NotRequired, TypedDict
4
+
5
+
6
+ class Recommendation(TypedDict, closed=True):
7
+ text: NotRequired["str"]
8
+ """<p>The recommended course of action to remediate the finding.</p>"""
9
+ url: NotRequired["str"]
10
+ """<p>The URL address to the recommendation for remediating the finding. </p>"""
11
+
12
+
13
+ # --- restJson1 ser/de ---
14
+ def serialize_json(value: Recommendation) -> dict:
15
+ out: dict = {}
16
+ if "text" in value:
17
+ out["text"] = value["text"]
18
+ if "url" in value:
19
+ out["url"] = value["url"]
20
+ return out
21
+
22
+
23
+ def deserialize_json(data: dict) -> Recommendation:
24
+ out: Recommendation = {} # type: ignore[typeddict-item]
25
+ if data.get("text") is not None:
26
+ out["text"] = data["text"]
27
+ if data.get("url") is not None:
28
+ out["url"] = data["url"]
29
+ return out
@@ -0,0 +1,14 @@
1
+ """Generated from Smithy shape ``com.amazonaws.codegurusecurity#ReferenceUrls``."""
2
+
3
+ from typing import TypeAlias
4
+
5
+ ReferenceUrls: TypeAlias = list["str"]
6
+
7
+
8
+ # --- restJson1 ser/de ---
9
+ def serialize_json(value: ReferenceUrls) -> list:
10
+ return list(value)
11
+
12
+
13
+ def deserialize_json(data: list) -> ReferenceUrls:
14
+ return [item for item in data if item is not None]
@@ -0,0 +1,14 @@
1
+ """Generated from Smithy shape ``com.amazonaws.codegurusecurity#RelatedVulnerabilities``."""
2
+
3
+ from typing import TypeAlias
4
+
5
+ RelatedVulnerabilities: TypeAlias = list["str"]
6
+
7
+
8
+ # --- restJson1 ser/de ---
9
+ def serialize_json(value: RelatedVulnerabilities) -> list:
10
+ return list(value)
11
+
12
+
13
+ def deserialize_json(data: list) -> RelatedVulnerabilities:
14
+ return [item for item in data if item is not None]
@@ -0,0 +1,63 @@
1
+ """Generated from Smithy shape ``com.amazonaws.codegurusecurity#Remediation``."""
2
+
3
+ from typing import TYPE_CHECKING
4
+
5
+ from typing_extensions import NotRequired, TypedDict
6
+
7
+ if TYPE_CHECKING:
8
+ import capo_codeguru_security.types.recommendation
9
+ import capo_codeguru_security.types.suggested_fixes
10
+
11
+
12
+ class Remediation(TypedDict, closed=True):
13
+ recommendation: NotRequired[
14
+ "capo_codeguru_security.types.recommendation.Recommendation"
15
+ ]
16
+ """<p>An object that contains information about the recommended course of action to remediate a finding.</p>"""
17
+ suggested_fixes: NotRequired[
18
+ "capo_codeguru_security.types.suggested_fixes.SuggestedFixes"
19
+ ]
20
+ """<p>A list of <code>SuggestedFix</code> objects. Each object contains information about a suggested code fix to remediate the finding.</p>"""
21
+
22
+
23
+ # --- restJson1 ser/de ---
24
+ def serialize_json(value: Remediation) -> dict:
25
+ out: dict = {}
26
+ if "recommendation" in value:
27
+ import capo_codeguru_security.types.recommendation
28
+
29
+ out["recommendation"] = (
30
+ capo_codeguru_security.types.recommendation.serialize_json(
31
+ value["recommendation"]
32
+ )
33
+ )
34
+ if "suggested_fixes" in value:
35
+ import capo_codeguru_security.types.suggested_fixes
36
+
37
+ out["suggestedFixes"] = (
38
+ capo_codeguru_security.types.suggested_fixes.serialize_json(
39
+ value["suggested_fixes"]
40
+ )
41
+ )
42
+ return out
43
+
44
+
45
+ def deserialize_json(data: dict) -> Remediation:
46
+ out: Remediation = {} # type: ignore[typeddict-item]
47
+ if data.get("recommendation") is not None:
48
+ import capo_codeguru_security.types.recommendation
49
+
50
+ out["recommendation"] = (
51
+ capo_codeguru_security.types.recommendation.deserialize_json(
52
+ data["recommendation"]
53
+ )
54
+ )
55
+ if data.get("suggestedFixes") is not None:
56
+ import capo_codeguru_security.types.suggested_fixes
57
+
58
+ out["suggested_fixes"] = (
59
+ capo_codeguru_security.types.suggested_fixes.deserialize_json(
60
+ data["suggestedFixes"]
61
+ )
62
+ )
63
+ return out
@@ -0,0 +1,29 @@
1
+ """Generated from Smithy shape ``com.amazonaws.codegurusecurity#RequestHeaderMap``."""
2
+
3
+ from typing import TYPE_CHECKING, TypeAlias
4
+
5
+ if TYPE_CHECKING:
6
+ import capo_codeguru_security.types.header_key
7
+ import capo_codeguru_security.types.header_value
8
+
9
+ RequestHeaderMap: TypeAlias = dict[
10
+ "capo_codeguru_security.types.header_key.HeaderKey",
11
+ "capo_codeguru_security.types.header_value.HeaderValue",
12
+ ]
13
+
14
+
15
+ # --- restJson1 ser/de ---
16
+ def serialize_json(input_to_serialize: RequestHeaderMap) -> dict:
17
+ out: dict = {}
18
+ for key, value in input_to_serialize.items():
19
+ out[key] = value
20
+ return out
21
+
22
+
23
+ def deserialize_json(data: dict) -> RequestHeaderMap:
24
+ out: RequestHeaderMap = {}
25
+ for key, value in data.items():
26
+ if value is None:
27
+ continue
28
+ out[key] = value
29
+ return out
@@ -0,0 +1,29 @@
1
+ """Generated from Smithy shape ``com.amazonaws.codegurusecurity#Resource``."""
2
+
3
+ from typing_extensions import NotRequired, TypedDict
4
+
5
+
6
+ class Resource(TypedDict, closed=True):
7
+ id: NotRequired["str"]
8
+ """<p>The <code>scanName</code> of the scan that was run on the resource.</p>"""
9
+ sub_resource_id: NotRequired["str"]
10
+ """<p>The identifier for a section of the resource.</p>"""
11
+
12
+
13
+ # --- restJson1 ser/de ---
14
+ def serialize_json(value: Resource) -> dict:
15
+ out: dict = {}
16
+ if "id" in value:
17
+ out["id"] = value["id"]
18
+ if "sub_resource_id" in value:
19
+ out["subResourceId"] = value["sub_resource_id"]
20
+ return out
21
+
22
+
23
+ def deserialize_json(data: dict) -> Resource:
24
+ out: Resource = {} # type: ignore[typeddict-item]
25
+ if data.get("id") is not None:
26
+ out["id"] = data["id"]
27
+ if data.get("subResourceId") is not None:
28
+ out["sub_resource_id"] = data["subResourceId"]
29
+ return out
@@ -0,0 +1,32 @@
1
+ """Generated from Smithy shape ``com.amazonaws.codegurusecurity#ResourceId``."""
2
+
3
+ from typing import TYPE_CHECKING, TypeAlias
4
+
5
+ from typing_extensions import TypedDict
6
+
7
+ from capo_codeguru_security.errors import DeserializationError, SerializationError
8
+
9
+ if TYPE_CHECKING:
10
+ import capo_codeguru_security.types.uuid
11
+
12
+
13
+ class _ResourceId_codeArtifactId(TypedDict, closed=True):
14
+ codeArtifactId: "capo_codeguru_security.types.uuid.Uuid"
15
+
16
+
17
+ ResourceId: TypeAlias = _ResourceId_codeArtifactId
18
+
19
+
20
+ # --- restJson1 ser/de ---
21
+ def serialize_json(value: ResourceId) -> dict:
22
+ if "codeArtifactId" in value:
23
+ return {"codeArtifactId": value["codeArtifactId"]}
24
+ else:
25
+ raise SerializationError("ResourceId: no variant present")
26
+
27
+
28
+ def deserialize_json(data: dict) -> ResourceId:
29
+ if data.get("codeArtifactId") is not None:
30
+ return {"codeArtifactId": data["codeArtifactId"]}
31
+ else:
32
+ raise DeserializationError("ResourceId: no recognized variant key")
@@ -0,0 +1,5 @@
1
+ """Generated from Smithy shape ``com.amazonaws.codegurusecurity#S3Url``."""
2
+
3
+ from typing import TypeAlias
4
+
5
+ S3Url: TypeAlias = str
@@ -0,0 +1,5 @@
1
+ """Generated from Smithy shape ``com.amazonaws.codegurusecurity#ScanName``."""
2
+
3
+ from typing import TypeAlias
4
+
5
+ ScanName: TypeAlias = str
@@ -0,0 +1,5 @@
1
+ """Generated from Smithy shape ``com.amazonaws.codegurusecurity#ScanNameArn``."""
2
+
3
+ from typing import TypeAlias
4
+
5
+ ScanNameArn: TypeAlias = str
@@ -0,0 +1,29 @@
1
+ """Generated from Smithy shape ``com.amazonaws.codegurusecurity#ScanNameWithFindingNum``."""
2
+
3
+ from typing_extensions import NotRequired, TypedDict
4
+
5
+
6
+ class ScanNameWithFindingNum(TypedDict, closed=True):
7
+ scan_name: NotRequired["str"]
8
+ """<p>The name of the scan.</p>"""
9
+ finding_number: NotRequired["int"]
10
+ """<p>The number of findings generated by a scan.</p>"""
11
+
12
+
13
+ # --- restJson1 ser/de ---
14
+ def serialize_json(value: ScanNameWithFindingNum) -> dict:
15
+ out: dict = {}
16
+ if "scan_name" in value:
17
+ out["scanName"] = value["scan_name"]
18
+ if "finding_number" in value:
19
+ out["findingNumber"] = value["finding_number"]
20
+ return out
21
+
22
+
23
+ def deserialize_json(data: dict) -> ScanNameWithFindingNum:
24
+ out: ScanNameWithFindingNum = {} # type: ignore[typeddict-item]
25
+ if data.get("scanName") is not None:
26
+ out["scan_name"] = data["scanName"]
27
+ if data.get("findingNumber") is not None:
28
+ out["finding_number"] = data["findingNumber"]
29
+ return out
@@ -0,0 +1,18 @@
1
+ """Generated from Smithy shape ``com.amazonaws.codegurusecurity#ScanState``."""
2
+
3
+ from typing import Literal, TypeAlias, cast
4
+
5
+ ScanState: TypeAlias = Literal[
6
+ "InProgress",
7
+ "Successful",
8
+ "Failed",
9
+ ]
10
+
11
+
12
+ # --- restJson1 ser/de ---
13
+ def serialize_json(value: ScanState) -> str:
14
+ return value
15
+
16
+
17
+ def deserialize_json(data: str) -> ScanState:
18
+ return cast(ScanState, data)
@@ -0,0 +1,29 @@
1
+ """Generated from Smithy shape ``com.amazonaws.codegurusecurity#ScanSummaries``."""
2
+
3
+ from typing import TYPE_CHECKING, TypeAlias
4
+
5
+ if TYPE_CHECKING:
6
+ import capo_codeguru_security.types.scan_summary
7
+
8
+ ScanSummaries: TypeAlias = list["capo_codeguru_security.types.scan_summary.ScanSummary"]
9
+
10
+
11
+ # --- restJson1 ser/de ---
12
+ def serialize_json(value: ScanSummaries) -> list:
13
+ import capo_codeguru_security.types.scan_summary
14
+
15
+ out: list = []
16
+ for item in value:
17
+ out.append(capo_codeguru_security.types.scan_summary.serialize_json(item))
18
+ return out
19
+
20
+
21
+ def deserialize_json(data: list) -> ScanSummaries:
22
+ import capo_codeguru_security.types.scan_summary
23
+
24
+ out: ScanSummaries = []
25
+ for item in data:
26
+ if item is None:
27
+ continue
28
+ out.append(capo_codeguru_security.types.scan_summary.deserialize_json(item))
29
+ return out
@@ -0,0 +1,99 @@
1
+ """Generated from Smithy shape ``com.amazonaws.codegurusecurity#ScanSummary``."""
2
+
3
+ from typing import TYPE_CHECKING
4
+
5
+ from typing_extensions import NotRequired, TypedDict
6
+
7
+ from capo_codeguru_security.errors import DeserializationError
8
+
9
+ if TYPE_CHECKING:
10
+ import datetime
11
+
12
+ import capo_codeguru_security.types.scan_name
13
+ import capo_codeguru_security.types.scan_name_arn
14
+ import capo_codeguru_security.types.scan_state
15
+ import capo_codeguru_security.types.uuid
16
+
17
+
18
+ class ScanSummary(TypedDict, closed=True):
19
+ scan_state: "capo_codeguru_security.types.scan_state.ScanState"
20
+ """<p>The state of the scan. A scan can be <code>In Progress</code>, <code>Complete</code>, or <code>Failed</code>. </p>"""
21
+ created_at: "datetime.datetime"
22
+ """<p> The time when the scan was created. </p>"""
23
+ updated_at: NotRequired["datetime.datetime"]
24
+ """<p>The time the scan was last updated. A scan is updated when it is re-run.</p>"""
25
+ scan_name: "capo_codeguru_security.types.scan_name.ScanName"
26
+ """<p>The name of the scan. </p>"""
27
+ run_id: "capo_codeguru_security.types.uuid.Uuid"
28
+ """<p>The identifier for the scan run. </p>"""
29
+ scan_name_arn: NotRequired["capo_codeguru_security.types.scan_name_arn.ScanNameArn"]
30
+ """<p>The ARN for the scan name.</p>"""
31
+
32
+
33
+ # --- restJson1 ser/de ---
34
+ def serialize_json(value: ScanSummary) -> dict:
35
+ out: dict = {}
36
+ import capo_codeguru_security.types.scan_state
37
+
38
+ out["scanState"] = capo_codeguru_security.types.scan_state.serialize_json(
39
+ value["scan_state"]
40
+ )
41
+ import capo_codeguru_security.types._prelude.timestamp
42
+
43
+ out["createdAt"] = capo_codeguru_security.types._prelude.timestamp.serialize_json(
44
+ value["created_at"]
45
+ )
46
+ if "updated_at" in value:
47
+ import capo_codeguru_security.types._prelude.timestamp
48
+
49
+ out["updatedAt"] = (
50
+ capo_codeguru_security.types._prelude.timestamp.serialize_json(
51
+ value["updated_at"]
52
+ )
53
+ )
54
+ out["scanName"] = value["scan_name"]
55
+ out["runId"] = value["run_id"]
56
+ if "scan_name_arn" in value:
57
+ out["scanNameArn"] = value["scan_name_arn"]
58
+ return out
59
+
60
+
61
+ def deserialize_json(data: dict) -> ScanSummary:
62
+ out: ScanSummary = {} # type: ignore[typeddict-item]
63
+ if data.get("scanState") is not None:
64
+ import capo_codeguru_security.types.scan_state
65
+
66
+ out["scan_state"] = capo_codeguru_security.types.scan_state.deserialize_json(
67
+ data["scanState"]
68
+ )
69
+ else:
70
+ raise DeserializationError("ScanSummary.scan_state required")
71
+ if data.get("createdAt") is not None:
72
+ import capo_codeguru_security.types._prelude.timestamp
73
+
74
+ out["created_at"] = (
75
+ capo_codeguru_security.types._prelude.timestamp.deserialize_json(
76
+ data["createdAt"]
77
+ )
78
+ )
79
+ else:
80
+ raise DeserializationError("ScanSummary.created_at required")
81
+ if data.get("updatedAt") is not None:
82
+ import capo_codeguru_security.types._prelude.timestamp
83
+
84
+ out["updated_at"] = (
85
+ capo_codeguru_security.types._prelude.timestamp.deserialize_json(
86
+ data["updatedAt"]
87
+ )
88
+ )
89
+ if data.get("scanName") is not None:
90
+ out["scan_name"] = data["scanName"]
91
+ else:
92
+ raise DeserializationError("ScanSummary.scan_name required")
93
+ if data.get("runId") is not None:
94
+ out["run_id"] = data["runId"]
95
+ else:
96
+ raise DeserializationError("ScanSummary.run_id required")
97
+ if data.get("scanNameArn") is not None:
98
+ out["scan_name_arn"] = data["scanNameArn"]
99
+ return out
@@ -0,0 +1,17 @@
1
+ """Generated from Smithy shape ``com.amazonaws.codegurusecurity#ScanType``."""
2
+
3
+ from typing import Literal, TypeAlias, cast
4
+
5
+ ScanType: TypeAlias = Literal[
6
+ "Standard",
7
+ "Express",
8
+ ]
9
+
10
+
11
+ # --- restJson1 ser/de ---
12
+ def serialize_json(value: ScanType) -> str:
13
+ return value
14
+
15
+
16
+ def deserialize_json(data: str) -> ScanType:
17
+ return cast(ScanType, data)
@@ -0,0 +1,37 @@
1
+ """Generated from Smithy shape ``com.amazonaws.codegurusecurity#ScansWithMostOpenCriticalFindings``."""
2
+
3
+ from typing import TYPE_CHECKING, TypeAlias
4
+
5
+ if TYPE_CHECKING:
6
+ import capo_codeguru_security.types.scan_name_with_finding_num
7
+
8
+ ScansWithMostOpenCriticalFindings: TypeAlias = list[
9
+ "capo_codeguru_security.types.scan_name_with_finding_num.ScanNameWithFindingNum"
10
+ ]
11
+
12
+
13
+ # --- restJson1 ser/de ---
14
+ def serialize_json(value: ScansWithMostOpenCriticalFindings) -> list:
15
+ import capo_codeguru_security.types.scan_name_with_finding_num
16
+
17
+ out: list = []
18
+ for item in value:
19
+ out.append(
20
+ capo_codeguru_security.types.scan_name_with_finding_num.serialize_json(item)
21
+ )
22
+ return out
23
+
24
+
25
+ def deserialize_json(data: list) -> ScansWithMostOpenCriticalFindings:
26
+ import capo_codeguru_security.types.scan_name_with_finding_num
27
+
28
+ out: ScansWithMostOpenCriticalFindings = []
29
+ for item in data:
30
+ if item is None:
31
+ continue
32
+ out.append(
33
+ capo_codeguru_security.types.scan_name_with_finding_num.deserialize_json(
34
+ item
35
+ )
36
+ )
37
+ return out
@@ -0,0 +1,37 @@
1
+ """Generated from Smithy shape ``com.amazonaws.codegurusecurity#ScansWithMostOpenFindings``."""
2
+
3
+ from typing import TYPE_CHECKING, TypeAlias
4
+
5
+ if TYPE_CHECKING:
6
+ import capo_codeguru_security.types.scan_name_with_finding_num
7
+
8
+ ScansWithMostOpenFindings: TypeAlias = list[
9
+ "capo_codeguru_security.types.scan_name_with_finding_num.ScanNameWithFindingNum"
10
+ ]
11
+
12
+
13
+ # --- restJson1 ser/de ---
14
+ def serialize_json(value: ScansWithMostOpenFindings) -> list:
15
+ import capo_codeguru_security.types.scan_name_with_finding_num
16
+
17
+ out: list = []
18
+ for item in value:
19
+ out.append(
20
+ capo_codeguru_security.types.scan_name_with_finding_num.serialize_json(item)
21
+ )
22
+ return out
23
+
24
+
25
+ def deserialize_json(data: list) -> ScansWithMostOpenFindings:
26
+ import capo_codeguru_security.types.scan_name_with_finding_num
27
+
28
+ out: ScansWithMostOpenFindings = []
29
+ for item in data:
30
+ if item is None:
31
+ continue
32
+ out.append(
33
+ capo_codeguru_security.types.scan_name_with_finding_num.deserialize_json(
34
+ item
35
+ )
36
+ )
37
+ return out
@@ -0,0 +1,20 @@
1
+ """Generated from Smithy shape ``com.amazonaws.codegurusecurity#Severity``."""
2
+
3
+ from typing import Literal, TypeAlias, cast
4
+
5
+ Severity: TypeAlias = Literal[
6
+ "Critical",
7
+ "High",
8
+ "Medium",
9
+ "Low",
10
+ "Info",
11
+ ]
12
+
13
+
14
+ # --- restJson1 ser/de ---
15
+ def serialize_json(value: Severity) -> str:
16
+ return value
17
+
18
+
19
+ def deserialize_json(data: str) -> Severity:
20
+ return cast(Severity, data)