emass_client 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (132) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +1284 -0
  3. data/Rakefile +8 -0
  4. data/lib/emass_client/api/artifacts_api.rb +310 -0
  5. data/lib/emass_client/api/artifacts_export_api.rb +86 -0
  6. data/lib/emass_client/api/cac_api.rb +143 -0
  7. data/lib/emass_client/api/cmmc_assessments_api.rb +77 -0
  8. data/lib/emass_client/api/controls_api.rb +143 -0
  9. data/lib/emass_client/api/milestones_api.rb +366 -0
  10. data/lib/emass_client/api/pac_api.rb +140 -0
  11. data/lib/emass_client/api/poam_api.rb +345 -0
  12. data/lib/emass_client/api/registration_api.rb +78 -0
  13. data/lib/emass_client/api/static_code_scans_api.rb +84 -0
  14. data/lib/emass_client/api/system_roles_api.rb +150 -0
  15. data/lib/emass_client/api/systems_api.rb +162 -0
  16. data/lib/emass_client/api/test_api.rb +70 -0
  17. data/lib/emass_client/api/test_results_api.rb +149 -0
  18. data/lib/emass_client/api/workflow_definitions_api.rb +76 -0
  19. data/lib/emass_client/api/workflow_instances_api.rb +153 -0
  20. data/lib/emass_client/api_client.rb +389 -0
  21. data/lib/emass_client/api_error.rb +57 -0
  22. data/lib/emass_client/configuration.rb +224 -0
  23. data/lib/emass_client/models/artifacts_delete.rb +201 -0
  24. data/lib/emass_client/models/artifacts_delete_inner.rb +207 -0
  25. data/lib/emass_client/models/artifacts_get.rb +383 -0
  26. data/lib/emass_client/models/artifacts_request_put_body.rb +363 -0
  27. data/lib/emass_client/models/artifacts_response_del.rb +217 -0
  28. data/lib/emass_client/models/artifacts_response_del_data.rb +225 -0
  29. data/lib/emass_client/models/artifacts_response_get.rb +217 -0
  30. data/lib/emass_client/models/artifacts_response_put_post.rb +217 -0
  31. data/lib/emass_client/models/cac_get.rb +301 -0
  32. data/lib/emass_client/models/cac_request_post_body.rb +217 -0
  33. data/lib/emass_client/models/cac_response_get.rb +217 -0
  34. data/lib/emass_client/models/cac_response_post.rb +217 -0
  35. data/lib/emass_client/models/cac_response_post_data.rb +225 -0
  36. data/lib/emass_client/models/cmmc_get.rb +398 -0
  37. data/lib/emass_client/models/cmmc_response_get.rb +217 -0
  38. data/lib/emass_client/models/connectivity_ccsd.rb +217 -0
  39. data/lib/emass_client/models/controls_get.rb +663 -0
  40. data/lib/emass_client/models/controls_put.rb +227 -0
  41. data/lib/emass_client/models/controls_request_put_body.rb +606 -0
  42. data/lib/emass_client/models/controls_response_get.rb +217 -0
  43. data/lib/emass_client/models/controls_response_put.rb +217 -0
  44. data/lib/emass_client/models/definition_transitions.rb +274 -0
  45. data/lib/emass_client/models/delete_milestone.rb +212 -0
  46. data/lib/emass_client/models/delete_poam.rb +212 -0
  47. data/lib/emass_client/models/empty200_response.rb +197 -0
  48. data/lib/emass_client/models/error.rb +225 -0
  49. data/lib/emass_client/models/instances_transitions.rb +327 -0
  50. data/lib/emass_client/models/milestone_response_get.rb +217 -0
  51. data/lib/emass_client/models/milestone_response_post.rb +217 -0
  52. data/lib/emass_client/models/milestone_response_put.rb +217 -0
  53. data/lib/emass_client/models/milestones_delete.rb +197 -0
  54. data/lib/emass_client/models/milestones_get.rb +291 -0
  55. data/lib/emass_client/models/milestones_post.rb +197 -0
  56. data/lib/emass_client/models/milestones_put.rb +197 -0
  57. data/lib/emass_client/models/milestones_put_post_delete.rb +247 -0
  58. data/lib/emass_client/models/milestones_request_post_body.rb +242 -0
  59. data/lib/emass_client/models/milestones_request_put_body.rb +242 -0
  60. data/lib/emass_client/models/milestones_required_post.rb +227 -0
  61. data/lib/emass_client/models/milestones_required_put.rb +242 -0
  62. data/lib/emass_client/models/model_200.rb +208 -0
  63. data/lib/emass_client/models/model_201.rb +206 -0
  64. data/lib/emass_client/models/model_201_meta.rb +219 -0
  65. data/lib/emass_client/models/model_400.rb +206 -0
  66. data/lib/emass_client/models/model_400_meta.rb +219 -0
  67. data/lib/emass_client/models/model_400_response.rb +206 -0
  68. data/lib/emass_client/models/model_401.rb +206 -0
  69. data/lib/emass_client/models/model_401_meta.rb +219 -0
  70. data/lib/emass_client/models/model_403.rb +206 -0
  71. data/lib/emass_client/models/model_403_meta.rb +219 -0
  72. data/lib/emass_client/models/model_404.rb +219 -0
  73. data/lib/emass_client/models/model_404_response.rb +206 -0
  74. data/lib/emass_client/models/model_405.rb +206 -0
  75. data/lib/emass_client/models/model_405_meta.rb +219 -0
  76. data/lib/emass_client/models/model_411.rb +206 -0
  77. data/lib/emass_client/models/model_411_meta.rb +219 -0
  78. data/lib/emass_client/models/model_490.rb +206 -0
  79. data/lib/emass_client/models/model_490_meta.rb +219 -0
  80. data/lib/emass_client/models/model_500.rb +206 -0
  81. data/lib/emass_client/models/model_500_meta.rb +219 -0
  82. data/lib/emass_client/models/pac_get.rb +311 -0
  83. data/lib/emass_client/models/pac_post.rb +259 -0
  84. data/lib/emass_client/models/pac_request_post_body.rb +261 -0
  85. data/lib/emass_client/models/pac_response_get.rb +217 -0
  86. data/lib/emass_client/models/pac_response_post.rb +217 -0
  87. data/lib/emass_client/models/poam_delete.rb +197 -0
  88. data/lib/emass_client/models/poam_get.rb +646 -0
  89. data/lib/emass_client/models/poam_post.rb +197 -0
  90. data/lib/emass_client/models/poam_post_put_del.rb +237 -0
  91. data/lib/emass_client/models/poam_put.rb +197 -0
  92. data/lib/emass_client/models/poam_request_post_body.rb +197 -0
  93. data/lib/emass_client/models/poam_request_put_body.rb +197 -0
  94. data/lib/emass_client/models/poam_required_post.rb +564 -0
  95. data/lib/emass_client/models/poam_required_put.rb +594 -0
  96. data/lib/emass_client/models/poam_response_delete.rb +217 -0
  97. data/lib/emass_client/models/poam_response_get.rb +217 -0
  98. data/lib/emass_client/models/poam_response_post.rb +217 -0
  99. data/lib/emass_client/models/poam_response_put.rb +217 -0
  100. data/lib/emass_client/models/register.rb +215 -0
  101. data/lib/emass_client/models/register_data.rb +206 -0
  102. data/lib/emass_client/models/register_user_request_post_body.rb +211 -0
  103. data/lib/emass_client/models/role_category.rb +272 -0
  104. data/lib/emass_client/models/roles.rb +274 -0
  105. data/lib/emass_client/models/ssps.rb +227 -0
  106. data/lib/emass_client/models/stage.rb +252 -0
  107. data/lib/emass_client/models/static_code_application.rb +303 -0
  108. data/lib/emass_client/models/static_code_request_post_body.rb +197 -0
  109. data/lib/emass_client/models/static_code_required_post.rb +217 -0
  110. data/lib/emass_client/models/static_code_required_post_application.rb +217 -0
  111. data/lib/emass_client/models/success200_response.rb +217 -0
  112. data/lib/emass_client/models/system_id_artifacts_body.rb +284 -0
  113. data/lib/emass_client/models/system_response.rb +217 -0
  114. data/lib/emass_client/models/system_roles_category_response.rb +217 -0
  115. data/lib/emass_client/models/system_roles_response.rb +217 -0
  116. data/lib/emass_client/models/system_roles_response_data.rb +219 -0
  117. data/lib/emass_client/models/systems.rb +1137 -0
  118. data/lib/emass_client/models/test.rb +215 -0
  119. data/lib/emass_client/models/test_data.rb +206 -0
  120. data/lib/emass_client/models/test_results_get.rb +333 -0
  121. data/lib/emass_client/models/test_results_post.rb +227 -0
  122. data/lib/emass_client/models/test_results_request_post_body.rb +306 -0
  123. data/lib/emass_client/models/test_results_response_get.rb +217 -0
  124. data/lib/emass_client/models/test_results_response_post.rb +217 -0
  125. data/lib/emass_client/models/users.rb +224 -0
  126. data/lib/emass_client/models/workflow_definition_get.rb +282 -0
  127. data/lib/emass_client/models/workflow_definition_response_get.rb +217 -0
  128. data/lib/emass_client/models/workflow_instances_get.rb +368 -0
  129. data/lib/emass_client/models/workflow_instances_response_get.rb +217 -0
  130. data/lib/emass_client/version.rb +14 -0
  131. data/lib/emass_client.rb +161 -0
  132. metadata +259 -0
