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.
Files changed (200) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +28 -0
  3. data/README.md +205 -0
  4. data/bin/console +15 -0
  5. data/lib/semgrep_web_app/api_helper.rb +10 -0
  6. data/lib/semgrep_web_app/apis/base_api.rb +67 -0
  7. data/lib/semgrep_web_app/apis/deployments_service_api.rb +29 -0
  8. data/lib/semgrep_web_app/apis/findings_service_api.rb +107 -0
  9. data/lib/semgrep_web_app/apis/misc_service_api.rb +47 -0
  10. data/lib/semgrep_web_app/apis/policies_service_api.rb +97 -0
  11. data/lib/semgrep_web_app/apis/projects_service_api.rb +238 -0
  12. data/lib/semgrep_web_app/apis/scans_service_api.rb +65 -0
  13. data/lib/semgrep_web_app/apis/secrets_service_api.rb +55 -0
  14. data/lib/semgrep_web_app/apis/supply_chain_service_api.rb +154 -0
  15. data/lib/semgrep_web_app/apis/ticketing_service_api.rb +144 -0
  16. data/lib/semgrep_web_app/apis/triage_service_api.rb +43 -0
  17. data/lib/semgrep_web_app/client.rb +136 -0
  18. data/lib/semgrep_web_app/configuration.rb +178 -0
  19. data/lib/semgrep_web_app/exceptions/api_exception.rb +21 -0
  20. data/lib/semgrep_web_app/http/api_response.rb +19 -0
  21. data/lib/semgrep_web_app/http/auth/semgrep_admin_jwt.rb +53 -0
  22. data/lib/semgrep_web_app/http/auth/semgrep_jwt.rb +53 -0
  23. data/lib/semgrep_web_app/http/auth/semgrep_web_token.rb +53 -0
  24. data/lib/semgrep_web_app/http/http_call_back.rb +10 -0
  25. data/lib/semgrep_web_app/http/http_method_enum.rb +10 -0
  26. data/lib/semgrep_web_app/http/http_request.rb +10 -0
  27. data/lib/semgrep_web_app/http/http_response.rb +10 -0
  28. data/lib/semgrep_web_app/http/proxy_settings.rb +22 -0
  29. data/lib/semgrep_web_app/logging/configuration/api_logging_configuration.rb +186 -0
  30. data/lib/semgrep_web_app/logging/sdk_logger.rb +17 -0
  31. data/lib/semgrep_web_app/models/add_project_tags_request.rb +96 -0
  32. data/lib/semgrep_web_app/models/add_project_tags_response.rb +73 -0
  33. data/lib/semgrep_web_app/models/ai_powered_scan_finding.rb +426 -0
  34. data/lib/semgrep_web_app/models/ai_sast_findings.rb +85 -0
  35. data/lib/semgrep_web_app/models/api_v1_deployments_findings_response.rb +87 -0
  36. data/lib/semgrep_web_app/models/assistant.rb +127 -0
  37. data/lib/semgrep_web_app/models/autofix.rb +98 -0
  38. data/lib/semgrep_web_app/models/autotriage.rb +98 -0
  39. data/lib/semgrep_web_app/models/autotriage_verdict.rb +36 -0
  40. data/lib/semgrep_web_app/models/autotriage_verdict2.rb +38 -0
  41. data/lib/semgrep_web_app/models/base_model.rb +110 -0
  42. data/lib/semgrep_web_app/models/bulk_triage_request.rb +393 -0
  43. data/lib/semgrep_web_app/models/bulk_triage_response.rb +83 -0
  44. data/lib/semgrep_web_app/models/click_to_fix_failure.rb +95 -0
  45. data/lib/semgrep_web_app/models/click_to_fix_pr.rb +95 -0
  46. data/lib/semgrep_web_app/models/click_to_fix_pr_state.rb +38 -0
  47. data/lib/semgrep_web_app/models/component.rb +95 -0
  48. data/lib/semgrep_web_app/models/confidence.rb +42 -0
  49. data/lib/semgrep_web_app/models/confidence1.rb +40 -0
  50. data/lib/semgrep_web_app/models/confidence2.rb +40 -0
  51. data/lib/semgrep_web_app/models/confidence3.rb +40 -0
  52. data/lib/semgrep_web_app/models/confidence7.rb +41 -0
  53. data/lib/semgrep_web_app/models/confidence8.rb +42 -0
  54. data/lib/semgrep_web_app/models/create_sbom_export_request.rb +176 -0
  55. data/lib/semgrep_web_app/models/create_sbom_export_response.rb +74 -0
  56. data/lib/semgrep_web_app/models/create_ticket_request.rb +393 -0
  57. data/lib/semgrep_web_app/models/cyclonedx_version.rb +48 -0
  58. data/lib/semgrep_web_app/models/delete_project_response.rb +74 -0
  59. data/lib/semgrep_web_app/models/delete_project_tags_response.rb +73 -0
  60. data/lib/semgrep_web_app/models/deployment.rb +102 -0
  61. data/lib/semgrep_web_app/models/ecosystem.rb +91 -0
  62. data/lib/semgrep_web_app/models/ecosystem1.rb +92 -0
  63. data/lib/semgrep_web_app/models/ecosystem2.rb +76 -0
  64. data/lib/semgrep_web_app/models/endpoint_reference.rb +72 -0
  65. data/lib/semgrep_web_app/models/epss_probability.rb +45 -0
  66. data/lib/semgrep_web_app/models/epss_score.rb +95 -0
  67. data/lib/semgrep_web_app/models/exposures.rb +50 -0
  68. data/lib/semgrep_web_app/models/exposures2.rb +51 -0
  69. data/lib/semgrep_web_app/models/external_ticket.rb +116 -0
  70. data/lib/semgrep_web_app/models/finding_location.rb +126 -0
  71. data/lib/semgrep_web_app/models/finding_repository.rb +95 -0
  72. data/lib/semgrep_web_app/models/finding_rule.rb +158 -0
  73. data/lib/semgrep_web_app/models/fix_recommendation.rb +95 -0
  74. data/lib/semgrep_web_app/models/float_range.rb +85 -0
  75. data/lib/semgrep_web_app/models/format.rb +27 -0
  76. data/lib/semgrep_web_app/models/found_dependency.rb +128 -0
  77. data/lib/semgrep_web_app/models/get_project_response.rb +73 -0
  78. data/lib/semgrep_web_app/models/get_sbom_export_response.rb +100 -0
  79. data/lib/semgrep_web_app/models/guidance.rb +98 -0
  80. data/lib/semgrep_web_app/models/issue_type.rb +40 -0
  81. data/lib/semgrep_web_app/models/issue_type1.rb +40 -0
  82. data/lib/semgrep_web_app/models/issue_type2.rb +42 -0
  83. data/lib/semgrep_web_app/models/license_policy_settings.rb +42 -0
  84. data/lib/semgrep_web_app/models/link_ticket_request.rb +93 -0
  85. data/lib/semgrep_web_app/models/list_dependencies_request.rb +108 -0
  86. data/lib/semgrep_web_app/models/list_dependencies_response.rb +102 -0
  87. data/lib/semgrep_web_app/models/list_findings_response.rb +100 -0
  88. data/lib/semgrep_web_app/models/list_lockfiles_for_dependencies_request.rb +118 -0
  89. data/lib/semgrep_web_app/models/list_lockfiles_for_dependencies_response.rb +103 -0
  90. data/lib/semgrep_web_app/models/list_project.rb +145 -0
  91. data/lib/semgrep_web_app/models/list_projects_response.rb +82 -0
  92. data/lib/semgrep_web_app/models/list_repositories_for_dependencies_request.rb +107 -0
  93. data/lib/semgrep_web_app/models/list_repositories_for_dependencies_response.rb +103 -0
  94. data/lib/semgrep_web_app/models/managed_scan_config.rb +85 -0
  95. data/lib/semgrep_web_app/models/metadata_component_type.rb +101 -0
  96. data/lib/semgrep_web_app/models/mode.rb +48 -0
  97. data/lib/semgrep_web_app/models/new_triage_reason.rb +48 -0
  98. data/lib/semgrep_web_app/models/new_triage_state.rb +48 -0
  99. data/lib/semgrep_web_app/models/policy.rb +118 -0
  100. data/lib/semgrep_web_app/models/policy_mode.rb +48 -0
  101. data/lib/semgrep_web_app/models/policy_mode1.rb +40 -0
  102. data/lib/semgrep_web_app/models/policy_mode3.rb +51 -0
  103. data/lib/semgrep_web_app/models/policy_reference.rb +105 -0
  104. data/lib/semgrep_web_app/models/product_type.rb +38 -0
  105. data/lib/semgrep_web_app/models/products.rb +46 -0
  106. data/lib/semgrep_web_app/models/project.rb +157 -0
  107. data/lib/semgrep_web_app/models/protos_ai_v1_autotriage.rb +154 -0
  108. data/lib/semgrep_web_app/models/protos_ai_v1_autotriage_feedback.rb +98 -0
  109. data/lib/semgrep_web_app/models/protos_common_v1_review_comment.rb +90 -0
  110. data/lib/semgrep_web_app/models/protos_openapi_v1_create_ticket_response.rb +123 -0
  111. data/lib/semgrep_web_app/models/protos_openapi_v1_create_ticket_response_ticket_creation_failed.rb +85 -0
  112. data/lib/semgrep_web_app/models/protos_openapi_v1_create_ticket_response_ticket_creation_skipped.rb +85 -0
  113. data/lib/semgrep_web_app/models/protos_openapi_v1_create_ticket_response_ticket_creation_success.rb +106 -0
  114. data/lib/semgrep_web_app/models/protos_openapi_v1_delete_ticket_response.rb +76 -0
  115. data/lib/semgrep_web_app/models/protos_openapi_v1_diff_scan.rb +75 -0
  116. data/lib/semgrep_web_app/models/protos_openapi_v1_full_scan.rb +75 -0
  117. data/lib/semgrep_web_app/models/protos_openapi_v1_get_bootstrap_sms_vpc_response.rb +130 -0
  118. data/lib/semgrep_web_app/models/protos_openapi_v1_get_scan_response.rb +168 -0
  119. data/lib/semgrep_web_app/models/protos_openapi_v1_get_scan_response_scan_meta.rb +256 -0
  120. data/lib/semgrep_web_app/models/protos_openapi_v1_link_ticket_response.rb +119 -0
  121. data/lib/semgrep_web_app/models/protos_openapi_v1_list_deployments_response.rb +85 -0
  122. data/lib/semgrep_web_app/models/protos_openapi_v1_list_policies_response.rb +84 -0
  123. data/lib/semgrep_web_app/models/protos_openapi_v1_list_policy_rules_response.rb +104 -0
  124. data/lib/semgrep_web_app/models/protos_openapi_v1_list_secrets_path_response.rb +104 -0
  125. data/lib/semgrep_web_app/models/protos_openapi_v1_search_scans_response.rb +94 -0
  126. data/lib/semgrep_web_app/models/protos_openapi_v1_unlink_ticket_response.rb +77 -0
  127. data/lib/semgrep_web_app/models/protos_openapi_v1_update_policy_response.rb +88 -0
  128. data/lib/semgrep_web_app/models/protos_sca_v1_code_location.rb +144 -0
  129. data/lib/semgrep_web_app/models/protos_sca_v1_dependency.rb +87 -0
  130. data/lib/semgrep_web_app/models/protos_sca_v1_dependency_filter.rb +199 -0
  131. data/lib/semgrep_web_app/models/protos_sca_v1_found_dependency.rb +174 -0
  132. data/lib/semgrep_web_app/models/protos_sca_v1_lockfile_dependency_summary.rb +87 -0
  133. data/lib/semgrep_web_app/models/protos_sca_v1_package_filter.rb +124 -0
  134. data/lib/semgrep_web_app/models/protos_sca_v1_repository_dependency_summary.rb +111 -0
  135. data/lib/semgrep_web_app/models/protos_sca_v1_sbom_format_version.rb +109 -0
  136. data/lib/semgrep_web_app/models/protos_sca_v1_sbom_metadata_contact.rb +95 -0
  137. data/lib/semgrep_web_app/models/protos_sca_v1_sbom_metadata_supplier.rb +95 -0
  138. data/lib/semgrep_web_app/models/protos_scan_v1_scan_findings_counts.rb +105 -0
  139. data/lib/semgrep_web_app/models/protos_scan_v1_scan_public.rb +228 -0
  140. data/lib/semgrep_web_app/models/protos_secrets_v1_historical_info.rb +116 -0
  141. data/lib/semgrep_web_app/models/protos_secrets_v1_secrets_finding.rb +320 -0
  142. data/lib/semgrep_web_app/models/protos_secrets_v1_secrets_finding_repository.rb +121 -0
  143. data/lib/semgrep_web_app/models/protos_ticketing_v1_external_ticket.rb +106 -0
  144. data/lib/semgrep_web_app/models/rating.rb +38 -0
  145. data/lib/semgrep_web_app/models/reachability.rb +48 -0
  146. data/lib/semgrep_web_app/models/repository_visibility.rb +40 -0
  147. data/lib/semgrep_web_app/models/review_comment.rb +100 -0
  148. data/lib/semgrep_web_app/models/risk.rb +40 -0
  149. data/lib/semgrep_web_app/models/rule.rb +292 -0
  150. data/lib/semgrep_web_app/models/rule_explanation.rb +98 -0
  151. data/lib/semgrep_web_app/models/sast_finding.rb +426 -0
  152. data/lib/semgrep_web_app/models/sast_findings.rb +84 -0
  153. data/lib/semgrep_web_app/models/sbom_output_format.rb +37 -0
  154. data/lib/semgrep_web_app/models/sca_finding.rb +458 -0
  155. data/lib/semgrep_web_app/models/sca_findings.rb +85 -0
  156. data/lib/semgrep_web_app/models/scm_type.rb +70 -0
  157. data/lib/semgrep_web_app/models/search_scans_request.rb +202 -0
  158. data/lib/semgrep_web_app/models/severities.rb +44 -0
  159. data/lib/semgrep_web_app/models/severities2.rb +45 -0
  160. data/lib/semgrep_web_app/models/severity.rb +46 -0
  161. data/lib/semgrep_web_app/models/severity1.rb +45 -0
  162. data/lib/semgrep_web_app/models/severity4.rb +46 -0
  163. data/lib/semgrep_web_app/models/severity5.rb +48 -0
  164. data/lib/semgrep_web_app/models/source.rb +42 -0
  165. data/lib/semgrep_web_app/models/state.rb +42 -0
  166. data/lib/semgrep_web_app/models/status.rb +55 -0
  167. data/lib/semgrep_web_app/models/status1.rb +52 -0
  168. data/lib/semgrep_web_app/models/status3.rb +44 -0
  169. data/lib/semgrep_web_app/models/status6.rb +55 -0
  170. data/lib/semgrep_web_app/models/status7.rb +59 -0
  171. data/lib/semgrep_web_app/models/status8.rb +61 -0
  172. data/lib/semgrep_web_app/models/status9.rb +55 -0
  173. data/lib/semgrep_web_app/models/statuses.rb +63 -0
  174. data/lib/semgrep_web_app/models/toggle_project_managed_scan_request.rb +108 -0
  175. data/lib/semgrep_web_app/models/toggle_project_managed_scan_response.rb +73 -0
  176. data/lib/semgrep_web_app/models/transitivities.rb +40 -0
  177. data/lib/semgrep_web_app/models/transitivities2.rb +42 -0
  178. data/lib/semgrep_web_app/models/transitivity.rb +41 -0
  179. data/lib/semgrep_web_app/models/transitivity1.rb +42 -0
  180. data/lib/semgrep_web_app/models/transitivity2.rb +40 -0
  181. data/lib/semgrep_web_app/models/triage_reason.rb +48 -0
  182. data/lib/semgrep_web_app/models/triage_reasons.rb +48 -0
  183. data/lib/semgrep_web_app/models/triage_reasons2.rb +50 -0
  184. data/lib/semgrep_web_app/models/triage_state.rb +54 -0
  185. data/lib/semgrep_web_app/models/unlink_ticket_request.rb +83 -0
  186. data/lib/semgrep_web_app/models/update_policy_request.rb +113 -0
  187. data/lib/semgrep_web_app/models/update_project_request.rb +121 -0
  188. data/lib/semgrep_web_app/models/update_project_response.rb +73 -0
  189. data/lib/semgrep_web_app/models/usage.rb +99 -0
  190. data/lib/semgrep_web_app/models/validation_state.rb +45 -0
  191. data/lib/semgrep_web_app/models/validation_state2.rb +47 -0
  192. data/lib/semgrep_web_app/models/validation_state3.rb +48 -0
  193. data/lib/semgrep_web_app/models/verdict.rb +41 -0
  194. data/lib/semgrep_web_app/models/verdict1.rb +38 -0
  195. data/lib/semgrep_web_app/models/visibility.rb +42 -0
  196. data/lib/semgrep_web_app/utilities/date_time_helper.rb +11 -0
  197. data/lib/semgrep_web_app/utilities/file_wrapper.rb +28 -0
  198. data/lib/semgrep_web_app/utilities/union_type_lookup.rb +34 -0
  199. data/lib/semgrep_web_app.rb +245 -0
  200. 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