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,91 @@
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 ecosystem (e.g. npm, pypi, etc). | value | description |
8
+ # |-------|---------------| | no_package_manager | | | npm | | | pypi | | |
9
+ # gomod | | | cargo | | | maven | | | gem | | | composer | | | nuget | |
10
+ # | pub | | | swiftpm | | | hex | | | cocoapods | | | mix | | | opam | |
11
+ class Ecosystem
12
+ ECOSYSTEM = [
13
+ # TODO: Write general description for NO_PACKAGE_MANAGER
14
+ NO_PACKAGE_MANAGER = 'no_package_manager'.freeze,
15
+
16
+ # TODO: Write general description for NPM
17
+ NPM = 'npm'.freeze,
18
+
19
+ # TODO: Write general description for PYPI
20
+ PYPI = 'pypi'.freeze,
21
+
22
+ # TODO: Write general description for GOMOD
23
+ GOMOD = 'gomod'.freeze,
24
+
25
+ # TODO: Write general description for CARGO
26
+ CARGO = 'cargo'.freeze,
27
+
28
+ # TODO: Write general description for MAVEN
29
+ MAVEN = 'maven'.freeze,
30
+
31
+ # TODO: Write general description for GEM
32
+ GEM = 'gem'.freeze,
33
+
34
+ # TODO: Write general description for COMPOSER
35
+ COMPOSER = 'composer'.freeze,
36
+
37
+ # TODO: Write general description for NUGET
38
+ NUGET = 'nuget'.freeze,
39
+
40
+ # TODO: Write general description for PUB
41
+ PUB = 'pub'.freeze,
42
+
43
+ # TODO: Write general description for SWIFTPM
44
+ SWIFTPM = 'swiftpm'.freeze,
45
+
46
+ # TODO: Write general description for HEX
47
+ HEX = 'hex'.freeze,
48
+
49
+ # TODO: Write general description for COCOAPODS
50
+ COCOAPODS = 'cocoapods'.freeze,
51
+
52
+ # TODO: Write general description for MIX
53
+ MIX = 'mix'.freeze,
54
+
55
+ # TODO: Write general description for OPAM
56
+ OPAM = 'opam'.freeze
57
+ ].freeze
58
+
59
+ def self.validate(value)
60
+ return false if value.nil?
61
+
62
+ ECOSYSTEM.include?(value)
63
+ end
64
+
65
+ def self.from_value(value, default_value = NO_PACKAGE_MANAGER)
66
+ return default_value if value.nil?
67
+
68
+ str = value.to_s.strip
69
+
70
+ case str.downcase
71
+ when 'no_package_manager' then NO_PACKAGE_MANAGER
72
+ when 'npm' then NPM
73
+ when 'pypi' then PYPI
74
+ when 'gomod' then GOMOD
75
+ when 'cargo' then CARGO
76
+ when 'maven' then MAVEN
77
+ when 'gem' then GEM
78
+ when 'composer' then COMPOSER
79
+ when 'nuget' then NUGET
80
+ when 'pub' then PUB
81
+ when 'swiftpm' then SWIFTPM
82
+ when 'hex' then HEX
83
+ when 'cocoapods' then COCOAPODS
84
+ when 'mix' then MIX
85
+ when 'opam' then OPAM
86
+ else
87
+ default_value
88
+ end
89
+ end
90
+ end
91
+ end
@@ -0,0 +1,92 @@
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
+ # The ecosystem the dependency is in (e.g. pypi, npm, etc). | value |
8
+ # description | |-------|---------------| | no_package_manager | | | npm | |
9
+ # | pypi | | | gomod | | | cargo | | | maven | | | gem | | | composer |
10
+ # | | nuget | | | pub | | | swiftpm | | | hex | | | cocoapods | | | mix |
11
+ # | | opam | |
12
+ class Ecosystem1
13
+ ECOSYSTEM1 = [
14
+ # TODO: Write general description for NO_PACKAGE_MANAGER
15
+ NO_PACKAGE_MANAGER = 'no_package_manager'.freeze,
16
+
17
+ # TODO: Write general description for NPM
18
+ NPM = 'npm'.freeze,
19
+
20
+ # TODO: Write general description for PYPI
21
+ PYPI = 'pypi'.freeze,
22
+
23
+ # TODO: Write general description for GOMOD
24
+ GOMOD = 'gomod'.freeze,
25
+
26
+ # TODO: Write general description for CARGO
27
+ CARGO = 'cargo'.freeze,
28
+
29
+ # TODO: Write general description for MAVEN
30
+ MAVEN = 'maven'.freeze,
31
+
32
+ # TODO: Write general description for GEM
33
+ GEM = 'gem'.freeze,
34
+
35
+ # TODO: Write general description for COMPOSER
36
+ COMPOSER = 'composer'.freeze,
37
+
38
+ # TODO: Write general description for NUGET
39
+ NUGET = 'nuget'.freeze,
40
+
41
+ # TODO: Write general description for PUB
42
+ PUB = 'pub'.freeze,
43
+
44
+ # TODO: Write general description for SWIFTPM
45
+ SWIFTPM = 'swiftpm'.freeze,
46
+
47
+ # TODO: Write general description for HEX
48
+ HEX = 'hex'.freeze,
49
+
50
+ # TODO: Write general description for COCOAPODS
51
+ COCOAPODS = 'cocoapods'.freeze,
52
+
53
+ # TODO: Write general description for MIX
54
+ MIX = 'mix'.freeze,
55
+
56
+ # TODO: Write general description for OPAM
57
+ OPAM = 'opam'.freeze
58
+ ].freeze
59
+
60
+ def self.validate(value)
61
+ return false if value.nil?
62
+
63
+ ECOSYSTEM1.include?(value)
64
+ end
65
+
66
+ def self.from_value(value, default_value = NO_PACKAGE_MANAGER)
67
+ return default_value if value.nil?
68
+
69
+ str = value.to_s.strip
70
+
71
+ case str.downcase
72
+ when 'no_package_manager' then NO_PACKAGE_MANAGER
73
+ when 'npm' then NPM
74
+ when 'pypi' then PYPI
75
+ when 'gomod' then GOMOD
76
+ when 'cargo' then CARGO
77
+ when 'maven' then MAVEN
78
+ when 'gem' then GEM
79
+ when 'composer' then COMPOSER
80
+ when 'nuget' then NUGET
81
+ when 'pub' then PUB
82
+ when 'swiftpm' then SWIFTPM
83
+ when 'hex' then HEX
84
+ when 'cocoapods' then COCOAPODS
85
+ when 'mix' then MIX
86
+ when 'opam' then OPAM
87
+ else
88
+ default_value
89
+ end
90
+ end
91
+ end
92
+ end
@@ -0,0 +1,76 @@
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
+ # Ecosystem of the package
8
+ class Ecosystem2
9
+ ECOSYSTEM2 = [
10
+ # TODO: Write general description for NO_PACKAGE_MANAGER
11
+ NO_PACKAGE_MANAGER = 'no_package_manager'.freeze,
12
+
13
+ # TODO: Write general description for NPM
14
+ NPM = 'npm'.freeze,
15
+
16
+ # TODO: Write general description for PYPI
17
+ PYPI = 'pypi'.freeze,
18
+
19
+ # TODO: Write general description for GOMOD
20
+ GOMOD = 'gomod'.freeze,
21
+
22
+ # TODO: Write general description for CARGO
23
+ CARGO = 'cargo'.freeze,
24
+
25
+ # TODO: Write general description for MAVEN
26
+ MAVEN = 'maven'.freeze,
27
+
28
+ # TODO: Write general description for GEM
29
+ GEM = 'gem'.freeze,
30
+
31
+ # TODO: Write general description for COMPOSER
32
+ COMPOSER = 'composer'.freeze,
33
+
34
+ # TODO: Write general description for NUGET
35
+ NUGET = 'nuget'.freeze,
36
+
37
+ # TODO: Write general description for PUB
38
+ PUB = 'pub'.freeze,
39
+
40
+ # TODO: Write general description for SWIFTPM
41
+ SWIFTPM = 'swiftpm'.freeze,
42
+
43
+ # TODO: Write general description for HEX
44
+ HEX = 'hex'.freeze
45
+ ].freeze
46
+
47
+ def self.validate(value)
48
+ return false if value.nil?
49
+
50
+ ECOSYSTEM2.include?(value)
51
+ end
52
+
53
+ def self.from_value(value, default_value = NO_PACKAGE_MANAGER)
54
+ return default_value if value.nil?
55
+
56
+ str = value.to_s.strip
57
+
58
+ case str.downcase
59
+ when 'no_package_manager' then NO_PACKAGE_MANAGER
60
+ when 'npm' then NPM
61
+ when 'pypi' then PYPI
62
+ when 'gomod' then GOMOD
63
+ when 'cargo' then CARGO
64
+ when 'maven' then MAVEN
65
+ when 'gem' then GEM
66
+ when 'composer' then COMPOSER
67
+ when 'nuget' then NUGET
68
+ when 'pub' then PUB
69
+ when 'swiftpm' then SWIFTPM
70
+ when 'hex' then HEX
71
+ else
72
+ default_value
73
+ end
74
+ end
75
+ end
76
+ end
@@ -0,0 +1,72 @@
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
+ # EndpointReference Model.
8
+ class EndpointReference < BaseModel
9
+ SKIP = Object.new
10
+ private_constant :SKIP
11
+
12
+ # URL that the reference is pointing to.
13
+ # @return [String]
14
+ attr_accessor :url
15
+
16
+ # A mapping from model property names to API property names.
17
+ def self.names
18
+ @_hash = {} if @_hash.nil?
19
+ @_hash['url'] = 'url'
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(url:, additional_properties: nil)
34
+ # Add additional model properties to the instance
35
+ additional_properties = {} if additional_properties.nil?
36
+
37
+ @url = url
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
+ url = hash.key?('url') ? hash['url'] : nil
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
+ EndpointReference.new(url: url,
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} url: #{@url}, 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} url: #{@url.inspect}, additional_properties: #{@additional_properties}>"
70
+ end
71
+ end
72
+ end
@@ -0,0 +1,45 @@
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 EPSS probability (likelihood of exploit). Only applies for sca
8
+ # findings.
9
+ class EpssProbability
10
+ EPSS_PROBABILITY = [
11
+ # TODO: Write general description for LOW
12
+ LOW = 'low'.freeze,
13
+
14
+ # TODO: Write general description for MEDIUM
15
+ MEDIUM = 'medium'.freeze,
16
+
17
+ # TODO: Write general description for HIGH
18
+ HIGH = 'high'.freeze,
19
+
20
+ # TODO: Write general description for NONE
21
+ NONE = 'none'.freeze
22
+ ].freeze
23
+
24
+ def self.validate(value)
25
+ return false if value.nil?
26
+
27
+ EPSS_PROBABILITY.include?(value)
28
+ end
29
+
30
+ def self.from_value(value, default_value = LOW)
31
+ return default_value if value.nil?
32
+
33
+ str = value.to_s.strip
34
+
35
+ case str.downcase
36
+ when 'low' then LOW
37
+ when 'medium' then MEDIUM
38
+ when 'high' then HIGH
39
+ when 'none' then NONE
40
+ else
41
+ default_value
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,95 @@
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
+ # The score assigned by FIRST.org's Exploitation Probability Scoring System
8
+ class EpssScore < BaseModel
9
+ SKIP = Object.new
10
+ private_constant :SKIP
11
+
12
+ # This EPSS score's percentile among all EPSS scores, from 0 to 1
13
+ # @return [Float]
14
+ attr_accessor :percentile
15
+
16
+ # The explotation probability, from 0 to 1
17
+ # @return [Float]
18
+ attr_accessor :score
19
+
20
+ # A mapping from model property names to API property names.
21
+ def self.names
22
+ @_hash = {} if @_hash.nil?
23
+ @_hash['percentile'] = 'percentile'
24
+ @_hash['score'] = 'score'
25
+ @_hash
26
+ end
27
+
28
+ # An array for optional fields
29
+ def self.optionals
30
+ %w[
31
+ percentile
32
+ score
33
+ ]
34
+ end
35
+
36
+ # An array for nullable fields
37
+ def self.nullables
38
+ []
39
+ end
40
+
41
+ def initialize(percentile: SKIP, score: SKIP, additional_properties: nil)
42
+ # Add additional model properties to the instance
43
+ additional_properties = {} if additional_properties.nil?
44
+
45
+ @percentile = percentile unless percentile == SKIP
46
+ @score = score unless score == SKIP
47
+ @additional_properties = additional_properties
48
+ end
49
+
50
+ # Creates an instance of the object from a hash.
51
+ def self.from_hash(hash)
52
+ return nil unless hash
53
+
54
+ # Extract variables from the hash.
55
+ percentile = hash.key?('percentile') ? hash['percentile'] : SKIP
56
+ score = hash.key?('score') ? hash['score'] : SKIP
57
+
58
+ # Create a new hash for additional properties, removing known properties.
59
+ new_hash = hash.reject { |k, _| names.value?(k) }
60
+
61
+ additional_properties = APIHelper.get_additional_properties(
62
+ new_hash, proc { |value| value }
63
+ )
64
+
65
+ # Create object from extracted values.
66
+ EpssScore.new(percentile: percentile,
67
+ score: score,
68
+ additional_properties: additional_properties)
69
+ end
70
+
71
+ # Validates an instance of the object from a given value.
72
+ # @param [EpssScore | Hash] The value against the validation is performed.
73
+ def self.validate(value)
74
+ return true if value.instance_of? self
75
+
76
+ return false unless value.instance_of? Hash
77
+
78
+ true
79
+ end
80
+
81
+ # Provides a human-readable string representation of the object.
82
+ def to_s
83
+ class_name = self.class.name.split('::').last
84
+ "<#{class_name} percentile: #{@percentile}, score: #{@score}, additional_properties:"\
85
+ " #{@additional_properties}>"
86
+ end
87
+
88
+ # Provides a debugging-friendly string with detailed object information.
89
+ def inspect
90
+ class_name = self.class.name.split('::').last
91
+ "<#{class_name} percentile: #{@percentile.inspect}, score: #{@score.inspect},"\
92
+ " additional_properties: #{@additional_properties}>"
93
+ end
94
+ end
95
+ end
@@ -0,0 +1,50 @@
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 exposure (reachability type). Only applies for sca findings.
8
+ # Reachability is the ability of an attacker to access a vulnerability in a
9
+ # system.
10
+ class Exposures
11
+ EXPOSURES = [
12
+ # TODO: Write general description for REACHABLE
13
+ REACHABLE = 'reachable'.freeze,
14
+
15
+ # TODO: Write general description for ALWAYS_REACHABLE
16
+ ALWAYS_REACHABLE = 'always_reachable'.freeze,
17
+
18
+ # TODO: Write general description for CONDITIONALLY_REACHABLE
19
+ CONDITIONALLY_REACHABLE = 'conditionally_reachable'.freeze,
20
+
21
+ # TODO: Write general description for UNREACHABLE
22
+ UNREACHABLE = 'unreachable'.freeze,
23
+
24
+ # TODO: Write general description for UNKNOWN
25
+ UNKNOWN = 'unknown'.freeze
26
+ ].freeze
27
+
28
+ def self.validate(value)
29
+ return false if value.nil?
30
+
31
+ EXPOSURES.include?(value)
32
+ end
33
+
34
+ def self.from_value(value, default_value = REACHABLE)
35
+ return default_value if value.nil?
36
+
37
+ str = value.to_s.strip
38
+
39
+ case str.downcase
40
+ when 'reachable' then REACHABLE
41
+ when 'always_reachable' then ALWAYS_REACHABLE
42
+ when 'conditionally_reachable' then CONDITIONALLY_REACHABLE
43
+ when 'unreachable' then UNREACHABLE
44
+ when 'unknown' then UNKNOWN
45
+ else
46
+ default_value
47
+ end
48
+ end
49
+ end
50
+ 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
+ # List of exposures or reachability types to filter by. If not specified,
8
+ # returns findings across all exposures. This filter is applicable when
9
+ # `issue_type=sca` is specified. Valid values: reachable, always_reachable,
10
+ # conditionally_reachable, unreachable, unknown
11
+ class Exposures2
12
+ EXPOSURES2 = [
13
+ # TODO: Write general description for REACHABLE
14
+ REACHABLE = 'reachable'.freeze,
15
+
16
+ # TODO: Write general description for ALWAYS_REACHABLE
17
+ ALWAYS_REACHABLE = 'always_reachable'.freeze,
18
+
19
+ # TODO: Write general description for CONDITIONALLY_REACHABLE
20
+ CONDITIONALLY_REACHABLE = 'conditionally_reachable'.freeze,
21
+
22
+ # TODO: Write general description for UNREACHABLE
23
+ UNREACHABLE = 'unreachable'.freeze,
24
+
25
+ # TODO: Write general description for UNKNOWN
26
+ UNKNOWN = 'unknown'.freeze
27
+ ].freeze
28
+
29
+ def self.validate(value)
30
+ return false if value.nil?
31
+
32
+ EXPOSURES2.include?(value)
33
+ end
34
+
35
+ def self.from_value(value, default_value = REACHABLE)
36
+ return default_value if value.nil?
37
+
38
+ str = value.to_s.strip
39
+
40
+ case str.downcase
41
+ when 'reachable' then REACHABLE
42
+ when 'always_reachable' then ALWAYS_REACHABLE
43
+ when 'conditionally_reachable' then CONDITIONALLY_REACHABLE
44
+ when 'unreachable' then UNREACHABLE
45
+ when 'unknown' then UNKNOWN
46
+ else
47
+ default_value
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,116 @@
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
+ # External ticket associated with finding
8
+ class ExternalTicket < BaseModel
9
+ SKIP = Object.new
10
+ private_constant :SKIP
11
+
12
+ # Identifier of the external ticket
13
+ # @return [String]
14
+ attr_accessor :external_slug
15
+
16
+ # External ticket id
17
+ # @return [Integer]
18
+ attr_accessor :id
19
+
20
+ # Semgrep issue ids that are linked to this external ticket
21
+ # @return [Array[Integer]]
22
+ attr_accessor :linked_issue_ids
23
+
24
+ # URL of the external ticket
25
+ # @return [String]
26
+ attr_accessor :url
27
+
28
+ # A mapping from model property names to API property names.
29
+ def self.names
30
+ @_hash = {} if @_hash.nil?
31
+ @_hash['external_slug'] = 'external_slug'
32
+ @_hash['id'] = 'id'
33
+ @_hash['linked_issue_ids'] = 'linked_issue_ids'
34
+ @_hash['url'] = 'url'
35
+ @_hash
36
+ end
37
+
38
+ # An array for optional fields
39
+ def self.optionals
40
+ %w[
41
+ external_slug
42
+ id
43
+ linked_issue_ids
44
+ url
45
+ ]
46
+ end
47
+
48
+ # An array for nullable fields
49
+ def self.nullables
50
+ []
51
+ end
52
+
53
+ def initialize(external_slug: SKIP, id: SKIP, linked_issue_ids: SKIP,
54
+ url: SKIP, additional_properties: nil)
55
+ # Add additional model properties to the instance
56
+ additional_properties = {} if additional_properties.nil?
57
+
58
+ @external_slug = external_slug unless external_slug == SKIP
59
+ @id = id unless id == SKIP
60
+ @linked_issue_ids = linked_issue_ids unless linked_issue_ids == SKIP
61
+ @url = url unless url == SKIP
62
+ @additional_properties = additional_properties
63
+ end
64
+
65
+ # Creates an instance of the object from a hash.
66
+ def self.from_hash(hash)
67
+ return nil unless hash
68
+
69
+ # Extract variables from the hash.
70
+ external_slug = hash.key?('external_slug') ? hash['external_slug'] : SKIP
71
+ id = hash.key?('id') ? hash['id'] : SKIP
72
+ linked_issue_ids =
73
+ hash.key?('linked_issue_ids') ? hash['linked_issue_ids'] : SKIP
74
+ url = hash.key?('url') ? hash['url'] : SKIP
75
+
76
+ # Create a new hash for additional properties, removing known properties.
77
+ new_hash = hash.reject { |k, _| names.value?(k) }
78
+
79
+ additional_properties = APIHelper.get_additional_properties(
80
+ new_hash, proc { |value| value }
81
+ )
82
+
83
+ # Create object from extracted values.
84
+ ExternalTicket.new(external_slug: external_slug,
85
+ id: id,
86
+ linked_issue_ids: linked_issue_ids,
87
+ url: url,
88
+ additional_properties: additional_properties)
89
+ end
90
+
91
+ # Validates an instance of the object from a given value.
92
+ # @param [ExternalTicket | Hash] The value against the validation is performed.
93
+ def self.validate(value)
94
+ return true if value.instance_of? self
95
+
96
+ return false unless value.instance_of? Hash
97
+
98
+ true
99
+ end
100
+
101
+ # Provides a human-readable string representation of the object.
102
+ def to_s
103
+ class_name = self.class.name.split('::').last
104
+ "<#{class_name} external_slug: #{@external_slug}, id: #{@id}, linked_issue_ids:"\
105
+ " #{@linked_issue_ids}, url: #{@url}, additional_properties: #{@additional_properties}>"
106
+ end
107
+
108
+ # Provides a debugging-friendly string with detailed object information.
109
+ def inspect
110
+ class_name = self.class.name.split('::').last
111
+ "<#{class_name} external_slug: #{@external_slug.inspect}, id: #{@id.inspect},"\
112
+ " linked_issue_ids: #{@linked_issue_ids.inspect}, url: #{@url.inspect},"\
113
+ " additional_properties: #{@additional_properties}>"
114
+ end
115
+ end
116
+ end