apimatic-semgrep-sdk 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/LICENSE +28 -0
- data/README.md +205 -0
- data/bin/console +15 -0
- data/lib/semgrep_web_app/api_helper.rb +10 -0
- data/lib/semgrep_web_app/apis/base_api.rb +67 -0
- data/lib/semgrep_web_app/apis/deployments_service_api.rb +29 -0
- data/lib/semgrep_web_app/apis/findings_service_api.rb +107 -0
- data/lib/semgrep_web_app/apis/misc_service_api.rb +47 -0
- data/lib/semgrep_web_app/apis/policies_service_api.rb +97 -0
- data/lib/semgrep_web_app/apis/projects_service_api.rb +238 -0
- data/lib/semgrep_web_app/apis/scans_service_api.rb +65 -0
- data/lib/semgrep_web_app/apis/secrets_service_api.rb +55 -0
- data/lib/semgrep_web_app/apis/supply_chain_service_api.rb +154 -0
- data/lib/semgrep_web_app/apis/ticketing_service_api.rb +144 -0
- data/lib/semgrep_web_app/apis/triage_service_api.rb +43 -0
- data/lib/semgrep_web_app/client.rb +136 -0
- data/lib/semgrep_web_app/configuration.rb +178 -0
- data/lib/semgrep_web_app/exceptions/api_exception.rb +21 -0
- data/lib/semgrep_web_app/http/api_response.rb +19 -0
- data/lib/semgrep_web_app/http/auth/semgrep_admin_jwt.rb +53 -0
- data/lib/semgrep_web_app/http/auth/semgrep_jwt.rb +53 -0
- data/lib/semgrep_web_app/http/auth/semgrep_web_token.rb +53 -0
- data/lib/semgrep_web_app/http/http_call_back.rb +10 -0
- data/lib/semgrep_web_app/http/http_method_enum.rb +10 -0
- data/lib/semgrep_web_app/http/http_request.rb +10 -0
- data/lib/semgrep_web_app/http/http_response.rb +10 -0
- data/lib/semgrep_web_app/http/proxy_settings.rb +22 -0
- data/lib/semgrep_web_app/logging/configuration/api_logging_configuration.rb +186 -0
- data/lib/semgrep_web_app/logging/sdk_logger.rb +17 -0
- data/lib/semgrep_web_app/models/add_project_tags_request.rb +96 -0
- data/lib/semgrep_web_app/models/add_project_tags_response.rb +73 -0
- data/lib/semgrep_web_app/models/ai_powered_scan_finding.rb +426 -0
- data/lib/semgrep_web_app/models/ai_sast_findings.rb +85 -0
- data/lib/semgrep_web_app/models/api_v1_deployments_findings_response.rb +87 -0
- data/lib/semgrep_web_app/models/assistant.rb +127 -0
- data/lib/semgrep_web_app/models/autofix.rb +98 -0
- data/lib/semgrep_web_app/models/autotriage.rb +98 -0
- data/lib/semgrep_web_app/models/autotriage_verdict.rb +36 -0
- data/lib/semgrep_web_app/models/autotriage_verdict2.rb +38 -0
- data/lib/semgrep_web_app/models/base_model.rb +110 -0
- data/lib/semgrep_web_app/models/bulk_triage_request.rb +393 -0
- data/lib/semgrep_web_app/models/bulk_triage_response.rb +83 -0
- data/lib/semgrep_web_app/models/click_to_fix_failure.rb +95 -0
- data/lib/semgrep_web_app/models/click_to_fix_pr.rb +95 -0
- data/lib/semgrep_web_app/models/click_to_fix_pr_state.rb +38 -0
- data/lib/semgrep_web_app/models/component.rb +95 -0
- data/lib/semgrep_web_app/models/confidence.rb +42 -0
- data/lib/semgrep_web_app/models/confidence1.rb +40 -0
- data/lib/semgrep_web_app/models/confidence2.rb +40 -0
- data/lib/semgrep_web_app/models/confidence3.rb +40 -0
- data/lib/semgrep_web_app/models/confidence7.rb +41 -0
- data/lib/semgrep_web_app/models/confidence8.rb +42 -0
- data/lib/semgrep_web_app/models/create_sbom_export_request.rb +176 -0
- data/lib/semgrep_web_app/models/create_sbom_export_response.rb +74 -0
- data/lib/semgrep_web_app/models/create_ticket_request.rb +393 -0
- data/lib/semgrep_web_app/models/cyclonedx_version.rb +48 -0
- data/lib/semgrep_web_app/models/delete_project_response.rb +74 -0
- data/lib/semgrep_web_app/models/delete_project_tags_response.rb +73 -0
- data/lib/semgrep_web_app/models/deployment.rb +102 -0
- data/lib/semgrep_web_app/models/ecosystem.rb +91 -0
- data/lib/semgrep_web_app/models/ecosystem1.rb +92 -0
- data/lib/semgrep_web_app/models/ecosystem2.rb +76 -0
- data/lib/semgrep_web_app/models/endpoint_reference.rb +72 -0
- data/lib/semgrep_web_app/models/epss_probability.rb +45 -0
- data/lib/semgrep_web_app/models/epss_score.rb +95 -0
- data/lib/semgrep_web_app/models/exposures.rb +50 -0
- data/lib/semgrep_web_app/models/exposures2.rb +51 -0
- data/lib/semgrep_web_app/models/external_ticket.rb +116 -0
- data/lib/semgrep_web_app/models/finding_location.rb +126 -0
- data/lib/semgrep_web_app/models/finding_repository.rb +95 -0
- data/lib/semgrep_web_app/models/finding_rule.rb +158 -0
- data/lib/semgrep_web_app/models/fix_recommendation.rb +95 -0
- data/lib/semgrep_web_app/models/float_range.rb +85 -0
- data/lib/semgrep_web_app/models/format.rb +27 -0
- data/lib/semgrep_web_app/models/found_dependency.rb +128 -0
- data/lib/semgrep_web_app/models/get_project_response.rb +73 -0
- data/lib/semgrep_web_app/models/get_sbom_export_response.rb +100 -0
- data/lib/semgrep_web_app/models/guidance.rb +98 -0
- data/lib/semgrep_web_app/models/issue_type.rb +40 -0
- data/lib/semgrep_web_app/models/issue_type1.rb +40 -0
- data/lib/semgrep_web_app/models/issue_type2.rb +42 -0
- data/lib/semgrep_web_app/models/license_policy_settings.rb +42 -0
- data/lib/semgrep_web_app/models/link_ticket_request.rb +93 -0
- data/lib/semgrep_web_app/models/list_dependencies_request.rb +108 -0
- data/lib/semgrep_web_app/models/list_dependencies_response.rb +102 -0
- data/lib/semgrep_web_app/models/list_findings_response.rb +100 -0
- data/lib/semgrep_web_app/models/list_lockfiles_for_dependencies_request.rb +118 -0
- data/lib/semgrep_web_app/models/list_lockfiles_for_dependencies_response.rb +103 -0
- data/lib/semgrep_web_app/models/list_project.rb +145 -0
- data/lib/semgrep_web_app/models/list_projects_response.rb +82 -0
- data/lib/semgrep_web_app/models/list_repositories_for_dependencies_request.rb +107 -0
- data/lib/semgrep_web_app/models/list_repositories_for_dependencies_response.rb +103 -0
- data/lib/semgrep_web_app/models/managed_scan_config.rb +85 -0
- data/lib/semgrep_web_app/models/metadata_component_type.rb +101 -0
- data/lib/semgrep_web_app/models/mode.rb +48 -0
- data/lib/semgrep_web_app/models/new_triage_reason.rb +48 -0
- data/lib/semgrep_web_app/models/new_triage_state.rb +48 -0
- data/lib/semgrep_web_app/models/policy.rb +118 -0
- data/lib/semgrep_web_app/models/policy_mode.rb +48 -0
- data/lib/semgrep_web_app/models/policy_mode1.rb +40 -0
- data/lib/semgrep_web_app/models/policy_mode3.rb +51 -0
- data/lib/semgrep_web_app/models/policy_reference.rb +105 -0
- data/lib/semgrep_web_app/models/product_type.rb +38 -0
- data/lib/semgrep_web_app/models/products.rb +46 -0
- data/lib/semgrep_web_app/models/project.rb +157 -0
- data/lib/semgrep_web_app/models/protos_ai_v1_autotriage.rb +154 -0
- data/lib/semgrep_web_app/models/protos_ai_v1_autotriage_feedback.rb +98 -0
- data/lib/semgrep_web_app/models/protos_common_v1_review_comment.rb +90 -0
- data/lib/semgrep_web_app/models/protos_openapi_v1_create_ticket_response.rb +123 -0
- data/lib/semgrep_web_app/models/protos_openapi_v1_create_ticket_response_ticket_creation_failed.rb +85 -0
- data/lib/semgrep_web_app/models/protos_openapi_v1_create_ticket_response_ticket_creation_skipped.rb +85 -0
- data/lib/semgrep_web_app/models/protos_openapi_v1_create_ticket_response_ticket_creation_success.rb +106 -0
- data/lib/semgrep_web_app/models/protos_openapi_v1_delete_ticket_response.rb +76 -0
- data/lib/semgrep_web_app/models/protos_openapi_v1_diff_scan.rb +75 -0
- data/lib/semgrep_web_app/models/protos_openapi_v1_full_scan.rb +75 -0
- data/lib/semgrep_web_app/models/protos_openapi_v1_get_bootstrap_sms_vpc_response.rb +130 -0
- data/lib/semgrep_web_app/models/protos_openapi_v1_get_scan_response.rb +168 -0
- data/lib/semgrep_web_app/models/protos_openapi_v1_get_scan_response_scan_meta.rb +256 -0
- data/lib/semgrep_web_app/models/protos_openapi_v1_link_ticket_response.rb +119 -0
- data/lib/semgrep_web_app/models/protos_openapi_v1_list_deployments_response.rb +85 -0
- data/lib/semgrep_web_app/models/protos_openapi_v1_list_policies_response.rb +84 -0
- data/lib/semgrep_web_app/models/protos_openapi_v1_list_policy_rules_response.rb +104 -0
- data/lib/semgrep_web_app/models/protos_openapi_v1_list_secrets_path_response.rb +104 -0
- data/lib/semgrep_web_app/models/protos_openapi_v1_search_scans_response.rb +94 -0
- data/lib/semgrep_web_app/models/protos_openapi_v1_unlink_ticket_response.rb +77 -0
- data/lib/semgrep_web_app/models/protos_openapi_v1_update_policy_response.rb +88 -0
- data/lib/semgrep_web_app/models/protos_sca_v1_code_location.rb +144 -0
- data/lib/semgrep_web_app/models/protos_sca_v1_dependency.rb +87 -0
- data/lib/semgrep_web_app/models/protos_sca_v1_dependency_filter.rb +199 -0
- data/lib/semgrep_web_app/models/protos_sca_v1_found_dependency.rb +174 -0
- data/lib/semgrep_web_app/models/protos_sca_v1_lockfile_dependency_summary.rb +87 -0
- data/lib/semgrep_web_app/models/protos_sca_v1_package_filter.rb +124 -0
- data/lib/semgrep_web_app/models/protos_sca_v1_repository_dependency_summary.rb +111 -0
- data/lib/semgrep_web_app/models/protos_sca_v1_sbom_format_version.rb +109 -0
- data/lib/semgrep_web_app/models/protos_sca_v1_sbom_metadata_contact.rb +95 -0
- data/lib/semgrep_web_app/models/protos_sca_v1_sbom_metadata_supplier.rb +95 -0
- data/lib/semgrep_web_app/models/protos_scan_v1_scan_findings_counts.rb +105 -0
- data/lib/semgrep_web_app/models/protos_scan_v1_scan_public.rb +228 -0
- data/lib/semgrep_web_app/models/protos_secrets_v1_historical_info.rb +116 -0
- data/lib/semgrep_web_app/models/protos_secrets_v1_secrets_finding.rb +320 -0
- data/lib/semgrep_web_app/models/protos_secrets_v1_secrets_finding_repository.rb +121 -0
- data/lib/semgrep_web_app/models/protos_ticketing_v1_external_ticket.rb +106 -0
- data/lib/semgrep_web_app/models/rating.rb +38 -0
- data/lib/semgrep_web_app/models/reachability.rb +48 -0
- data/lib/semgrep_web_app/models/repository_visibility.rb +40 -0
- data/lib/semgrep_web_app/models/review_comment.rb +100 -0
- data/lib/semgrep_web_app/models/risk.rb +40 -0
- data/lib/semgrep_web_app/models/rule.rb +292 -0
- data/lib/semgrep_web_app/models/rule_explanation.rb +98 -0
- data/lib/semgrep_web_app/models/sast_finding.rb +426 -0
- data/lib/semgrep_web_app/models/sast_findings.rb +84 -0
- data/lib/semgrep_web_app/models/sbom_output_format.rb +37 -0
- data/lib/semgrep_web_app/models/sca_finding.rb +458 -0
- data/lib/semgrep_web_app/models/sca_findings.rb +85 -0
- data/lib/semgrep_web_app/models/scm_type.rb +70 -0
- data/lib/semgrep_web_app/models/search_scans_request.rb +202 -0
- data/lib/semgrep_web_app/models/severities.rb +44 -0
- data/lib/semgrep_web_app/models/severities2.rb +45 -0
- data/lib/semgrep_web_app/models/severity.rb +46 -0
- data/lib/semgrep_web_app/models/severity1.rb +45 -0
- data/lib/semgrep_web_app/models/severity4.rb +46 -0
- data/lib/semgrep_web_app/models/severity5.rb +48 -0
- data/lib/semgrep_web_app/models/source.rb +42 -0
- data/lib/semgrep_web_app/models/state.rb +42 -0
- data/lib/semgrep_web_app/models/status.rb +55 -0
- data/lib/semgrep_web_app/models/status1.rb +52 -0
- data/lib/semgrep_web_app/models/status3.rb +44 -0
- data/lib/semgrep_web_app/models/status6.rb +55 -0
- data/lib/semgrep_web_app/models/status7.rb +59 -0
- data/lib/semgrep_web_app/models/status8.rb +61 -0
- data/lib/semgrep_web_app/models/status9.rb +55 -0
- data/lib/semgrep_web_app/models/statuses.rb +63 -0
- data/lib/semgrep_web_app/models/toggle_project_managed_scan_request.rb +108 -0
- data/lib/semgrep_web_app/models/toggle_project_managed_scan_response.rb +73 -0
- data/lib/semgrep_web_app/models/transitivities.rb +40 -0
- data/lib/semgrep_web_app/models/transitivities2.rb +42 -0
- data/lib/semgrep_web_app/models/transitivity.rb +41 -0
- data/lib/semgrep_web_app/models/transitivity1.rb +42 -0
- data/lib/semgrep_web_app/models/transitivity2.rb +40 -0
- data/lib/semgrep_web_app/models/triage_reason.rb +48 -0
- data/lib/semgrep_web_app/models/triage_reasons.rb +48 -0
- data/lib/semgrep_web_app/models/triage_reasons2.rb +50 -0
- data/lib/semgrep_web_app/models/triage_state.rb +54 -0
- data/lib/semgrep_web_app/models/unlink_ticket_request.rb +83 -0
- data/lib/semgrep_web_app/models/update_policy_request.rb +113 -0
- data/lib/semgrep_web_app/models/update_project_request.rb +121 -0
- data/lib/semgrep_web_app/models/update_project_response.rb +73 -0
- data/lib/semgrep_web_app/models/usage.rb +99 -0
- data/lib/semgrep_web_app/models/validation_state.rb +45 -0
- data/lib/semgrep_web_app/models/validation_state2.rb +47 -0
- data/lib/semgrep_web_app/models/validation_state3.rb +48 -0
- data/lib/semgrep_web_app/models/verdict.rb +41 -0
- data/lib/semgrep_web_app/models/verdict1.rb +38 -0
- data/lib/semgrep_web_app/models/visibility.rb +42 -0
- data/lib/semgrep_web_app/utilities/date_time_helper.rb +11 -0
- data/lib/semgrep_web_app/utilities/file_wrapper.rb +28 -0
- data/lib/semgrep_web_app/utilities/union_type_lookup.rb +34 -0
- data/lib/semgrep_web_app.rb +245 -0
- metadata +283 -0
|
@@ -0,0 +1,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
|