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.
- capo_codeguru_security/__init__.py +74 -0
- capo_codeguru_security/_async.py +25 -0
- capo_codeguru_security/_auth/_identity.py +16 -0
- capo_codeguru_security/_auth/_providers.py +886 -0
- capo_codeguru_security/_auth/_signers.py +88 -0
- capo_codeguru_security/_auth/_sigv4.py +434 -0
- capo_codeguru_security/_auth/_zapros_handler.py +80 -0
- capo_codeguru_security/_iter.py +113 -0
- capo_codeguru_security/_operations/aws_code_guru_security/batch_get_findings.py +167 -0
- capo_codeguru_security/_operations/aws_code_guru_security/create_scan.py +183 -0
- capo_codeguru_security/_operations/aws_code_guru_security/create_upload_url.py +165 -0
- capo_codeguru_security/_operations/aws_code_guru_security/get_account_configuration.py +161 -0
- capo_codeguru_security/_operations/aws_code_guru_security/get_findings.py +191 -0
- capo_codeguru_security/_operations/aws_code_guru_security/get_metrics_summary.py +176 -0
- capo_codeguru_security/_operations/aws_code_guru_security/get_scan.py +173 -0
- capo_codeguru_security/_operations/aws_code_guru_security/list_findings_metrics.py +185 -0
- capo_codeguru_security/_operations/aws_code_guru_security/list_scans.py +167 -0
- capo_codeguru_security/_operations/aws_code_guru_security/list_tags_for_resource.py +173 -0
- capo_codeguru_security/_operations/aws_code_guru_security/tag_resource.py +173 -0
- capo_codeguru_security/_operations/aws_code_guru_security/untag_resource.py +171 -0
- capo_codeguru_security/_operations/aws_code_guru_security/update_account_configuration.py +172 -0
- capo_codeguru_security/_pagination.py +21 -0
- capo_codeguru_security/_protocol/__init__.py +1 -0
- capo_codeguru_security/_protocol/errors.py +93 -0
- capo_codeguru_security/_protocol/eventstream.py +238 -0
- capo_codeguru_security/_protocol/serialize.py +47 -0
- capo_codeguru_security/_protocol/xml.py +33 -0
- capo_codeguru_security/_rule_engine/__init__.py +0 -0
- capo_codeguru_security/_rule_engine/_aws_partition.py +160 -0
- capo_codeguru_security/_rule_engine/_endpoint_rule_set.py +137 -0
- capo_codeguru_security/_rule_engine/_endpoint_runtime.py +389 -0
- capo_codeguru_security/_services/_aws_config.py +160 -0
- capo_codeguru_security/_services/_pipeline.py +198 -0
- capo_codeguru_security/_services/async_code_guru_security.py +934 -0
- capo_codeguru_security/_services/code_guru_security.py +921 -0
- capo_codeguru_security/errors/__init__.py +33 -0
- capo_codeguru_security/errors/_base.py +94 -0
- capo_codeguru_security/errors/access_denied_exception.py +67 -0
- capo_codeguru_security/errors/conflict_exception.py +67 -0
- capo_codeguru_security/errors/internal_server_exception.py +53 -0
- capo_codeguru_security/errors/resource_not_found_exception.py +69 -0
- capo_codeguru_security/errors/throttling_exception.py +65 -0
- capo_codeguru_security/errors/validation_exception.py +98 -0
- capo_codeguru_security/py.typed +0 -0
- capo_codeguru_security/types/_prelude/blob.py +12 -0
- capo_codeguru_security/types/_prelude/timestamp.py +17 -0
- capo_codeguru_security/types/account_findings_metric.py +118 -0
- capo_codeguru_security/types/analysis_type.py +17 -0
- capo_codeguru_security/types/batch_get_findings_error.py +61 -0
- capo_codeguru_security/types/batch_get_findings_errors.py +35 -0
- capo_codeguru_security/types/batch_get_findings_request.py +47 -0
- capo_codeguru_security/types/batch_get_findings_response.py +61 -0
- capo_codeguru_security/types/categories_with_most_findings.py +37 -0
- capo_codeguru_security/types/category_with_finding_num.py +29 -0
- capo_codeguru_security/types/client_token.py +5 -0
- capo_codeguru_security/types/code_line.py +29 -0
- capo_codeguru_security/types/code_snippet.py +29 -0
- capo_codeguru_security/types/create_scan_request.py +101 -0
- capo_codeguru_security/types/create_scan_response.py +78 -0
- capo_codeguru_security/types/create_upload_url_request.py +31 -0
- capo_codeguru_security/types/create_upload_url_response.py +59 -0
- capo_codeguru_security/types/detector_tags.py +14 -0
- capo_codeguru_security/types/encryption_config.py +28 -0
- capo_codeguru_security/types/error_code.py +20 -0
- capo_codeguru_security/types/error_message.py +5 -0
- capo_codeguru_security/types/file_path.py +62 -0
- capo_codeguru_security/types/finding.py +207 -0
- capo_codeguru_security/types/finding_identifier.py +33 -0
- capo_codeguru_security/types/finding_identifiers.py +33 -0
- capo_codeguru_security/types/finding_metrics_value_per_severity.py +87 -0
- capo_codeguru_security/types/findings.py +29 -0
- capo_codeguru_security/types/findings_metric_list.py +35 -0
- capo_codeguru_security/types/get_account_configuration_request.py +18 -0
- capo_codeguru_security/types/get_account_configuration_response.py +45 -0
- capo_codeguru_security/types/get_findings_request.py +32 -0
- capo_codeguru_security/types/get_findings_response.py +43 -0
- capo_codeguru_security/types/get_metrics_summary_request.py +24 -0
- capo_codeguru_security/types/get_metrics_summary_response.py +42 -0
- capo_codeguru_security/types/get_scan_request.py +27 -0
- capo_codeguru_security/types/get_scan_response.py +132 -0
- capo_codeguru_security/types/header_key.py +5 -0
- capo_codeguru_security/types/header_value.py +5 -0
- capo_codeguru_security/types/kms_key_arn.py +5 -0
- capo_codeguru_security/types/list_findings_metrics_request.py +32 -0
- capo_codeguru_security/types/list_findings_metrics_response.py +49 -0
- capo_codeguru_security/types/list_scans_request.py +26 -0
- capo_codeguru_security/types/list_scans_response.py +43 -0
- capo_codeguru_security/types/list_tags_for_resource_request.py +24 -0
- capo_codeguru_security/types/list_tags_for_resource_response.py +34 -0
- capo_codeguru_security/types/metrics_summary.py +121 -0
- capo_codeguru_security/types/next_token.py +5 -0
- capo_codeguru_security/types/recommendation.py +29 -0
- capo_codeguru_security/types/reference_urls.py +14 -0
- capo_codeguru_security/types/related_vulnerabilities.py +14 -0
- capo_codeguru_security/types/remediation.py +63 -0
- capo_codeguru_security/types/request_header_map.py +29 -0
- capo_codeguru_security/types/resource.py +29 -0
- capo_codeguru_security/types/resource_id.py +32 -0
- capo_codeguru_security/types/s3_url.py +5 -0
- capo_codeguru_security/types/scan_name.py +5 -0
- capo_codeguru_security/types/scan_name_arn.py +5 -0
- capo_codeguru_security/types/scan_name_with_finding_num.py +29 -0
- capo_codeguru_security/types/scan_state.py +18 -0
- capo_codeguru_security/types/scan_summaries.py +29 -0
- capo_codeguru_security/types/scan_summary.py +99 -0
- capo_codeguru_security/types/scan_type.py +17 -0
- capo_codeguru_security/types/scans_with_most_open_critical_findings.py +37 -0
- capo_codeguru_security/types/scans_with_most_open_findings.py +37 -0
- capo_codeguru_security/types/severity.py +20 -0
- capo_codeguru_security/types/status.py +18 -0
- capo_codeguru_security/types/suggested_fix.py +29 -0
- capo_codeguru_security/types/suggested_fixes.py +31 -0
- capo_codeguru_security/types/tag_key.py +5 -0
- capo_codeguru_security/types/tag_key_list.py +17 -0
- capo_codeguru_security/types/tag_map.py +29 -0
- capo_codeguru_security/types/tag_resource_request.py +40 -0
- capo_codeguru_security/types/tag_resource_response.py +18 -0
- capo_codeguru_security/types/tag_value.py +5 -0
- capo_codeguru_security/types/untag_resource_request.py +27 -0
- capo_codeguru_security/types/untag_resource_response.py +18 -0
- capo_codeguru_security/types/update_account_configuration_request.py +45 -0
- capo_codeguru_security/types/update_account_configuration_response.py +45 -0
- capo_codeguru_security/types/uuid.py +5 -0
- capo_codeguru_security/types/validation_exception_field.py +33 -0
- capo_codeguru_security/types/validation_exception_field_list.py +37 -0
- capo_codeguru_security/types/validation_exception_reason.py +20 -0
- capo_codeguru_security/types/vulnerability.py +90 -0
- capo_codeguru_security-0.1.0.dist-info/METADATA +101 -0
- capo_codeguru_security-0.1.0.dist-info/RECORD +132 -0
- capo_codeguru_security-0.1.0.dist-info/WHEEL +5 -0
- capo_codeguru_security-0.1.0.dist-info/licenses/LICENSE +21 -0
- 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,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,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)
|