@@ -0,0 +1,1137 @@
1
+ =begin
2
+ #Enterprise Mission Assurance Support Service (eMASS)
3
+
4
+ #The Enterprise Mission Assurance Support Service (eMASS) Representational State Transfer (REST) Application Programming Interface (API) enables users to perform assessments and complete actions associated with system records. The `emasser` is a command-line interface (CLI) tool that implements all of the eMASS endpoints defined in the eMASS REST API v3.2, dated October 21, 2021.</br><br> <strong>Register CLI</strong></br> New users will need to register an API key with the eMASS development team prior to accessing the site for the first time. The eMASS REST API requires a client certificate (SSL/TLS, DoD PKI only) where {url}/api/register (POST) is used to register the client certificate.</br></br> Every call to the eMASS REST API will require the use of the agreed upon public key certificate and API key. The API key must be provided in the request header for all endpoint calls (api-key). If the service receives an untrusted certificate or API key, a 401 error response code will be returned along with an error message.</br></br> <strong>Available Request Headers:</strong></br> <table> <tr> <th align=left>key</th> <th align=left>Example Value</th> <th align=left>Description</th> </tr> <tr> <td>`api-key`</td> <td>api-key-provided-by-emass</td> <td>This API key must be provided in the request header for all endpoint calls</td> </tr> <tr> <td>`user-uid`</td> <td>USER.UID.KEY</td> <td>This User unique identifier key must be provided in the request header for all PUT, POST, and DELETE endpoint calls</td> </tr> <tr> <td></td><td></td> <td> Note: For DoD users this is the DoD ID Number (EIDIPI) on their DoD CAC </td> </tr> </table> </br><strong>Approve API Client for Actionable Requests</strong></br> Users are required to log-in to eMASS and grant permissions for a client to update data within eMASS on their behalf. This is only required for actionable requests (PUT, POST, DELETE). The Registration Endpoint and all GET requests can be accessed without completing this process with the correct permissions. Please note that leaving a field parameter blank (for PUT/POST requests) has the potential to clear information in the active eMASS records. To establish an account with eMASS and/or acquire an api-key/user-uid, contact one of the listed POC:
5
+
6
+ OpenAPI spec version: v3.2
7
+ Contact: disa.meade.id.mbx.emass-tier-iii-support@mail.mil
8
+ Generated by: https://github.com/swagger-api/swagger-codegen.git
9
+ Swagger Codegen version: 3.0.26
10
+ =end
11
+
12
+ require 'date'
13
+
14
+ module EmassClient
15
+ class Systems
16
+ # [Read-only] Unique system record identifier.
17
+ attr_accessor :system_id
18
+
19
+ # [Read-only] RMF/DIACAP Policy identifier for the system record.
20
+ attr_accessor :policy
21
+
22
+ # [Read-Only] Registration types parameters (assessAndAuthorize, assessOnly, guest, regular, functional, cloudServiceProvider.)
23
+ attr_accessor :registration_type
24
+
25
+ # [Read-only] Name of the system record.
26
+ attr_accessor :name
27
+
28
+ # [Read-only] Acronym of the system record.
29
+ attr_accessor :acronym
30
+
31
+ # [Read-only] Description of the system record.
32
+ attr_accessor :description
33
+
34
+ # [Read-only] Owning organization of the system record.
35
+ attr_accessor :system_owner
36
+
37
+ # [Read-only] Name of the top-level component that owns the system (e.g. Navy, Air Force, Army, etc..).
38
+ attr_accessor :organization_name
39
+
40
+ # [Read-only] Secondary organization that owns the system record (i.e. Sub-Organization-level.
41
+ attr_accessor :secondary_organization
42
+
43
+ # [Read-only] Version/Release Number of system record.
44
+ attr_accessor :version_release_no
45
+
46
+ # [Read-only] Type of the system record. RMF values include the following options (IS Major Application, IS Enclave, Platform IT System). DIACAP values include the following options (Platform IT, Interconnection, AIS Application)
47
+ attr_accessor :system_type
48
+
49
+ # [Read-only] Is the system record a National Security System?
50
+ attr_accessor :is_nss
51
+
52
+ # [Read-only] Does the system record have a public facing component/presence.
53
+ attr_accessor :is_public_facing
54
+
55
+ # [Read-only] Corresponding Cyber Operational Attributes Management System (COAMS) identifier for the system record.
56
+ attr_accessor :coams_id
57
+
58
+ # [Read-only] Identifies if system is a Type Authorization.
59
+ attr_accessor :is_type_authorization
60
+
61
+ # [Read-only] DITPR ID of the system record.
62
+ attr_accessor :ditpr_id
63
+
64
+ # [Read-only] Authorization Status of the system record.
65
+ attr_accessor :authorization_status
66
+
67
+ # [Read-only] Authorization Date of the system record.
68
+ attr_accessor :authorization_date
69
+
70
+ # [Read-only] Authorization Termination Date of the system record.
71
+ attr_accessor :authorization_termination_date
72
+
73
+ # [Read-only] Length of system’s Authorization. Calculated based off of Authorization Date & Authorization Termination Date.
74
+ attr_accessor :authorization_length
75
+
76
+ # [Read-only] Terms/Conditions for receiving and maintaining the system’s Authorization. Assigned by the Authorizing Official.
77
+ attr_accessor :terms_for_auth
78
+
79
+ # [Read-only] Status of the approval of the system’s RMF Security Plan. Values include the following options (Approved, Denied, Not Yet Approved).
80
+ attr_accessor :security_plan_approval_status
81
+
82
+ # [Read-only] Approval date of the system’s RMF Security Plan.
83
+ attr_accessor :security_plan_approval_date
84
+
85
+ # [Read-only] Mission Criticality of the system record. Values include the following options (Mission Critical (MC), Mission Essential (ME), Mission Support (MS).
86
+ attr_accessor :mission_criticality
87
+
88
+ # [Read-only] Geographical Association of the system record (VA only).
89
+ attr_accessor :geographical_association
90
+
91
+ # [Read-only] Ownership of the system record (VA only).
92
+ attr_accessor :system_ownership
93
+
94
+ # [Read-only] Governing Mission Area of the system record.
95
+ attr_accessor :governing_mission_area
96
+
97
+ # [Read-only] Primary functional area of the system record.
98
+ attr_accessor :primary_functional_area
99
+
100
+ # [Read-only] Secondary functional area of the system record.
101
+ attr_accessor :secondary_functional_area
102
+
103
+ # [Read-only] Primary Control Set of the system record. RMF values include the following options (NIST SP 800-53 Revision 4), DIACAP values include the following options (DoDI 8500.2)
104
+ attr_accessor :primary_control_set
105
+
106
+ # [Read-only] Confidentiality of the system record. RMF values include the following options (High, Moderate, Low)
107
+ attr_accessor :confidentiality
108
+
109
+ # [Read-only] Integrity of the system record. RMF values include the following options (High, Moderate, Low)
110
+ attr_accessor :integrity
111
+
112
+ # [Read-only] Availability of the system record. RMF values include the following options (High, Moderate, Low)
113
+ attr_accessor :availability
114
+
115
+ # [Read-only] Overlays applied to the system record.
116
+ attr_accessor :applied_overlays
117
+
118
+ # [Read-only] RMF Activity of the system record.
119
+ attr_accessor :rmf_activity
120
+
121
+ # [Read-only] Cross Domain Tickets of the system record.
122
+ attr_accessor :cross_domain_ticket
123
+
124
+ # [Read-Only] DITPR-DON identifier of the system record.
125
+ attr_accessor :ditpr_don_id
126
+
127
+ # [Read-Only] MAC level of the system record.
128
+ attr_accessor :mac
129
+
130
+ # [Read-Only] DoD Confidentiality level of the system record.
131
+ attr_accessor :dod_confidentiality
132
+
133
+ # [Read-only] Has the system record’s Contingency Plan been tested?
134
+ attr_accessor :contingency_plan_tested
135
+
136
+ # [Read-only] Date the system record’s Contingency Plan was tested.
137
+ attr_accessor :contingency_plan_test_date
138
+
139
+ # [Read-only] Date the system record’s Annual Security Review was conducted.
140
+ attr_accessor :security_review_date
141
+
142
+ # [Read-Only] Does the system record have an Ongoing or Risk Accepted POA&M Item?
143
+ attr_accessor :has_open_poam_item
144
+
145
+ # [Read-Only] Does the system record have an Ongoing or Risk Accepted POA&M Item 90 to 120 days past its Scheduled Completion Date?
146
+ attr_accessor :has_open_poam_item90to120_past_scheduled_completion_date
147
+
148
+ # [Read-Only] Does the system record have an Ongoing or Risk Accepted POA&M Item 120 days past its Scheduled Completion Date?
149
+ attr_accessor :has_open_poam_item120_plus_past_scheudled_completion_date
150
+
151
+ # [Optional] Values include the following options (Very Low, Low, Moderate,High,Very High)
152
+ attr_accessor :impact
153
+
154
+ # [Read-only] Does the system record contain and/or process Controlled Unclassified information?
155
+ attr_accessor :has_cui
156
+
157
+ # [Read-only] Does the system record contain and/or process Personally Identifiable Information?
158
+ attr_accessor :has_pii
159
+
160
+ # [Read-only] Does the system record contain and/or process Personal Health Information?
161
+ attr_accessor :has_phi
162
+
163
+ # [Read-only] Unique identifier for the DoD’s Ports, Protocols, and Services Management Registry system.
164
+ attr_accessor :ppsm_registry_number
165
+
166
+ # [Read-only] Identify the interconnected information systems and corresponding identifiers within control CA-3.
167
+ attr_accessor :interconnected_information_system_and_identifiers
168
+
169
+ # [Read-only] Does the system require a Privacy Impact Assessment?
170
+ attr_accessor :is_pia_required
171
+
172
+ # [Read-only] Status of the PIA, availability values include the following options (Not Started, In Progress, Completed)
173
+ attr_accessor :pia_status
174
+
175
+ # [Read-only] Date in which the system’s PIA took place.
176
+ attr_accessor :pia_date
177
+
178
+ # [Read-only] User-defined field to augment Ad Hoc Reporting.
179
+ attr_accessor :user_defined_field1
180
+
181
+ # [Read-only] User-defined field to augment Ad Hoc Reporting.
182
+ attr_accessor :user_defined_field2
183
+
184
+ # [Read-only] User-defined field to augment Ad Hoc Reporting.
185
+ attr_accessor :user_defined_field3
186
+
187
+ # [Read-only] User-defined field to augment Ad Hoc Reporting.
188
+ attr_accessor :user_defined_field4
189
+
190
+ # [Read-only] User-defined field to augment Ad Hoc Reporting.
191
+ attr_accessor :user_defined_field5
192
+
193
+ # [Read-only] Displays the system’s current step within the RMF Lifecycle.
194
+ attr_accessor :current_rmf_lifecycle_step
195
+
196
+ # [Read-only] Include any additional information required by the organization.
197
+ attr_accessor :other_information
198
+
199
+ # [Read-only] Indicates if the system reports to the DoD Cyber Hygiene Scorecard.
200
+ attr_accessor :reports_for_scorecard
201
+
202
+ attr_accessor :package
203
+
204
+ attr_accessor :connectivity_ccsd
205
+
206
+ class EnumAttributeValidator
207
+ attr_reader :datatype
208
+ attr_reader :allowable_values
209
+
210
+ def initialize(datatype, allowable_values)
211
+ @allowable_values = allowable_values.map do |value|
212
+ case datatype.to_s
213
+ when /Integer/i
214
+ value.to_i
215
+ when /Float/i
216
+ value.to_f
217
+ else
218
+ value
219
+ end
220
+ end
221
+ end
222
+
223
+ def valid?(value)
224
+ !value || allowable_values.include?(value)
225
+ end
226
+ end
227
+
228
+ # Attribute mapping from ruby-style variable name to JSON key.
229
+ def self.attribute_map
230
+ {
231
+ :'system_id' => :'systemId',
232
+ :'policy' => :'policy',
233
+ :'registration_type' => :'registrationType',
234
+ :'name' => :'name',
235
+ :'acronym' => :'acronym',
236
+ :'description' => :'description',
237
+ :'system_owner' => :'systemOwner',
238
+ :'organization_name' => :'organizationName',
239
+ :'secondary_organization' => :'secondaryOrganization',
240
+ :'version_release_no' => :'versionReleaseNo',
241
+ :'system_type' => :'systemType',
242
+ :'is_nss' => :'isNSS',
243
+ :'is_public_facing' => :'isPublicFacing',
244
+ :'coams_id' => :'coamsId',
245
+ :'is_type_authorization' => :'isTypeAuthorization',
246
+ :'ditpr_id' => :'ditprId',
247
+ :'authorization_status' => :'authorizationStatus',
248
+ :'authorization_date' => :'authorizationDate',
249
+ :'authorization_termination_date' => :'authorizationTerminationDate',
250
+ :'authorization_length' => :'authorizationLength',
251
+ :'terms_for_auth' => :'termsForAuth',
252
+ :'security_plan_approval_status' => :'securityPlanApprovalStatus',
253
+ :'security_plan_approval_date' => :'securityPlanApprovalDate',
254
+ :'mission_criticality' => :'missionCriticality',
255
+ :'geographical_association' => :'geographicalAssociation',
256
+ :'system_ownership' => :'systemOwnership',
257
+ :'governing_mission_area' => :'governingMissionArea',
258
+ :'primary_functional_area' => :'primaryFunctionalArea',
259
+ :'secondary_functional_area' => :'secondaryFunctionalArea',
260
+ :'primary_control_set' => :'primaryControlSet',
261
+ :'confidentiality' => :'confidentiality',
262
+ :'integrity' => :'integrity',
263
+ :'availability' => :'availability',
264
+ :'applied_overlays' => :'appliedOverlays',
265
+ :'rmf_activity' => :'rmfActivity',
266
+ :'cross_domain_ticket' => :'crossDomainTicket',
267
+ :'ditpr_don_id' => :'ditprDonId',
268
+ :'mac' => :'mac',
269
+ :'dod_confidentiality' => :'dodConfidentiality',
270
+ :'contingency_plan_tested' => :'contingencyPlanTested',
271
+ :'contingency_plan_test_date' => :'contingencyPlanTestDate',
272
+ :'security_review_date' => :'securityReviewDate',
273
+ :'has_open_poam_item' => :'hasOpenPoamItem',
274
+ :'has_open_poam_item90to120_past_scheduled_completion_date' => :'hasOpenPoamItem90to120PastScheduledCompletionDate',
275
+ :'has_open_poam_item120_plus_past_scheudled_completion_date' => :'hasOpenPoamItem120PlusPastScheudledCompletionDate',
276
+ :'impact' => :'impact',
277
+ :'has_cui' => :'hasCUI',
278
+ :'has_pii' => :'hasPII',
279
+ :'has_phi' => :'hasPHI',
280
+ :'ppsm_registry_number' => :'ppsmRegistryNumber',
281
+ :'interconnected_information_system_and_identifiers' => :'interconnectedInformationSystemAndIdentifiers',
282
+ :'is_pia_required' => :'isPiaRequired',
283
+ :'pia_status' => :'piaStatus',
284
+ :'pia_date' => :'piaDate',
285
+ :'user_defined_field1' => :'userDefinedField1',
286
+ :'user_defined_field2' => :'userDefinedField2',
287
+ :'user_defined_field3' => :'userDefinedField3',
288
+ :'user_defined_field4' => :'userDefinedField4',
289
+ :'user_defined_field5' => :'userDefinedField5',
290
+ :'current_rmf_lifecycle_step' => :'currentRmfLifecycleStep',
291
+ :'other_information' => :'otherInformation',
292
+ :'reports_for_scorecard' => :'reportsForScorecard',
293
+ :'package' => :'package',
294
+ :'connectivity_ccsd' => :'connectivityCcsd'
295
+ }
296
+ end
297
+
298
+ # Attribute type mapping.
299
+ def self.openapi_types
300
+ {
301
+ :'system_id' => :'Object',
302
+ :'policy' => :'Object',
303
+ :'registration_type' => :'Object',
304
+ :'name' => :'Object',
305
+ :'acronym' => :'Object',
306
+ :'description' => :'Object',
307
+ :'system_owner' => :'Object',
308
+ :'organization_name' => :'Object',
309
+ :'secondary_organization' => :'Object',
310
+ :'version_release_no' => :'Object',
311
+ :'system_type' => :'Object',
312
+ :'is_nss' => :'Object',
313
+ :'is_public_facing' => :'Object',
314
+ :'coams_id' => :'Object',
315
+ :'is_type_authorization' => :'Object',
316
+ :'ditpr_id' => :'Object',
317
+ :'authorization_status' => :'Object',
318
+ :'authorization_date' => :'Object',
319
+ :'authorization_termination_date' => :'Object',
320
+ :'authorization_length' => :'Object',
321
+ :'terms_for_auth' => :'Object',
322
+ :'security_plan_approval_status' => :'Object',
323
+ :'security_plan_approval_date' => :'Object',
324
+ :'mission_criticality' => :'Object',
325
+ :'geographical_association' => :'Object',
326
+ :'system_ownership' => :'Object',
327
+ :'governing_mission_area' => :'Object',
328
+ :'primary_functional_area' => :'Object',
329
+ :'secondary_functional_area' => :'Object',
330
+ :'primary_control_set' => :'Object',
331
+ :'confidentiality' => :'Object',
332
+ :'integrity' => :'Object',
333
+ :'availability' => :'Object',
334
+ :'applied_overlays' => :'Object',
335
+ :'rmf_activity' => :'Object',
336
+ :'cross_domain_ticket' => :'Object',
337
+ :'ditpr_don_id' => :'Object',
338
+ :'mac' => :'Object',
339
+ :'dod_confidentiality' => :'Object',
340
+ :'contingency_plan_tested' => :'Object',
341
+ :'contingency_plan_test_date' => :'Object',
342
+ :'security_review_date' => :'Object',
343
+ :'has_open_poam_item' => :'Object',
344
+ :'has_open_poam_item90to120_past_scheduled_completion_date' => :'Object',
345
+ :'has_open_poam_item120_plus_past_scheudled_completion_date' => :'Object',
346
+ :'impact' => :'Object',
347
+ :'has_cui' => :'Object',
348
+ :'has_pii' => :'Object',
349
+ :'has_phi' => :'Object',
350
+ :'ppsm_registry_number' => :'Object',
351
+ :'interconnected_information_system_and_identifiers' => :'Object',
352
+ :'is_pia_required' => :'Object',
353
+ :'pia_status' => :'Object',
354
+ :'pia_date' => :'Object',
355
+ :'user_defined_field1' => :'Object',
356
+ :'user_defined_field2' => :'Object',
357
+ :'user_defined_field3' => :'Object',
358
+ :'user_defined_field4' => :'Object',
359
+ :'user_defined_field5' => :'Object',
360
+ :'current_rmf_lifecycle_step' => :'Object',
361
+ :'other_information' => :'Object',
362
+ :'reports_for_scorecard' => :'Object',
363
+ :'package' => :'Object',
364
+ :'connectivity_ccsd' => :'Object'
365
+ }
366
+ end
367
+
368
+ # List of attributes with nullable: true
369
+ def self.openapi_nullable
370
+ Set.new([
371
+ ])
372
+ end
373
+
374
+ # Initializes the object
375
+ # @param [Hash] attributes Model attributes in the form of hash
376
+ def initialize(attributes = {})
377
+ if (!attributes.is_a?(Hash))
378
+ fail ArgumentError, "The input argument (attributes) must be a hash in `EmassClient::Systems` initialize method"
379
+ end
380
+
381
+ # check to see if the attribute exists and convert string to symbol for hash key
382
+ attributes = attributes.each_with_object({}) { |(k, v), h|
383
+ if (!self.class.attribute_map.key?(k.to_sym))
384
+ fail ArgumentError, "`#{k}` is not a valid attribute in `EmassClient::Systems`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
385
+ end
386
+ h[k.to_sym] = v
387
+ }
388
+
389
+ if attributes.key?(:'system_id')
390
+ self.system_id = attributes[:'system_id']
391
+ end
392
+
393
+ if attributes.key?(:'policy')
394
+ self.policy = attributes[:'policy']
395
+ end
396
+
397
+ if attributes.key?(:'registration_type')
398
+ self.registration_type = attributes[:'registration_type']
399
+ end
400
+
401
+ if attributes.key?(:'name')
402
+ self.name = attributes[:'name']
403
+ end
404
+
405
+ if attributes.key?(:'acronym')
406
+ self.acronym = attributes[:'acronym']
407
+ end
408
+
409
+ if attributes.key?(:'description')
410
+ self.description = attributes[:'description']
411
+ end
412
+
413
+ if attributes.key?(:'system_owner')
414
+ self.system_owner = attributes[:'system_owner']
415
+ end
416
+
417
+ if attributes.key?(:'organization_name')
418
+ self.organization_name = attributes[:'organization_name']
419
+ end
420
+
421
+ if attributes.key?(:'secondary_organization')
422
+ self.secondary_organization = attributes[:'secondary_organization']
423
+ end
424
+
425
+ if attributes.key?(:'version_release_no')
426
+ self.version_release_no = attributes[:'version_release_no']
427
+ end
428
+
429
+ if attributes.key?(:'system_type')
430
+ self.system_type = attributes[:'system_type']
431
+ end
432
+
433
+ if attributes.key?(:'is_nss')
434
+ self.is_nss = attributes[:'is_nss']
435
+ end
436
+
437
+ if attributes.key?(:'is_public_facing')
438
+ self.is_public_facing = attributes[:'is_public_facing']
439
+ end
440
+
441
+ if attributes.key?(:'coams_id')
442
+ self.coams_id = attributes[:'coams_id']
443
+ end
444
+
445
+ if attributes.key?(:'is_type_authorization')
446
+ self.is_type_authorization = attributes[:'is_type_authorization']
447
+ end
448
+
449
+ if attributes.key?(:'ditpr_id')
450
+ self.ditpr_id = attributes[:'ditpr_id']
451
+ end
452
+
453
+ if attributes.key?(:'authorization_status')
454
+ self.authorization_status = attributes[:'authorization_status']
455
+ end
456
+
457
+ if attributes.key?(:'authorization_date')
458
+ self.authorization_date = attributes[:'authorization_date']
459
+ end
460
+
461
+ if attributes.key?(:'authorization_termination_date')
462
+ self.authorization_termination_date = attributes[:'authorization_termination_date']
463
+ end
464
+
465
+ if attributes.key?(:'authorization_length')
466
+ self.authorization_length = attributes[:'authorization_length']
467
+ end
468
+
469
+ if attributes.key?(:'terms_for_auth')
470
+ self.terms_for_auth = attributes[:'terms_for_auth']
471
+ end
472
+
473
+ if attributes.key?(:'security_plan_approval_status')
474
+ self.security_plan_approval_status = attributes[:'security_plan_approval_status']
475
+ end
476
+
477
+ if attributes.key?(:'security_plan_approval_date')
478
+ self.security_plan_approval_date = attributes[:'security_plan_approval_date']
479
+ end
480
+
481
+ if attributes.key?(:'mission_criticality')
482
+ self.mission_criticality = attributes[:'mission_criticality']
483
+ end
484
+
485
+ if attributes.key?(:'geographical_association')
486
+ self.geographical_association = attributes[:'geographical_association']
487
+ end
488
+
489
+ if attributes.key?(:'system_ownership')
490
+ self.system_ownership = attributes[:'system_ownership']
491
+ end
492
+
493
+ if attributes.key?(:'governing_mission_area')
494
+ self.governing_mission_area = attributes[:'governing_mission_area']
495
+ end
496
+
497
+ if attributes.key?(:'primary_functional_area')
498
+ self.primary_functional_area = attributes[:'primary_functional_area']
499
+ end
500
+
501
+ if attributes.key?(:'secondary_functional_area')
502
+ self.secondary_functional_area = attributes[:'secondary_functional_area']
503
+ end
504
+
505
+ if attributes.key?(:'primary_control_set')
506
+ self.primary_control_set = attributes[:'primary_control_set']
507
+ end
508
+
509
+ if attributes.key?(:'confidentiality')
510
+ self.confidentiality = attributes[:'confidentiality']
511
+ end
512
+
513
+ if attributes.key?(:'integrity')
514
+ self.integrity = attributes[:'integrity']
515
+ end
516
+
517
+ if attributes.key?(:'availability')
518
+ self.availability = attributes[:'availability']
519
+ end
520
+
521
+ if attributes.key?(:'applied_overlays')
522
+ self.applied_overlays = attributes[:'applied_overlays']
523
+ end
524
+
525
+ if attributes.key?(:'rmf_activity')
526
+ self.rmf_activity = attributes[:'rmf_activity']
527
+ end
528
+
529
+ if attributes.key?(:'cross_domain_ticket')
530
+ self.cross_domain_ticket = attributes[:'cross_domain_ticket']
531
+ end
532
+
533
+ if attributes.key?(:'ditpr_don_id')
534
+ self.ditpr_don_id = attributes[:'ditpr_don_id']
535
+ end
536
+
537
+ if attributes.key?(:'mac')
538
+ self.mac = attributes[:'mac']
539
+ end
540
+
541
+ if attributes.key?(:'dod_confidentiality')
542
+ self.dod_confidentiality = attributes[:'dod_confidentiality']
543
+ end
544
+
545
+ if attributes.key?(:'contingency_plan_tested')
546
+ self.contingency_plan_tested = attributes[:'contingency_plan_tested']
547
+ end
548
+
549
+ if attributes.key?(:'contingency_plan_test_date')
550
+ self.contingency_plan_test_date = attributes[:'contingency_plan_test_date']
551
+ end
552
+
553
+ if attributes.key?(:'security_review_date')
554
+ self.security_review_date = attributes[:'security_review_date']
555
+ end
556
+
557
+ if attributes.key?(:'has_open_poam_item')
558
+ self.has_open_poam_item = attributes[:'has_open_poam_item']
559
+ end
560
+
561
+ if attributes.key?(:'has_open_poam_item90to120_past_scheduled_completion_date')
562
+ self.has_open_poam_item90to120_past_scheduled_completion_date = attributes[:'has_open_poam_item90to120_past_scheduled_completion_date']
563
+ end
564
+
565
+ if attributes.key?(:'has_open_poam_item120_plus_past_scheudled_completion_date')
566
+ self.has_open_poam_item120_plus_past_scheudled_completion_date = attributes[:'has_open_poam_item120_plus_past_scheudled_completion_date']
567
+ end
568
+
569
+ if attributes.key?(:'impact')
570
+ self.impact = attributes[:'impact']
571
+ end
572
+
573
+ if attributes.key?(:'has_cui')
574
+ self.has_cui = attributes[:'has_cui']
575
+ end
576
+
577
+ if attributes.key?(:'has_pii')
578
+ self.has_pii = attributes[:'has_pii']
579
+ end
580
+
581
+ if attributes.key?(:'has_phi')
582
+ self.has_phi = attributes[:'has_phi']
583
+ end
584
+
585
+ if attributes.key?(:'ppsm_registry_number')
586
+ self.ppsm_registry_number = attributes[:'ppsm_registry_number']
587
+ end
588
+
589
+ if attributes.key?(:'interconnected_information_system_and_identifiers')
590
+ self.interconnected_information_system_and_identifiers = attributes[:'interconnected_information_system_and_identifiers']
591
+ end
592
+
593
+ if attributes.key?(:'is_pia_required')
594
+ self.is_pia_required = attributes[:'is_pia_required']
595
+ end
596
+
597
+ if attributes.key?(:'pia_status')
598
+ self.pia_status = attributes[:'pia_status']
599
+ end
600
+
601
+ if attributes.key?(:'pia_date')
602
+ self.pia_date = attributes[:'pia_date']
603
+ end
604
+
605
+ if attributes.key?(:'user_defined_field1')
606
+ self.user_defined_field1 = attributes[:'user_defined_field1']
607
+ end
608
+
609
+ if attributes.key?(:'user_defined_field2')
610
+ self.user_defined_field2 = attributes[:'user_defined_field2']
611
+ end
612
+
613
+ if attributes.key?(:'user_defined_field3')
614
+ self.user_defined_field3 = attributes[:'user_defined_field3']
615
+ end
616
+
617
+ if attributes.key?(:'user_defined_field4')
618
+ self.user_defined_field4 = attributes[:'user_defined_field4']
619
+ end
620
+
621
+ if attributes.key?(:'user_defined_field5')
622
+ self.user_defined_field5 = attributes[:'user_defined_field5']
623
+ end
624
+
625
+ if attributes.key?(:'current_rmf_lifecycle_step')
626
+ self.current_rmf_lifecycle_step = attributes[:'current_rmf_lifecycle_step']
627
+ end
628
+
629
+ if attributes.key?(:'other_information')
630
+ self.other_information = attributes[:'other_information']
631
+ end
632
+
633
+ if attributes.key?(:'reports_for_scorecard')
634
+ self.reports_for_scorecard = attributes[:'reports_for_scorecard']
635
+ end
636
+
637
+ if attributes.key?(:'package')
638
+ if (value = attributes[:'package']).is_a?(Array)
639
+ self.package = value
640
+ end
641
+ end
642
+
643
+ if attributes.key?(:'connectivity_ccsd')
644
+ if (value = attributes[:'connectivity_ccsd']).is_a?(Array)
645
+ self.connectivity_ccsd = value
646
+ end
647
+ end
648
+ end
649
+
650
+ # Show invalid properties with the reasons. Usually used together with valid?
651
+ # @return Array for valid properties with the reasons
652
+ def list_invalid_properties
653
+ invalid_properties = Array.new
654
+ invalid_properties
655
+ end
656
+
657
+ # Check to see if the all the properties in the model are valid
658
+ # @return true if the model is valid
659
+ def valid?
660
+ policy_validator = EnumAttributeValidator.new('Object', ['RMF', 'DIACAP'])
661
+ return false unless policy_validator.valid?(@policy)
662
+ registration_type_validator = EnumAttributeValidator.new('Object', ['Assess and Authorize', 'Assess Only', 'Guest', 'Regular', 'Functional', 'Cloud Service Provider', 'Common Control Provider'])
663
+ return false unless registration_type_validator.valid?(@registration_type)
664
+ organization_name_validator = EnumAttributeValidator.new('Object', ['Army', 'Navy', 'Air Force', 'Marines', 'DoD', 'Defense Information Systems Agency'])
665
+ return false unless organization_name_validator.valid?(@organization_name)
666
+ system_type_validator = EnumAttributeValidator.new('Object', ['IS Major Application', 'IS Enclave', 'Platform IT', 'Platform IT System', 'Platform IT Interconnection', 'AIS Application', 'Outsourced IT-Based Process (DoD-controlled)', 'Enclave', 'Outsourced IT-Based Process (service provider shared)'])
667
+ return false unless system_type_validator.valid?(@system_type)
668
+ authorization_status_validator = EnumAttributeValidator.new('Object', ['Authority to Operate (ATO)', 'Authority to Operate with Conditions (ATO) w/Conditions)', 'Interim Authority to Test (IATT)', 'Interim Authority to Operate (IATO)', 'Denied Authority to Operate (DATO)', 'Not Yet Authorized', 'Unaccredited', 'Decommissioned'])
669
+ return false unless authorization_status_validator.valid?(@authorization_status)
670
+ security_plan_approval_status_validator = EnumAttributeValidator.new('Object', ['Approved', 'Not Yet Approved', 'Denied'])
671
+ return false unless security_plan_approval_status_validator.valid?(@security_plan_approval_status)
672
+ mission_criticality_validator = EnumAttributeValidator.new('Object', ['Mission Critical (MC)', 'Mission Essential (ME)', 'Mission Support (MS)'])
673
+ return false unless mission_criticality_validator.valid?(@mission_criticality)
674
+ geographical_association_validator = EnumAttributeValidator.new('Object', ['VA Operated IS', 'non-VA Operated IS'])
675
+ return false unless geographical_association_validator.valid?(@geographical_association)
676
+ system_ownership_validator = EnumAttributeValidator.new('Object', ['Region 1', 'Region 2', 'Region 3', 'Region 4'])
677
+ return false unless system_ownership_validator.valid?(@system_ownership)
678
+ governing_mission_area_validator = EnumAttributeValidator.new('Object', ['Business MA (BMA)', 'DoD portion of the Intelligence MA (DIMA)', 'Enterprise Information Environment MA (EIEMA)', 'Warfighting MA (WMA)'])
679
+ return false unless governing_mission_area_validator.valid?(@governing_mission_area)
680
+ primary_functional_area_validator = EnumAttributeValidator.new('Object', ['Allies', 'CBRNE', 'Civilian Personnel & Readiness', 'Command and Control', 'Communications', 'Communications Security (COMSEC)', 'Economic', 'Environmental Security', 'Facilities', 'Finance', 'Health/Medical', 'Human Resources', 'Information Management', 'Inspector General', 'Intelligence', 'Logistics', 'Military Personnel and Readiness', 'Nuclear', 'Nuclear, Chemical, and Biological', 'Operations', 'Personnel and Readiness', 'Procurement/Acquisition', 'Reserve Components', 'Scientific and Engineering', 'Space and Weather', 'Test and Evaluation', 'Trainers', 'Weapons', 'Legal', 'Transportation', 'Not Applicable (N/A)', 'Integration and Testing'])
681
+ return false unless primary_functional_area_validator.valid?(@primary_functional_area)
682
+ secondary_functional_area_validator = EnumAttributeValidator.new('Object', ['Allies', 'CBRNE', 'Civilian Personnel & Readiness', 'Command and Control', 'Communications', 'Communications Security (COMSEC)', 'Economic', 'Environmental Security', 'Facilities', 'Finance', 'Health/Medical', 'Human Resources', 'Information Management', 'Inspector General', 'Intelligence', 'Logistics', 'Military Personnel and Readiness', 'Nuclear', 'Nuclear, Chemical, and Biological', 'Operations', 'Personnel and Readiness', 'Procurement/Acquisition', 'Reserve Components', 'Scientific and Engineering', 'Space and Weather', 'Test and Evaluation', 'Trainers', 'Weapons', 'Legal', 'Transportation', 'Not Applicable (N/A)', 'Integration and Testing'])
683
+ return false unless secondary_functional_area_validator.valid?(@secondary_functional_area)
684
+ primary_control_set_validator = EnumAttributeValidator.new('Object', ['NIST SP 800-53 Revision 4', 'DoDI 8500.2'])
685
+ return false unless primary_control_set_validator.valid?(@primary_control_set)
686
+ confidentiality_validator = EnumAttributeValidator.new('Object', ['High', 'Moderate', 'Low'])
687
+ return false unless confidentiality_validator.valid?(@confidentiality)
688
+ integrity_validator = EnumAttributeValidator.new('Object', ['High', 'Moderate', 'Low'])
689
+ return false unless integrity_validator.valid?(@integrity)
690
+ availability_validator = EnumAttributeValidator.new('Object', ['High', 'Moderate', 'Low'])
691
+ return false unless availability_validator.valid?(@availability)
692
+ applied_overlays_validator = EnumAttributeValidator.new('Object', ['Classified Information', 'Privacy', 'Cross Domain Solution (CDS)', 'Financial Management', 'Intelligence', 'Nuclear Command, Communication, Control Systems (NC3)', 'Cloud Service Provider (CSP)'])
693
+ return false unless applied_overlays_validator.valid?(@applied_overlays)
694
+ rmf_activity_validator = EnumAttributeValidator.new('Object', ['Initiate and plan C&A', 'Initiate and plan cybersecurity Assessment Authorization', 'Implement and validate assigned security controls', 'Make assessment determination and authorization decision', 'Maintain ATO and conduct reviews', 'Decommission'])
695
+ return false unless rmf_activity_validator.valid?(@rmf_activity)
696
+ mac_validator = EnumAttributeValidator.new('Object', ['I', 'II', 'III'])
697
+ return false unless mac_validator.valid?(@mac)
698
+ dod_confidentiality_validator = EnumAttributeValidator.new('Object', ['Public', 'Sensitive', 'Classified'])
699
+ return false unless dod_confidentiality_validator.valid?(@dod_confidentiality)
700
+ impact_validator = EnumAttributeValidator.new('Object', ['low', 'Moderate', 'High'])
701
+ return false unless impact_validator.valid?(@impact)
702
+ pia_status_validator = EnumAttributeValidator.new('Object', ['Not Started', 'In Progress', 'Completed'])
703
+ return false unless pia_status_validator.valid?(@pia_status)
704
+ current_rmf_lifecycle_step_validator = EnumAttributeValidator.new('Object', ['1 – Categorize', '2 – Select', '3 – Implement', '4 – Assess', '5 – Authorize', '6 – Monitor'])
705
+ return false unless current_rmf_lifecycle_step_validator.valid?(@current_rmf_lifecycle_step)
706
+ true
707
+ end
708
+
709
+ # Custom attribute writer method checking allowed values (enum).
710
+ # @param [Object] policy Object to be assigned
711
+ def policy=(policy)
712
+ validator = EnumAttributeValidator.new('Object', ['RMF', 'DIACAP'])
713
+ unless validator.valid?(policy)
714
+ fail ArgumentError, "invalid value for \"policy\", must be one of #{validator.allowable_values}."
715
+ end
716
+ @policy = policy
717
+ end
718
+
719
+ # Custom attribute writer method checking allowed values (enum).
720
+ # @param [Object] registration_type Object to be assigned
721
+ def registration_type=(registration_type)
722
+ validator = EnumAttributeValidator.new('Object', ['Assess and Authorize', 'Assess Only', 'Guest', 'Regular', 'Functional', 'Cloud Service Provider', 'Common Control Provider'])
723
+ unless validator.valid?(registration_type)
724
+ fail ArgumentError, "invalid value for \"registration_type\", must be one of #{validator.allowable_values}."
725
+ end
726
+ @registration_type = registration_type
727
+ end
728
+
729
+ # Custom attribute writer method checking allowed values (enum).
730
+ # @param [Object] organization_name Object to be assigned
731
+ def organization_name=(organization_name)
732
+ validator = EnumAttributeValidator.new('Object', ['Army', 'Navy', 'Air Force', 'Marines', 'DoD', 'Defense Information Systems Agency'])
733
+ unless validator.valid?(organization_name)
734
+ fail ArgumentError, "invalid value for \"organization_name\", must be one of #{validator.allowable_values}."
735
+ end
736
+ @organization_name = organization_name
737
+ end
738
+
739
+ # Custom attribute writer method checking allowed values (enum).
740
+ # @param [Object] system_type Object to be assigned
741
+ def system_type=(system_type)
742
+ validator = EnumAttributeValidator.new('Object', ['IS Major Application', 'IS Enclave', 'Platform IT', 'Platform IT System', 'Platform IT Interconnection', 'AIS Application', 'Outsourced IT-Based Process (DoD-controlled)', 'Enclave', 'Outsourced IT-Based Process (service provider shared)'])
743
+ unless validator.valid?(system_type)
744
+ fail ArgumentError, "invalid value for \"system_type\", must be one of #{validator.allowable_values}."
745
+ end
746
+ @system_type = system_type
747
+ end
748
+
749
+ # Custom attribute writer method checking allowed values (enum).
750
+ # @param [Object] authorization_status Object to be assigned
751
+ def authorization_status=(authorization_status)
752
+ validator = EnumAttributeValidator.new('Object', ['Authority to Operate (ATO)', 'Authority to Operate with Conditions (ATO) w/Conditions)', 'Interim Authority to Test (IATT)', 'Interim Authority to Operate (IATO)', 'Denied Authority to Operate (DATO)', 'Not Yet Authorized', 'Unaccredited', 'Decommissioned'])
753
+ unless validator.valid?(authorization_status)
754
+ fail ArgumentError, "invalid value for \"authorization_status\", must be one of #{validator.allowable_values}."
755
+ end
756
+ @authorization_status = authorization_status
757
+ end
758
+
759
+ # Custom attribute writer method checking allowed values (enum).
760
+ # @param [Object] security_plan_approval_status Object to be assigned
761
+ def security_plan_approval_status=(security_plan_approval_status)
762
+ validator = EnumAttributeValidator.new('Object', ['Approved', 'Not Yet Approved', 'Denied'])
763
+ unless validator.valid?(security_plan_approval_status)
764
+ fail ArgumentError, "invalid value for \"security_plan_approval_status\", must be one of #{validator.allowable_values}."
765
+ end
766
+ @security_plan_approval_status = security_plan_approval_status
767
+ end
768
+
769
+ # Custom attribute writer method checking allowed values (enum).
770
+ # @param [Object] mission_criticality Object to be assigned
771
+ def mission_criticality=(mission_criticality)
772
+ validator = EnumAttributeValidator.new('Object', ['Mission Critical (MC)', 'Mission Essential (ME)', 'Mission Support (MS)'])
773
+ unless validator.valid?(mission_criticality)
774
+ fail ArgumentError, "invalid value for \"mission_criticality\", must be one of #{validator.allowable_values}."
775
+ end
776
+ @mission_criticality = mission_criticality
777
+ end
778
+
779
+ # Custom attribute writer method checking allowed values (enum).
780
+ # @param [Object] geographical_association Object to be assigned
781
+ def geographical_association=(geographical_association)
782
+ validator = EnumAttributeValidator.new('Object', ['VA Operated IS', 'non-VA Operated IS'])
783
+ unless validator.valid?(geographical_association)
784
+ fail ArgumentError, "invalid value for \"geographical_association\", must be one of #{validator.allowable_values}."
785
+ end
786
+ @geographical_association = geographical_association
787
+ end
788
+
789
+ # Custom attribute writer method checking allowed values (enum).
790
+ # @param [Object] system_ownership Object to be assigned
791
+ def system_ownership=(system_ownership)
792
+ validator = EnumAttributeValidator.new('Object', ['Region 1', 'Region 2', 'Region 3', 'Region 4'])
793
+ unless validator.valid?(system_ownership)
794
+ fail ArgumentError, "invalid value for \"system_ownership\", must be one of #{validator.allowable_values}."
795
+ end
796
+ @system_ownership = system_ownership
797
+ end
798
+
799
+ # Custom attribute writer method checking allowed values (enum).
800
+ # @param [Object] governing_mission_area Object to be assigned
801
+ def governing_mission_area=(governing_mission_area)
802
+ validator = EnumAttributeValidator.new('Object', ['Business MA (BMA)', 'DoD portion of the Intelligence MA (DIMA)', 'Enterprise Information Environment MA (EIEMA)', 'Warfighting MA (WMA)'])
803
+ unless validator.valid?(governing_mission_area)
804
+ fail ArgumentError, "invalid value for \"governing_mission_area\", must be one of #{validator.allowable_values}."
805
+ end
806
+ @governing_mission_area = governing_mission_area
807
+ end
808
+
809
+ # Custom attribute writer method checking allowed values (enum).
810
+ # @param [Object] primary_functional_area Object to be assigned
811
+ def primary_functional_area=(primary_functional_area)
812
+ validator = EnumAttributeValidator.new('Object', ['Allies', 'CBRNE', 'Civilian Personnel & Readiness', 'Command and Control', 'Communications', 'Communications Security (COMSEC)', 'Economic', 'Environmental Security', 'Facilities', 'Finance', 'Health/Medical', 'Human Resources', 'Information Management', 'Inspector General', 'Intelligence', 'Logistics', 'Military Personnel and Readiness', 'Nuclear', 'Nuclear, Chemical, and Biological', 'Operations', 'Personnel and Readiness', 'Procurement/Acquisition', 'Reserve Components', 'Scientific and Engineering', 'Space and Weather', 'Test and Evaluation', 'Trainers', 'Weapons', 'Legal', 'Transportation', 'Not Applicable (N/A)', 'Integration and Testing'])
813
+ unless validator.valid?(primary_functional_area)
814
+ fail ArgumentError, "invalid value for \"primary_functional_area\", must be one of #{validator.allowable_values}."
815
+ end
816
+ @primary_functional_area = primary_functional_area
817
+ end
818
+
819
+ # Custom attribute writer method checking allowed values (enum).
820
+ # @param [Object] secondary_functional_area Object to be assigned
821
+ def secondary_functional_area=(secondary_functional_area)
822
+ validator = EnumAttributeValidator.new('Object', ['Allies', 'CBRNE', 'Civilian Personnel & Readiness', 'Command and Control', 'Communications', 'Communications Security (COMSEC)', 'Economic', 'Environmental Security', 'Facilities', 'Finance', 'Health/Medical', 'Human Resources', 'Information Management', 'Inspector General', 'Intelligence', 'Logistics', 'Military Personnel and Readiness', 'Nuclear', 'Nuclear, Chemical, and Biological', 'Operations', 'Personnel and Readiness', 'Procurement/Acquisition', 'Reserve Components', 'Scientific and Engineering', 'Space and Weather', 'Test and Evaluation', 'Trainers', 'Weapons', 'Legal', 'Transportation', 'Not Applicable (N/A)', 'Integration and Testing'])
823
+ unless validator.valid?(secondary_functional_area)
824
+ fail ArgumentError, "invalid value for \"secondary_functional_area\", must be one of #{validator.allowable_values}."
825
+ end
826
+ @secondary_functional_area = secondary_functional_area
827
+ end
828
+
829
+ # Custom attribute writer method checking allowed values (enum).
830
+ # @param [Object] primary_control_set Object to be assigned
831
+ def primary_control_set=(primary_control_set)
832
+ validator = EnumAttributeValidator.new('Object', ['NIST SP 800-53 Revision 4', 'DoDI 8500.2'])
833
+ unless validator.valid?(primary_control_set)
834
+ fail ArgumentError, "invalid value for \"primary_control_set\", must be one of #{validator.allowable_values}."
835
+ end
836
+ @primary_control_set = primary_control_set
837
+ end
838
+
839
+ # Custom attribute writer method checking allowed values (enum).
840
+ # @param [Object] confidentiality Object to be assigned
841
+ def confidentiality=(confidentiality)
842
+ validator = EnumAttributeValidator.new('Object', ['High', 'Moderate', 'Low'])
843
+ unless validator.valid?(confidentiality)
844
+ fail ArgumentError, "invalid value for \"confidentiality\", must be one of #{validator.allowable_values}."
845
+ end
846
+ @confidentiality = confidentiality
847
+ end
848
+
849
+ # Custom attribute writer method checking allowed values (enum).
850
+ # @param [Object] integrity Object to be assigned
851
+ def integrity=(integrity)
852
+ validator = EnumAttributeValidator.new('Object', ['High', 'Moderate', 'Low'])
853
+ unless validator.valid?(integrity)
854
+ fail ArgumentError, "invalid value for \"integrity\", must be one of #{validator.allowable_values}."
855
+ end
856
+ @integrity = integrity
857
+ end
858
+
859
+ # Custom attribute writer method checking allowed values (enum).
860
+ # @param [Object] availability Object to be assigned
861
+ def availability=(availability)
862
+ validator = EnumAttributeValidator.new('Object', ['High', 'Moderate', 'Low'])
863
+ unless validator.valid?(availability)
864
+ fail ArgumentError, "invalid value for \"availability\", must be one of #{validator.allowable_values}."
865
+ end
866
+ @availability = availability
867
+ end
868
+
869
+ # Custom attribute writer method checking allowed values (enum).
870
+ # @param [Object] applied_overlays Object to be assigned
871
+ def applied_overlays=(applied_overlays)
872
+ validator = EnumAttributeValidator.new('Object', ['Classified Information', 'Privacy', 'Cross Domain Solution (CDS)', 'Financial Management', 'Intelligence', 'Nuclear Command, Communication, Control Systems (NC3)', 'Cloud Service Provider (CSP)'])
873
+ unless validator.valid?(applied_overlays)
874
+ fail ArgumentError, "invalid value for \"applied_overlays\", must be one of #{validator.allowable_values}."
875
+ end
876
+ @applied_overlays = applied_overlays
877
+ end
878
+
879
+ # Custom attribute writer method checking allowed values (enum).
880
+ # @param [Object] rmf_activity Object to be assigned
881
+ def rmf_activity=(rmf_activity)
882
+ validator = EnumAttributeValidator.new('Object', ['Initiate and plan C&A', 'Initiate and plan cybersecurity Assessment Authorization', 'Implement and validate assigned security controls', 'Make assessment determination and authorization decision', 'Maintain ATO and conduct reviews', 'Decommission'])
883
+ unless validator.valid?(rmf_activity)
884
+ fail ArgumentError, "invalid value for \"rmf_activity\", must be one of #{validator.allowable_values}."
885
+ end
886
+ @rmf_activity = rmf_activity
887
+ end
888
+
889
+ # Custom attribute writer method checking allowed values (enum).
890
+ # @param [Object] mac Object to be assigned
891
+ def mac=(mac)
892
+ validator = EnumAttributeValidator.new('Object', ['I', 'II', 'III'])
893
+ unless validator.valid?(mac)
894
+ fail ArgumentError, "invalid value for \"mac\", must be one of #{validator.allowable_values}."
895
+ end
896
+ @mac = mac
897
+ end
898
+
899
+ # Custom attribute writer method checking allowed values (enum).
900
+ # @param [Object] dod_confidentiality Object to be assigned
901
+ def dod_confidentiality=(dod_confidentiality)
902
+ validator = EnumAttributeValidator.new('Object', ['Public', 'Sensitive', 'Classified'])
903
+ unless validator.valid?(dod_confidentiality)
904
+ fail ArgumentError, "invalid value for \"dod_confidentiality\", must be one of #{validator.allowable_values}."
905
+ end
906
+ @dod_confidentiality = dod_confidentiality
907
+ end
908
+
909
+ # Custom attribute writer method checking allowed values (enum).
910
+ # @param [Object] impact Object to be assigned
911
+ def impact=(impact)
912
+ validator = EnumAttributeValidator.new('Object', ['low', 'Moderate', 'High'])
913
+ unless validator.valid?(impact)
914
+ fail ArgumentError, "invalid value for \"impact\", must be one of #{validator.allowable_values}."
915
+ end
916
+ @impact = impact
917
+ end
918
+
919
+ # Custom attribute writer method checking allowed values (enum).
920
+ # @param [Object] pia_status Object to be assigned
921
+ def pia_status=(pia_status)
922
+ validator = EnumAttributeValidator.new('Object', ['Not Started', 'In Progress', 'Completed'])
923
+ unless validator.valid?(pia_status)
924
+ fail ArgumentError, "invalid value for \"pia_status\", must be one of #{validator.allowable_values}."
925
+ end
926
+ @pia_status = pia_status
927
+ end
928
+
929
+ # Custom attribute writer method checking allowed values (enum).
930
+ # @param [Object] current_rmf_lifecycle_step Object to be assigned
931
+ def current_rmf_lifecycle_step=(current_rmf_lifecycle_step)
932
+ validator = EnumAttributeValidator.new('Object', ['1 – Categorize', '2 – Select', '3 – Implement', '4 – Assess', '5 – Authorize', '6 – Monitor'])
933
+ unless validator.valid?(current_rmf_lifecycle_step)
934
+ fail ArgumentError, "invalid value for \"current_rmf_lifecycle_step\", must be one of #{validator.allowable_values}."
935
+ end
936
+ @current_rmf_lifecycle_step = current_rmf_lifecycle_step
937
+ end
938
+
939
+ # Checks equality by comparing each attribute.
940
+ # @param [Object] Object to be compared
941
+ def ==(o)
942
+ return true if self.equal?(o)
943
+ self.class == o.class &&
944
+ system_id == o.system_id &&
945
+ policy == o.policy &&
946
+ registration_type == o.registration_type &&
947
+ name == o.name &&
948
+ acronym == o.acronym &&
949
+ description == o.description &&
950
+ system_owner == o.system_owner &&
951
+ organization_name == o.organization_name &&
952
+ secondary_organization == o.secondary_organization &&
953
+ version_release_no == o.version_release_no &&
954
+ system_type == o.system_type &&
955
+ is_nss == o.is_nss &&
956
+ is_public_facing == o.is_public_facing &&
957
+ coams_id == o.coams_id &&
958
+ is_type_authorization == o.is_type_authorization &&
959
+ ditpr_id == o.ditpr_id &&
960
+ authorization_status == o.authorization_status &&
961
+ authorization_date == o.authorization_date &&
962
+ authorization_termination_date == o.authorization_termination_date &&
963
+ authorization_length == o.authorization_length &&
964
+ terms_for_auth == o.terms_for_auth &&
965
+ security_plan_approval_status == o.security_plan_approval_status &&
966
+ security_plan_approval_date == o.security_plan_approval_date &&
967
+ mission_criticality == o.mission_criticality &&
968
+ geographical_association == o.geographical_association &&
969
+ system_ownership == o.system_ownership &&
970
+ governing_mission_area == o.governing_mission_area &&
971
+ primary_functional_area == o.primary_functional_area &&
972
+ secondary_functional_area == o.secondary_functional_area &&
973
+ primary_control_set == o.primary_control_set &&
974
+ confidentiality == o.confidentiality &&
975
+ integrity == o.integrity &&
976
+ availability == o.availability &&
977
+ applied_overlays == o.applied_overlays &&
978
+ rmf_activity == o.rmf_activity &&
979
+ cross_domain_ticket == o.cross_domain_ticket &&
980
+ ditpr_don_id == o.ditpr_don_id &&
981
+ mac == o.mac &&
982
+ dod_confidentiality == o.dod_confidentiality &&
983
+ contingency_plan_tested == o.contingency_plan_tested &&
984
+ contingency_plan_test_date == o.contingency_plan_test_date &&
985
+ security_review_date == o.security_review_date &&
986
+ has_open_poam_item == o.has_open_poam_item &&
987
+ has_open_poam_item90to120_past_scheduled_completion_date == o.has_open_poam_item90to120_past_scheduled_completion_date &&
988
+ has_open_poam_item120_plus_past_scheudled_completion_date == o.has_open_poam_item120_plus_past_scheudled_completion_date &&
989
+ impact == o.impact &&
990
+ has_cui == o.has_cui &&
991
+ has_pii == o.has_pii &&
992
+ has_phi == o.has_phi &&
993
+ ppsm_registry_number == o.ppsm_registry_number &&
994
+ interconnected_information_system_and_identifiers == o.interconnected_information_system_and_identifiers &&
995
+ is_pia_required == o.is_pia_required &&
996
+ pia_status == o.pia_status &&
997
+ pia_date == o.pia_date &&
998
+ user_defined_field1 == o.user_defined_field1 &&
999
+ user_defined_field2 == o.user_defined_field2 &&
1000
+ user_defined_field3 == o.user_defined_field3 &&
1001
+ user_defined_field4 == o.user_defined_field4 &&
1002
+ user_defined_field5 == o.user_defined_field5 &&
1003
+ current_rmf_lifecycle_step == o.current_rmf_lifecycle_step &&
1004
+ other_information == o.other_information &&
1005
+ reports_for_scorecard == o.reports_for_scorecard &&
1006
+ package == o.package &&
1007
+ connectivity_ccsd == o.connectivity_ccsd
1008
+ end
1009
+
1010
+ # @see the `==` method
1011
+ # @param [Object] Object to be compared
1012
+ def eql?(o)
1013
+ self == o
1014
+ end
1015
+
1016
+ # Calculates hash code according to all attributes.
1017
+ # @return [Integer] Hash code
1018
+ def hash
1019
+ [system_id, policy, registration_type, name, acronym, description, system_owner, organization_name, secondary_organization, version_release_no, system_type, is_nss, is_public_facing, coams_id, is_type_authorization, ditpr_id, authorization_status, authorization_date, authorization_termination_date, authorization_length, terms_for_auth, security_plan_approval_status, security_plan_approval_date, mission_criticality, geographical_association, system_ownership, governing_mission_area, primary_functional_area, secondary_functional_area, primary_control_set, confidentiality, integrity, availability, applied_overlays, rmf_activity, cross_domain_ticket, ditpr_don_id, mac, dod_confidentiality, contingency_plan_tested, contingency_plan_test_date, security_review_date, has_open_poam_item, has_open_poam_item90to120_past_scheduled_completion_date, has_open_poam_item120_plus_past_scheudled_completion_date, impact, has_cui, has_pii, has_phi, ppsm_registry_number, interconnected_information_system_and_identifiers, is_pia_required, pia_status, pia_date, user_defined_field1, user_defined_field2, user_defined_field3, user_defined_field4, user_defined_field5, current_rmf_lifecycle_step, other_information, reports_for_scorecard, package, connectivity_ccsd].hash
1020
+ end
1021
+
1022
+ # Builds the object from hash
1023
+ # @param [Hash] attributes Model attributes in the form of hash
1024
+ # @return [Object] Returns the model itself
1025
+ def self.build_from_hash(attributes)
1026
+ new.build_from_hash(attributes)
1027
+ end
1028
+
1029
+ # Builds the object from hash
1030
+ # @param [Hash] attributes Model attributes in the form of hash
1031
+ # @return [Object] Returns the model itself
1032
+ def build_from_hash(attributes)
1033
+ return nil unless attributes.is_a?(Hash)
1034
+ self.class.openapi_types.each_pair do |key, type|
1035
+ if type =~ /\AArray<(.*)>/i
1036
+ # check to ensure the input is an array given that the attribute
1037
+ # is documented as an array but the input is not
1038
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
1039
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
1040
+ end
1041
+ elsif !attributes[self.class.attribute_map[key]].nil?
1042
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
1043
+ elsif attributes[self.class.attribute_map[key]].nil? && self.class.openapi_nullable.include?(key)
1044
+ self.send("#{key}=", nil)
1045
+ end
1046
+ end
1047
+
1048
+ self
1049
+ end
1050
+
1051
+ # Deserializes the data based on type
1052
+ # @param string type Data type
1053
+ # @param string value Value to be deserialized
1054
+ # @return [Object] Deserialized data
1055
+ def _deserialize(type, value)
1056
+ case type.to_sym
1057
+ when :DateTime
1058
+ DateTime.parse(value)
1059
+ when :Date
1060
+ Date.parse(value)
1061
+ when :String
1062
+ value.to_s
1063
+ when :Integer
1064
+ value.to_i
1065
+ when :Float
1066
+ value.to_f
1067
+ when :Boolean
1068
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
1069
+ true
1070
+ else
1071
+ false
1072
+ end
1073
+ when :Object
1074
+ # generic object (usually a Hash), return directly
1075
+ value
1076
+ when /\AArray<(?<inner_type>.+)>\z/
1077
+ inner_type = Regexp.last_match[:inner_type]
1078
+ value.map { |v| _deserialize(inner_type, v) }
1079
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
1080
+ k_type = Regexp.last_match[:k_type]
1081
+ v_type = Regexp.last_match[:v_type]
1082
+ {}.tap do |hash|
1083
+ value.each do |k, v|
1084
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
1085
+ end
1086
+ end
1087
+ else # model
1088
+ EmassClient.const_get(type).build_from_hash(value)
1089
+ end
1090
+ end
1091
+
1092
+ # Returns the string representation of the object
1093
+ # @return [String] String presentation of the object
1094
+ def to_s
1095
+ to_hash.to_s
1096
+ end
1097
+
1098
+ # to_body is an alias to to_hash (backward compatibility)
1099
+ # @return [Hash] Returns the object in the form of hash
1100
+ def to_body
1101
+ to_hash
1102
+ end
1103
+
1104
+ # Returns the object in the form of hash
1105
+ # @return [Hash] Returns the object in the form of hash
1106
+ def to_hash
1107
+ hash = {}
1108
+ self.class.attribute_map.each_pair do |attr, param|
1109
+ value = self.send(attr)
1110
+ if value.nil?
1111
+ is_nullable = self.class.openapi_nullable.include?(attr)
1112
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
1113
+ end
1114
+
1115
+ hash[param] = _to_hash(value)
1116
+ end
1117
+ hash
1118
+ end
1119
+
1120
+ # Outputs non-array value in the form of hash
1121
+ # For object, use to_hash. Otherwise, just return the value
1122
+ # @param [Object] value Any valid value
1123
+ # @return [Hash] Returns the value in the form of hash
1124
+ def _to_hash(value)
1125
+ if value.is_a?(Array)
1126
+ value.compact.map { |v| _to_hash(v) }
1127
+ elsif value.is_a?(Hash)
1128
+ {}.tap do |hash|
1129
+ value.each { |k, v| hash[k] = _to_hash(v) }
1130
+ end
1131
+ elsif value.respond_to? :to_hash
1132
+ value.to_hash
1133
+ else
1134
+ value
1135
+ end
1136
+ end end
1137
+ end