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,128 @@
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
+ # Information about the vulnerable package that was found in the codebase
8
+ class FoundDependency < BaseModel
9
+ SKIP = Object.new
10
+ private_constant :SKIP
11
+
12
+ # Ecosystem of the package
13
+ # @return [Ecosystem2]
14
+ attr_accessor :ecosystem
15
+
16
+ # URL to the specific line in the lockfile where the dependency is listed
17
+ # @return [String]
18
+ attr_accessor :lockfile_line_url
19
+
20
+ # Name of the package that contains the vulnerability
21
+ # @return [String]
22
+ attr_accessor :package
23
+
24
+ # Indicates whether the dependency is direct or transitive
25
+ # @return [Transitivity2]
26
+ attr_accessor :transitivity
27
+
28
+ # Version of the package that was found to be vulnerable
29
+ # @return [String]
30
+ attr_accessor :version
31
+
32
+ # A mapping from model property names to API property names.
33
+ def self.names
34
+ @_hash = {} if @_hash.nil?
35
+ @_hash['ecosystem'] = 'ecosystem'
36
+ @_hash['lockfile_line_url'] = 'lockfile_line_url'
37
+ @_hash['package'] = 'package'
38
+ @_hash['transitivity'] = 'transitivity'
39
+ @_hash['version'] = 'version'
40
+ @_hash
41
+ end
42
+
43
+ # An array for optional fields
44
+ def self.optionals
45
+ %w[
46
+ ecosystem
47
+ lockfile_line_url
48
+ package
49
+ transitivity
50
+ version
51
+ ]
52
+ end
53
+
54
+ # An array for nullable fields
55
+ def self.nullables
56
+ []
57
+ end
58
+
59
+ def initialize(ecosystem: Ecosystem2::NO_PACKAGE_MANAGER,
60
+ lockfile_line_url: SKIP, package: SKIP, transitivity: SKIP,
61
+ version: SKIP, additional_properties: nil)
62
+ # Add additional model properties to the instance
63
+ additional_properties = {} if additional_properties.nil?
64
+
65
+ @ecosystem = ecosystem unless ecosystem == SKIP
66
+ @lockfile_line_url = lockfile_line_url unless lockfile_line_url == SKIP
67
+ @package = package unless package == SKIP
68
+ @transitivity = transitivity unless transitivity == SKIP
69
+ @version = version unless version == SKIP
70
+ @additional_properties = additional_properties
71
+ end
72
+
73
+ # Creates an instance of the object from a hash.
74
+ def self.from_hash(hash)
75
+ return nil unless hash
76
+
77
+ # Extract variables from the hash.
78
+ ecosystem = hash['ecosystem'] ||= Ecosystem2::NO_PACKAGE_MANAGER
79
+ lockfile_line_url =
80
+ hash.key?('lockfile_line_url') ? hash['lockfile_line_url'] : SKIP
81
+ package = hash.key?('package') ? hash['package'] : SKIP
82
+ transitivity = hash.key?('transitivity') ? hash['transitivity'] : SKIP
83
+ version = hash.key?('version') ? hash['version'] : SKIP
84
+
85
+ # Create a new hash for additional properties, removing known properties.
86
+ new_hash = hash.reject { |k, _| names.value?(k) }
87
+
88
+ additional_properties = APIHelper.get_additional_properties(
89
+ new_hash, proc { |value| value }
90
+ )
91
+
92
+ # Create object from extracted values.
93
+ FoundDependency.new(ecosystem: ecosystem,
94
+ lockfile_line_url: lockfile_line_url,
95
+ package: package,
96
+ transitivity: transitivity,
97
+ version: version,
98
+ additional_properties: additional_properties)
99
+ end
100
+
101
+ # Validates an instance of the object from a given value.
102
+ # @param [FoundDependency | Hash] The value against the validation is performed.
103
+ def self.validate(value)
104
+ return true if value.instance_of? self
105
+
106
+ return false unless value.instance_of? Hash
107
+
108
+ true
109
+ end
110
+
111
+ # Provides a human-readable string representation of the object.
112
+ def to_s
113
+ class_name = self.class.name.split('::').last
114
+ "<#{class_name} ecosystem: #{@ecosystem}, lockfile_line_url: #{@lockfile_line_url},"\
115
+ " package: #{@package}, transitivity: #{@transitivity}, version: #{@version},"\
116
+ " additional_properties: #{@additional_properties}>"
117
+ end
118
+
119
+ # Provides a debugging-friendly string with detailed object information.
120
+ def inspect
121
+ class_name = self.class.name.split('::').last
122
+ "<#{class_name} ecosystem: #{@ecosystem.inspect}, lockfile_line_url:"\
123
+ " #{@lockfile_line_url.inspect}, package: #{@package.inspect}, transitivity:"\
124
+ " #{@transitivity.inspect}, version: #{@version.inspect}, additional_properties:"\
125
+ " #{@additional_properties}>"
126
+ end
127
+ end
128
+ end
@@ -0,0 +1,73 @@
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
+ # Successfully retrieved details for the project.
8
+ class GetProjectResponse < BaseModel
9
+ SKIP = Object.new
10
+ private_constant :SKIP
11
+
12
+ # A project in your organization that uses Semgrep.
13
+ # @return [Project]
14
+ attr_accessor :project
15
+
16
+ # A mapping from model property names to API property names.
17
+ def self.names
18
+ @_hash = {} if @_hash.nil?
19
+ @_hash['project'] = 'project'
20
+ @_hash
21
+ end
22
+
23
+ # An array for optional fields
24
+ def self.optionals
25
+ []
26
+ end
27
+
28
+ # An array for nullable fields
29
+ def self.nullables
30
+ []
31
+ end
32
+
33
+ def initialize(project:, additional_properties: nil)
34
+ # Add additional model properties to the instance
35
+ additional_properties = {} if additional_properties.nil?
36
+
37
+ @project = project
38
+ @additional_properties = additional_properties
39
+ end
40
+
41
+ # Creates an instance of the object from a hash.
42
+ def self.from_hash(hash)
43
+ return nil unless hash
44
+
45
+ # Extract variables from the hash.
46
+ project = Project.from_hash(hash['project']) if hash['project']
47
+
48
+ # Create a new hash for additional properties, removing known properties.
49
+ new_hash = hash.reject { |k, _| names.value?(k) }
50
+
51
+ additional_properties = APIHelper.get_additional_properties(
52
+ new_hash, proc { |value| value }
53
+ )
54
+
55
+ # Create object from extracted values.
56
+ GetProjectResponse.new(project: project,
57
+ additional_properties: additional_properties)
58
+ end
59
+
60
+ # Provides a human-readable string representation of the object.
61
+ def to_s
62
+ class_name = self.class.name.split('::').last
63
+ "<#{class_name} project: #{@project}, additional_properties: #{@additional_properties}>"
64
+ end
65
+
66
+ # Provides a debugging-friendly string with detailed object information.
67
+ def inspect
68
+ class_name = self.class.name.split('::').last
69
+ "<#{class_name} project: #{@project.inspect}, additional_properties:"\
70
+ " #{@additional_properties}>"
71
+ end
72
+ end
73
+ end
@@ -0,0 +1,100 @@
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
+ # GetSbomExportResponse Model.
8
+ class GetSbomExportResponse < BaseModel
9
+ SKIP = Object.new
10
+ private_constant :SKIP
11
+
12
+ # URL to download the SBOM when status is COMPLETED.
13
+ # @return [String]
14
+ attr_accessor :download_url
15
+
16
+ # Error message when status is FAILED.
17
+ # @return [String]
18
+ attr_accessor :error_message
19
+
20
+ # Status of the SBOM export job.
21
+ # | value | description |
22
+ # |-------|---------------|
23
+ # | SBOM_EXPORT_STATUS_IN_PROGRESS | The SBOM export job is in progress. |
24
+ # | SBOM_EXPORT_STATUS_COMPLETED | The SBOM export job has completed. |
25
+ # | SBOM_EXPORT_STATUS_FAILED | The SBOM export job has failed. |
26
+ # @return [Status3]
27
+ attr_accessor :status
28
+
29
+ # A mapping from model property names to API property names.
30
+ def self.names
31
+ @_hash = {} if @_hash.nil?
32
+ @_hash['download_url'] = 'downloadUrl'
33
+ @_hash['error_message'] = 'errorMessage'
34
+ @_hash['status'] = 'status'
35
+ @_hash
36
+ end
37
+
38
+ # An array for optional fields
39
+ def self.optionals
40
+ %w[
41
+ download_url
42
+ error_message
43
+ ]
44
+ end
45
+
46
+ # An array for nullable fields
47
+ def self.nullables
48
+ []
49
+ end
50
+
51
+ def initialize(status:, download_url: SKIP, error_message: SKIP,
52
+ additional_properties: nil)
53
+ # Add additional model properties to the instance
54
+ additional_properties = {} if additional_properties.nil?
55
+
56
+ @download_url = download_url unless download_url == SKIP
57
+ @error_message = error_message unless error_message == SKIP
58
+ @status = status
59
+ @additional_properties = additional_properties
60
+ end
61
+
62
+ # Creates an instance of the object from a hash.
63
+ def self.from_hash(hash)
64
+ return nil unless hash
65
+
66
+ # Extract variables from the hash.
67
+ status = hash.key?('status') ? hash['status'] : nil
68
+ download_url = hash.key?('downloadUrl') ? hash['downloadUrl'] : SKIP
69
+ error_message = hash.key?('errorMessage') ? hash['errorMessage'] : SKIP
70
+
71
+ # Create a new hash for additional properties, removing known properties.
72
+ new_hash = hash.reject { |k, _| names.value?(k) }
73
+
74
+ additional_properties = APIHelper.get_additional_properties(
75
+ new_hash, proc { |value| value }
76
+ )
77
+
78
+ # Create object from extracted values.
79
+ GetSbomExportResponse.new(status: status,
80
+ download_url: download_url,
81
+ error_message: error_message,
82
+ additional_properties: additional_properties)
83
+ end
84
+
85
+ # Provides a human-readable string representation of the object.
86
+ def to_s
87
+ class_name = self.class.name.split('::').last
88
+ "<#{class_name} download_url: #{@download_url}, error_message: #{@error_message}, status:"\
89
+ " #{@status}, additional_properties: #{@additional_properties}>"
90
+ end
91
+
92
+ # Provides a debugging-friendly string with detailed object information.
93
+ def inspect
94
+ class_name = self.class.name.split('::').last
95
+ "<#{class_name} download_url: #{@download_url.inspect}, error_message:"\
96
+ " #{@error_message.inspect}, status: #{@status.inspect}, additional_properties:"\
97
+ " #{@additional_properties}>"
98
+ end
99
+ end
100
+ end
@@ -0,0 +1,98 @@
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
+ # Remediation guidance generated by Semgrep Assistant
8
+ class Guidance < BaseModel
9
+ SKIP = Object.new
10
+ private_constant :SKIP
11
+
12
+ # Step-by-step instructions explaining to a developer how to fix the
13
+ # finding. AI generated content, review carefully
14
+ # @return [String]
15
+ attr_accessor :instructions
16
+
17
+ # Short title explaining to a developer how to fix the finding. AI generated
18
+ # content, review carefully
19
+ # @return [String]
20
+ attr_accessor :summary
21
+
22
+ # A mapping from model property names to API property names.
23
+ def self.names
24
+ @_hash = {} if @_hash.nil?
25
+ @_hash['instructions'] = 'instructions'
26
+ @_hash['summary'] = 'summary'
27
+ @_hash
28
+ end
29
+
30
+ # An array for optional fields
31
+ def self.optionals
32
+ %w[
33
+ instructions
34
+ summary
35
+ ]
36
+ end
37
+
38
+ # An array for nullable fields
39
+ def self.nullables
40
+ []
41
+ end
42
+
43
+ def initialize(instructions: SKIP, summary: SKIP,
44
+ additional_properties: nil)
45
+ # Add additional model properties to the instance
46
+ additional_properties = {} if additional_properties.nil?
47
+
48
+ @instructions = instructions unless instructions == SKIP
49
+ @summary = summary unless summary == SKIP
50
+ @additional_properties = additional_properties
51
+ end
52
+
53
+ # Creates an instance of the object from a hash.
54
+ def self.from_hash(hash)
55
+ return nil unless hash
56
+
57
+ # Extract variables from the hash.
58
+ instructions = hash.key?('instructions') ? hash['instructions'] : SKIP
59
+ summary = hash.key?('summary') ? hash['summary'] : SKIP
60
+
61
+ # Create a new hash for additional properties, removing known properties.
62
+ new_hash = hash.reject { |k, _| names.value?(k) }
63
+
64
+ additional_properties = APIHelper.get_additional_properties(
65
+ new_hash, proc { |value| value }
66
+ )
67
+
68
+ # Create object from extracted values.
69
+ Guidance.new(instructions: instructions,
70
+ summary: summary,
71
+ additional_properties: additional_properties)
72
+ end
73
+
74
+ # Validates an instance of the object from a given value.
75
+ # @param [Guidance | Hash] The value against the validation is performed.
76
+ def self.validate(value)
77
+ return true if value.instance_of? self
78
+
79
+ return false unless value.instance_of? Hash
80
+
81
+ true
82
+ end
83
+
84
+ # Provides a human-readable string representation of the object.
85
+ def to_s
86
+ class_name = self.class.name.split('::').last
87
+ "<#{class_name} instructions: #{@instructions}, summary: #{@summary},"\
88
+ " additional_properties: #{@additional_properties}>"
89
+ end
90
+
91
+ # Provides a debugging-friendly string with detailed object information.
92
+ def inspect
93
+ class_name = self.class.name.split('::').last
94
+ "<#{class_name} instructions: #{@instructions.inspect}, summary: #{@summary.inspect},"\
95
+ " additional_properties: #{@additional_properties}>"
96
+ end
97
+ end
98
+ 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
+ # Type of findings to bulk triage.
8
+ class IssueType
9
+ ISSUE_TYPE = [
10
+ # TODO: Write general description for SAST
11
+ SAST = 'sast'.freeze,
12
+
13
+ # TODO: Write general description for SCA
14
+ SCA = 'sca'.freeze,
15
+
16
+ # TODO: Write general description for SECRETS
17
+ SECRETS = 'secrets'.freeze
18
+ ].freeze
19
+
20
+ def self.validate(value)
21
+ return false if value.nil?
22
+
23
+ ISSUE_TYPE.include?(value)
24
+ end
25
+
26
+ def self.from_value(value, default_value = SAST)
27
+ return default_value if value.nil?
28
+
29
+ str = value.to_s.strip
30
+
31
+ case str.downcase
32
+ when 'sast' then SAST
33
+ when 'sca' then SCA
34
+ when 'secrets' then SECRETS
35
+ else
36
+ default_value
37
+ end
38
+ end
39
+ end
40
+ 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
+ # Type of findings to create tickets for.
8
+ class IssueType1
9
+ ISSUE_TYPE1 = [
10
+ # TODO: Write general description for SAST
11
+ SAST = 'sast'.freeze,
12
+
13
+ # TODO: Write general description for SCA
14
+ SCA = 'sca'.freeze,
15
+
16
+ # TODO: Write general description for SECRETS
17
+ SECRETS = 'secrets'.freeze
18
+ ].freeze
19
+
20
+ def self.validate(value)
21
+ return false if value.nil?
22
+
23
+ ISSUE_TYPE1.include?(value)
24
+ end
25
+
26
+ def self.from_value(value, default_value = SAST)
27
+ return default_value if value.nil?
28
+
29
+ str = value.to_s.strip
30
+
31
+ case str.downcase
32
+ when 'sast' then SAST
33
+ when 'sca' then SCA
34
+ when 'secrets' then SECRETS
35
+ else
36
+ default_value
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,42 @@
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
+ # Type of findings to return. If not specified, returns `sast` (Code)
8
+ # findings. Can be `sast` (Code), `sca` (Supply Chain), or `ai_sast`
9
+ # (AI-powered scan). Valid values: sast, sca, ai_sast
10
+ class IssueType2
11
+ ISSUE_TYPE2 = [
12
+ # TODO: Write general description for SAST
13
+ SAST = 'sast'.freeze,
14
+
15
+ # TODO: Write general description for SCA
16
+ SCA = 'sca'.freeze,
17
+
18
+ # TODO: Write general description for AI_SAST
19
+ AI_SAST = 'ai_sast'.freeze
20
+ ].freeze
21
+
22
+ def self.validate(value)
23
+ return false if value.nil?
24
+
25
+ ISSUE_TYPE2.include?(value)
26
+ end
27
+
28
+ def self.from_value(value, default_value = SAST)
29
+ return default_value if value.nil?
30
+
31
+ str = value.to_s.strip
32
+
33
+ case str.downcase
34
+ when 'sast' then SAST
35
+ when 'sca' then SCA
36
+ when 'ai_sast' then AI_SAST
37
+ else
38
+ default_value
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,42 @@
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
+ # Filter by license policy setting outcome. | value | description |
8
+ # |-------|---------------| | LICENSE_POLICY_SETTING_ALLOW | | |
9
+ # LICENSE_POLICY_SETTING_COMMENT | | | LICENSE_POLICY_SETTING_BLOCK | |
10
+ class LicensePolicySettings
11
+ LICENSE_POLICY_SETTINGS = [
12
+ # TODO: Write general description for LICENSE_POLICY_SETTING_ALLOW
13
+ LICENSE_POLICY_SETTING_ALLOW = 'LICENSE_POLICY_SETTING_ALLOW'.freeze,
14
+
15
+ # TODO: Write general description for LICENSE_POLICY_SETTING_COMMENT
16
+ LICENSE_POLICY_SETTING_COMMENT = 'LICENSE_POLICY_SETTING_COMMENT'.freeze,
17
+
18
+ # TODO: Write general description for LICENSE_POLICY_SETTING_BLOCK
19
+ LICENSE_POLICY_SETTING_BLOCK = 'LICENSE_POLICY_SETTING_BLOCK'.freeze
20
+ ].freeze
21
+
22
+ def self.validate(value)
23
+ return false if value.nil?
24
+
25
+ LICENSE_POLICY_SETTINGS.include?(value)
26
+ end
27
+
28
+ def self.from_value(value, default_value = LICENSE_POLICY_SETTING_ALLOW)
29
+ return default_value if value.nil?
30
+
31
+ str = value.to_s.strip
32
+
33
+ case str.downcase
34
+ when 'license_policy_setting_allow' then LICENSE_POLICY_SETTING_ALLOW
35
+ when 'license_policy_setting_comment' then LICENSE_POLICY_SETTING_COMMENT
36
+ when 'license_policy_setting_block' then LICENSE_POLICY_SETTING_BLOCK
37
+ else
38
+ default_value
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,93 @@
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
+ # Link ticket request
8
+ class LinkTicketRequest < BaseModel
9
+ SKIP = Object.new
10
+ private_constant :SKIP
11
+
12
+ # Deployment ID. Can be found at /deployments, or in your Settings in the
13
+ # web UI.
14
+ # @return [String]
15
+ attr_accessor :deployment_id
16
+
17
+ # An array of Semgrep finding IDs to link the ticket to.
18
+ # @return [Array[String]]
19
+ attr_accessor :issue_ids
20
+
21
+ # The URL of the external ticket to link (e.g.
22
+ # https://myorg.atlassian.net/browse/SEC-123).
23
+ # @return [String]
24
+ attr_accessor :ticket_url
25
+
26
+ # A mapping from model property names to API property names.
27
+ def self.names
28
+ @_hash = {} if @_hash.nil?
29
+ @_hash['deployment_id'] = 'deploymentId'
30
+ @_hash['issue_ids'] = 'issue_ids'
31
+ @_hash['ticket_url'] = 'ticket_url'
32
+ @_hash
33
+ end
34
+
35
+ # An array for optional fields
36
+ def self.optionals
37
+ []
38
+ end
39
+
40
+ # An array for nullable fields
41
+ def self.nullables
42
+ []
43
+ end
44
+
45
+ def initialize(deployment_id:, issue_ids:, ticket_url:,
46
+ additional_properties: nil)
47
+ # Add additional model properties to the instance
48
+ additional_properties = {} if additional_properties.nil?
49
+
50
+ @deployment_id = deployment_id
51
+ @issue_ids = issue_ids
52
+ @ticket_url = ticket_url
53
+ @additional_properties = additional_properties
54
+ end
55
+
56
+ # Creates an instance of the object from a hash.
57
+ def self.from_hash(hash)
58
+ return nil unless hash
59
+
60
+ # Extract variables from the hash.
61
+ deployment_id = hash.key?('deploymentId') ? hash['deploymentId'] : nil
62
+ issue_ids = hash.key?('issue_ids') ? hash['issue_ids'] : nil
63
+ ticket_url = hash.key?('ticket_url') ? hash['ticket_url'] : nil
64
+
65
+ # Create a new hash for additional properties, removing known properties.
66
+ new_hash = hash.reject { |k, _| names.value?(k) }
67
+
68
+ additional_properties = APIHelper.get_additional_properties(
69
+ new_hash, proc { |value| value }
70
+ )
71
+
72
+ # Create object from extracted values.
73
+ LinkTicketRequest.new(deployment_id: deployment_id,
74
+ issue_ids: issue_ids,
75
+ ticket_url: ticket_url,
76
+ additional_properties: additional_properties)
77
+ end
78
+
79
+ # Provides a human-readable string representation of the object.
80
+ def to_s
81
+ class_name = self.class.name.split('::').last
82
+ "<#{class_name} deployment_id: #{@deployment_id}, issue_ids: #{@issue_ids}, ticket_url:"\
83
+ " #{@ticket_url}, additional_properties: #{@additional_properties}>"
84
+ end
85
+
86
+ # Provides a debugging-friendly string with detailed object information.
87
+ def inspect
88
+ class_name = self.class.name.split('::').last
89
+ "<#{class_name} deployment_id: #{@deployment_id.inspect}, issue_ids: #{@issue_ids.inspect},"\
90
+ " ticket_url: #{@ticket_url.inspect}, additional_properties: #{@additional_properties}>"
91
+ end
92
+ end
93
+ end