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,45 @@
1
+ """Generated from Smithy shape ``com.amazonaws.codegurusecurity#GetAccountConfigurationResponse``."""
2
+
3
+ from typing import TYPE_CHECKING
4
+
5
+ from typing_extensions import TypedDict
6
+
7
+ from capo_codeguru_security.errors import DeserializationError
8
+
9
+ if TYPE_CHECKING:
10
+ import capo_codeguru_security.types.encryption_config
11
+
12
+
13
+ class GetAccountConfigurationResponse(TypedDict, closed=True):
14
+ encryption_config: "capo_codeguru_security.types.encryption_config.EncryptionConfig"
15
+ """<p>An <code>EncryptionConfig</code> object that contains the KMS key ARN that is used for encryption. By default, CodeGuru Security uses an AWS-managed key for encryption. To specify your own key, call <code>UpdateAccountConfiguration</code>. If you do not specify a customer-managed key, returns empty.</p>"""
16
+
17
+
18
+ # --- restJson1 ser/de ---
19
+ def serialize_json(value: GetAccountConfigurationResponse) -> dict:
20
+ out: dict = {}
21
+ import capo_codeguru_security.types.encryption_config
22
+
23
+ out["encryptionConfig"] = (
24
+ capo_codeguru_security.types.encryption_config.serialize_json(
25
+ value["encryption_config"]
26
+ )
27
+ )
28
+ return out
29
+
30
+
31
+ def deserialize_json(data: dict) -> GetAccountConfigurationResponse:
32
+ out: GetAccountConfigurationResponse = {} # type: ignore[typeddict-item]
33
+ if data.get("encryptionConfig") is not None:
34
+ import capo_codeguru_security.types.encryption_config
35
+
36
+ out["encryption_config"] = (
37
+ capo_codeguru_security.types.encryption_config.deserialize_json(
38
+ data["encryptionConfig"]
39
+ )
40
+ )
41
+ else:
42
+ raise DeserializationError(
43
+ "GetAccountConfigurationResponse.encryption_config required"
44
+ )
45
+ return out
@@ -0,0 +1,32 @@
1
+ """Generated from Smithy shape ``com.amazonaws.codegurusecurity#GetFindingsRequest``."""
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.next_token
9
+ import capo_codeguru_security.types.scan_name
10
+ import capo_codeguru_security.types.status
11
+
12
+
13
+ class GetFindingsRequest(TypedDict, closed=True):
14
+ scan_name: "capo_codeguru_security.types.scan_name.ScanName"
15
+ """<p>The name of the scan you want to retrieve findings from.</p>"""
16
+ next_token: NotRequired["capo_codeguru_security.types.next_token.NextToken"]
17
+ """<p>A token to use for paginating results that are returned in the response. Set the value of this parameter to null for the first request. For subsequent calls, use the <code>nextToken</code> value returned from the previous request to continue listing results after the first page.</p>"""
18
+ max_results: NotRequired["int"]
19
+ """<p>The maximum number of results to return in the response. Use this parameter when paginating results. If additional results exist beyond the number you specify, the <code>nextToken</code> element is returned in the response. Use <code>nextToken</code> in a subsequent request to retrieve additional results. If not specified, returns 1000 results.</p>"""
20
+ status: NotRequired["capo_codeguru_security.types.status.Status"]
21
+ """<p>The status of the findings you want to get. Pass either <code>Open</code>, <code>Closed</code>, or <code>All</code>.</p>"""
22
+
23
+
24
+ # --- restJson1 ser/de ---
25
+ def serialize_json(value: GetFindingsRequest) -> dict:
26
+ out: dict = {}
27
+ return out
28
+
29
+
30
+ def deserialize_json(data: dict) -> GetFindingsRequest:
31
+ out: GetFindingsRequest = {} # type: ignore[typeddict-item]
32
+ return out
@@ -0,0 +1,43 @@
1
+ """Generated from Smithy shape ``com.amazonaws.codegurusecurity#GetFindingsResponse``."""
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.findings
9
+ import capo_codeguru_security.types.next_token
10
+
11
+
12
+ class GetFindingsResponse(TypedDict, closed=True):
13
+ findings: NotRequired["capo_codeguru_security.types.findings.Findings"]
14
+ """<p>A list of findings generated by the specified scan.</p>"""
15
+ next_token: NotRequired["capo_codeguru_security.types.next_token.NextToken"]
16
+ """<p>A pagination token. You can use this in future calls to <code>GetFindings</code> to continue listing results after the current page. </p>"""
17
+
18
+
19
+ # --- restJson1 ser/de ---
20
+ def serialize_json(value: GetFindingsResponse) -> dict:
21
+ out: dict = {}
22
+ if "findings" in value:
23
+ import capo_codeguru_security.types.findings
24
+
25
+ out["findings"] = capo_codeguru_security.types.findings.serialize_json(
26
+ value["findings"]
27
+ )
28
+ if "next_token" in value:
29
+ out["nextToken"] = value["next_token"]
30
+ return out
31
+
32
+
33
+ def deserialize_json(data: dict) -> GetFindingsResponse:
34
+ out: GetFindingsResponse = {} # type: ignore[typeddict-item]
35
+ if data.get("findings") is not None:
36
+ import capo_codeguru_security.types.findings
37
+
38
+ out["findings"] = capo_codeguru_security.types.findings.deserialize_json(
39
+ data["findings"]
40
+ )
41
+ if data.get("nextToken") is not None:
42
+ out["next_token"] = data["nextToken"]
43
+ return out
@@ -0,0 +1,24 @@
1
+ """Generated from Smithy shape ``com.amazonaws.codegurusecurity#GetMetricsSummaryRequest``."""
2
+
3
+ from typing import TYPE_CHECKING
4
+
5
+ from typing_extensions import TypedDict
6
+
7
+ if TYPE_CHECKING:
8
+ import datetime
9
+
10
+
11
+ class GetMetricsSummaryRequest(TypedDict, closed=True):
12
+ date: "datetime.datetime"
13
+ """<p>The date you want to retrieve summary metrics from, rounded to the nearest day. The date must be within the past two years.</p>"""
14
+
15
+
16
+ # --- restJson1 ser/de ---
17
+ def serialize_json(value: GetMetricsSummaryRequest) -> dict:
18
+ out: dict = {}
19
+ return out
20
+
21
+
22
+ def deserialize_json(data: dict) -> GetMetricsSummaryRequest:
23
+ out: GetMetricsSummaryRequest = {} # type: ignore[typeddict-item]
24
+ return out
@@ -0,0 +1,42 @@
1
+ """Generated from Smithy shape ``com.amazonaws.codegurusecurity#GetMetricsSummaryResponse``."""
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.metrics_summary
9
+
10
+
11
+ class GetMetricsSummaryResponse(TypedDict, closed=True):
12
+ metrics_summary: NotRequired[
13
+ "capo_codeguru_security.types.metrics_summary.MetricsSummary"
14
+ ]
15
+ """<p>The summary metrics from the specified date.</p>"""
16
+
17
+
18
+ # --- restJson1 ser/de ---
19
+ def serialize_json(value: GetMetricsSummaryResponse) -> dict:
20
+ out: dict = {}
21
+ if "metrics_summary" in value:
22
+ import capo_codeguru_security.types.metrics_summary
23
+
24
+ out["metricsSummary"] = (
25
+ capo_codeguru_security.types.metrics_summary.serialize_json(
26
+ value["metrics_summary"]
27
+ )
28
+ )
29
+ return out
30
+
31
+
32
+ def deserialize_json(data: dict) -> GetMetricsSummaryResponse:
33
+ out: GetMetricsSummaryResponse = {} # type: ignore[typeddict-item]
34
+ if data.get("metricsSummary") is not None:
35
+ import capo_codeguru_security.types.metrics_summary
36
+
37
+ out["metrics_summary"] = (
38
+ capo_codeguru_security.types.metrics_summary.deserialize_json(
39
+ data["metricsSummary"]
40
+ )
41
+ )
42
+ return out
@@ -0,0 +1,27 @@
1
+ """Generated from Smithy shape ``com.amazonaws.codegurusecurity#GetScanRequest``."""
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.scan_name
9
+ import capo_codeguru_security.types.uuid
10
+
11
+
12
+ class GetScanRequest(TypedDict, closed=True):
13
+ scan_name: "capo_codeguru_security.types.scan_name.ScanName"
14
+ """<p>The name of the scan you want to view details about.</p>"""
15
+ run_id: NotRequired["capo_codeguru_security.types.uuid.Uuid"]
16
+ """<p>UUID that identifies the individual scan run you want to view details about. You retrieve this when you call the <code>CreateScan</code> operation. Defaults to the latest scan run if missing.</p>"""
17
+
18
+
19
+ # --- restJson1 ser/de ---
20
+ def serialize_json(value: GetScanRequest) -> dict:
21
+ out: dict = {}
22
+ return out
23
+
24
+
25
+ def deserialize_json(data: dict) -> GetScanRequest:
26
+ out: GetScanRequest = {} # type: ignore[typeddict-item]
27
+ return out
@@ -0,0 +1,132 @@
1
+ """Generated from Smithy shape ``com.amazonaws.codegurusecurity#GetScanResponse``."""
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.analysis_type
13
+ import capo_codeguru_security.types.error_message
14
+ import capo_codeguru_security.types.scan_name
15
+ import capo_codeguru_security.types.scan_name_arn
16
+ import capo_codeguru_security.types.scan_state
17
+ import capo_codeguru_security.types.uuid
18
+
19
+
20
+ class GetScanResponse(TypedDict, closed=True):
21
+ scan_name: "capo_codeguru_security.types.scan_name.ScanName"
22
+ """<p>The name of the scan.</p>"""
23
+ run_id: "capo_codeguru_security.types.uuid.Uuid"
24
+ """<p>UUID that identifies the individual scan run.</p>"""
25
+ scan_state: "capo_codeguru_security.types.scan_state.ScanState"
26
+ """<p>The current state of the scan. Returns either <code>InProgress</code>, <code>Successful</code>, or <code>Failed</code>.</p>"""
27
+ created_at: "datetime.datetime"
28
+ """<p>The time the scan was created.</p>"""
29
+ analysis_type: "capo_codeguru_security.types.analysis_type.AnalysisType"
30
+ """<p>The type of analysis CodeGuru Security performed in the scan, either <code>Security</code> or <code>All</code>. The <code>Security</code> type only generates findings related to security. The <code>All</code> type generates both security findings and quality findings.</p>"""
31
+ updated_at: NotRequired["datetime.datetime"]
32
+ """<p>The time when the scan was last updated. Only available for <code>STANDARD</code> scan types.</p>"""
33
+ number_of_revisions: NotRequired["int"]
34
+ """<p>The number of times a scan has been re-run on a revised resource.</p>"""
35
+ scan_name_arn: NotRequired["capo_codeguru_security.types.scan_name_arn.ScanNameArn"]
36
+ """<p>The ARN for the scan name.</p>"""
37
+ error_message: NotRequired[
38
+ "capo_codeguru_security.types.error_message.ErrorMessage"
39
+ ]
40
+ """<p>Details about the error that causes a scan to fail to be retrieved.</p>"""
41
+
42
+
43
+ # --- restJson1 ser/de ---
44
+ def serialize_json(value: GetScanResponse) -> dict:
45
+ out: dict = {}
46
+ out["scanName"] = value["scan_name"]
47
+ out["runId"] = value["run_id"]
48
+ import capo_codeguru_security.types.scan_state
49
+
50
+ out["scanState"] = capo_codeguru_security.types.scan_state.serialize_json(
51
+ value["scan_state"]
52
+ )
53
+ import capo_codeguru_security.types._prelude.timestamp
54
+
55
+ out["createdAt"] = capo_codeguru_security.types._prelude.timestamp.serialize_json(
56
+ value["created_at"]
57
+ )
58
+ import capo_codeguru_security.types.analysis_type
59
+
60
+ out["analysisType"] = capo_codeguru_security.types.analysis_type.serialize_json(
61
+ value["analysis_type"]
62
+ )
63
+ if "updated_at" in value:
64
+ import capo_codeguru_security.types._prelude.timestamp
65
+
66
+ out["updatedAt"] = (
67
+ capo_codeguru_security.types._prelude.timestamp.serialize_json(
68
+ value["updated_at"]
69
+ )
70
+ )
71
+ if "number_of_revisions" in value:
72
+ out["numberOfRevisions"] = value["number_of_revisions"]
73
+ if "scan_name_arn" in value:
74
+ out["scanNameArn"] = value["scan_name_arn"]
75
+ if "error_message" in value:
76
+ out["errorMessage"] = value["error_message"]
77
+ return out
78
+
79
+
80
+ def deserialize_json(data: dict) -> GetScanResponse:
81
+ out: GetScanResponse = {} # type: ignore[typeddict-item]
82
+ if data.get("scanName") is not None:
83
+ out["scan_name"] = data["scanName"]
84
+ else:
85
+ raise DeserializationError("GetScanResponse.scan_name required")
86
+ if data.get("runId") is not None:
87
+ out["run_id"] = data["runId"]
88
+ else:
89
+ raise DeserializationError("GetScanResponse.run_id required")
90
+ if data.get("scanState") is not None:
91
+ import capo_codeguru_security.types.scan_state
92
+
93
+ out["scan_state"] = capo_codeguru_security.types.scan_state.deserialize_json(
94
+ data["scanState"]
95
+ )
96
+ else:
97
+ raise DeserializationError("GetScanResponse.scan_state required")
98
+ if data.get("createdAt") is not None:
99
+ import capo_codeguru_security.types._prelude.timestamp
100
+
101
+ out["created_at"] = (
102
+ capo_codeguru_security.types._prelude.timestamp.deserialize_json(
103
+ data["createdAt"]
104
+ )
105
+ )
106
+ else:
107
+ raise DeserializationError("GetScanResponse.created_at required")
108
+ if data.get("analysisType") is not None:
109
+ import capo_codeguru_security.types.analysis_type
110
+
111
+ out["analysis_type"] = (
112
+ capo_codeguru_security.types.analysis_type.deserialize_json(
113
+ data["analysisType"]
114
+ )
115
+ )
116
+ else:
117
+ raise DeserializationError("GetScanResponse.analysis_type required")
118
+ if data.get("updatedAt") is not None:
119
+ import capo_codeguru_security.types._prelude.timestamp
120
+
121
+ out["updated_at"] = (
122
+ capo_codeguru_security.types._prelude.timestamp.deserialize_json(
123
+ data["updatedAt"]
124
+ )
125
+ )
126
+ if data.get("numberOfRevisions") is not None:
127
+ out["number_of_revisions"] = data["numberOfRevisions"]
128
+ if data.get("scanNameArn") is not None:
129
+ out["scan_name_arn"] = data["scanNameArn"]
130
+ if data.get("errorMessage") is not None:
131
+ out["error_message"] = data["errorMessage"]
132
+ return out
@@ -0,0 +1,5 @@
1
+ """Generated from Smithy shape ``com.amazonaws.codegurusecurity#HeaderKey``."""
2
+
3
+ from typing import TypeAlias
4
+
5
+ HeaderKey: TypeAlias = str
@@ -0,0 +1,5 @@
1
+ """Generated from Smithy shape ``com.amazonaws.codegurusecurity#HeaderValue``."""
2
+
3
+ from typing import TypeAlias
4
+
5
+ HeaderValue: TypeAlias = str
@@ -0,0 +1,5 @@
1
+ """Generated from Smithy shape ``com.amazonaws.codegurusecurity#KmsKeyArn``."""
2
+
3
+ from typing import TypeAlias
4
+
5
+ KmsKeyArn: TypeAlias = str
@@ -0,0 +1,32 @@
1
+ """Generated from Smithy shape ``com.amazonaws.codegurusecurity#ListFindingsMetricsRequest``."""
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.next_token
11
+
12
+
13
+ class ListFindingsMetricsRequest(TypedDict, closed=True):
14
+ next_token: NotRequired["capo_codeguru_security.types.next_token.NextToken"]
15
+ """<p>A token to use for paginating results that are returned in the response. Set the value of this parameter to null for the first request. For subsequent calls, use the <code>nextToken</code> value returned from the previous request to continue listing results after the first page.</p>"""
16
+ max_results: NotRequired["int"]
17
+ """<p>The maximum number of results to return in the response. Use this parameter when paginating results. If additional results exist beyond the number you specify, the <code>nextToken</code> element is returned in the response. Use <code>nextToken</code> in a subsequent request to retrieve additional results. If not specified, returns 1000 results.</p>"""
18
+ start_date: "datetime.datetime"
19
+ """<p>The start date of the interval which you want to retrieve metrics from. Rounds to the nearest day.</p>"""
20
+ end_date: "datetime.datetime"
21
+ """<p>The end date of the interval which you want to retrieve metrics from. Round to the nearest day.</p>"""
22
+
23
+
24
+ # --- restJson1 ser/de ---
25
+ def serialize_json(value: ListFindingsMetricsRequest) -> dict:
26
+ out: dict = {}
27
+ return out
28
+
29
+
30
+ def deserialize_json(data: dict) -> ListFindingsMetricsRequest:
31
+ out: ListFindingsMetricsRequest = {} # type: ignore[typeddict-item]
32
+ return out
@@ -0,0 +1,49 @@
1
+ """Generated from Smithy shape ``com.amazonaws.codegurusecurity#ListFindingsMetricsResponse``."""
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.findings_metric_list
9
+ import capo_codeguru_security.types.next_token
10
+
11
+
12
+ class ListFindingsMetricsResponse(TypedDict, closed=True):
13
+ findings_metrics: NotRequired[
14
+ "capo_codeguru_security.types.findings_metric_list.FindingsMetricList"
15
+ ]
16
+ """<p>A list of <code>AccountFindingsMetric</code> objects retrieved from the specified time interval.</p>"""
17
+ next_token: NotRequired["capo_codeguru_security.types.next_token.NextToken"]
18
+ """<p>A pagination token. You can use this in future calls to <code>ListFindingMetrics</code> to continue listing results after the current page. </p>"""
19
+
20
+
21
+ # --- restJson1 ser/de ---
22
+ def serialize_json(value: ListFindingsMetricsResponse) -> dict:
23
+ out: dict = {}
24
+ if "findings_metrics" in value:
25
+ import capo_codeguru_security.types.findings_metric_list
26
+
27
+ out["findingsMetrics"] = (
28
+ capo_codeguru_security.types.findings_metric_list.serialize_json(
29
+ value["findings_metrics"]
30
+ )
31
+ )
32
+ if "next_token" in value:
33
+ out["nextToken"] = value["next_token"]
34
+ return out
35
+
36
+
37
+ def deserialize_json(data: dict) -> ListFindingsMetricsResponse:
38
+ out: ListFindingsMetricsResponse = {} # type: ignore[typeddict-item]
39
+ if data.get("findingsMetrics") is not None:
40
+ import capo_codeguru_security.types.findings_metric_list
41
+
42
+ out["findings_metrics"] = (
43
+ capo_codeguru_security.types.findings_metric_list.deserialize_json(
44
+ data["findingsMetrics"]
45
+ )
46
+ )
47
+ if data.get("nextToken") is not None:
48
+ out["next_token"] = data["nextToken"]
49
+ return out
@@ -0,0 +1,26 @@
1
+ """Generated from Smithy shape ``com.amazonaws.codegurusecurity#ListScansRequest``."""
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.next_token
9
+
10
+
11
+ class ListScansRequest(TypedDict, closed=True):
12
+ next_token: NotRequired["capo_codeguru_security.types.next_token.NextToken"]
13
+ """<p>A token to use for paginating results that are returned in the response. Set the value of this parameter to null for the first request. For subsequent calls, use the <code>nextToken</code> value returned from the previous request to continue listing results after the first page.</p>"""
14
+ max_results: NotRequired["int"]
15
+ """<p>The maximum number of results to return in the response. Use this parameter when paginating results. If additional results exist beyond the number you specify, the <code>nextToken</code> element is returned in the response. Use <code>nextToken</code> in a subsequent request to retrieve additional results. If not specified, returns 100 results.</p>"""
16
+
17
+
18
+ # --- restJson1 ser/de ---
19
+ def serialize_json(value: ListScansRequest) -> dict:
20
+ out: dict = {}
21
+ return out
22
+
23
+
24
+ def deserialize_json(data: dict) -> ListScansRequest:
25
+ out: ListScansRequest = {} # type: ignore[typeddict-item]
26
+ return out
@@ -0,0 +1,43 @@
1
+ """Generated from Smithy shape ``com.amazonaws.codegurusecurity#ListScansResponse``."""
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.next_token
9
+ import capo_codeguru_security.types.scan_summaries
10
+
11
+
12
+ class ListScansResponse(TypedDict, closed=True):
13
+ summaries: NotRequired["capo_codeguru_security.types.scan_summaries.ScanSummaries"]
14
+ """<p>A list of <code>ScanSummary</code> objects with information about all scans in an account.</p>"""
15
+ next_token: NotRequired["capo_codeguru_security.types.next_token.NextToken"]
16
+ """<p>A pagination token. You can use this in future calls to <code>ListScans</code> to continue listing results after the current page.</p>"""
17
+
18
+
19
+ # --- restJson1 ser/de ---
20
+ def serialize_json(value: ListScansResponse) -> dict:
21
+ out: dict = {}
22
+ if "summaries" in value:
23
+ import capo_codeguru_security.types.scan_summaries
24
+
25
+ out["summaries"] = capo_codeguru_security.types.scan_summaries.serialize_json(
26
+ value["summaries"]
27
+ )
28
+ if "next_token" in value:
29
+ out["nextToken"] = value["next_token"]
30
+ return out
31
+
32
+
33
+ def deserialize_json(data: dict) -> ListScansResponse:
34
+ out: ListScansResponse = {} # type: ignore[typeddict-item]
35
+ if data.get("summaries") is not None:
36
+ import capo_codeguru_security.types.scan_summaries
37
+
38
+ out["summaries"] = capo_codeguru_security.types.scan_summaries.deserialize_json(
39
+ data["summaries"]
40
+ )
41
+ if data.get("nextToken") is not None:
42
+ out["next_token"] = data["nextToken"]
43
+ return out
@@ -0,0 +1,24 @@
1
+ """Generated from Smithy shape ``com.amazonaws.codegurusecurity#ListTagsForResourceRequest``."""
2
+
3
+ from typing import TYPE_CHECKING
4
+
5
+ from typing_extensions import TypedDict
6
+
7
+ if TYPE_CHECKING:
8
+ import capo_codeguru_security.types.scan_name_arn
9
+
10
+
11
+ class ListTagsForResourceRequest(TypedDict, closed=True):
12
+ resource_arn: "capo_codeguru_security.types.scan_name_arn.ScanNameArn"
13
+ """<p>The ARN of the <code>ScanName</code> object. You can retrieve this ARN by calling <code>CreateScan</code>, <code>ListScans</code>, or <code>GetScan</code>.</p>"""
14
+
15
+
16
+ # --- restJson1 ser/de ---
17
+ def serialize_json(value: ListTagsForResourceRequest) -> dict:
18
+ out: dict = {}
19
+ return out
20
+
21
+
22
+ def deserialize_json(data: dict) -> ListTagsForResourceRequest:
23
+ out: ListTagsForResourceRequest = {} # type: ignore[typeddict-item]
24
+ return out
@@ -0,0 +1,34 @@
1
+ """Generated from Smithy shape ``com.amazonaws.codegurusecurity#ListTagsForResourceResponse``."""
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.tag_map
9
+
10
+
11
+ class ListTagsForResourceResponse(TypedDict, closed=True):
12
+ tags: NotRequired["capo_codeguru_security.types.tag_map.TagMap"]
13
+ """<p>An array of key-value pairs used to tag an existing scan. A tag is a custom attribute label with two parts:</p> <ul> <li> <p>A tag key. For example, <code>CostCenter</code>, <code>Environment</code>, or <code>Secret</code>. Tag keys are case sensitive.</p> </li> <li> <p>An optional tag value field. For example, <code>111122223333</code>, <code>Production</code>, or a team name. Omitting the tag value is the same as using an empty string. Tag values are case sensitive.</p> </li> </ul>"""
14
+
15
+
16
+ # --- restJson1 ser/de ---
17
+ def serialize_json(value: ListTagsForResourceResponse) -> dict:
18
+ out: dict = {}
19
+ if "tags" in value:
20
+ import capo_codeguru_security.types.tag_map
21
+
22
+ out["tags"] = capo_codeguru_security.types.tag_map.serialize_json(value["tags"])
23
+ return out
24
+
25
+
26
+ def deserialize_json(data: dict) -> ListTagsForResourceResponse:
27
+ out: ListTagsForResourceResponse = {} # type: ignore[typeddict-item]
28
+ if data.get("tags") is not None:
29
+ import capo_codeguru_security.types.tag_map
30
+
31
+ out["tags"] = capo_codeguru_security.types.tag_map.deserialize_json(
32
+ data["tags"]
33
+ )
34
+ return out