apimatic-semgrep-sdk 0.0.1
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.
- checksums.yaml +7 -0
- data/LICENSE +28 -0
- data/README.md +205 -0
- data/bin/console +15 -0
- data/lib/semgrep_web_app/api_helper.rb +10 -0
- data/lib/semgrep_web_app/apis/base_api.rb +67 -0
- data/lib/semgrep_web_app/apis/deployments_service_api.rb +29 -0
- data/lib/semgrep_web_app/apis/findings_service_api.rb +107 -0
- data/lib/semgrep_web_app/apis/misc_service_api.rb +47 -0
- data/lib/semgrep_web_app/apis/policies_service_api.rb +97 -0
- data/lib/semgrep_web_app/apis/projects_service_api.rb +238 -0
- data/lib/semgrep_web_app/apis/scans_service_api.rb +65 -0
- data/lib/semgrep_web_app/apis/secrets_service_api.rb +55 -0
- data/lib/semgrep_web_app/apis/supply_chain_service_api.rb +154 -0
- data/lib/semgrep_web_app/apis/ticketing_service_api.rb +144 -0
- data/lib/semgrep_web_app/apis/triage_service_api.rb +43 -0
- data/lib/semgrep_web_app/client.rb +136 -0
- data/lib/semgrep_web_app/configuration.rb +178 -0
- data/lib/semgrep_web_app/exceptions/api_exception.rb +21 -0
- data/lib/semgrep_web_app/http/api_response.rb +19 -0
- data/lib/semgrep_web_app/http/auth/semgrep_admin_jwt.rb +53 -0
- data/lib/semgrep_web_app/http/auth/semgrep_jwt.rb +53 -0
- data/lib/semgrep_web_app/http/auth/semgrep_web_token.rb +53 -0
- data/lib/semgrep_web_app/http/http_call_back.rb +10 -0
- data/lib/semgrep_web_app/http/http_method_enum.rb +10 -0
- data/lib/semgrep_web_app/http/http_request.rb +10 -0
- data/lib/semgrep_web_app/http/http_response.rb +10 -0
- data/lib/semgrep_web_app/http/proxy_settings.rb +22 -0
- data/lib/semgrep_web_app/logging/configuration/api_logging_configuration.rb +186 -0
- data/lib/semgrep_web_app/logging/sdk_logger.rb +17 -0
- data/lib/semgrep_web_app/models/add_project_tags_request.rb +96 -0
- data/lib/semgrep_web_app/models/add_project_tags_response.rb +73 -0
- data/lib/semgrep_web_app/models/ai_powered_scan_finding.rb +426 -0
- data/lib/semgrep_web_app/models/ai_sast_findings.rb +85 -0
- data/lib/semgrep_web_app/models/api_v1_deployments_findings_response.rb +87 -0
- data/lib/semgrep_web_app/models/assistant.rb +127 -0
- data/lib/semgrep_web_app/models/autofix.rb +98 -0
- data/lib/semgrep_web_app/models/autotriage.rb +98 -0
- data/lib/semgrep_web_app/models/autotriage_verdict.rb +36 -0
- data/lib/semgrep_web_app/models/autotriage_verdict2.rb +38 -0
- data/lib/semgrep_web_app/models/base_model.rb +110 -0
- data/lib/semgrep_web_app/models/bulk_triage_request.rb +393 -0
- data/lib/semgrep_web_app/models/bulk_triage_response.rb +83 -0
- data/lib/semgrep_web_app/models/click_to_fix_failure.rb +95 -0
- data/lib/semgrep_web_app/models/click_to_fix_pr.rb +95 -0
- data/lib/semgrep_web_app/models/click_to_fix_pr_state.rb +38 -0
- data/lib/semgrep_web_app/models/component.rb +95 -0
- data/lib/semgrep_web_app/models/confidence.rb +42 -0
- data/lib/semgrep_web_app/models/confidence1.rb +40 -0
- data/lib/semgrep_web_app/models/confidence2.rb +40 -0
- data/lib/semgrep_web_app/models/confidence3.rb +40 -0
- data/lib/semgrep_web_app/models/confidence7.rb +41 -0
- data/lib/semgrep_web_app/models/confidence8.rb +42 -0
- data/lib/semgrep_web_app/models/create_sbom_export_request.rb +176 -0
- data/lib/semgrep_web_app/models/create_sbom_export_response.rb +74 -0
- data/lib/semgrep_web_app/models/create_ticket_request.rb +393 -0
- data/lib/semgrep_web_app/models/cyclonedx_version.rb +48 -0
- data/lib/semgrep_web_app/models/delete_project_response.rb +74 -0
- data/lib/semgrep_web_app/models/delete_project_tags_response.rb +73 -0
- data/lib/semgrep_web_app/models/deployment.rb +102 -0
- data/lib/semgrep_web_app/models/ecosystem.rb +91 -0
- data/lib/semgrep_web_app/models/ecosystem1.rb +92 -0
- data/lib/semgrep_web_app/models/ecosystem2.rb +76 -0
- data/lib/semgrep_web_app/models/endpoint_reference.rb +72 -0
- data/lib/semgrep_web_app/models/epss_probability.rb +45 -0
- data/lib/semgrep_web_app/models/epss_score.rb +95 -0
- data/lib/semgrep_web_app/models/exposures.rb +50 -0
- data/lib/semgrep_web_app/models/exposures2.rb +51 -0
- data/lib/semgrep_web_app/models/external_ticket.rb +116 -0
- data/lib/semgrep_web_app/models/finding_location.rb +126 -0
- data/lib/semgrep_web_app/models/finding_repository.rb +95 -0
- data/lib/semgrep_web_app/models/finding_rule.rb +158 -0
- data/lib/semgrep_web_app/models/fix_recommendation.rb +95 -0
- data/lib/semgrep_web_app/models/float_range.rb +85 -0
- data/lib/semgrep_web_app/models/format.rb +27 -0
- data/lib/semgrep_web_app/models/found_dependency.rb +128 -0
- data/lib/semgrep_web_app/models/get_project_response.rb +73 -0
- data/lib/semgrep_web_app/models/get_sbom_export_response.rb +100 -0
- data/lib/semgrep_web_app/models/guidance.rb +98 -0
- data/lib/semgrep_web_app/models/issue_type.rb +40 -0
- data/lib/semgrep_web_app/models/issue_type1.rb +40 -0
- data/lib/semgrep_web_app/models/issue_type2.rb +42 -0
- data/lib/semgrep_web_app/models/license_policy_settings.rb +42 -0
- data/lib/semgrep_web_app/models/link_ticket_request.rb +93 -0
- data/lib/semgrep_web_app/models/list_dependencies_request.rb +108 -0
- data/lib/semgrep_web_app/models/list_dependencies_response.rb +102 -0
- data/lib/semgrep_web_app/models/list_findings_response.rb +100 -0
- data/lib/semgrep_web_app/models/list_lockfiles_for_dependencies_request.rb +118 -0
- data/lib/semgrep_web_app/models/list_lockfiles_for_dependencies_response.rb +103 -0
- data/lib/semgrep_web_app/models/list_project.rb +145 -0
- data/lib/semgrep_web_app/models/list_projects_response.rb +82 -0
- data/lib/semgrep_web_app/models/list_repositories_for_dependencies_request.rb +107 -0
- data/lib/semgrep_web_app/models/list_repositories_for_dependencies_response.rb +103 -0
- data/lib/semgrep_web_app/models/managed_scan_config.rb +85 -0
- data/lib/semgrep_web_app/models/metadata_component_type.rb +101 -0
- data/lib/semgrep_web_app/models/mode.rb +48 -0
- data/lib/semgrep_web_app/models/new_triage_reason.rb +48 -0
- data/lib/semgrep_web_app/models/new_triage_state.rb +48 -0
- data/lib/semgrep_web_app/models/policy.rb +118 -0
- data/lib/semgrep_web_app/models/policy_mode.rb +48 -0
- data/lib/semgrep_web_app/models/policy_mode1.rb +40 -0
- data/lib/semgrep_web_app/models/policy_mode3.rb +51 -0
- data/lib/semgrep_web_app/models/policy_reference.rb +105 -0
- data/lib/semgrep_web_app/models/product_type.rb +38 -0
- data/lib/semgrep_web_app/models/products.rb +46 -0
- data/lib/semgrep_web_app/models/project.rb +157 -0
- data/lib/semgrep_web_app/models/protos_ai_v1_autotriage.rb +154 -0
- data/lib/semgrep_web_app/models/protos_ai_v1_autotriage_feedback.rb +98 -0
- data/lib/semgrep_web_app/models/protos_common_v1_review_comment.rb +90 -0
- data/lib/semgrep_web_app/models/protos_openapi_v1_create_ticket_response.rb +123 -0
- data/lib/semgrep_web_app/models/protos_openapi_v1_create_ticket_response_ticket_creation_failed.rb +85 -0
- data/lib/semgrep_web_app/models/protos_openapi_v1_create_ticket_response_ticket_creation_skipped.rb +85 -0
- data/lib/semgrep_web_app/models/protos_openapi_v1_create_ticket_response_ticket_creation_success.rb +106 -0
- data/lib/semgrep_web_app/models/protos_openapi_v1_delete_ticket_response.rb +76 -0
- data/lib/semgrep_web_app/models/protos_openapi_v1_diff_scan.rb +75 -0
- data/lib/semgrep_web_app/models/protos_openapi_v1_full_scan.rb +75 -0
- data/lib/semgrep_web_app/models/protos_openapi_v1_get_bootstrap_sms_vpc_response.rb +130 -0
- data/lib/semgrep_web_app/models/protos_openapi_v1_get_scan_response.rb +168 -0
- data/lib/semgrep_web_app/models/protos_openapi_v1_get_scan_response_scan_meta.rb +256 -0
- data/lib/semgrep_web_app/models/protos_openapi_v1_link_ticket_response.rb +119 -0
- data/lib/semgrep_web_app/models/protos_openapi_v1_list_deployments_response.rb +85 -0
- data/lib/semgrep_web_app/models/protos_openapi_v1_list_policies_response.rb +84 -0
- data/lib/semgrep_web_app/models/protos_openapi_v1_list_policy_rules_response.rb +104 -0
- data/lib/semgrep_web_app/models/protos_openapi_v1_list_secrets_path_response.rb +104 -0
- data/lib/semgrep_web_app/models/protos_openapi_v1_search_scans_response.rb +94 -0
- data/lib/semgrep_web_app/models/protos_openapi_v1_unlink_ticket_response.rb +77 -0
- data/lib/semgrep_web_app/models/protos_openapi_v1_update_policy_response.rb +88 -0
- data/lib/semgrep_web_app/models/protos_sca_v1_code_location.rb +144 -0
- data/lib/semgrep_web_app/models/protos_sca_v1_dependency.rb +87 -0
- data/lib/semgrep_web_app/models/protos_sca_v1_dependency_filter.rb +199 -0
- data/lib/semgrep_web_app/models/protos_sca_v1_found_dependency.rb +174 -0
- data/lib/semgrep_web_app/models/protos_sca_v1_lockfile_dependency_summary.rb +87 -0
- data/lib/semgrep_web_app/models/protos_sca_v1_package_filter.rb +124 -0
- data/lib/semgrep_web_app/models/protos_sca_v1_repository_dependency_summary.rb +111 -0
- data/lib/semgrep_web_app/models/protos_sca_v1_sbom_format_version.rb +109 -0
- data/lib/semgrep_web_app/models/protos_sca_v1_sbom_metadata_contact.rb +95 -0
- data/lib/semgrep_web_app/models/protos_sca_v1_sbom_metadata_supplier.rb +95 -0
- data/lib/semgrep_web_app/models/protos_scan_v1_scan_findings_counts.rb +105 -0
- data/lib/semgrep_web_app/models/protos_scan_v1_scan_public.rb +228 -0
- data/lib/semgrep_web_app/models/protos_secrets_v1_historical_info.rb +116 -0
- data/lib/semgrep_web_app/models/protos_secrets_v1_secrets_finding.rb +320 -0
- data/lib/semgrep_web_app/models/protos_secrets_v1_secrets_finding_repository.rb +121 -0
- data/lib/semgrep_web_app/models/protos_ticketing_v1_external_ticket.rb +106 -0
- data/lib/semgrep_web_app/models/rating.rb +38 -0
- data/lib/semgrep_web_app/models/reachability.rb +48 -0
- data/lib/semgrep_web_app/models/repository_visibility.rb +40 -0
- data/lib/semgrep_web_app/models/review_comment.rb +100 -0
- data/lib/semgrep_web_app/models/risk.rb +40 -0
- data/lib/semgrep_web_app/models/rule.rb +292 -0
- data/lib/semgrep_web_app/models/rule_explanation.rb +98 -0
- data/lib/semgrep_web_app/models/sast_finding.rb +426 -0
- data/lib/semgrep_web_app/models/sast_findings.rb +84 -0
- data/lib/semgrep_web_app/models/sbom_output_format.rb +37 -0
- data/lib/semgrep_web_app/models/sca_finding.rb +458 -0
- data/lib/semgrep_web_app/models/sca_findings.rb +85 -0
- data/lib/semgrep_web_app/models/scm_type.rb +70 -0
- data/lib/semgrep_web_app/models/search_scans_request.rb +202 -0
- data/lib/semgrep_web_app/models/severities.rb +44 -0
- data/lib/semgrep_web_app/models/severities2.rb +45 -0
- data/lib/semgrep_web_app/models/severity.rb +46 -0
- data/lib/semgrep_web_app/models/severity1.rb +45 -0
- data/lib/semgrep_web_app/models/severity4.rb +46 -0
- data/lib/semgrep_web_app/models/severity5.rb +48 -0
- data/lib/semgrep_web_app/models/source.rb +42 -0
- data/lib/semgrep_web_app/models/state.rb +42 -0
- data/lib/semgrep_web_app/models/status.rb +55 -0
- data/lib/semgrep_web_app/models/status1.rb +52 -0
- data/lib/semgrep_web_app/models/status3.rb +44 -0
- data/lib/semgrep_web_app/models/status6.rb +55 -0
- data/lib/semgrep_web_app/models/status7.rb +59 -0
- data/lib/semgrep_web_app/models/status8.rb +61 -0
- data/lib/semgrep_web_app/models/status9.rb +55 -0
- data/lib/semgrep_web_app/models/statuses.rb +63 -0
- data/lib/semgrep_web_app/models/toggle_project_managed_scan_request.rb +108 -0
- data/lib/semgrep_web_app/models/toggle_project_managed_scan_response.rb +73 -0
- data/lib/semgrep_web_app/models/transitivities.rb +40 -0
- data/lib/semgrep_web_app/models/transitivities2.rb +42 -0
- data/lib/semgrep_web_app/models/transitivity.rb +41 -0
- data/lib/semgrep_web_app/models/transitivity1.rb +42 -0
- data/lib/semgrep_web_app/models/transitivity2.rb +40 -0
- data/lib/semgrep_web_app/models/triage_reason.rb +48 -0
- data/lib/semgrep_web_app/models/triage_reasons.rb +48 -0
- data/lib/semgrep_web_app/models/triage_reasons2.rb +50 -0
- data/lib/semgrep_web_app/models/triage_state.rb +54 -0
- data/lib/semgrep_web_app/models/unlink_ticket_request.rb +83 -0
- data/lib/semgrep_web_app/models/update_policy_request.rb +113 -0
- data/lib/semgrep_web_app/models/update_project_request.rb +121 -0
- data/lib/semgrep_web_app/models/update_project_response.rb +73 -0
- data/lib/semgrep_web_app/models/usage.rb +99 -0
- data/lib/semgrep_web_app/models/validation_state.rb +45 -0
- data/lib/semgrep_web_app/models/validation_state2.rb +47 -0
- data/lib/semgrep_web_app/models/validation_state3.rb +48 -0
- data/lib/semgrep_web_app/models/verdict.rb +41 -0
- data/lib/semgrep_web_app/models/verdict1.rb +38 -0
- data/lib/semgrep_web_app/models/visibility.rb +42 -0
- data/lib/semgrep_web_app/utilities/date_time_helper.rb +11 -0
- data/lib/semgrep_web_app/utilities/file_wrapper.rb +28 -0
- data/lib/semgrep_web_app/utilities/union_type_lookup.rb +34 -0
- data/lib/semgrep_web_app.rb +245 -0
- metadata +283 -0
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
# semgrep_web_app
|
|
2
|
+
#
|
|
3
|
+
# This file was automatically generated by APIMATIC v3.0 (
|
|
4
|
+
# https://www.apimatic.io ).
|
|
5
|
+
|
|
6
|
+
module SemgrepWebApp
|
|
7
|
+
# Policy Model.
|
|
8
|
+
class Policy < BaseModel
|
|
9
|
+
SKIP = Object.new
|
|
10
|
+
private_constant :SKIP
|
|
11
|
+
|
|
12
|
+
# ID of the Policy.
|
|
13
|
+
# @return [String]
|
|
14
|
+
attr_accessor :id
|
|
15
|
+
|
|
16
|
+
# When True, the Policy applies to all repositories.
|
|
17
|
+
# @return [TrueClass | FalseClass]
|
|
18
|
+
attr_accessor :is_default
|
|
19
|
+
|
|
20
|
+
# Name of the Policy.
|
|
21
|
+
# @return [String]
|
|
22
|
+
attr_accessor :name
|
|
23
|
+
|
|
24
|
+
# Product type the Policy applies to.
|
|
25
|
+
# | value | description |
|
|
26
|
+
# |-------|---------------|
|
|
27
|
+
# | PRODUCT_TYPE_SAST | The product type for Code rules. |
|
|
28
|
+
# | PRODUCT_TYPE_SECRETS | The product type for Secrets rules. |
|
|
29
|
+
# @return [ProductType]
|
|
30
|
+
attr_accessor :product_type
|
|
31
|
+
|
|
32
|
+
# Sanitized machine-readable name of the Policy.
|
|
33
|
+
# @return [String]
|
|
34
|
+
attr_accessor :slug
|
|
35
|
+
|
|
36
|
+
# A mapping from model property names to API property names.
|
|
37
|
+
def self.names
|
|
38
|
+
@_hash = {} if @_hash.nil?
|
|
39
|
+
@_hash['id'] = 'id'
|
|
40
|
+
@_hash['is_default'] = 'isDefault'
|
|
41
|
+
@_hash['name'] = 'name'
|
|
42
|
+
@_hash['product_type'] = 'productType'
|
|
43
|
+
@_hash['slug'] = 'slug'
|
|
44
|
+
@_hash
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
# An array for optional fields
|
|
48
|
+
def self.optionals
|
|
49
|
+
%w[
|
|
50
|
+
id
|
|
51
|
+
is_default
|
|
52
|
+
name
|
|
53
|
+
product_type
|
|
54
|
+
slug
|
|
55
|
+
]
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
# An array for nullable fields
|
|
59
|
+
def self.nullables
|
|
60
|
+
[]
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def initialize(id: SKIP, is_default: SKIP, name: SKIP, product_type: SKIP,
|
|
64
|
+
slug: SKIP, additional_properties: nil)
|
|
65
|
+
# Add additional model properties to the instance
|
|
66
|
+
additional_properties = {} if additional_properties.nil?
|
|
67
|
+
|
|
68
|
+
@id = id unless id == SKIP
|
|
69
|
+
@is_default = is_default unless is_default == SKIP
|
|
70
|
+
@name = name unless name == SKIP
|
|
71
|
+
@product_type = product_type unless product_type == SKIP
|
|
72
|
+
@slug = slug unless slug == SKIP
|
|
73
|
+
@additional_properties = additional_properties
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
# Creates an instance of the object from a hash.
|
|
77
|
+
def self.from_hash(hash)
|
|
78
|
+
return nil unless hash
|
|
79
|
+
|
|
80
|
+
# Extract variables from the hash.
|
|
81
|
+
id = hash.key?('id') ? hash['id'] : SKIP
|
|
82
|
+
is_default = hash.key?('isDefault') ? hash['isDefault'] : SKIP
|
|
83
|
+
name = hash.key?('name') ? hash['name'] : SKIP
|
|
84
|
+
product_type = hash.key?('productType') ? hash['productType'] : SKIP
|
|
85
|
+
slug = hash.key?('slug') ? hash['slug'] : SKIP
|
|
86
|
+
|
|
87
|
+
# Create a new hash for additional properties, removing known properties.
|
|
88
|
+
new_hash = hash.reject { |k, _| names.value?(k) }
|
|
89
|
+
|
|
90
|
+
additional_properties = APIHelper.get_additional_properties(
|
|
91
|
+
new_hash, proc { |value| value }
|
|
92
|
+
)
|
|
93
|
+
|
|
94
|
+
# Create object from extracted values.
|
|
95
|
+
Policy.new(id: id,
|
|
96
|
+
is_default: is_default,
|
|
97
|
+
name: name,
|
|
98
|
+
product_type: product_type,
|
|
99
|
+
slug: slug,
|
|
100
|
+
additional_properties: additional_properties)
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
# Provides a human-readable string representation of the object.
|
|
104
|
+
def to_s
|
|
105
|
+
class_name = self.class.name.split('::').last
|
|
106
|
+
"<#{class_name} id: #{@id}, is_default: #{@is_default}, name: #{@name}, product_type:"\
|
|
107
|
+
" #{@product_type}, slug: #{@slug}, additional_properties: #{@additional_properties}>"
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
# Provides a debugging-friendly string with detailed object information.
|
|
111
|
+
def inspect
|
|
112
|
+
class_name = self.class.name.split('::').last
|
|
113
|
+
"<#{class_name} id: #{@id.inspect}, is_default: #{@is_default.inspect}, name:"\
|
|
114
|
+
" #{@name.inspect}, product_type: #{@product_type.inspect}, slug: #{@slug.inspect},"\
|
|
115
|
+
" additional_properties: #{@additional_properties}>"
|
|
116
|
+
end
|
|
117
|
+
end
|
|
118
|
+
end
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# semgrep_web_app
|
|
2
|
+
#
|
|
3
|
+
# This file was automatically generated by APIMATIC v3.0 (
|
|
4
|
+
# https://www.apimatic.io ).
|
|
5
|
+
|
|
6
|
+
module SemgrepWebApp
|
|
7
|
+
# Mode behavior: Monitor / Comment / Block / Disabled | value | description |
|
|
8
|
+
# |-------|---------------| | MODE_MONITOR | Monitor mode, silently report
|
|
9
|
+
# findings | | MODE_COMMENT | Comment mode, leaves PR comments but does not
|
|
10
|
+
# block | | MODE_BLOCK | Block mode, leaves PR comments and blocks PR | |
|
|
11
|
+
# MODE_DISABLED | Disabled mode, not active |
|
|
12
|
+
class PolicyMode
|
|
13
|
+
POLICY_MODE = [
|
|
14
|
+
# TODO: Write general description for MODE_MONITOR
|
|
15
|
+
MODE_MONITOR = 'MODE_MONITOR'.freeze,
|
|
16
|
+
|
|
17
|
+
# TODO: Write general description for MODE_COMMENT
|
|
18
|
+
MODE_COMMENT = 'MODE_COMMENT'.freeze,
|
|
19
|
+
|
|
20
|
+
# TODO: Write general description for MODE_BLOCK
|
|
21
|
+
MODE_BLOCK = 'MODE_BLOCK'.freeze,
|
|
22
|
+
|
|
23
|
+
# TODO: Write general description for MODE_DISABLED
|
|
24
|
+
MODE_DISABLED = 'MODE_DISABLED'.freeze
|
|
25
|
+
].freeze
|
|
26
|
+
|
|
27
|
+
def self.validate(value)
|
|
28
|
+
return false if value.nil?
|
|
29
|
+
|
|
30
|
+
POLICY_MODE.include?(value)
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def self.from_value(value, default_value = MODE_MONITOR)
|
|
34
|
+
return default_value if value.nil?
|
|
35
|
+
|
|
36
|
+
str = value.to_s.strip
|
|
37
|
+
|
|
38
|
+
case str.downcase
|
|
39
|
+
when 'mode_monitor' then MODE_MONITOR
|
|
40
|
+
when 'mode_comment' then MODE_COMMENT
|
|
41
|
+
when 'mode_block' then MODE_BLOCK
|
|
42
|
+
when 'mode_disabled' then MODE_DISABLED
|
|
43
|
+
else
|
|
44
|
+
default_value
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# semgrep_web_app
|
|
2
|
+
#
|
|
3
|
+
# This file was automatically generated by APIMATIC v3.0 (
|
|
4
|
+
# https://www.apimatic.io ).
|
|
5
|
+
|
|
6
|
+
module SemgrepWebApp
|
|
7
|
+
# List of policy modes to filter by
|
|
8
|
+
class PolicyMode1
|
|
9
|
+
POLICY_MODE1 = [
|
|
10
|
+
# TODO: Write general description for MONITOR
|
|
11
|
+
MONITOR = 'monitor'.freeze,
|
|
12
|
+
|
|
13
|
+
# TODO: Write general description for COMMENT
|
|
14
|
+
COMMENT = 'comment'.freeze,
|
|
15
|
+
|
|
16
|
+
# TODO: Write general description for BLOCK
|
|
17
|
+
BLOCK = 'block'.freeze
|
|
18
|
+
].freeze
|
|
19
|
+
|
|
20
|
+
def self.validate(value)
|
|
21
|
+
return false if value.nil?
|
|
22
|
+
|
|
23
|
+
POLICY_MODE1.include?(value)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def self.from_value(value, default_value = MONITOR)
|
|
27
|
+
return default_value if value.nil?
|
|
28
|
+
|
|
29
|
+
str = value.to_s.strip
|
|
30
|
+
|
|
31
|
+
case str.downcase
|
|
32
|
+
when 'monitor' then MONITOR
|
|
33
|
+
when 'comment' then COMMENT
|
|
34
|
+
when 'block' then BLOCK
|
|
35
|
+
else
|
|
36
|
+
default_value
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# semgrep_web_app
|
|
2
|
+
#
|
|
3
|
+
# This file was automatically generated by APIMATIC v3.0 (
|
|
4
|
+
# https://www.apimatic.io ).
|
|
5
|
+
|
|
6
|
+
module SemgrepWebApp
|
|
7
|
+
# New policy mode to set for the Rule. - MODE_MONITOR: Monitor mode, silently
|
|
8
|
+
# report findings - MODE_COMMENT: Comment mode, leaves PR comments but does
|
|
9
|
+
# not block - MODE_BLOCK: Block mode, leaves PR comments and blocks PR -
|
|
10
|
+
# MODE_DISABLED: Disabled mode, not active | value | description |
|
|
11
|
+
# |-------|---------------| | MODE_MONITOR | Monitor mode, silently report
|
|
12
|
+
# findings | | MODE_COMMENT | Comment mode, leaves PR comments but does not
|
|
13
|
+
# block | | MODE_BLOCK | Block mode, leaves PR comments and blocks PR | |
|
|
14
|
+
# MODE_DISABLED | Disabled mode, not active |
|
|
15
|
+
class PolicyMode3
|
|
16
|
+
POLICY_MODE3 = [
|
|
17
|
+
# TODO: Write general description for MODE_MONITOR
|
|
18
|
+
MODE_MONITOR = 'MODE_MONITOR'.freeze,
|
|
19
|
+
|
|
20
|
+
# TODO: Write general description for MODE_COMMENT
|
|
21
|
+
MODE_COMMENT = 'MODE_COMMENT'.freeze,
|
|
22
|
+
|
|
23
|
+
# TODO: Write general description for MODE_BLOCK
|
|
24
|
+
MODE_BLOCK = 'MODE_BLOCK'.freeze,
|
|
25
|
+
|
|
26
|
+
# TODO: Write general description for MODE_DISABLED
|
|
27
|
+
MODE_DISABLED = 'MODE_DISABLED'.freeze
|
|
28
|
+
].freeze
|
|
29
|
+
|
|
30
|
+
def self.validate(value)
|
|
31
|
+
return false if value.nil?
|
|
32
|
+
|
|
33
|
+
POLICY_MODE3.include?(value)
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def self.from_value(value, default_value = MODE_MONITOR)
|
|
37
|
+
return default_value if value.nil?
|
|
38
|
+
|
|
39
|
+
str = value.to_s.strip
|
|
40
|
+
|
|
41
|
+
case str.downcase
|
|
42
|
+
when 'mode_monitor' then MODE_MONITOR
|
|
43
|
+
when 'mode_comment' then MODE_COMMENT
|
|
44
|
+
when 'mode_block' then MODE_BLOCK
|
|
45
|
+
when 'mode_disabled' then MODE_DISABLED
|
|
46
|
+
else
|
|
47
|
+
default_value
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
# semgrep_web_app
|
|
2
|
+
#
|
|
3
|
+
# This file was automatically generated by APIMATIC v3.0 (
|
|
4
|
+
# https://www.apimatic.io ).
|
|
5
|
+
|
|
6
|
+
module SemgrepWebApp
|
|
7
|
+
# Reference to a policy, with some basic information. If null, then the
|
|
8
|
+
# information does not exist or lacks integrity (older or broken scans)
|
|
9
|
+
class PolicyReference < BaseModel
|
|
10
|
+
SKIP = Object.new
|
|
11
|
+
private_constant :SKIP
|
|
12
|
+
|
|
13
|
+
# Unique numerical identifier of the policy
|
|
14
|
+
# @return [Integer]
|
|
15
|
+
attr_accessor :id
|
|
16
|
+
|
|
17
|
+
# Human readable name
|
|
18
|
+
# @return [String]
|
|
19
|
+
attr_accessor :name
|
|
20
|
+
|
|
21
|
+
# Sanitized machine-readable name
|
|
22
|
+
# @return [String]
|
|
23
|
+
attr_accessor :slug
|
|
24
|
+
|
|
25
|
+
# A mapping from model property names to API property names.
|
|
26
|
+
def self.names
|
|
27
|
+
@_hash = {} if @_hash.nil?
|
|
28
|
+
@_hash['id'] = 'id'
|
|
29
|
+
@_hash['name'] = 'name'
|
|
30
|
+
@_hash['slug'] = 'slug'
|
|
31
|
+
@_hash
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
# An array for optional fields
|
|
35
|
+
def self.optionals
|
|
36
|
+
%w[
|
|
37
|
+
id
|
|
38
|
+
name
|
|
39
|
+
slug
|
|
40
|
+
]
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
# An array for nullable fields
|
|
44
|
+
def self.nullables
|
|
45
|
+
[]
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def initialize(id: SKIP, name: SKIP, slug: SKIP, additional_properties: nil)
|
|
49
|
+
# Add additional model properties to the instance
|
|
50
|
+
additional_properties = {} if additional_properties.nil?
|
|
51
|
+
|
|
52
|
+
@id = id unless id == SKIP
|
|
53
|
+
@name = name unless name == SKIP
|
|
54
|
+
@slug = slug unless slug == SKIP
|
|
55
|
+
@additional_properties = additional_properties
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
# Creates an instance of the object from a hash.
|
|
59
|
+
def self.from_hash(hash)
|
|
60
|
+
return nil unless hash
|
|
61
|
+
|
|
62
|
+
# Extract variables from the hash.
|
|
63
|
+
id = hash.key?('id') ? hash['id'] : SKIP
|
|
64
|
+
name = hash.key?('name') ? hash['name'] : SKIP
|
|
65
|
+
slug = hash.key?('slug') ? hash['slug'] : SKIP
|
|
66
|
+
|
|
67
|
+
# Create a new hash for additional properties, removing known properties.
|
|
68
|
+
new_hash = hash.reject { |k, _| names.value?(k) }
|
|
69
|
+
|
|
70
|
+
additional_properties = APIHelper.get_additional_properties(
|
|
71
|
+
new_hash, proc { |value| value }
|
|
72
|
+
)
|
|
73
|
+
|
|
74
|
+
# Create object from extracted values.
|
|
75
|
+
PolicyReference.new(id: id,
|
|
76
|
+
name: name,
|
|
77
|
+
slug: slug,
|
|
78
|
+
additional_properties: additional_properties)
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
# Validates an instance of the object from a given value.
|
|
82
|
+
# @param [PolicyReference | Hash] The value against the validation is performed.
|
|
83
|
+
def self.validate(value)
|
|
84
|
+
return true if value.instance_of? self
|
|
85
|
+
|
|
86
|
+
return false unless value.instance_of? Hash
|
|
87
|
+
|
|
88
|
+
true
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
# Provides a human-readable string representation of the object.
|
|
92
|
+
def to_s
|
|
93
|
+
class_name = self.class.name.split('::').last
|
|
94
|
+
"<#{class_name} id: #{@id}, name: #{@name}, slug: #{@slug}, additional_properties:"\
|
|
95
|
+
" #{@additional_properties}>"
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
# Provides a debugging-friendly string with detailed object information.
|
|
99
|
+
def inspect
|
|
100
|
+
class_name = self.class.name.split('::').last
|
|
101
|
+
"<#{class_name} id: #{@id.inspect}, name: #{@name.inspect}, slug: #{@slug.inspect},"\
|
|
102
|
+
" additional_properties: #{@additional_properties}>"
|
|
103
|
+
end
|
|
104
|
+
end
|
|
105
|
+
end
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# semgrep_web_app
|
|
2
|
+
#
|
|
3
|
+
# This file was automatically generated by APIMATIC v3.0 (
|
|
4
|
+
# https://www.apimatic.io ).
|
|
5
|
+
|
|
6
|
+
module SemgrepWebApp
|
|
7
|
+
# Product type the Policy applies to. | value | description |
|
|
8
|
+
# |-------|---------------| | PRODUCT_TYPE_SAST | The product type for Code
|
|
9
|
+
# rules. | | PRODUCT_TYPE_SECRETS | The product type for Secrets rules. |
|
|
10
|
+
class ProductType
|
|
11
|
+
PRODUCT_TYPE = [
|
|
12
|
+
# TODO: Write general description for PRODUCT_TYPE_SAST
|
|
13
|
+
PRODUCT_TYPE_SAST = 'PRODUCT_TYPE_SAST'.freeze,
|
|
14
|
+
|
|
15
|
+
# TODO: Write general description for PRODUCT_TYPE_SECRETS
|
|
16
|
+
PRODUCT_TYPE_SECRETS = 'PRODUCT_TYPE_SECRETS'.freeze
|
|
17
|
+
].freeze
|
|
18
|
+
|
|
19
|
+
def self.validate(value)
|
|
20
|
+
return false if value.nil?
|
|
21
|
+
|
|
22
|
+
PRODUCT_TYPE.include?(value)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def self.from_value(value, default_value = PRODUCT_TYPE_SAST)
|
|
26
|
+
return default_value if value.nil?
|
|
27
|
+
|
|
28
|
+
str = value.to_s.strip
|
|
29
|
+
|
|
30
|
+
case str.downcase
|
|
31
|
+
when 'product_type_sast' then PRODUCT_TYPE_SAST
|
|
32
|
+
when 'product_type_secrets' then PRODUCT_TYPE_SECRETS
|
|
33
|
+
else
|
|
34
|
+
default_value
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# semgrep_web_app
|
|
2
|
+
#
|
|
3
|
+
# This file was automatically generated by APIMATIC v3.0 (
|
|
4
|
+
# https://www.apimatic.io ).
|
|
5
|
+
|
|
6
|
+
module SemgrepWebApp
|
|
7
|
+
# Only get scans that have these enabled products | value | description |
|
|
8
|
+
# |-------|---------------| | PRODUCT_SAST | | | PRODUCT_SCA | | |
|
|
9
|
+
# PRODUCT_SECRETS | | | PRODUCT_AI_SAST | |
|
|
10
|
+
class Products
|
|
11
|
+
PRODUCTS = [
|
|
12
|
+
# TODO: Write general description for PRODUCT_SAST
|
|
13
|
+
PRODUCT_SAST = 'PRODUCT_SAST'.freeze,
|
|
14
|
+
|
|
15
|
+
# TODO: Write general description for PRODUCT_SCA
|
|
16
|
+
PRODUCT_SCA = 'PRODUCT_SCA'.freeze,
|
|
17
|
+
|
|
18
|
+
# TODO: Write general description for PRODUCT_SECRETS
|
|
19
|
+
PRODUCT_SECRETS = 'PRODUCT_SECRETS'.freeze,
|
|
20
|
+
|
|
21
|
+
# TODO: Write general description for PRODUCT_AI_SAST
|
|
22
|
+
PRODUCT_AI_SAST = 'PRODUCT_AI_SAST'.freeze
|
|
23
|
+
].freeze
|
|
24
|
+
|
|
25
|
+
def self.validate(value)
|
|
26
|
+
return false if value.nil?
|
|
27
|
+
|
|
28
|
+
PRODUCTS.include?(value)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def self.from_value(value, default_value = PRODUCT_SAST)
|
|
32
|
+
return default_value if value.nil?
|
|
33
|
+
|
|
34
|
+
str = value.to_s.strip
|
|
35
|
+
|
|
36
|
+
case str.downcase
|
|
37
|
+
when 'product_sast' then PRODUCT_SAST
|
|
38
|
+
when 'product_sca' then PRODUCT_SCA
|
|
39
|
+
when 'product_secrets' then PRODUCT_SECRETS
|
|
40
|
+
when 'product_ai_sast' then PRODUCT_AI_SAST
|
|
41
|
+
else
|
|
42
|
+
default_value
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
# semgrep_web_app
|
|
2
|
+
#
|
|
3
|
+
# This file was automatically generated by APIMATIC v3.0 (
|
|
4
|
+
# https://www.apimatic.io ).
|
|
5
|
+
|
|
6
|
+
module SemgrepWebApp
|
|
7
|
+
# A project in your organization that uses Semgrep.
|
|
8
|
+
class Project < BaseModel
|
|
9
|
+
SKIP = Object.new
|
|
10
|
+
private_constant :SKIP
|
|
11
|
+
|
|
12
|
+
# Time when this project was created.
|
|
13
|
+
# @return [String]
|
|
14
|
+
attr_accessor :created_at
|
|
15
|
+
|
|
16
|
+
# The default branch in the SCM.
|
|
17
|
+
# @return [String]
|
|
18
|
+
attr_accessor :default_branch
|
|
19
|
+
|
|
20
|
+
# Unique ID of this project.
|
|
21
|
+
# @return [Integer]
|
|
22
|
+
attr_accessor :id
|
|
23
|
+
|
|
24
|
+
# Time of latest scan, if there is one.
|
|
25
|
+
# @return [String]
|
|
26
|
+
attr_accessor :latest_scan_at
|
|
27
|
+
|
|
28
|
+
# [Beta] Configuration of Semgrep Managed Scans for the project, if
|
|
29
|
+
# relevant.
|
|
30
|
+
# @return [ManagedScanConfig]
|
|
31
|
+
attr_accessor :managed_scan_config
|
|
32
|
+
|
|
33
|
+
# Name of the project.
|
|
34
|
+
# @return [String]
|
|
35
|
+
attr_accessor :name
|
|
36
|
+
|
|
37
|
+
# The primary branch of the project, if known.
|
|
38
|
+
# @return [String]
|
|
39
|
+
attr_accessor :primary_branch
|
|
40
|
+
|
|
41
|
+
# Tags associated to this project.
|
|
42
|
+
# @return [Array[String]]
|
|
43
|
+
attr_accessor :tags
|
|
44
|
+
|
|
45
|
+
# URL of the project, if there is one.
|
|
46
|
+
# @return [String]
|
|
47
|
+
attr_accessor :url
|
|
48
|
+
|
|
49
|
+
# A mapping from model property names to API property names.
|
|
50
|
+
def self.names
|
|
51
|
+
@_hash = {} if @_hash.nil?
|
|
52
|
+
@_hash['created_at'] = 'created_at'
|
|
53
|
+
@_hash['default_branch'] = 'default_branch'
|
|
54
|
+
@_hash['id'] = 'id'
|
|
55
|
+
@_hash['latest_scan_at'] = 'latest_scan_at'
|
|
56
|
+
@_hash['managed_scan_config'] = 'managed_scan_config'
|
|
57
|
+
@_hash['name'] = 'name'
|
|
58
|
+
@_hash['primary_branch'] = 'primary_branch'
|
|
59
|
+
@_hash['tags'] = 'tags'
|
|
60
|
+
@_hash['url'] = 'url'
|
|
61
|
+
@_hash
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
# An array for optional fields
|
|
65
|
+
def self.optionals
|
|
66
|
+
%w[
|
|
67
|
+
created_at
|
|
68
|
+
default_branch
|
|
69
|
+
latest_scan_at
|
|
70
|
+
managed_scan_config
|
|
71
|
+
primary_branch
|
|
72
|
+
url
|
|
73
|
+
]
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
# An array for nullable fields
|
|
77
|
+
def self.nullables
|
|
78
|
+
[]
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
def initialize(id:, name:, tags:, created_at: SKIP, default_branch: SKIP,
|
|
82
|
+
latest_scan_at: SKIP, managed_scan_config: SKIP,
|
|
83
|
+
primary_branch: SKIP, url: SKIP, additional_properties: nil)
|
|
84
|
+
# Add additional model properties to the instance
|
|
85
|
+
additional_properties = {} if additional_properties.nil?
|
|
86
|
+
|
|
87
|
+
@created_at = created_at unless created_at == SKIP
|
|
88
|
+
@default_branch = default_branch unless default_branch == SKIP
|
|
89
|
+
@id = id
|
|
90
|
+
@latest_scan_at = latest_scan_at unless latest_scan_at == SKIP
|
|
91
|
+
@managed_scan_config = managed_scan_config unless managed_scan_config == SKIP
|
|
92
|
+
@name = name
|
|
93
|
+
@primary_branch = primary_branch unless primary_branch == SKIP
|
|
94
|
+
@tags = tags
|
|
95
|
+
@url = url unless url == SKIP
|
|
96
|
+
@additional_properties = additional_properties
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
# Creates an instance of the object from a hash.
|
|
100
|
+
def self.from_hash(hash)
|
|
101
|
+
return nil unless hash
|
|
102
|
+
|
|
103
|
+
# Extract variables from the hash.
|
|
104
|
+
id = hash.key?('id') ? hash['id'] : nil
|
|
105
|
+
name = hash.key?('name') ? hash['name'] : nil
|
|
106
|
+
tags = hash.key?('tags') ? hash['tags'] : nil
|
|
107
|
+
created_at = hash.key?('created_at') ? hash['created_at'] : SKIP
|
|
108
|
+
default_branch =
|
|
109
|
+
hash.key?('default_branch') ? hash['default_branch'] : SKIP
|
|
110
|
+
latest_scan_at =
|
|
111
|
+
hash.key?('latest_scan_at') ? hash['latest_scan_at'] : SKIP
|
|
112
|
+
managed_scan_config = ManagedScanConfig.from_hash(hash['managed_scan_config']) if
|
|
113
|
+
hash['managed_scan_config']
|
|
114
|
+
primary_branch =
|
|
115
|
+
hash.key?('primary_branch') ? hash['primary_branch'] : SKIP
|
|
116
|
+
url = hash.key?('url') ? hash['url'] : SKIP
|
|
117
|
+
|
|
118
|
+
# Create a new hash for additional properties, removing known properties.
|
|
119
|
+
new_hash = hash.reject { |k, _| names.value?(k) }
|
|
120
|
+
|
|
121
|
+
additional_properties = APIHelper.get_additional_properties(
|
|
122
|
+
new_hash, proc { |value| value }
|
|
123
|
+
)
|
|
124
|
+
|
|
125
|
+
# Create object from extracted values.
|
|
126
|
+
Project.new(id: id,
|
|
127
|
+
name: name,
|
|
128
|
+
tags: tags,
|
|
129
|
+
created_at: created_at,
|
|
130
|
+
default_branch: default_branch,
|
|
131
|
+
latest_scan_at: latest_scan_at,
|
|
132
|
+
managed_scan_config: managed_scan_config,
|
|
133
|
+
primary_branch: primary_branch,
|
|
134
|
+
url: url,
|
|
135
|
+
additional_properties: additional_properties)
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
# Provides a human-readable string representation of the object.
|
|
139
|
+
def to_s
|
|
140
|
+
class_name = self.class.name.split('::').last
|
|
141
|
+
"<#{class_name} created_at: #{@created_at}, default_branch: #{@default_branch}, id: #{@id},"\
|
|
142
|
+
" latest_scan_at: #{@latest_scan_at}, managed_scan_config: #{@managed_scan_config}, name:"\
|
|
143
|
+
" #{@name}, primary_branch: #{@primary_branch}, tags: #{@tags}, url: #{@url},"\
|
|
144
|
+
" additional_properties: #{@additional_properties}>"
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
# Provides a debugging-friendly string with detailed object information.
|
|
148
|
+
def inspect
|
|
149
|
+
class_name = self.class.name.split('::').last
|
|
150
|
+
"<#{class_name} created_at: #{@created_at.inspect}, default_branch:"\
|
|
151
|
+
" #{@default_branch.inspect}, id: #{@id.inspect}, latest_scan_at:"\
|
|
152
|
+
" #{@latest_scan_at.inspect}, managed_scan_config: #{@managed_scan_config.inspect}, name:"\
|
|
153
|
+
" #{@name.inspect}, primary_branch: #{@primary_branch.inspect}, tags: #{@tags.inspect}, url:"\
|
|
154
|
+
" #{@url.inspect}, additional_properties: #{@additional_properties}>"
|
|
155
|
+
end
|
|
156
|
+
end
|
|
157
|
+
end
|