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,43 @@
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
+ # TriageServiceApi
8
+ class TriageServiceApi < BaseApi
9
+ # Bulk triage your findings. You can select the findings to triage by
10
+ # passing in a list of finding IDs as issue_ids, or by passing in filter
11
+ # query parameters. You must specify the issue_type of the findings you want
12
+ # to bulk triage. One of new_triage_state or new_note is required. If
13
+ # specifying a new_triage_reason, you must also use
14
+ # new_triage_state=ignored. Some filters only apply for findings associated
15
+ # with a given product.
16
+ # @param [String] deployment_slug Required parameter: TODO: type description
17
+ # here
18
+ # @param [BulkTriageRequest] body Required parameter: TODO: type description
19
+ # here
20
+ # @return [ApiResponse] Complete http response with raw body and status code.
21
+ def triage_service_bulk_triage(deployment_slug,
22
+ body)
23
+ @api_call
24
+ .request(new_request_builder(HttpMethodEnum::POST,
25
+ '/api/v1/deployments/{deploymentSlug}/triage',
26
+ Server::SEMGREP)
27
+ .template_param(new_parameter(deployment_slug, key: 'deploymentSlug')
28
+ .is_required(true)
29
+ .should_encode(true))
30
+ .header_param(new_parameter('application/json', key: 'Content-Type'))
31
+ .body_param(new_parameter(body)
32
+ .is_required(true))
33
+ .header_param(new_parameter('application/json', key: 'accept'))
34
+ .body_serializer(proc do |param| param.to_json unless param.nil? end)
35
+ .auth(Single.new('SemgrepWebToken')))
36
+ .response(new_response_handler
37
+ .deserializer(APIHelper.method(:custom_type_deserializer))
38
+ .deserialize_into(BulkTriageResponse.method(:from_hash))
39
+ .is_api_response(true))
40
+ .execute
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,136 @@
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
+ # semgrep_web_app client class.
8
+ class Client
9
+ include CoreLibrary
10
+ attr_reader :config, :auth_managers
11
+
12
+ def user_agent_detail
13
+ config.user_agent_detail
14
+ end
15
+
16
+ # Access to deployments_service controller.
17
+ # @return [DeploymentsServiceApi] Returns the controller instance.
18
+ def deployments_service
19
+ @deployments_service ||= DeploymentsServiceApi.new @global_configuration
20
+ end
21
+
22
+ # Access to findings_service controller.
23
+ # @return [FindingsServiceApi] Returns the controller instance.
24
+ def findings_service
25
+ @findings_service ||= FindingsServiceApi.new @global_configuration
26
+ end
27
+
28
+ # Access to misc_service controller.
29
+ # @return [MiscServiceApi] Returns the controller instance.
30
+ def misc_service
31
+ @misc_service ||= MiscServiceApi.new @global_configuration
32
+ end
33
+
34
+ # Access to policies_service controller.
35
+ # @return [PoliciesServiceApi] Returns the controller instance.
36
+ def policies_service
37
+ @policies_service ||= PoliciesServiceApi.new @global_configuration
38
+ end
39
+
40
+ # Access to projects_service controller.
41
+ # @return [ProjectsServiceApi] Returns the controller instance.
42
+ def projects_service
43
+ @projects_service ||= ProjectsServiceApi.new @global_configuration
44
+ end
45
+
46
+ # Access to scans_service controller.
47
+ # @return [ScansServiceApi] Returns the controller instance.
48
+ def scans_service
49
+ @scans_service ||= ScansServiceApi.new @global_configuration
50
+ end
51
+
52
+ # Access to secrets_service controller.
53
+ # @return [SecretsServiceApi] Returns the controller instance.
54
+ def secrets_service
55
+ @secrets_service ||= SecretsServiceApi.new @global_configuration
56
+ end
57
+
58
+ # Access to supply_chain_service controller.
59
+ # @return [SupplyChainServiceApi] Returns the controller instance.
60
+ def supply_chain_service
61
+ @supply_chain_service ||= SupplyChainServiceApi.new @global_configuration
62
+ end
63
+
64
+ # Access to ticketing_service controller.
65
+ # @return [TicketingServiceApi] Returns the controller instance.
66
+ def ticketing_service
67
+ @ticketing_service ||= TicketingServiceApi.new @global_configuration
68
+ end
69
+
70
+ # Access to triage_service controller.
71
+ # @return [TriageServiceApi] Returns the controller instance.
72
+ def triage_service
73
+ @triage_service ||= TriageServiceApi.new @global_configuration
74
+ end
75
+
76
+ def initialize(
77
+ connection: nil, adapter: :net_http_persistent, timeout: 30,
78
+ max_retries: 0, retry_interval: 1, backoff_factor: 2,
79
+ retry_statuses: [408, 413, 429, 500, 502, 503, 504, 521, 522, 524],
80
+ retry_methods: %i[get put], http_callback: nil, proxy_settings: nil,
81
+ logging_configuration: nil, environment: Environment::PRODUCTION,
82
+ semgrep_admin_jwt_credentials: nil, semgrep_jwt_credentials: nil,
83
+ semgrep_web_token_credentials: nil, config: nil
84
+ )
85
+ @config = if config.nil?
86
+ Configuration.new(
87
+ connection: connection, adapter: adapter, timeout: timeout,
88
+ max_retries: max_retries, retry_interval: retry_interval,
89
+ backoff_factor: backoff_factor,
90
+ retry_statuses: retry_statuses,
91
+ retry_methods: retry_methods, http_callback: http_callback,
92
+ proxy_settings: proxy_settings,
93
+ logging_configuration: logging_configuration,
94
+ environment: environment,
95
+ semgrep_admin_jwt_credentials: semgrep_admin_jwt_credentials,
96
+ semgrep_jwt_credentials: semgrep_jwt_credentials,
97
+ semgrep_web_token_credentials: semgrep_web_token_credentials
98
+ )
99
+ else
100
+ config
101
+ end
102
+ user_agent_params = BaseApi.user_agent_parameters
103
+
104
+ @global_configuration = GlobalConfiguration.new(client_configuration: @config)
105
+ .base_uri_executor(@config.method(:get_base_uri))
106
+ .global_errors(BaseApi::GLOBAL_ERRORS)
107
+ .user_agent(BaseApi.user_agent,
108
+ agent_parameters: user_agent_params)
109
+
110
+ initialize_auth_managers(@global_configuration)
111
+ @global_configuration = @global_configuration.auth_managers(@auth_managers)
112
+ end
113
+
114
+ # Initializes the auth managers hash used for authenticating API calls.
115
+ # @param [GlobalConfiguration] global_config The global configuration of the SDK)
116
+ def initialize_auth_managers(global_config)
117
+ @auth_managers = {}
118
+ http_client_config = global_config.client_configuration
119
+ %w[SemgrepAdminJWT SemgrepJWT SemgrepWebToken].each { |auth| @auth_managers[auth] = nil }
120
+ @auth_managers['SemgrepAdminJWT'] = SemgrepAdminJwt.new(
121
+ http_client_config.semgrep_admin_jwt_credentials
122
+ )
123
+ @auth_managers['SemgrepJWT'] = SemgrepJwt.new(http_client_config.semgrep_jwt_credentials)
124
+ @auth_managers['SemgrepWebToken'] = SemgrepWebToken.new(
125
+ http_client_config.semgrep_web_token_credentials
126
+ )
127
+ end
128
+
129
+ # Creates a client directly from environment variables.
130
+ def self.from_env(**overrides)
131
+ default_config = Configuration.build_default_config_from_env
132
+ new_config = default_config.clone_with(**overrides)
133
+ new(config: new_config)
134
+ end
135
+ end
136
+ end
@@ -0,0 +1,178 @@
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
+ # An enum for SDK environments.
8
+ class Environment
9
+ ENVIRONMENT = [
10
+ PRODUCTION = 'Production'.freeze
11
+ ].freeze
12
+
13
+ # Converts a string or symbol into a valid Environment constant.
14
+ def self.from_value(value, default_value = PRODUCTION)
15
+ return default_value if value.nil?
16
+
17
+ default_value
18
+ end
19
+ end
20
+
21
+ # An enum for API servers.
22
+ class Server
23
+ SERVER = [
24
+ SEMGREP = 'semgrep'.freeze
25
+ ].freeze
26
+
27
+ # Converts a string or symbol into a valid Server constant.
28
+ def self.from_value(value, default_value = SEMGREP)
29
+ return default_value if value.nil?
30
+
31
+ default_value
32
+ end
33
+ end
34
+
35
+ # All configuration including auth info and base URI for the API access
36
+ # are configured in this class.
37
+ class Configuration < CoreLibrary::HttpClientConfiguration
38
+ # The attribute readers for properties.
39
+ attr_reader :environment, :semgrep_admin_jwt_credentials,
40
+ :semgrep_jwt_credentials, :semgrep_web_token_credentials
41
+
42
+ class << self
43
+ attr_reader :environments
44
+ end
45
+
46
+ def initialize(
47
+ connection: nil, adapter: :net_http_persistent, timeout: 30,
48
+ max_retries: 0, retry_interval: 1, backoff_factor: 2,
49
+ retry_statuses: [408, 413, 429, 500, 502, 503, 504, 521, 522, 524],
50
+ retry_methods: %i[get put], http_callback: nil, proxy_settings: nil,
51
+ logging_configuration: nil, environment: Environment::PRODUCTION,
52
+ semgrep_admin_jwt_credentials: nil, semgrep_jwt_credentials: nil,
53
+ semgrep_web_token_credentials: nil
54
+ )
55
+ super connection: connection, adapter: adapter, timeout: timeout,
56
+ max_retries: max_retries, retry_interval: retry_interval,
57
+ backoff_factor: backoff_factor, retry_statuses: retry_statuses,
58
+ retry_methods: retry_methods, http_callback: http_callback,
59
+ proxy_settings: proxy_settings,
60
+ logging_configuration: logging_configuration
61
+
62
+ # Current API environment
63
+ @environment = String(environment)
64
+
65
+ # The object holding OAuth 2 Bearer token credentials
66
+ @semgrep_admin_jwt_credentials = semgrep_admin_jwt_credentials
67
+
68
+ # The object holding OAuth 2 Bearer token credentials
69
+ @semgrep_jwt_credentials = semgrep_jwt_credentials
70
+
71
+ # The object holding OAuth 2 Bearer token credentials
72
+ @semgrep_web_token_credentials = semgrep_web_token_credentials
73
+
74
+ # The Http Client to use for making requests.
75
+ set_http_client CoreLibrary::FaradayClient.new(self)
76
+ end
77
+
78
+ def clone_with(connection: nil, adapter: nil, timeout: nil,
79
+ max_retries: nil, retry_interval: nil, backoff_factor: nil,
80
+ retry_statuses: nil, retry_methods: nil, http_callback: nil,
81
+ proxy_settings: nil, logging_configuration: nil,
82
+ environment: nil, semgrep_admin_jwt_credentials: nil,
83
+ semgrep_jwt_credentials: nil,
84
+ semgrep_web_token_credentials: nil)
85
+ connection ||= self.connection
86
+ adapter ||= self.adapter
87
+ timeout ||= self.timeout
88
+ max_retries ||= self.max_retries
89
+ retry_interval ||= self.retry_interval
90
+ backoff_factor ||= self.backoff_factor
91
+ retry_statuses ||= self.retry_statuses
92
+ retry_methods ||= self.retry_methods
93
+ http_callback ||= self.http_callback
94
+ proxy_settings ||= self.proxy_settings
95
+ logging_configuration ||= self.logging_configuration
96
+ environment ||= self.environment
97
+ semgrep_admin_jwt_credentials ||= self.semgrep_admin_jwt_credentials
98
+ semgrep_jwt_credentials ||= self.semgrep_jwt_credentials
99
+ semgrep_web_token_credentials ||= self.semgrep_web_token_credentials
100
+
101
+ Configuration.new(
102
+ connection: connection, adapter: adapter, timeout: timeout,
103
+ max_retries: max_retries, retry_interval: retry_interval,
104
+ backoff_factor: backoff_factor, retry_statuses: retry_statuses,
105
+ retry_methods: retry_methods, http_callback: http_callback,
106
+ proxy_settings: proxy_settings,
107
+ logging_configuration: logging_configuration, environment: environment,
108
+ semgrep_admin_jwt_credentials: semgrep_admin_jwt_credentials,
109
+ semgrep_jwt_credentials: semgrep_jwt_credentials,
110
+ semgrep_web_token_credentials: semgrep_web_token_credentials
111
+ )
112
+ end
113
+
114
+
115
+ # All the environments the SDK can run in.
116
+ ENVIRONMENTS = {
117
+ Environment::PRODUCTION => {
118
+ Server::SEMGREP => 'https://semgrep.dev'
119
+ }
120
+ }.freeze
121
+
122
+ # Generates the appropriate base URI for the environment and the server.
123
+ # @param [Configuration::Server] server The server enum for which the base URI is
124
+ # required.
125
+ # @return [String] The base URI.
126
+ def get_base_uri(server = Server::SEMGREP)
127
+ ENVIRONMENTS[environment][server].clone
128
+ end
129
+
130
+ # Builds a Configuration instance using environment variables.
131
+ def self.build_default_config_from_env
132
+ # === Core environment ===
133
+ environment = Environment.from_value(ENV.fetch('ENVIRONMENT', 'production'))
134
+ timeout = (ENV['TIMEOUT'] || 30).to_f
135
+ max_retries = (ENV['MAX_RETRIES'] || 0).to_i
136
+ retry_interval = (ENV['RETRY_INTERVAL'] || 1).to_f
137
+ backoff_factor = (ENV['BACKOFF_FACTOR'] || 2).to_f
138
+ retry_statuses = ENV.fetch('RETRY_STATUSES',
139
+ '[408, 413, 429, 500, 502, 503, 504, 521, 522, 524]').gsub(/[\[\]]/, '')
140
+ .split(',')
141
+ .map(&:strip)
142
+ .map do |item|
143
+ item.match?(/\A\d+\z/) ? item.to_i : item.downcase
144
+ end
145
+ retry_methods = ENV.fetch('RETRY_METHODS', '%i[get put]').gsub(/[\[\]]/, '')
146
+ .split(',')
147
+ .map(&:strip)
148
+ .map do |item|
149
+ item.match?(/\A\d+\z/) ? item.to_i : item.downcase
150
+ end
151
+
152
+ # === Authentication credentials ===
153
+ semgrep_admin_jwt_credentials = SemgrepAdminJwtCredentials.from_env
154
+ semgrep_jwt_credentials = SemgrepJwtCredentials.from_env
155
+ semgrep_web_token_credentials = SemgrepWebTokenCredentials.from_env
156
+
157
+ # === Proxy settings ===
158
+ proxy_settings = ProxySettings.from_env
159
+ # === Logging Configuration ===
160
+ logging_configuration = LoggingConfiguration.from_env if LoggingConfiguration.any_logging_configured?
161
+
162
+ Configuration.new(
163
+ environment: environment,
164
+ timeout: timeout,
165
+ max_retries: max_retries,
166
+ retry_interval: retry_interval,
167
+ backoff_factor: backoff_factor,
168
+ retry_statuses: retry_statuses,
169
+ retry_methods: retry_methods,
170
+ semgrep_admin_jwt_credentials: semgrep_admin_jwt_credentials,
171
+ semgrep_jwt_credentials: semgrep_jwt_credentials,
172
+ semgrep_web_token_credentials: semgrep_web_token_credentials,
173
+ proxy_settings: proxy_settings,
174
+ logging_configuration: logging_configuration
175
+ )
176
+ end
177
+ end
178
+ end
@@ -0,0 +1,21 @@
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
+ # Class for exceptions when there is a network error, status code error, etc.
8
+ class APIException < CoreLibrary::ApiException
9
+ # Provides a human-readable string representation of the object.
10
+ def to_s
11
+ class_name = self.class.name.split('::').last
12
+ "<#{class_name} status_code: #{@response_code}, reason: #{@reason}>"
13
+ end
14
+
15
+ # Provides a debugging-friendly string with detailed object information.
16
+ def inspect
17
+ class_name = self.class.name.split('::').last
18
+ "<#{class_name} status_code: #{@response_code.inspect}, reason: #{@reason.inspect}>"
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,19 @@
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
+ # Http response received.
8
+ class ApiResponse < CoreLibrary::ApiResponse
9
+ # The constructor
10
+ # @param [HttpResponse] http_response The original, raw response from the api.
11
+ # @param [Object] data The data field specified for the response.
12
+ # @param [Array<String>] errors Any errors returned by the server.
13
+ def initialize(http_response,
14
+ data: nil,
15
+ errors: nil)
16
+ super
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,53 @@
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
+ # Utility class for OAuth 2 authorization and token management.
8
+ class SemgrepAdminJwt < CoreLibrary::HeaderAuth
9
+ include CoreLibrary
10
+ # Display error message on occurrence of authentication failure.
11
+ # @returns [String] The oAuth error message.
12
+ def error_message
13
+ 'SemgrepAdminJwt: access_token is undefined.'
14
+ end
15
+
16
+ # Initialization constructor.
17
+ def initialize(semgrep_admin_jwt_credentials)
18
+ auth_params = {}
19
+ @_access_token = semgrep_admin_jwt_credentials.access_token unless
20
+ semgrep_admin_jwt_credentials.nil? || semgrep_admin_jwt_credentials.access_token.nil?
21
+ auth_params[:Authorization] = "Bearer #{@_access_token}" unless @_access_token.nil?
22
+
23
+ super auth_params
24
+ end
25
+ end
26
+
27
+ # Data class for SemgrepAdminJwtCredentials.
28
+ class SemgrepAdminJwtCredentials
29
+ attr_reader :access_token
30
+
31
+ def initialize(access_token:)
32
+ raise ArgumentError, 'access_token cannot be nil' if access_token.nil?
33
+
34
+ @access_token = access_token
35
+ end
36
+
37
+ def self.from_env
38
+ access_token = ENV['SEMGREP_ADMIN_JWT_ACCESS_TOKEN']
39
+ all_nil = [
40
+ access_token
41
+ ].all?(&:nil?)
42
+ return nil if all_nil
43
+
44
+ new(access_token: access_token)
45
+ end
46
+
47
+ def clone_with(access_token: nil)
48
+ access_token ||= self.access_token
49
+
50
+ SemgrepAdminJwtCredentials.new(access_token: access_token)
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,53 @@
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
+ # Utility class for OAuth 2 authorization and token management.
8
+ class SemgrepJwt < CoreLibrary::HeaderAuth
9
+ include CoreLibrary
10
+ # Display error message on occurrence of authentication failure.
11
+ # @returns [String] The oAuth error message.
12
+ def error_message
13
+ 'SemgrepJwt: access_token is undefined.'
14
+ end
15
+
16
+ # Initialization constructor.
17
+ def initialize(semgrep_jwt_credentials)
18
+ auth_params = {}
19
+ @_access_token = semgrep_jwt_credentials.access_token unless
20
+ semgrep_jwt_credentials.nil? || semgrep_jwt_credentials.access_token.nil?
21
+ auth_params[:Authorization] = "Bearer #{@_access_token}" unless @_access_token.nil?
22
+
23
+ super auth_params
24
+ end
25
+ end
26
+
27
+ # Data class for SemgrepJwtCredentials.
28
+ class SemgrepJwtCredentials
29
+ attr_reader :access_token
30
+
31
+ def initialize(access_token:)
32
+ raise ArgumentError, 'access_token cannot be nil' if access_token.nil?
33
+
34
+ @access_token = access_token
35
+ end
36
+
37
+ def self.from_env
38
+ access_token = ENV['SEMGREP_JWT_ACCESS_TOKEN']
39
+ all_nil = [
40
+ access_token
41
+ ].all?(&:nil?)
42
+ return nil if all_nil
43
+
44
+ new(access_token: access_token)
45
+ end
46
+
47
+ def clone_with(access_token: nil)
48
+ access_token ||= self.access_token
49
+
50
+ SemgrepJwtCredentials.new(access_token: access_token)
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,53 @@
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
+ # Utility class for OAuth 2 authorization and token management.
8
+ class SemgrepWebToken < CoreLibrary::HeaderAuth
9
+ include CoreLibrary
10
+ # Display error message on occurrence of authentication failure.
11
+ # @returns [String] The oAuth error message.
12
+ def error_message
13
+ 'SemgrepWebToken: access_token is undefined.'
14
+ end
15
+
16
+ # Initialization constructor.
17
+ def initialize(semgrep_web_token_credentials)
18
+ auth_params = {}
19
+ @_access_token = semgrep_web_token_credentials.access_token unless
20
+ semgrep_web_token_credentials.nil? || semgrep_web_token_credentials.access_token.nil?
21
+ auth_params[:Authorization] = "Bearer #{@_access_token}" unless @_access_token.nil?
22
+
23
+ super auth_params
24
+ end
25
+ end
26
+
27
+ # Data class for SemgrepWebTokenCredentials.
28
+ class SemgrepWebTokenCredentials
29
+ attr_reader :access_token
30
+
31
+ def initialize(access_token:)
32
+ raise ArgumentError, 'access_token cannot be nil' if access_token.nil?
33
+
34
+ @access_token = access_token
35
+ end
36
+
37
+ def self.from_env
38
+ access_token = ENV['SEMGREP_WEB_TOKEN_ACCESS_TOKEN']
39
+ all_nil = [
40
+ access_token
41
+ ].all?(&:nil?)
42
+ return nil if all_nil
43
+
44
+ new(access_token: access_token)
45
+ end
46
+
47
+ def clone_with(access_token: nil)
48
+ access_token ||= self.access_token
49
+
50
+ SemgrepWebTokenCredentials.new(access_token: access_token)
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,10 @@
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
+ # HttpCallBack allows defining callables for pre and post API calls.
8
+ class HttpCallBack < CoreLibrary::HttpCallback
9
+ end
10
+ end
@@ -0,0 +1,10 @@
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
+ # HTTP Methods Enumeration.
8
+ class HttpMethodEnum < CoreLibrary::HttpMethod
9
+ end
10
+ end
@@ -0,0 +1,10 @@
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
+ # Represents a single Http Request.
8
+ class HttpRequest < CoreLibrary::HttpRequest
9
+ end
10
+ end
@@ -0,0 +1,10 @@
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
+ # Http response received.
8
+ class HttpResponse < CoreLibrary::HttpResponse
9
+ end
10
+ end
@@ -0,0 +1,22 @@
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
+ ##
8
+ # ProxySettings encapsulates HTTP proxy configuration for Faraday,
9
+ # including optional basic authentication.
10
+ #
11
+ class ProxySettings < CoreLibrary::ProxySettings
12
+ def self.from_env
13
+ address = ENV['PROXY_ADDRESS']
14
+ port = ENV['PROXY_PORT']
15
+ username = ENV['PROXY_USERNAME']
16
+ password = ENV['PROXY_PASSWORD']
17
+ return nil if address.nil? || address.strip.empty?
18
+
19
+ new(address: address, port: port, username: username, password: password)
20
+ end
21
+ end
22
+ end