emass_client 3.10.1 → 3.22.0

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 (208) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +174 -131
  3. data/lib/emass_client/api/artifacts_api.rb +47 -52
  4. data/lib/emass_client/api/artifacts_export_api.rb +5 -5
  5. data/lib/emass_client/api/cac_api.rb +12 -12
  6. data/lib/emass_client/api/cloud_resource_results_api.rb +83 -9
  7. data/lib/emass_client/api/cmmc_assessment_dashboards_api.rb +314 -0
  8. data/lib/emass_client/api/cmmc_assessments_api.rb +5 -5
  9. data/lib/emass_client/api/coast_guard_system_fisma_metrics_dashboard_api.rb +95 -0
  10. data/lib/emass_client/api/container_scan_results_api.rb +83 -9
  11. data/lib/emass_client/api/controls_api.rb +17 -17
  12. data/lib/emass_client/api/device_scan_results_api.rb +112 -0
  13. data/lib/emass_client/api/hardware_baseline_api.rb +313 -0
  14. data/lib/emass_client/api/milestones_api.rb +18 -18
  15. data/lib/emass_client/api/organization_migration_status_dashboard_api.rb +95 -0
  16. data/lib/emass_client/api/pac_api.rb +16 -16
  17. data/lib/emass_client/api/poam_api.rb +47 -44
  18. data/lib/emass_client/api/registration_api.rb +5 -5
  19. data/lib/emass_client/api/software_baseline_api.rb +313 -0
  20. data/lib/emass_client/api/static_code_scans_api.rb +9 -9
  21. data/lib/emass_client/api/system_application_findings_dashboards_api.rb +168 -0
  22. data/lib/emass_client/api/system_artifacts_dashboards_api.rb +168 -0
  23. data/lib/emass_client/api/system_associations_dashboard_api.rb +95 -0
  24. data/lib/emass_client/api/system_atciatc_dashboard_api.rb +95 -0
  25. data/lib/emass_client/api/system_conmon_integration_status_dashboard_api.rb +95 -0
  26. data/lib/emass_client/api/system_connectivity_ccsd_dashboards_api.rb +168 -0
  27. data/lib/emass_client/api/system_critical_assets_dashboard_api.rb +95 -0
  28. data/lib/emass_client/api/system_device_findings_dashboards_api.rb +168 -0
  29. data/lib/emass_client/api/system_fisma_metrics_dashboard_api.rb +95 -0
  30. data/lib/emass_client/api/system_hardware_dashboards_api.rb +168 -0
  31. data/lib/emass_client/api/system_migration_status_dashboard_api.rb +95 -0
  32. data/lib/emass_client/api/system_poam_dashboards_api.rb +168 -0
  33. data/lib/emass_client/api/system_ports_protocols_dashboards_api.rb +168 -0
  34. data/lib/emass_client/api/system_privacy_dashboard_api.rb +95 -0
  35. data/lib/emass_client/api/system_questionnaire_dashboards_api.rb +168 -0
  36. data/lib/emass_client/api/system_roles_api.rb +8 -16
  37. data/lib/emass_client/api/system_security_controls_dashboards_api.rb +241 -0
  38. data/lib/emass_client/api/system_sensor_hardware_dashboards_api.rb +168 -0
  39. data/lib/emass_client/api/system_sensor_software_dashboards_api.rb +241 -0
  40. data/lib/emass_client/api/system_software_dashboards_api.rb +168 -0
  41. data/lib/emass_client/api/system_status_dashboard_api.rb +95 -0
  42. data/lib/emass_client/api/system_terms_conditions_dashboards_api.rb +168 -0
  43. data/lib/emass_client/api/system_vulnerability_dashboard_api.rb +95 -0
  44. data/lib/emass_client/api/system_workflows_dashboards_api.rb +241 -0
  45. data/lib/emass_client/api/systems_api.rb +22 -28
  46. data/lib/emass_client/api/test_api.rb +5 -5
  47. data/lib/emass_client/api/test_results_api.rb +19 -16
  48. data/lib/emass_client/api/user_system_assignments_dashboard_api.rb +95 -0
  49. data/lib/emass_client/api/va_system_dashboards_api.rb +679 -0
  50. data/lib/emass_client/api/vaombfisma_dashboard_api.rb +95 -0
  51. data/lib/emass_client/api/workflow_definitions_api.rb +9 -9
  52. data/lib/emass_client/api/workflow_instances_api.rb +17 -14
  53. data/lib/emass_client/api_client.rb +46 -32
  54. data/lib/emass_client/api_error.rb +4 -4
  55. data/lib/emass_client/configuration.rb +42 -12
  56. data/lib/emass_client/models/{response201.rb → api_rule_failed.rb} +29 -28
  57. data/lib/emass_client/models/{response490_meta.rb → api_rule_failed_meta.rb} +34 -29
  58. data/lib/emass_client/models/artifacts_ids.rb +221 -0
  59. data/lib/emass_client/models/artifacts_optional_fields.rb +298 -0
  60. data/lib/emass_client/models/artifacts_read_only_fields.rb +255 -0
  61. data/lib/emass_client/models/artifacts_request_delete_body_inner.rb +26 -25
  62. data/lib/emass_client/models/artifacts_required_fields.rb +252 -0
  63. data/lib/emass_client/models/artifacts_response_del.rb +26 -25
  64. data/lib/emass_client/models/artifacts_response_del_data_inner.rb +26 -25
  65. data/lib/emass_client/models/artifacts_response_get.rb +27 -26
  66. data/lib/emass_client/models/{artifacts_get.rb → artifacts_response_get_data_inner.rb} +91 -70
  67. data/lib/emass_client/models/artifacts_response_put_post.rb +26 -25
  68. data/lib/emass_client/models/artifacts_response_put_post_data_inner.rb +40 -30
  69. data/lib/emass_client/models/{response403.rb → bad_request.rb} +29 -28
  70. data/lib/emass_client/models/{response400_meta.rb → bad_request_meta.rb} +34 -29
  71. data/lib/emass_client/models/cac_get.rb +26 -25
  72. data/lib/emass_client/models/cac_response_get.rb +26 -25
  73. data/lib/emass_client/models/cac_response_post.rb +26 -25
  74. data/lib/emass_client/models/cac_response_post_data_inner.rb +40 -30
  75. data/lib/emass_client/models/{poam_response_post.rb → cloud_resources_delete.rb} +29 -28
  76. data/lib/emass_client/models/cloud_resources_delete_body_inner.rb +221 -0
  77. data/lib/emass_client/models/{cloud_resources_post.rb → cloud_resources_post_delete.rb} +42 -32
  78. data/lib/emass_client/models/cloud_resources_response_post.rb +27 -26
  79. data/lib/emass_client/models/cmmc_get.rb +96 -140
  80. data/lib/emass_client/models/cmmc_response_get.rb +26 -25
  81. data/lib/emass_client/models/connectivity_ccsd.rb +26 -25
  82. data/lib/emass_client/models/container_resources_delete_body_inner.rb +221 -0
  83. data/lib/emass_client/models/{containers_resources_post.rb → containers_resources_post_delete.rb} +42 -32
  84. data/lib/emass_client/models/{poam_response_delete.rb → containers_response_delete.rb} +29 -28
  85. data/lib/emass_client/models/containers_response_post.rb +27 -26
  86. data/lib/emass_client/models/controls_conditional_fields.rb +357 -0
  87. data/lib/emass_client/models/controls_ids.rb +221 -0
  88. data/lib/emass_client/models/controls_optional_fields.rb +471 -0
  89. data/lib/emass_client/models/controls_put.rb +40 -30
  90. data/lib/emass_client/models/controls_read_only_fields.rb +277 -0
  91. data/lib/emass_client/models/controls_required_fields.rb +295 -0
  92. data/lib/emass_client/models/controls_response_get.rb +27 -26
  93. data/lib/emass_client/models/{controls_get.rb → controls_response_get_data_inner.rb} +210 -166
  94. data/lib/emass_client/models/controls_response_put.rb +26 -25
  95. data/lib/emass_client/models/{response400.rb → created.rb} +29 -28
  96. data/lib/emass_client/models/{response201_meta.rb → created_meta.rb} +34 -29
  97. data/lib/emass_client/models/definition_transitions.rb +26 -25
  98. data/lib/emass_client/models/{success200_response.rb → device_scan_results_response_post.rb} +29 -28
  99. data/lib/emass_client/models/{success200_response_data_inner.rb → device_scan_results_response_post_data_inner.rb} +72 -33
  100. data/lib/emass_client/models/{response401.rb → forbidden.rb} +29 -28
  101. data/lib/emass_client/models/{response403_meta.rb → forbidden_meta.rb} +34 -29
  102. data/lib/emass_client/models/get_system_status_details200_response.rb +240 -0
  103. data/lib/emass_client/models/hw_baseline_conditional_fields.rb +244 -0
  104. data/lib/emass_client/models/hw_baseline_ids.rb +221 -0
  105. data/lib/emass_client/models/hw_baseline_optional_fields.rb +354 -0
  106. data/lib/emass_client/models/hw_baseline_read_only_fields.rb +222 -0
  107. data/lib/emass_client/models/hw_baseline_request_delete_body_inner.rb +220 -0
  108. data/lib/emass_client/models/hw_baseline_required_fields.rb +221 -0
  109. data/lib/emass_client/models/hw_baseline_response_delete.rb +231 -0
  110. data/lib/emass_client/models/hw_baseline_response_delete_data_inner.rb +274 -0
  111. data/lib/emass_client/models/{dashboard_mock_response.rb → hw_baseline_response_get.rb} +30 -29
  112. data/lib/emass_client/models/hw_baseline_response_get_data_inner.rb +429 -0
  113. data/lib/emass_client/models/hw_baseline_response_post_put.rb +231 -0
  114. data/lib/emass_client/models/hw_baseline_response_post_put_data_inner.rb +274 -0
  115. data/lib/emass_client/models/{instances_transitions.rb → instance_transitions.rb} +28 -27
  116. data/lib/emass_client/models/internal_server_error.rb +220 -0
  117. data/lib/emass_client/models/{response500_meta.rb → internal_server_error_meta.rb} +34 -29
  118. data/lib/emass_client/models/length_required.rb +220 -0
  119. data/lib/emass_client/models/{response411_meta.rb → length_required_meta.rb} +34 -29
  120. data/lib/emass_client/models/method_not_allowed.rb +220 -0
  121. data/lib/emass_client/models/{response405_meta.rb → method_not_allowed_meta.rb} +34 -29
  122. data/lib/emass_client/models/milestone_response_delete.rb +231 -0
  123. data/lib/emass_client/models/milestone_response_get.rb +26 -25
  124. data/lib/emass_client/models/milestone_response_get_milestone.rb +26 -25
  125. data/lib/emass_client/models/milestone_response_post.rb +26 -25
  126. data/lib/emass_client/models/milestone_response_put.rb +26 -25
  127. data/lib/emass_client/models/milestones_fields.rb +222 -0
  128. data/lib/emass_client/models/milestones_get.rb +55 -32
  129. data/lib/emass_client/models/milestones_put_post_delete.rb +40 -30
  130. data/lib/emass_client/models/milestones_request_delete_body_inner.rb +26 -25
  131. data/lib/emass_client/models/milestones_required_post.rb +35 -53
  132. data/lib/emass_client/models/milestones_required_post_milestones_inner.rb +265 -0
  133. data/lib/emass_client/models/milestones_required_put.rb +35 -68
  134. data/lib/emass_client/models/{ssps.rb → milestones_required_put_milestones_inner.rb} +101 -52
  135. data/lib/emass_client/models/{response404.rb → not_found.rb} +34 -29
  136. data/lib/emass_client/models/pac_get.rb +29 -37
  137. data/lib/emass_client/models/pac_post.rb +40 -30
  138. data/lib/emass_client/models/pac_response_get.rb +26 -25
  139. data/lib/emass_client/models/pac_response_post.rb +26 -25
  140. data/lib/emass_client/models/{dashboard_mock_response_pagination.rb → pagination.rb} +47 -46
  141. data/lib/emass_client/models/poam_conditional_fields.rb +402 -0
  142. data/lib/emass_client/models/poam_ids.rb +241 -0
  143. data/lib/emass_client/models/poam_optional_fields.rb +409 -0
  144. data/lib/emass_client/models/poam_post_put_del.rb +40 -30
  145. data/lib/emass_client/models/poam_read_only_fields.rb +332 -0
  146. data/lib/emass_client/models/poam_request_delete_body_inner.rb +26 -25
  147. data/lib/emass_client/models/poam_required_fields.rb +305 -0
  148. data/lib/emass_client/models/poam_response_get_poams.rb +27 -26
  149. data/lib/emass_client/models/poam_response_get_poams_data.rb +824 -0
  150. data/lib/emass_client/models/poam_response_get_systems.rb +27 -26
  151. data/lib/emass_client/models/poam_response_get_systems_data_inner.rb +824 -0
  152. data/lib/emass_client/models/{poam_response_put.rb → poam_response_post_put_delete.rb} +28 -27
  153. data/lib/emass_client/models/register.rb +26 -25
  154. data/lib/emass_client/models/register_data.rb +26 -25
  155. data/lib/emass_client/models/register_user_request_post_body.rb +38 -25
  156. data/lib/emass_client/models/response200.rb +32 -27
  157. data/lib/emass_client/models/role_category.rb +26 -25
  158. data/lib/emass_client/models/roles.rb +26 -25
  159. data/lib/emass_client/models/stage.rb +26 -25
  160. data/lib/emass_client/models/{static_code_application.rb → static_code_application_post.rb} +28 -27
  161. data/lib/emass_client/models/static_code_post.rb +40 -30
  162. data/lib/emass_client/models/static_code_request_post_body.rb +27 -26
  163. data/lib/emass_client/models/static_code_request_post_body_application.rb +26 -25
  164. data/lib/emass_client/models/static_code_response_post.rb +26 -25
  165. data/lib/emass_client/models/sw_baseline_conditional_fields.rb +222 -0
  166. data/lib/emass_client/models/sw_baseline_ids.rb +221 -0
  167. data/lib/emass_client/models/sw_baseline_optional_fields.rb +563 -0
  168. data/lib/emass_client/models/sw_baseline_read_only_fields.rb +222 -0
  169. data/lib/emass_client/models/sw_baseline_request_delete_body_inner.rb +220 -0
  170. data/lib/emass_client/models/sw_baseline_required_fields.rb +241 -0
  171. data/lib/emass_client/models/sw_baseline_response_delete.rb +231 -0
  172. data/lib/emass_client/models/sw_baseline_response_delete_data_inner.rb +274 -0
  173. data/lib/emass_client/models/sw_baseline_response_get.rb +240 -0
  174. data/lib/emass_client/models/sw_baseline_response_get_data_inner.rb +624 -0
  175. data/lib/emass_client/models/sw_baseline_response_post_put.rb +231 -0
  176. data/lib/emass_client/models/sw_baseline_response_post_put_data_inner.rb +274 -0
  177. data/lib/emass_client/models/system_response.rb +26 -25
  178. data/lib/emass_client/models/system_roles_category_response.rb +26 -25
  179. data/lib/emass_client/models/system_roles_response.rb +26 -25
  180. data/lib/emass_client/models/system_roles_response_data_inner.rb +26 -25
  181. data/lib/emass_client/models/systems.rb +950 -113
  182. data/lib/emass_client/models/systems_response.rb +26 -25
  183. data/lib/emass_client/models/test.rb +26 -25
  184. data/lib/emass_client/models/test_data.rb +26 -25
  185. data/lib/emass_client/models/test_results_get.rb +37 -26
  186. data/lib/emass_client/models/test_results_post.rb +40 -30
  187. data/lib/emass_client/models/test_results_response_get.rb +26 -25
  188. data/lib/emass_client/models/test_results_response_post.rb +26 -25
  189. data/lib/emass_client/models/unauthorized.rb +220 -0
  190. data/lib/emass_client/models/{response401_meta.rb → unauthorized_meta.rb} +34 -29
  191. data/lib/emass_client/models/users.rb +26 -25
  192. data/lib/emass_client/models/workflow_definition_get.rb +26 -25
  193. data/lib/emass_client/models/workflow_definition_response_get.rb +26 -25
  194. data/lib/emass_client/models/workflow_instance_get.rb +40 -28
  195. data/lib/emass_client/models/workflow_instance_response_get.rb +26 -25
  196. data/lib/emass_client/models/workflow_instances_response_get.rb +27 -26
  197. data/lib/emass_client/models/workflow_instances_response_get_pagination.rb +26 -25
  198. data/lib/emass_client/version.rb +5 -5
  199. data/lib/emass_client.rb +112 -39
  200. metadata +116 -43
  201. data/lib/emass_client/api/dashboards_api.rb +0 -2139
  202. data/lib/emass_client/models/mock_object.rb +0 -343
  203. data/lib/emass_client/models/poam_get.rb +0 -683
  204. data/lib/emass_client/models/response405.rb +0 -219
  205. data/lib/emass_client/models/response411.rb +0 -219
  206. data/lib/emass_client/models/response490.rb +0 -219
  207. data/lib/emass_client/models/response500.rb +0 -219
  208. data/lib/emass_client/models/workflow_instances_get.rb +0 -342
@@ -0,0 +1,824 @@
1
+ =begin
2
+ #Enterprise Mission Assurance Support Service (eMASS)
3
+
4
+ #The eMASS Representational State Transfer (REST) Application Programming Interface (API) enables users to perform assessments and complete actions associated with system records. The eMASS API provides an interface for application to communicate eMASS Services. For information on how to register and use the eMASS API reference the [eMASS API Getting Started](eMASSGettingStarted.md). Additional information about eMASS can be obtain by contacting the National Industrial Security Program (NISP). Points of Contact are:
5
+
6
+ The version of the OpenAPI document: v3.22
7
+ Contact: disa.global.servicedesk.mbx.ma-ticket-request@mail.mil
8
+ Generated by: https://openapi-generator.tech
9
+ Generator version: 7.12.0-SNAPSHOT
10
+
11
+ =end
12
+
13
+ require 'date'
14
+ require 'time'
15
+
16
+ module EmassClient
17
+ class PoamResponseGetPoamsData
18
+ # [Required] Unique eMASS system identifier.
19
+ attr_accessor :system_id
20
+
21
+ # [Required] Unique item identifier
22
+ attr_accessor :poam_id
23
+
24
+ # [Required] Globally unique identifier for individual POA&M Items, seen on the front-end as ID.
25
+ attr_accessor :display_poam_id
26
+
27
+ # [Required] The POA&M status
28
+ attr_accessor :status
29
+
30
+ # [Required] Provide a description of the POA&M Item. 2000 Characters.
31
+ attr_accessor :vulnerability_description
32
+
33
+ # [Required] Include Source Identifying Vulnerability text. 2000 Characters.
34
+ attr_accessor :source_identifying_vulnerability
35
+
36
+ # [Required] Organization/Office represented. 100 Characters.
37
+ attr_accessor :poc_organization
38
+
39
+ # [Required] List of resources used. 250 Characters.
40
+ attr_accessor :resources
41
+
42
+ # [Required] If not specified, this field will be set to false because it does not accept a null value. VA only
43
+ attr_accessor :identified_in_cfo_audit_or_other_review
44
+
45
+ # [Read-Only] Unique identifier of the authorization term/condition linked to the POA&M Item.
46
+ attr_accessor :condition_id
47
+
48
+ # [Read-only] Indicates whether a test result is inherited.
49
+ attr_accessor :is_inherited
50
+
51
+ # [Read-Only] CCI associated with POA&M Item.
52
+ attr_accessor :cci
53
+
54
+ # [Read-Only] Values include the following options: (Not Approved,Under Review,Approved)
55
+ attr_accessor :review_status
56
+
57
+ # [Read-Only] Timestamp representing when the POA&M Item was entered into the database.
58
+ attr_accessor :created_date
59
+
60
+ # [Read-Only] Value returned for a POA&M Item with review status \"Approved\" and has a milestone with a scheduled completion date that extends beyond the POA&M Item's scheduled completion date.
61
+ attr_accessor :extension_date
62
+
63
+ # [Read-Only] Value returned for a POA&M Item with a review status of \"Approved\" and an unapproved milestone with a scheduled completion date that extends beyond the POA&M Item's scheduled completion date.
64
+ attr_accessor :pending_extension_date
65
+
66
+ # [Read-Only] Lists the filenames of any artifact files attached to the POA&M Item. Multiple values are separated by “; ”.
67
+ attr_accessor :artifacts
68
+
69
+ # [Optional] Unique identifier external to the eMASS application for use with associating POA&Ms. 100 Characters.
70
+ attr_accessor :external_uid
71
+
72
+ # [Optional] Control acronym associated with the POA&M Item. NIST SP 800-53 Revision 4 defined.
73
+ attr_accessor :control_acronym
74
+
75
+ # [Optional] The Security Control Assessment Procedure being associated with the POA&M Item.
76
+ attr_accessor :assessment_procedure
77
+
78
+ # [Optional] Security Checks that are associated with the POA&M.
79
+ attr_accessor :security_checks
80
+
81
+ # [Optional] Scan vulnerability ratting Values include the following options: (Very Low, Low, Moderate,High,Very High)
82
+ attr_accessor :raw_severity
83
+
84
+ # [Optional] Values include the following options (Very Low, Low, Moderate,High,Very High)
85
+ attr_accessor :relevance_of_threat
86
+
87
+ # [Optional] Values include the following options (Very Low, Low, Moderate,High,Very High)
88
+ attr_accessor :likelihood
89
+
90
+ # [Optional] Values include the following options (Very Low, Low, Moderate,High,Very High)
91
+ attr_accessor :impact
92
+
93
+ # [Optional] Include description of Security Control's impact.
94
+ attr_accessor :impact_description
95
+
96
+ # [Optional] Values include the following options (Very Low, Low, Moderate,High,Very High)
97
+ attr_accessor :residual_risk_level
98
+
99
+ # [Optional] Include recommendations. Character Limit = 2,000.
100
+ attr_accessor :recommendations
101
+
102
+ # [Optional] Include mitigation explanation. 2000 Characters.
103
+ attr_accessor :mitigations
104
+
105
+ # [Optional] Indicate the risk level expected after any proposed mitigations are implemented. Proposed mitigations should be appropriately documented as POA&M milestones. Navy only.
106
+ attr_accessor :resulting_residual_risk_level_after_proposed_mitigations
107
+
108
+ # [Optional] A predisposing condition is a condition existing within an organization, a mission or business process, enterprise architecture, information system/PIT, or environment of operation, which affects (i.e., increases or decreases) the likelihood that threat events, once initiated, result in adverse impacts. Navy only.
109
+ attr_accessor :predisposing_conditions
110
+
111
+ # [Optional] Describe the identified threat(s) and relevance to the information system. Navy only.
112
+ attr_accessor :threat_description
113
+
114
+ # [Optional] List any affected devices by hostname. If all devices in the information system are affected, state 'system' or 'all'. Navy only
115
+ attr_accessor :devices_affected
116
+
117
+ # [Conditional] First name of POC. 100 Characters.
118
+ attr_accessor :poc_first_name
119
+
120
+ # [Conditional] Last name of POC. 100 Characters.
121
+ attr_accessor :poc_last_name
122
+
123
+ # [Conditional] Email address of POC. 100 Characters.
124
+ attr_accessor :poc_email
125
+
126
+ # [Conditional] Phone number of POC (area code) ***-**** format. 100 Characters.
127
+ attr_accessor :poc_phone_number
128
+
129
+ # [Conditional] Required for approved items. Values include the following options: (Very Low, Low, Moderate,High,Very High)
130
+ attr_accessor :severity
131
+
132
+ # [Conditional] Required for ongoing and completed POA&M items. Unix time format.
133
+ attr_accessor :scheduled_completion_date
134
+
135
+ # [Conditional] Field is required for completed POA&M items. Unix time format.
136
+ attr_accessor :completion_date
137
+
138
+ # [Conditional] Field is required for completed and risk accepted POA&M items. 2000 Characters
139
+ attr_accessor :comments
140
+
141
+ # [Conditional] At least one of the following is required and must be completed for each POA&M Item: Personnel Resources-> Funded Base Hours Personnel Resources-> Unfunded Base Hours Non-Personnel Resources-> Funded Amount Non-Personnel Resources-> Unfunded Amount Displays numbers to the second decimal point (e.g., 100.00). VA only.
142
+ attr_accessor :personnel_resources_funded_base_hours
143
+
144
+ # [Conditional] Required if Personnel Resources: Funded Base Hours is populated. Only accepts values present in the field's lookup table (modifiable by eMASS System Admins). VA only.
145
+ attr_accessor :personnel_resources_cost_code
146
+
147
+ # [Conditional] At least one of the following is required and must be completed for each POA&M Item: Personnel Resources-> Funded Base Hours Personnel Resources-> Unfunded Base Hours Non-Personnel Resources-> Funded Amount Non-Personnel Resources-> Unfunded Amount Displays numbers to the second decimal point (e.g., 100.00). VA only.
148
+ attr_accessor :personnel_resources_unfunded_base_hours
149
+
150
+ # [Conditional] Required if Personnel Resources: Unfunded Base Hours is populated. Only accepts values present in the field's lookup table (modifiable by eMASS System Admins). VA only.
151
+ attr_accessor :personnel_resources_nonfunding_obstacle
152
+
153
+ # [Conditional] Required if the value \"Other\" is populated for the field Personnel Resources: Non-Funding Obstacle. VA only.
154
+ attr_accessor :personnel_resources_nonfunding_obstacle_other_reason
155
+
156
+ # [Conditional] At least one of the following is required and must be completed for each POA&M Item: Personnel Resources-> Funded Base Hours Personnel Resources-> Unfunded Base Hours Non-Personnel Resources-> Funded Amount Non-Personnel Resources-> Unfunded Amount Displays numbers to the second decimal point (e.g., 100.00). VA only.
157
+ attr_accessor :non_personnel_resources_funded_amount
158
+
159
+ # [Conditional] Required if Non-Personnel Resources: Funded Amount is populated. Only accepts values present in the field's lookup table (modifiable by eMASS System Admins). VA only.
160
+ attr_accessor :non_personnel_resources_cost_code
161
+
162
+ # [Conditional] At least one of the following is required and must be completed for each POA&M Item: Personnel Resources-> Funded Base Hours Personnel Resources-> Unfunded Base Hours Non-Personnel Resources-> Funded Amount Non-Personnel Resources-> Unfunded Amount Displays numbers to the second decimal point (e.g., 100.00). VA only.
163
+ attr_accessor :non_personnel_resources_unfunded_amount
164
+
165
+ # [Conditional] Required if Non-Personnel Resources: Unfunded Amount is populated. Only accepts values present in the field's lookup table (modifiable by eMASS System Admins). VA only.
166
+ attr_accessor :non_personnel_resources_nonfunding_obstacle
167
+
168
+ # [Conditional] Required if the value \"Other\" is populated for the field Non-Personnel Resources: Non-Funding Obstacle. VA only.
169
+ attr_accessor :non_personnel_resources_nonfunding_obstacle_other_reason
170
+
171
+ attr_accessor :milestones
172
+
173
+ class EnumAttributeValidator
174
+ attr_reader :datatype
175
+ attr_reader :allowable_values
176
+
177
+ def initialize(datatype, allowable_values)
178
+ @allowable_values = allowable_values.map do |value|
179
+ case datatype.to_s
180
+ when /Integer/i
181
+ value.to_i
182
+ when /Float/i
183
+ value.to_f
184
+ else
185
+ value
186
+ end
187
+ end
188
+ end
189
+
190
+ def valid?(value)
191
+ !value || allowable_values.include?(value)
192
+ end
193
+ end
194
+
195
+ # Attribute mapping from ruby-style variable name to JSON key.
196
+ def self.attribute_map
197
+ {
198
+ :'system_id' => :'systemId',
199
+ :'poam_id' => :'poamId',
200
+ :'display_poam_id' => :'displayPoamId',
201
+ :'status' => :'status',
202
+ :'vulnerability_description' => :'vulnerabilityDescription',
203
+ :'source_identifying_vulnerability' => :'sourceIdentifyingVulnerability',
204
+ :'poc_organization' => :'pocOrganization',
205
+ :'resources' => :'resources',
206
+ :'identified_in_cfo_audit_or_other_review' => :'identifiedInCFOAuditOrOtherReview',
207
+ :'condition_id' => :'conditionId',
208
+ :'is_inherited' => :'isInherited',
209
+ :'cci' => :'cci',
210
+ :'review_status' => :'reviewStatus',
211
+ :'created_date' => :'createdDate',
212
+ :'extension_date' => :'extensionDate',
213
+ :'pending_extension_date' => :'pendingExtensionDate',
214
+ :'artifacts' => :'artifacts',
215
+ :'external_uid' => :'externalUid',
216
+ :'control_acronym' => :'controlAcronym',
217
+ :'assessment_procedure' => :'assessmentProcedure',
218
+ :'security_checks' => :'securityChecks',
219
+ :'raw_severity' => :'rawSeverity',
220
+ :'relevance_of_threat' => :'relevanceOfThreat',
221
+ :'likelihood' => :'likelihood',
222
+ :'impact' => :'impact',
223
+ :'impact_description' => :'impactDescription',
224
+ :'residual_risk_level' => :'residualRiskLevel',
225
+ :'recommendations' => :'recommendations',
226
+ :'mitigations' => :'mitigations',
227
+ :'resulting_residual_risk_level_after_proposed_mitigations' => :'resultingResidualRiskLevelAfterProposedMitigations',
228
+ :'predisposing_conditions' => :'predisposingConditions',
229
+ :'threat_description' => :'threatDescription',
230
+ :'devices_affected' => :'devicesAffected',
231
+ :'poc_first_name' => :'pocFirstName',
232
+ :'poc_last_name' => :'pocLastName',
233
+ :'poc_email' => :'pocEmail',
234
+ :'poc_phone_number' => :'pocPhoneNumber',
235
+ :'severity' => :'severity',
236
+ :'scheduled_completion_date' => :'scheduledCompletionDate',
237
+ :'completion_date' => :'completionDate',
238
+ :'comments' => :'comments',
239
+ :'personnel_resources_funded_base_hours' => :'personnelResourcesFundedBaseHours',
240
+ :'personnel_resources_cost_code' => :'personnelResourcesCostCode',
241
+ :'personnel_resources_unfunded_base_hours' => :'personnelResourcesUnfundedBaseHours',
242
+ :'personnel_resources_nonfunding_obstacle' => :'personnelResourcesNonfundingObstacle',
243
+ :'personnel_resources_nonfunding_obstacle_other_reason' => :'personnelResourcesNonfundingObstacleOtherReason',
244
+ :'non_personnel_resources_funded_amount' => :'nonPersonnelResourcesFundedAmount',
245
+ :'non_personnel_resources_cost_code' => :'nonPersonnelResourcesCostCode',
246
+ :'non_personnel_resources_unfunded_amount' => :'nonPersonnelResourcesUnfundedAmount',
247
+ :'non_personnel_resources_nonfunding_obstacle' => :'nonPersonnelResourcesNonfundingObstacle',
248
+ :'non_personnel_resources_nonfunding_obstacle_other_reason' => :'nonPersonnelResourcesNonfundingObstacleOtherReason',
249
+ :'milestones' => :'milestones'
250
+ }
251
+ end
252
+
253
+ # Returns attribute mapping this model knows about
254
+ def self.acceptable_attribute_map
255
+ attribute_map
256
+ end
257
+
258
+ # Returns all the JSON keys this model knows about
259
+ def self.acceptable_attributes
260
+ acceptable_attribute_map.values
261
+ end
262
+
263
+ # Attribute type mapping.
264
+ def self.openapi_types
265
+ {
266
+ :'system_id' => :'Integer',
267
+ :'poam_id' => :'Integer',
268
+ :'display_poam_id' => :'Integer',
269
+ :'status' => :'String',
270
+ :'vulnerability_description' => :'String',
271
+ :'source_identifying_vulnerability' => :'String',
272
+ :'poc_organization' => :'String',
273
+ :'resources' => :'String',
274
+ :'identified_in_cfo_audit_or_other_review' => :'Boolean',
275
+ :'condition_id' => :'String',
276
+ :'is_inherited' => :'Boolean',
277
+ :'cci' => :'String',
278
+ :'review_status' => :'String',
279
+ :'created_date' => :'Integer',
280
+ :'extension_date' => :'Integer',
281
+ :'pending_extension_date' => :'Integer',
282
+ :'artifacts' => :'String',
283
+ :'external_uid' => :'String',
284
+ :'control_acronym' => :'String',
285
+ :'assessment_procedure' => :'String',
286
+ :'security_checks' => :'String',
287
+ :'raw_severity' => :'String',
288
+ :'relevance_of_threat' => :'String',
289
+ :'likelihood' => :'String',
290
+ :'impact' => :'String',
291
+ :'impact_description' => :'String',
292
+ :'residual_risk_level' => :'String',
293
+ :'recommendations' => :'String',
294
+ :'mitigations' => :'String',
295
+ :'resulting_residual_risk_level_after_proposed_mitigations' => :'String',
296
+ :'predisposing_conditions' => :'String',
297
+ :'threat_description' => :'String',
298
+ :'devices_affected' => :'String',
299
+ :'poc_first_name' => :'String',
300
+ :'poc_last_name' => :'String',
301
+ :'poc_email' => :'String',
302
+ :'poc_phone_number' => :'String',
303
+ :'severity' => :'String',
304
+ :'scheduled_completion_date' => :'Integer',
305
+ :'completion_date' => :'Integer',
306
+ :'comments' => :'String',
307
+ :'personnel_resources_funded_base_hours' => :'Float',
308
+ :'personnel_resources_cost_code' => :'String',
309
+ :'personnel_resources_unfunded_base_hours' => :'Float',
310
+ :'personnel_resources_nonfunding_obstacle' => :'String',
311
+ :'personnel_resources_nonfunding_obstacle_other_reason' => :'String',
312
+ :'non_personnel_resources_funded_amount' => :'Float',
313
+ :'non_personnel_resources_cost_code' => :'String',
314
+ :'non_personnel_resources_unfunded_amount' => :'Float',
315
+ :'non_personnel_resources_nonfunding_obstacle' => :'String',
316
+ :'non_personnel_resources_nonfunding_obstacle_other_reason' => :'String',
317
+ :'milestones' => :'Array<MilestonesGet>'
318
+ }
319
+ end
320
+
321
+ # List of attributes with nullable: true
322
+ def self.openapi_nullable
323
+ Set.new([
324
+ :'condition_id',
325
+ :'is_inherited',
326
+ :'cci',
327
+ :'review_status',
328
+ :'extension_date',
329
+ :'pending_extension_date',
330
+ :'artifacts',
331
+ :'resulting_residual_risk_level_after_proposed_mitigations',
332
+ :'predisposing_conditions',
333
+ :'threat_description',
334
+ :'devices_affected',
335
+ :'scheduled_completion_date',
336
+ :'personnel_resources_funded_base_hours',
337
+ :'personnel_resources_cost_code',
338
+ :'personnel_resources_unfunded_base_hours',
339
+ :'personnel_resources_nonfunding_obstacle',
340
+ :'personnel_resources_nonfunding_obstacle_other_reason',
341
+ :'non_personnel_resources_funded_amount',
342
+ :'non_personnel_resources_cost_code',
343
+ :'non_personnel_resources_unfunded_amount',
344
+ :'non_personnel_resources_nonfunding_obstacle',
345
+ :'non_personnel_resources_nonfunding_obstacle_other_reason',
346
+ ])
347
+ end
348
+
349
+ # List of class defined in allOf (OpenAPI v3)
350
+ def self.openapi_all_of
351
+ [
352
+ :'MilestonesFields',
353
+ :'PoamConditionalFields',
354
+ :'PoamIds',
355
+ :'PoamOptionalFields',
356
+ :'PoamReadOnlyFields',
357
+ :'PoamRequiredFields'
358
+ ]
359
+ end
360
+
361
+ # Initializes the object
362
+ # @param [Hash] attributes Model attributes in the form of hash
363
+ def initialize(attributes = {})
364
+ if (!attributes.is_a?(Hash))
365
+ fail ArgumentError, "The input argument (attributes) must be a hash in `EmassClient::PoamResponseGetPoamsData` initialize method"
366
+ end
367
+
368
+ # check to see if the attribute exists and convert string to symbol for hash key
369
+ acceptable_attribute_map = self.class.acceptable_attribute_map
370
+ attributes = attributes.each_with_object({}) { |(k, v), h|
371
+ if (!acceptable_attribute_map.key?(k.to_sym))
372
+ fail ArgumentError, "`#{k}` is not a valid attribute in `EmassClient::PoamResponseGetPoamsData`. Please check the name to make sure it's valid. List of attributes: " + acceptable_attribute_map.keys.inspect
373
+ end
374
+ h[k.to_sym] = v
375
+ }
376
+
377
+ if attributes.key?(:'system_id')
378
+ self.system_id = attributes[:'system_id']
379
+ end
380
+
381
+ if attributes.key?(:'poam_id')
382
+ self.poam_id = attributes[:'poam_id']
383
+ end
384
+
385
+ if attributes.key?(:'display_poam_id')
386
+ self.display_poam_id = attributes[:'display_poam_id']
387
+ end
388
+
389
+ if attributes.key?(:'status')
390
+ self.status = attributes[:'status']
391
+ end
392
+
393
+ if attributes.key?(:'vulnerability_description')
394
+ self.vulnerability_description = attributes[:'vulnerability_description']
395
+ end
396
+
397
+ if attributes.key?(:'source_identifying_vulnerability')
398
+ self.source_identifying_vulnerability = attributes[:'source_identifying_vulnerability']
399
+ end
400
+
401
+ if attributes.key?(:'poc_organization')
402
+ self.poc_organization = attributes[:'poc_organization']
403
+ end
404
+
405
+ if attributes.key?(:'resources')
406
+ self.resources = attributes[:'resources']
407
+ end
408
+
409
+ if attributes.key?(:'identified_in_cfo_audit_or_other_review')
410
+ self.identified_in_cfo_audit_or_other_review = attributes[:'identified_in_cfo_audit_or_other_review']
411
+ end
412
+
413
+ if attributes.key?(:'condition_id')
414
+ self.condition_id = attributes[:'condition_id']
415
+ end
416
+
417
+ if attributes.key?(:'is_inherited')
418
+ self.is_inherited = attributes[:'is_inherited']
419
+ end
420
+
421
+ if attributes.key?(:'cci')
422
+ self.cci = attributes[:'cci']
423
+ end
424
+
425
+ if attributes.key?(:'review_status')
426
+ self.review_status = attributes[:'review_status']
427
+ end
428
+
429
+ if attributes.key?(:'created_date')
430
+ self.created_date = attributes[:'created_date']
431
+ end
432
+
433
+ if attributes.key?(:'extension_date')
434
+ self.extension_date = attributes[:'extension_date']
435
+ end
436
+
437
+ if attributes.key?(:'pending_extension_date')
438
+ self.pending_extension_date = attributes[:'pending_extension_date']
439
+ end
440
+
441
+ if attributes.key?(:'artifacts')
442
+ self.artifacts = attributes[:'artifacts']
443
+ end
444
+
445
+ if attributes.key?(:'external_uid')
446
+ self.external_uid = attributes[:'external_uid']
447
+ end
448
+
449
+ if attributes.key?(:'control_acronym')
450
+ self.control_acronym = attributes[:'control_acronym']
451
+ end
452
+
453
+ if attributes.key?(:'assessment_procedure')
454
+ self.assessment_procedure = attributes[:'assessment_procedure']
455
+ end
456
+
457
+ if attributes.key?(:'security_checks')
458
+ self.security_checks = attributes[:'security_checks']
459
+ end
460
+
461
+ if attributes.key?(:'raw_severity')
462
+ self.raw_severity = attributes[:'raw_severity']
463
+ end
464
+
465
+ if attributes.key?(:'relevance_of_threat')
466
+ self.relevance_of_threat = attributes[:'relevance_of_threat']
467
+ end
468
+
469
+ if attributes.key?(:'likelihood')
470
+ self.likelihood = attributes[:'likelihood']
471
+ end
472
+
473
+ if attributes.key?(:'impact')
474
+ self.impact = attributes[:'impact']
475
+ end
476
+
477
+ if attributes.key?(:'impact_description')
478
+ self.impact_description = attributes[:'impact_description']
479
+ end
480
+
481
+ if attributes.key?(:'residual_risk_level')
482
+ self.residual_risk_level = attributes[:'residual_risk_level']
483
+ end
484
+
485
+ if attributes.key?(:'recommendations')
486
+ self.recommendations = attributes[:'recommendations']
487
+ end
488
+
489
+ if attributes.key?(:'mitigations')
490
+ self.mitigations = attributes[:'mitigations']
491
+ end
492
+
493
+ if attributes.key?(:'resulting_residual_risk_level_after_proposed_mitigations')
494
+ self.resulting_residual_risk_level_after_proposed_mitigations = attributes[:'resulting_residual_risk_level_after_proposed_mitigations']
495
+ end
496
+
497
+ if attributes.key?(:'predisposing_conditions')
498
+ self.predisposing_conditions = attributes[:'predisposing_conditions']
499
+ end
500
+
501
+ if attributes.key?(:'threat_description')
502
+ self.threat_description = attributes[:'threat_description']
503
+ end
504
+
505
+ if attributes.key?(:'devices_affected')
506
+ self.devices_affected = attributes[:'devices_affected']
507
+ end
508
+
509
+ if attributes.key?(:'poc_first_name')
510
+ self.poc_first_name = attributes[:'poc_first_name']
511
+ end
512
+
513
+ if attributes.key?(:'poc_last_name')
514
+ self.poc_last_name = attributes[:'poc_last_name']
515
+ end
516
+
517
+ if attributes.key?(:'poc_email')
518
+ self.poc_email = attributes[:'poc_email']
519
+ end
520
+
521
+ if attributes.key?(:'poc_phone_number')
522
+ self.poc_phone_number = attributes[:'poc_phone_number']
523
+ end
524
+
525
+ if attributes.key?(:'severity')
526
+ self.severity = attributes[:'severity']
527
+ end
528
+
529
+ if attributes.key?(:'scheduled_completion_date')
530
+ self.scheduled_completion_date = attributes[:'scheduled_completion_date']
531
+ end
532
+
533
+ if attributes.key?(:'completion_date')
534
+ self.completion_date = attributes[:'completion_date']
535
+ end
536
+
537
+ if attributes.key?(:'comments')
538
+ self.comments = attributes[:'comments']
539
+ end
540
+
541
+ if attributes.key?(:'personnel_resources_funded_base_hours')
542
+ self.personnel_resources_funded_base_hours = attributes[:'personnel_resources_funded_base_hours']
543
+ end
544
+
545
+ if attributes.key?(:'personnel_resources_cost_code')
546
+ self.personnel_resources_cost_code = attributes[:'personnel_resources_cost_code']
547
+ end
548
+
549
+ if attributes.key?(:'personnel_resources_unfunded_base_hours')
550
+ self.personnel_resources_unfunded_base_hours = attributes[:'personnel_resources_unfunded_base_hours']
551
+ end
552
+
553
+ if attributes.key?(:'personnel_resources_nonfunding_obstacle')
554
+ self.personnel_resources_nonfunding_obstacle = attributes[:'personnel_resources_nonfunding_obstacle']
555
+ end
556
+
557
+ if attributes.key?(:'personnel_resources_nonfunding_obstacle_other_reason')
558
+ self.personnel_resources_nonfunding_obstacle_other_reason = attributes[:'personnel_resources_nonfunding_obstacle_other_reason']
559
+ end
560
+
561
+ if attributes.key?(:'non_personnel_resources_funded_amount')
562
+ self.non_personnel_resources_funded_amount = attributes[:'non_personnel_resources_funded_amount']
563
+ end
564
+
565
+ if attributes.key?(:'non_personnel_resources_cost_code')
566
+ self.non_personnel_resources_cost_code = attributes[:'non_personnel_resources_cost_code']
567
+ end
568
+
569
+ if attributes.key?(:'non_personnel_resources_unfunded_amount')
570
+ self.non_personnel_resources_unfunded_amount = attributes[:'non_personnel_resources_unfunded_amount']
571
+ end
572
+
573
+ if attributes.key?(:'non_personnel_resources_nonfunding_obstacle')
574
+ self.non_personnel_resources_nonfunding_obstacle = attributes[:'non_personnel_resources_nonfunding_obstacle']
575
+ end
576
+
577
+ if attributes.key?(:'non_personnel_resources_nonfunding_obstacle_other_reason')
578
+ self.non_personnel_resources_nonfunding_obstacle_other_reason = attributes[:'non_personnel_resources_nonfunding_obstacle_other_reason']
579
+ end
580
+
581
+ if attributes.key?(:'milestones')
582
+ if (value = attributes[:'milestones']).is_a?(Array)
583
+ self.milestones = value
584
+ end
585
+ end
586
+ end
587
+
588
+ # Show invalid properties with the reasons. Usually used together with valid?
589
+ # @return Array for valid properties with the reasons
590
+ def list_invalid_properties
591
+ warn '[DEPRECATED] the `list_invalid_properties` method is obsolete'
592
+ invalid_properties = Array.new
593
+ invalid_properties
594
+ end
595
+
596
+ # Check to see if the all the properties in the model are valid
597
+ # @return true if the model is valid
598
+ def valid?
599
+ warn '[DEPRECATED] the `valid?` method is obsolete'
600
+ status_validator = EnumAttributeValidator.new('String', ["Ongoing", "Risk Accepted", "Completed", "Not Applicable", "Archived", "unknown_default_open_api"])
601
+ return false unless status_validator.valid?(@status)
602
+ review_status_validator = EnumAttributeValidator.new('String', ["Not Approved", "Under Review", "Approved", "unknown_default_open_api"])
603
+ return false unless review_status_validator.valid?(@review_status)
604
+ resulting_residual_risk_level_after_proposed_mitigations_validator = EnumAttributeValidator.new('String', ["Very Low", "Low", "Moderate", "High", "Very High", "unknown_default_open_api"])
605
+ return false unless resulting_residual_risk_level_after_proposed_mitigations_validator.valid?(@resulting_residual_risk_level_after_proposed_mitigations)
606
+ true
607
+ end
608
+
609
+ # Custom attribute writer method checking allowed values (enum).
610
+ # @param [Object] status Object to be assigned
611
+ def status=(status)
612
+ validator = EnumAttributeValidator.new('String', ["Ongoing", "Risk Accepted", "Completed", "Not Applicable", "Archived", "unknown_default_open_api"])
613
+ unless validator.valid?(status)
614
+ fail ArgumentError, "invalid value for \"status\", must be one of #{validator.allowable_values}."
615
+ end
616
+ @status = status
617
+ end
618
+
619
+ # Custom attribute writer method checking allowed values (enum).
620
+ # @param [Object] review_status Object to be assigned
621
+ def review_status=(review_status)
622
+ validator = EnumAttributeValidator.new('String', ["Not Approved", "Under Review", "Approved", "unknown_default_open_api"])
623
+ unless validator.valid?(review_status)
624
+ fail ArgumentError, "invalid value for \"review_status\", must be one of #{validator.allowable_values}."
625
+ end
626
+ @review_status = review_status
627
+ end
628
+
629
+ # Custom attribute writer method checking allowed values (enum).
630
+ # @param [Object] resulting_residual_risk_level_after_proposed_mitigations Object to be assigned
631
+ def resulting_residual_risk_level_after_proposed_mitigations=(resulting_residual_risk_level_after_proposed_mitigations)
632
+ validator = EnumAttributeValidator.new('String', ["Very Low", "Low", "Moderate", "High", "Very High", "unknown_default_open_api"])
633
+ unless validator.valid?(resulting_residual_risk_level_after_proposed_mitigations)
634
+ fail ArgumentError, "invalid value for \"resulting_residual_risk_level_after_proposed_mitigations\", must be one of #{validator.allowable_values}."
635
+ end
636
+ @resulting_residual_risk_level_after_proposed_mitigations = resulting_residual_risk_level_after_proposed_mitigations
637
+ end
638
+
639
+ # Checks equality by comparing each attribute.
640
+ # @param [Object] Object to be compared
641
+ def ==(o)
642
+ return true if self.equal?(o)
643
+ self.class == o.class &&
644
+ system_id == o.system_id &&
645
+ poam_id == o.poam_id &&
646
+ display_poam_id == o.display_poam_id &&
647
+ status == o.status &&
648
+ vulnerability_description == o.vulnerability_description &&
649
+ source_identifying_vulnerability == o.source_identifying_vulnerability &&
650
+ poc_organization == o.poc_organization &&
651
+ resources == o.resources &&
652
+ identified_in_cfo_audit_or_other_review == o.identified_in_cfo_audit_or_other_review &&
653
+ condition_id == o.condition_id &&
654
+ is_inherited == o.is_inherited &&
655
+ cci == o.cci &&
656
+ review_status == o.review_status &&
657
+ created_date == o.created_date &&
658
+ extension_date == o.extension_date &&
659
+ pending_extension_date == o.pending_extension_date &&
660
+ artifacts == o.artifacts &&
661
+ external_uid == o.external_uid &&
662
+ control_acronym == o.control_acronym &&
663
+ assessment_procedure == o.assessment_procedure &&
664
+ security_checks == o.security_checks &&
665
+ raw_severity == o.raw_severity &&
666
+ relevance_of_threat == o.relevance_of_threat &&
667
+ likelihood == o.likelihood &&
668
+ impact == o.impact &&
669
+ impact_description == o.impact_description &&
670
+ residual_risk_level == o.residual_risk_level &&
671
+ recommendations == o.recommendations &&
672
+ mitigations == o.mitigations &&
673
+ resulting_residual_risk_level_after_proposed_mitigations == o.resulting_residual_risk_level_after_proposed_mitigations &&
674
+ predisposing_conditions == o.predisposing_conditions &&
675
+ threat_description == o.threat_description &&
676
+ devices_affected == o.devices_affected &&
677
+ poc_first_name == o.poc_first_name &&
678
+ poc_last_name == o.poc_last_name &&
679
+ poc_email == o.poc_email &&
680
+ poc_phone_number == o.poc_phone_number &&
681
+ severity == o.severity &&
682
+ scheduled_completion_date == o.scheduled_completion_date &&
683
+ completion_date == o.completion_date &&
684
+ comments == o.comments &&
685
+ personnel_resources_funded_base_hours == o.personnel_resources_funded_base_hours &&
686
+ personnel_resources_cost_code == o.personnel_resources_cost_code &&
687
+ personnel_resources_unfunded_base_hours == o.personnel_resources_unfunded_base_hours &&
688
+ personnel_resources_nonfunding_obstacle == o.personnel_resources_nonfunding_obstacle &&
689
+ personnel_resources_nonfunding_obstacle_other_reason == o.personnel_resources_nonfunding_obstacle_other_reason &&
690
+ non_personnel_resources_funded_amount == o.non_personnel_resources_funded_amount &&
691
+ non_personnel_resources_cost_code == o.non_personnel_resources_cost_code &&
692
+ non_personnel_resources_unfunded_amount == o.non_personnel_resources_unfunded_amount &&
693
+ non_personnel_resources_nonfunding_obstacle == o.non_personnel_resources_nonfunding_obstacle &&
694
+ non_personnel_resources_nonfunding_obstacle_other_reason == o.non_personnel_resources_nonfunding_obstacle_other_reason &&
695
+ milestones == o.milestones
696
+ end
697
+
698
+ # @see the `==` method
699
+ # @param [Object] Object to be compared
700
+ def eql?(o)
701
+ self == o
702
+ end
703
+
704
+ # Calculates hash code according to all attributes.
705
+ # @return [Integer] Hash code
706
+ def hash
707
+ [system_id, poam_id, display_poam_id, status, vulnerability_description, source_identifying_vulnerability, poc_organization, resources, identified_in_cfo_audit_or_other_review, condition_id, is_inherited, cci, review_status, created_date, extension_date, pending_extension_date, artifacts, external_uid, control_acronym, assessment_procedure, security_checks, raw_severity, relevance_of_threat, likelihood, impact, impact_description, residual_risk_level, recommendations, mitigations, resulting_residual_risk_level_after_proposed_mitigations, predisposing_conditions, threat_description, devices_affected, poc_first_name, poc_last_name, poc_email, poc_phone_number, severity, scheduled_completion_date, completion_date, comments, personnel_resources_funded_base_hours, personnel_resources_cost_code, personnel_resources_unfunded_base_hours, personnel_resources_nonfunding_obstacle, personnel_resources_nonfunding_obstacle_other_reason, non_personnel_resources_funded_amount, non_personnel_resources_cost_code, non_personnel_resources_unfunded_amount, non_personnel_resources_nonfunding_obstacle, non_personnel_resources_nonfunding_obstacle_other_reason, milestones].hash
708
+ end
709
+
710
+ # Builds the object from hash
711
+ # @param [Hash] attributes Model attributes in the form of hash
712
+ # @return [Object] Returns the model itself
713
+ def self.build_from_hash(attributes)
714
+ return nil unless attributes.is_a?(Hash)
715
+ attributes = attributes.transform_keys(&:to_sym)
716
+ transformed_hash = {}
717
+ openapi_types.each_pair do |key, type|
718
+ if attributes.key?(attribute_map[key]) && attributes[attribute_map[key]].nil?
719
+ transformed_hash["#{key}"] = nil
720
+ elsif type =~ /\AArray<(.*)>/i
721
+ # check to ensure the input is an array given that the attribute
722
+ # is documented as an array but the input is not
723
+ if attributes[attribute_map[key]].is_a?(Array)
724
+ transformed_hash["#{key}"] = attributes[attribute_map[key]].map { |v| _deserialize($1, v) }
725
+ end
726
+ elsif !attributes[attribute_map[key]].nil?
727
+ transformed_hash["#{key}"] = _deserialize(type, attributes[attribute_map[key]])
728
+ end
729
+ end
730
+ new(transformed_hash)
731
+ end
732
+
733
+ # Deserializes the data based on type
734
+ # @param string type Data type
735
+ # @param string value Value to be deserialized
736
+ # @return [Object] Deserialized data
737
+ def self._deserialize(type, value)
738
+ case type.to_sym
739
+ when :Time
740
+ Time.parse(value)
741
+ when :Date
742
+ Date.parse(value)
743
+ when :String
744
+ value.to_s
745
+ when :Integer
746
+ value.to_i
747
+ when :Float
748
+ value.to_f
749
+ when :Boolean
750
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
751
+ true
752
+ else
753
+ false
754
+ end
755
+ when :Object
756
+ # generic object (usually a Hash), return directly
757
+ value
758
+ when /\AArray<(?<inner_type>.+)>\z/
759
+ inner_type = Regexp.last_match[:inner_type]
760
+ value.map { |v| _deserialize(inner_type, v) }
761
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
762
+ k_type = Regexp.last_match[:k_type]
763
+ v_type = Regexp.last_match[:v_type]
764
+ {}.tap do |hash|
765
+ value.each do |k, v|
766
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
767
+ end
768
+ end
769
+ else # model
770
+ # models (e.g. Pet) or oneOf
771
+ klass = EmassClient.const_get(type)
772
+ klass.respond_to?(:openapi_any_of) || klass.respond_to?(:openapi_one_of) ? klass.build(value) : klass.build_from_hash(value)
773
+ end
774
+ end
775
+
776
+ # Returns the string representation of the object
777
+ # @return [String] String presentation of the object
778
+ def to_s
779
+ to_hash.to_s
780
+ end
781
+
782
+ # to_body is an alias to to_hash (backward compatibility)
783
+ # @return [Hash] Returns the object in the form of hash
784
+ def to_body
785
+ to_hash
786
+ end
787
+
788
+ # Returns the object in the form of hash
789
+ # @return [Hash] Returns the object in the form of hash
790
+ def to_hash
791
+ hash = {}
792
+ self.class.attribute_map.each_pair do |attr, param|
793
+ value = self.send(attr)
794
+ if value.nil?
795
+ is_nullable = self.class.openapi_nullable.include?(attr)
796
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
797
+ end
798
+
799
+ hash[param] = _to_hash(value)
800
+ end
801
+ hash
802
+ end
803
+
804
+ # Outputs non-array value in the form of hash
805
+ # For object, use to_hash. Otherwise, just return the value
806
+ # @param [Object] value Any valid value
807
+ # @return [Hash] Returns the value in the form of hash
808
+ def _to_hash(value)
809
+ if value.is_a?(Array)
810
+ value.compact.map { |v| _to_hash(v) }
811
+ elsif value.is_a?(Hash)
812
+ {}.tap do |hash|
813
+ value.each { |k, v| hash[k] = _to_hash(v) }
814
+ end
815
+ elsif value.respond_to? :to_hash
816
+ value.to_hash
817
+ else
818
+ value
819
+ end
820
+ end
821
+
822
+ end
823
+
824
+ end