emasser 1.0.3 → 1.0.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. checksums.yaml +4 -4
  2. data/.env-example +2 -0
  3. data/.github/workflows/gh-pages.yml +4 -5
  4. data/.github/workflows/release.yml +9 -9
  5. data/Dockerfile +6 -4
  6. data/Gemfile +1 -1
  7. data/Gemfile.lock +23 -30
  8. data/README.md +87 -78
  9. data/docs/features.md +343 -207
  10. data/docs/images/emasser_architecture.jpg +0 -0
  11. data/emasser.gemspec +5 -3
  12. data/images/emasser_architecture.jpg +0 -0
  13. data/images/emasser_diagram-Page-3.jpg +0 -0
  14. data/lib/emasser/cli.rb +2 -2
  15. data/lib/emasser/configuration.rb +1 -0
  16. data/lib/emasser/constants.rb +11 -3
  17. data/lib/emasser/delete.rb +9 -7
  18. data/lib/emasser/get.rb +43 -48
  19. data/lib/emasser/help/cloudresource_post_mapper.md +62 -0
  20. data/lib/emasser/help/container_post_mapper.md +44 -0
  21. data/lib/emasser/output_converters.rb +101 -4
  22. data/lib/emasser/post.rb +231 -38
  23. data/lib/emasser/put.rb +23 -16
  24. data/lib/emasser/version.rb +1 -1
  25. metadata +19 -25
  26. data/.github/workflows/generate_docs.yml +0 -33
  27. data/docs/developers.md +0 -115
  28. data/docs/swagger/dist/favicon-16x16.png +0 -0
  29. data/docs/swagger/dist/favicon-32x32.png +0 -0
  30. data/docs/swagger/dist/oauth2-redirect.html +0 -75
  31. data/docs/swagger/dist/swagger-ui-bundle.js +0 -3
  32. data/docs/swagger/dist/swagger-ui-bundle.js.map +0 -1
  33. data/docs/swagger/dist/swagger-ui-es-bundle-core.js +0 -3
  34. data/docs/swagger/dist/swagger-ui-es-bundle-core.js.map +0 -1
  35. data/docs/swagger/dist/swagger-ui-es-bundle.js +0 -3
  36. data/docs/swagger/dist/swagger-ui-es-bundle.js.map +0 -1
  37. data/docs/swagger/dist/swagger-ui-standalone-preset.js +0 -3
  38. data/docs/swagger/dist/swagger-ui-standalone-preset.js.map +0 -1
  39. data/docs/swagger/dist/swagger-ui.css +0 -4
  40. data/docs/swagger/dist/swagger-ui.css.map +0 -1
  41. data/docs/swagger/dist/swagger-ui.js +0 -3
  42. data/docs/swagger/dist/swagger-ui.js.map +0 -1
  43. data/docs/swagger/index.html +0 -60
data/docs/features.md CHANGED
@@ -1,9 +1,17 @@
1
1
  # emasser CLI Features
2
2
 
3
- ## Required Environment Variables
4
- To facilitate setting the required environment variables the emasser CLI utilized the zero-dependency module to load these variables from a .env file. An .env-example file is provided with the required fields (listed below).
3
+ ## Environment Variables
4
+ To facilitate setting the required environment variables the `emasser `CLI utilized the zero-dependency module to load these variables from a `.env` file.
5
5
 
6
- emasser environment variables (required):
6
+ ### Configuring the `.env` File
7
+ An `.env-example` file is provided with the required and optional fields.
8
+
9
+ Modify the `.env_example` as necessary and save it as a `.env` file.
10
+
11
+ Place the file on the path where the `emasser` command is executed.
12
+
13
+ ### Required and Optional Environment Variables
14
+ The following environment variables are required:
7
15
  * EMASSER_API_KEY_API_KEY=`<API key>`
8
16
  * EMASSER_API_KEY_USER_UID=`<unique identifier for the API Key (EMASSER_API_KEY_API_KEY)`
9
17
  * EMASSER_HOST=`<FQDN of the eMASS server>`
@@ -11,26 +19,31 @@ emasser environment variables (required):
11
19
  * EMASSER_CERT_FILE_PATH=`<path to your eMASS certificate in PEM format>`
12
20
  * EMASSER_KEY_PASSWORD=`<password for the key given in EMASSER_KEY_FILE_PATH>`
13
21
 
14
- emasser environment variables (optional):
15
- * EMASSER_CLIENT_SIDE_VALIDATION=`<client side validation - true or false>`
16
- * EMASSER_VERIFY_SSL=`<verify SSL - true or false>`
17
- * EMASSER_VERIFY_SSL_HOST=`<verify host SSL - true or false>`
18
- * EMASSER_DEBUGGING=`<set debugging - true or false>`
22
+ The following environment variables are *optional:
23
+ * EMASSER_CLIENT_SIDE_VALIDATION=`<client side validation - true or false (default true)>`
24
+ * EMASSER_VERIFY_SSL=`<verify SSL - true or false (default true)>`
25
+ * EMASSER_VERIFY_SSL_HOST=`<verify host SSL - true or false (default true)>`
26
+ * EMASSER_DEBUGGING=`<set debugging - true or false (default false)>`
27
+ * EMASSER_CLI_DISPLAY_NULL=`<display null value fields - true or false (default true)>`
28
+ * EMASSER_POCH_TO_DATETIME=`<convert epoch to data/time value - true or false (default false)>`
29
+
30
+ \* If not provided defaults are used
31
+
32
+ The proper format to set these variables in the `.env` files is as follows:
33
+ ```bash
34
+ export [VARIABLE_NAME]='value'
35
+ ```
36
+ ***NOTE***
37
+ `emasser` requires authentication to an eMASS instance as well as authorization to use the eMASS API. This authentication and authorization is **not** a function of `emasser` and needs to be accomplished with the eMASS instances owner organization. Further information about eMASS credential requirements refer to [Defense Counterintelligence and Security Agency](https://www.dcsa.mil/is/emass/) about eMASS access.
19
38
 
39
+ ---
20
40
  ## Common emasser Endpoint Requests Information
21
41
  - To invoke any boolean parameters use --parameterName for TRUE and --no-parameterName for FALSE
22
- - The eMASS API provides the capability of updating multiple entries within several endpoints, however this CLI only supports updating one entry at the time.
42
+ - The eMASS API provides the capability of updating multiple entries within several endpoints, however the `emasser` CLI, in some cases only supports updating one entry at the time.
23
43
 
24
44
  ## Invoking emasser CLI Commands
25
45
 
26
- The CLI invoke commands listed in this document shows them when executing from the source code (after a pull from GitHub). If an executable (.gem) is created the command to invoke the endpoint is different. For example:
27
- - Invoking the GET systems endpoint from the source code is:
28
-
29
- bundle exec exe/emasser get systems all
30
-
31
- - Invoking the GET systems endpoint from the compile binary (.gem) is:
32
-
33
- emasser get systems all
46
+ The CLI invoke commands listed in this document shows them when executing from the source code (after a pull from GitHub). Please reference the [`emasser` README](https://mitre.github.io/emasser/) on how to invoke the CLI using other available executables (gem or docker).
34
47
 
35
48
  ## API Endpoints Provided
36
49
 
@@ -38,10 +51,11 @@ The CLI invoke commands listed in this document shows them when executing from t
38
51
  * [/api](#get-test-connection)
39
52
  * [/api/system](#get-system)
40
53
  * [/api/systems](#get-systems)
54
+ * [/api/systems/{systemId}](#get-system)
41
55
  * [/api/system-roles](#get-roles)
42
56
  * [/api/system-roles/{roleCategory}](#get-roles)
43
57
  * [/api/systems/{systemId}/controls](#get-controls)
44
- * [/api/systems/{systemId}/test-results](#get-test_results)
58
+ * [/api/systems/{systemId}/test-results](#get-testresults)
45
59
  * [/api/systems/{systemId}/poams](#get-poams)
46
60
  * [/api/systems/{systemId}/poams/{poamId}](#get-poams)
47
61
  * [/api/systems/{systemId}/poams/{poamId}/milestones](#get-milestones)
@@ -51,8 +65,8 @@ The CLI invoke commands listed in this document shows them when executing from t
51
65
  * [/api/systems/{systemId}/approval/cac](#get-cac)
52
66
  * [/api/systems/{systemId}/approval/pac](#get-pac)
53
67
  * [/api/cmmc-assessments](#get-cmmc)
54
- * [/api/workflow-definitions](#get-workflow_definitions)
55
- * [/api/systems/{systemId}/workflow-instances](#get-workflow_instances)
68
+ * [/api/workflow-definitions](#get-workflowdefinitions)
69
+ * [/api/systems/{systemId}/workflow-instances](#get-workflowinstances)
56
70
 
57
71
  ### POST
58
72
  * [/api/systems/{systemId}/test-results](#post-test_results)
@@ -62,6 +76,8 @@ The CLI invoke commands listed in this document shows them when executing from t
62
76
  * [/api/systems/{systemId}/approval/cac](#post-cac)
63
77
  * [/api/systems/{systemId}/approval/pac](#post-pac)
64
78
  * [/api/systems/{systemId}/static-code-scans](#post-static_code_scan)
79
+ * [/api/systems/{systemId}/cloud-resource-results](#post-cloudresource)
80
+ * [/api/systems/{systemId}/container-scan-results](#post-container)
65
81
 
66
82
  ### PUT
67
83
  * [/api/systems/{systemId}/controls](#put-controls)
@@ -77,77 +93,76 @@ The CLI invoke commands listed in this document shows them when executing from t
77
93
  ## Endpoints CLI help
78
94
 
79
95
  Each CLI endpoint command has several layers of help.
80
- - Using `help` after a `get, put, post, or delete` command lists all available endpoint calls
96
+ - Using `help` after a `get, put, post, or delete` command lists all available endpoint calls. The following command would list all available `GET` endpoints commands.
81
97
 
82
- ```
98
+ ```bash
83
99
  $ bundle exec exe/emasser get help
100
+ Commands:
101
+ emasser get artifacts # Get system Artifacts
102
+ emasser get cac # Get location of one or many controls in...
103
+ emasser get cmmc # Get CMMC assessment information
104
+ emasser get controls # Get system Controls
105
+ emasser get help [COMMAND] # Describe subcommands or one specific su...
106
+ emasser get milestones # Get system Milestones
107
+ emasser get pac # Get status of active workflows in a system
108
+ emasser get poams # Get system Poams
109
+ emasser get roles # Get all system roles or by category Id
110
+ emasser get system # Get a system ID given name/owner, or ge...
111
+ emasser get systems # Get all systems
112
+ emasser get test # Test connection to the configured eMASS...
113
+ emasser get test_results # Get system Test Results
114
+ emasser get workflow_definitions # Get workflow definitions in a site
115
+ emasser get workflow_instances # Get workflow instance by system and/or ...
84
116
  ```
85
-
86
- would list all available `GET` endpoint Commands:
87
-
88
- - emasser get approval ...
89
- - emasser get artifacts ...
90
- - emasser get controls ...
91
- - emasser get help [COMMAND] ...
92
- - emasser get poams ...
93
- - emasser get roles ...
94
- - emasser get system [--system-name [SYSTEM_NAME]] [--system-owner [SYSTEM_OW...
95
- - emasser get systems [options] ...
96
- - emasser get test_results ...
97
-
98
- - Preceding any command with `help` provides help for the command
99
-
100
- ```
117
+ - Preceding any command with `help` provides help for the command. The following command would list all available sub-commands and options for the `get artifacts` endpoint command.
118
+ ```bash
101
119
  $ bundle exec exe/emasser get help artifacts
120
+ commands:
121
+ emasser get artifacts export --filename=FILENAME --systemId=N # Get artifa...
122
+ emasser get artifacts forSystem --systemId=N # Get all sy...
123
+ emasser get artifacts help [COMMAND] # Describe s...
102
124
  ```
103
- would list all available sub-commands and options for the `get artifacts` endpoint commands:
104
- - emasser get artifacts export --filename=FILENAME --systemId=N # Get artifa...
105
- - emasser get artifacts help [COMMAND] # Describe s...
106
- - emasser get artifacts system --systemId=N # Get all sy...
107
-
108
- - Using `help` after any command lists all available options
109
-
110
- ```
125
+ - Using `help` after any command lists all available options. The following command would list all available options for the `get artifacts export` endpoint command.
126
+ ```bash
111
127
  $ bundle exec exe/emasser get artifacts help export
112
- ```
113
- would list all available options for the `get artifacts export` endpoint command:
114
- - Usage:
115
- - emasser get artifacts export --filename=FILENAME --systemId=N
116
- - Options:
117
- - --systemId=N # A numeric value representing the system identification
118
- - --filename=FILENAME # The artifact file name
119
- - --compress # BOOLEAN - true or false.
128
+ Usage:
129
+ emasser get artifacts export --filename=FILENAME --systemId=N
120
130
 
121
- **The same format is applicable to POST, PUT and DELETE requests as well, however there may be additional help content**
131
+ Options:
132
+ --systemId=N # A numeric value representing the system identification
133
+ --filename=FILENAME # The artifact file name
134
+ [--compress], [--no-compress] # BOOLEAN - true or false.
135
+ ```
136
+ **The same format is applicable for POST, PUT and DELETE requests as well, however there may be additional help content**
122
137
 
123
138
 
124
139
  ## Usage - GET
125
140
 
126
- ### ```get test connection```
127
- [top](#api-endpoints-provided)
128
-
141
+ ### ```get test connection```
129
142
  ---
130
143
  The Test Connection endpoint provides the ability to verify connection to the web service.
131
144
 
132
145
  $ bundle exec exe/emasser get test connection
133
146
 
134
147
  A return of success from the call indicates that the CLI can reach the configure server URL.
135
- References [Required Environment Variables](#required-environment-variables) list above.
148
+ References [Required Environment Variables](#required-environment-variables) for the necessary environment variables.
136
149
 
137
- ### ```get system```
138
150
  [top](#api-endpoints-provided)
139
151
 
152
+ ### ```get system```
153
+
140
154
  ---
141
- The `get system id` is a notified call by the CLI to find a system ID based on the system `name` or `owner`
155
+ The `get system` command is not a sanctioned eMASS endpoint, it makes use of the `get systems` endpoint with added business logic.
156
+
157
+ There are two commands provided by the get system:
142
158
 
143
- The `get system byId` is an eMASS GET request
159
+ - The `get system id` - returns system ID's based on the system `name` or `owner`
160
+ - The `get system byId` - returns the system content for parameter system ID
144
161
 
145
162
  ### get system id
146
163
  Retrieves a system identification based on the SYSTEM_NAME (name) or SYSTEM_OWNER (systemOwner) fields.
147
164
 
148
- **NOTE** This call is based on the /api/systems endpoint
149
-
150
- To invoke the `get system` use the following command:
165
+ To invoke the `get system id` use the following command:
151
166
 
152
167
  $ bundle exec exe/emasser get system id --system_name "system name" --system_owner "system owner"
153
168
 
@@ -157,7 +172,7 @@ If using a platform that has `awk` installed the following command can be used t
157
172
 
158
173
 
159
174
  ### get system byId
160
- To view a system by its identification (Id) use the following command:
175
+ Retrieves the system content for provided identification (ID) number. To invoke the endpoint use the following command:
161
176
 
162
177
  $ bundle exec exe/emasser get system byId
163
178
 
@@ -174,14 +189,16 @@ To view a system by its identification (Id) use the following command:
174
189
  |--includePackage |BOOLEAN - true or false |
175
190
  |--policy |Possible values: diacap, rmf, reporting |
176
191
 
192
+ [top](#api-endpoints-provided)
177
193
 
178
194
  ### ```get systems```
179
- [top](#api-endpoints-provided)
180
195
 
181
196
  ----
182
- To view systems use the following command:
183
-
197
+ To retrieve controls use the following command:
198
+ - all - Retrieves all available systems
199
+ ```
184
200
  $ bundle exec exe/emasser get systems all
201
+ ```
185
202
 
186
203
  - Optional parameters are:
187
204
 
@@ -194,12 +211,11 @@ To view systems use the following command:
194
211
  |--includePackage |BOOLEAN - true or false |
195
212
  |--policy |Possible values: diacap, rmf, reporting |
196
213
  |--registrationType |Possible values: assessAndAuthorize, assessOnly, guest, regular, functional, |
197
- | | loudServiceProvider, commonControlProvider |
214
+ | | cloudServiceProvider, commonControlProvider |
198
215
  |--reportsForScorecard |BOOLEAN - true or false |
199
216
 
200
-
201
- ### ```get roles```
202
217
  [top](#api-endpoints-provided)
218
+ ### ```get roles```
203
219
 
204
220
  ----
205
221
  There are two get endpoints for system roles:
@@ -225,12 +241,11 @@ There are two get endpoints for system roles:
225
241
  |--policy |Possible values: diacap, rmf, reporting |
226
242
  |--includeDecommissioned |BOOLEAN - true or false |
227
243
 
228
-
229
- ### ```get controls```
230
244
  [top](#api-endpoints-provided)
245
+ ### ```get controls```
231
246
 
232
247
  ----
233
- To view controls use the following command:
248
+ To retrieve controls use the following command:
234
249
 
235
250
  $ bundle exec exe/emasser get controls forSystem --systemId=SYSTEMID
236
251
 
@@ -246,12 +261,11 @@ To view controls use the following command:
246
261
  |-------------|:------------------------------------------|
247
262
  |--acronyms |The system acronym(s) e.g "AC-1, AC-2" - if not provided all controls for systemId are returned |
248
263
 
249
-
250
- ### ```get test_results```
251
264
  [top](#api-endpoints-provided)
265
+ ### ```get test_results```
252
266
 
253
267
  ----
254
- To view test results use the following command:
268
+ To retrieve test results use the following command:
255
269
 
256
270
  $ bundle exec exe/emasser get test_results forSystem --systemId=SYSTEMID
257
271
 
@@ -269,9 +283,8 @@ To view test results use the following command:
269
283
  |--ccis |String - The system CCIS string numerical value |
270
284
  |--latestOnly |BOOLEAN - true or false|
271
285
 
272
-
273
- ### ```get poams```
274
286
  [top](#api-endpoints-provided)
287
+ ### ```get poams```
275
288
 
276
289
  ----
277
290
  There are two get endpoints for system poams:
@@ -307,9 +320,8 @@ There are two get endpoints for system poams:
307
320
  |--systemId |Integer - Unique system identifier |
308
321
  |--poamId |Integer - Unique poam identifier |
309
322
 
310
-
311
- ### ```get milestones```
312
323
  [top](#api-endpoints-provided)
324
+ ### ```get milestones```
313
325
 
314
326
  ----
315
327
  There are two get endpoints for system milestones:
@@ -344,9 +356,8 @@ There are two get endpoints for system milestones:
344
356
  |--poamId |Integer - Unique poam identifier |
345
357
  |--milestoneId |Integer - Unique milestone identifier |
346
358
 
347
-
348
- ### ```get artifacts```
349
359
  [top](#api-endpoints-provided)
360
+ ### ```get artifacts```
350
361
 
351
362
  ----
352
363
  There are two get endpoints that provides the ability to view existing `Artifacts` in a system:
@@ -380,11 +391,14 @@ There are two get endpoints that provides the ability to view existing `Artifact
380
391
  |-------------|:----------------------------------|
381
392
  |--systemId |Integer - Unique system identifier |
382
393
  |--filename |The artifact file name |
394
+
395
+ - optional parameter is:
396
+ |parameter | type or values |
397
+ |-------------|:----------------------------------|
383
398
  |--compress |BOOLEAN - true or false. |
384
399
 
385
-
386
- ### ```get cac```
387
400
  [top](#api-endpoints-provided)
401
+ ### ```get cac```
388
402
 
389
403
  ----
390
404
  To view one or many Control Approval Chain (CAC) in a system specified system ID use the following command:
@@ -403,9 +417,8 @@ To view one or many Control Approval Chain (CAC) in a system specified system ID
403
417
  |-------------------------------|:----------------------------------------------|
404
418
  |--controlAcronyms |String - The system acronym(s) e.g "AC-1, AC-2"|
405
419
 
406
-
407
- ### ```get pac```
408
420
  [top](#api-endpoints-provided)
421
+ ### ```get pac```
409
422
 
410
423
  ----
411
424
  To view one or many Package Approval Chain (PAC) in a system specified system ID use the following command:
@@ -419,9 +432,8 @@ To view one or many Package Approval Chain (PAC) in a system specified system ID
419
432
  |-------------|:----------------------------------|
420
433
  |--systemId |Integer - Unique system identifier |
421
434
 
422
-
423
- ### ```get cmmc```
424
435
  [top](#api-endpoints-provided)
436
+ ### ```get cmmc```
425
437
 
426
438
  ----
427
439
  To view Cybersecurity Maturity Model Certification (CMMC) Assessments use the following command:
@@ -434,9 +446,8 @@ To view Cybersecurity Maturity Model Certification (CMMC) Assessments use the fo
434
446
  |----------------|:--------------------------------------|
435
447
  |--sinceDate |Date - The CMMC date. Unix date format |
436
448
 
437
-
438
- ### ```get workflow_definitions```
439
449
  [top](#api-endpoints-provided)
450
+ ### ```get workflow_definitions```
440
451
 
441
452
  ----
442
453
  To view Workflow Definitions use the following command:
@@ -449,22 +460,15 @@ To view Workflow Definitions use the following command:
449
460
  |---------------------|:----------------------------------------------------------------------------|
450
461
  |--includeInactive |BOOLEAN - true or false |
451
462
  |--registrationType |Possible values: assessAndAuthorize, assessOnly, guest, regular, functional, |
452
- | | loudServiceProvider, commonControlProvider |
453
-
463
+ | | cloudServiceProvider, commonControlProvider |
454
464
 
455
- ### ```get workflow_instances```
456
465
  [top](#api-endpoints-provided)
457
466
 
467
+ ### ```get workflow_instances```
458
468
  ----
459
469
  There are two get endpoints to view workflow instances:
460
- - forSystem
461
- $ bundle exec exe/emasser get workflow_instances forSystem --systemId=SYSTEMID
462
-
463
- - required parameter is:
464
-
465
- |parameter | type or values |
466
- |-------------|:----------------------------------|
467
- |--systemId |Integer - Unique system identifier |
470
+ - all
471
+ $ bundle exec exe/emasser get workflow_instances all
468
472
 
469
473
  - Optional parameters are:
470
474
 
@@ -476,21 +480,20 @@ There are two get endpoints to view workflow instances:
476
480
  |--status |Possible values: active, inactive, all |
477
481
 
478
482
  - byWorkflowInstanceId
479
- $ bundle exec exe/emasser get workflow_instances byWorkflowInstanceId --systemId=SYSTEMID --workflowInstanceId=--WORKFLOWID
483
+ $ bundle exec exe/emasser get workflow_instances byWorkflowInstanceId --workflowInstanceId=--WORKFLOWID
480
484
 
481
485
  - required parameter is:
482
486
 
483
487
  |parameter | type or values |
484
488
  |---------------------|:---------------------------------------------|
485
- |--systemId |Integer - Unique system identifier |
486
489
  |--workflowInstanceId |Integer - Unique workflow instance identifier |
487
490
 
491
+ [top](#api-endpoints-provided)
492
+
488
493
 
489
494
  ## Usage - POST
490
495
 
491
496
  ### ``post test_results``
492
- [top](#api-endpoints-provided)
493
-
494
497
  ---
495
498
  Test Result add (POST) endpoint API business rules.
496
499
 
@@ -531,11 +534,9 @@ For information at the command line use:
531
534
  ```
532
535
  $ bundle exec exe/emasser post test_results help add
533
536
  ```
534
-
537
+ [top](#post)
535
538
 
536
539
  ### ``post poams``
537
- [top](#api-endpoints-provided)
538
-
539
540
  ---
540
541
  Plan of Action and Milestones (POA&M) add (POST) endpoint API business rules.
541
542
 
@@ -573,19 +574,23 @@ Business logic, the following rules apply when adding POA&Ms
573
574
  - If the Security Control or Assessment Procedure does not exist in the system we may have to just import POA&M Item at the System Level.
574
575
 
575
576
 
576
- The following parameters/fields have the following character limitations:
577
- - POA&M Item cannot be saved if the Point of Contact fields exceed 100 characters:
578
- - Office / Organization (pocOrganization)
579
- - First Name (pocFirstName)
580
- - Last Name (pocLastName)
581
- - Email (email)
582
- - Phone Number (pocPhoneNumber)
583
- - POA&M Items cannot be saved if Mitigation field (mitigation) exceeds 2000 characters.
584
- - POA&M Items cannot be saved if Source Identifying Vulnerability field exceeds 2000 characters.
585
- - POA&M Items cannot be saved if Comments (comments) field exceeds 2000 characters
586
- - POA&M Items cannot be saved if Resource (resource) field exceeds 250 characters.
587
- - POA&M Items cannot be saved if Milestone Description exceeds 2000 characters.
588
-
577
+ The following POA&M parameters/fields have the following character limitations:
578
+ - Fields that can not exceed 100 characters:
579
+ - Office / Organization (`pocOrganization`)
580
+ - First Name (`pocFirstName`)
581
+ - Last Name (`pocLastName`)
582
+ - Email (`email`)
583
+ - Phone Number (`pocPhoneNumber`)
584
+ - External Unique ID (`externalUid`)
585
+ - Fields that can not exceed 250 characters:
586
+ - Resource (`resource`)
587
+ - Fields have can not exceed 2000 character:
588
+ - Vulnerability Description (`vulnerabilityDescription`)
589
+ - Source Identifying Vulnerability (`sourceIdentVuln`)
590
+ - Recommendations (`recommendations`)
591
+ - Risk Accepted Comments (`comments`)
592
+ - Milestone Description (`description`)
593
+ - Mitigation Justification (`mitigation`)
589
594
 
590
595
  To add (POST) POA&Ms use the following command:
591
596
  ```
@@ -604,30 +609,30 @@ $ bundle exec exe/emasser post poams add --systemId [value] --status [value] --v
604
609
  Client API parameters/fields (required, conditional, and optional).
605
610
  - required parameter are:
606
611
 
607
- |parameter | type or values |
608
- |---------------------------|:-----------------------------------------------------------------------|
609
- |--systemId |Integer - Unique system identifier |
610
- |--status |Possible Values: Ongoing,Risk Accepted,Completed,Not Applicable |
611
- |--vulnerabilityDescription |String - Vulnerability description for the POA&M Item. 2000 Characters |
612
- |--sourceIdentVuln |String - Include Source Identifying Vulnerability text. 2000 Characters |
613
- |--pocOrganization |String - Organization/Office represented. 100 Characters |
614
- |--resources |String - List of resources used. Character Limit = 250 |
612
+ |parameter | type or values |
613
+ |---------------------------|:---------------------------------------------------------------|
614
+ |--systemId |Integer - Unique system identifier |
615
+ |--status |Possible Values: Ongoing,Risk Accepted,Completed,Not Applicable |
616
+ |--vulnerabilityDescription |String - Vulnerability description for the POA&M Item |
617
+ |--sourceIdentVuln |String - Include Source Identifying Vulnerability text |
618
+ |--pocOrganization |String - Organization/Office represented |
619
+ |--resources |String - List of resources used. Character Limit = 250 |
615
620
 
616
621
  ** If any poc information is provided all POC fields are required. See additional details for POC fields below.
617
622
 
618
623
  - conditional parameters are:
619
624
 
620
- |parameter | type or values |
621
- |--------------------------|:--------------------------------------------------------------------------------------|
622
- |--milestones |JSON - see milestone format |
623
- |--pocFirstName |String - First name of POC. 100 Characters |
624
- |--pocLastName |String - Last name of POC. 100 Characters |
625
- |--pocEmail |String - Email address of POC. 100 Characters |
626
- |--pocPhoneNumber |String - Phone number of POC (area code) ***-**** format. 100 Characters |
627
- |--severity |Possible values - Very Low, Low, Moderate, High, Very High |
628
- |--scheduledCompletionDate |Date - Required for ongoing and completed POA&M items. Unix time format |
629
- |--completionDate |Date - Field is required for completed POA&M items. Unix time format |
630
- |--comments |String - Field is required for completed and risk accepted POA&M items. 2000 Characters|
625
+ |parameter | type or values |
626
+ |--------------------------|:------------------------------------------------------------------------|
627
+ |--milestones |JSON - see milestone format |
628
+ |--pocFirstName |String - First name of POC |
629
+ |--pocLastName |String - Last name of POC |
630
+ |--pocEmail |String - Email address of POC |
631
+ |--pocPhoneNumber |String - Phone number of POC (area code) ***-**** format |
632
+ |--severity |Possible values - Very Low, Low, Moderate, High, Very High |
633
+ |--scheduledCompletionDate |Date - Required for ongoing and completed POA&M items. Unix time format |
634
+ |--completionDate |Date - Field is required for completed POA&M items. Unix time format |
635
+ |--comments |String - Field is required for completed and risk accepted POA&M items. |
631
636
 
632
637
  ** If a POC email is supplied, the application will attempt to locate a user already registered within the application and pre-populate any information not explicitly supplied in the request. If no such user is found, these fields are required within the request:
633
638
  pocFirstName, pocLastName, pocPhoneNumber
@@ -639,7 +644,7 @@ Client API parameters/fields (required, conditional, and optional).
639
644
 
640
645
  |parameter | type or values |
641
646
  |--------------------|:-----------------------------------------------------------------------------------------|
642
- |--externalUid |String - External unique identifier for use with associating POA&M Items. 100 Characters |
647
+ |--externalUid |String - External unique identifier for use with associating POA&M Items |
643
648
  |--controlAcronym |String - Control acronym associated with the POA&M Item. NIST SP 800-53 Revision 4 defined|
644
649
  |--cci |String - CCI associated with the test result |
645
650
  |--securityChecks |String - Security Checks that are associated with the POA&M |
@@ -649,8 +654,8 @@ Client API parameters/fields (required, conditional, and optional).
649
654
  |--impact |Possible values: Very Low, Low, Moderate, High, Very High |
650
655
  |--impactDescription |String - Include description of Security Control’s impact |
651
656
  |--residualRiskLevel |Possible values: Very Low, Low, Moderate, High, Very High |
652
- |--recommendations |String - Include recommendations. Character Limit 2,000 |
653
- |--mitigation |String - Include mitigation explanation. 2000 Characters |
657
+ |--recommendations |String - Include recommendations |
658
+ |--mitigation |String - Include mitigation explanation |
654
659
 
655
660
 
656
661
  **Note**
@@ -658,11 +663,9 @@ For information at the command line use:
658
663
  ```
659
664
  $ bundle exec exe/emasser post poams help add
660
665
  ```
661
-
666
+ [top](#post)
662
667
 
663
668
  ### ``post milestones``
664
- [top](#api-endpoints-provided)
665
-
666
669
  ---
667
670
  To add (POST) milestones in a system for one or more POA&M items use the following command:
668
671
 
@@ -684,11 +687,9 @@ For information at the command line use:
684
687
  ```
685
688
  $ bundle exec exe/emasser post milestones help add
686
689
  ```
687
-
690
+ [top](#post)
688
691
 
689
692
  ### ``post artifacts``
690
- [top](#api-endpoints-provided)
691
-
692
693
  ---
693
694
  The add (POST) artifacts endpoint accepts a single binary file with file extension.zip only. The command line (CI) reads the files provided and zips them before sending to eMASS.
694
695
 
@@ -745,11 +746,9 @@ For information at the command line use:
745
746
  ```
746
747
  $ bundle exec exe/emasser post artifacts help upload
747
748
  ```
748
-
749
+ [top](#post)
749
750
 
750
751
  ### ``post cac``
751
- [top](#api-endpoints-provided)
752
-
753
752
  ----
754
753
  Submit control to second role of CAC
755
754
 
@@ -779,11 +778,9 @@ For information at the command line use:
779
778
  ```
780
779
  $ bundle exec exe/emasser post cac help add
781
780
  ```
782
-
781
+ [top](#post)
783
782
 
784
783
  ### ``post pac``
785
- [top](#api-endpoints-provided)
786
-
787
784
  ----
788
785
  Submit control to second role of CAC
789
786
 
@@ -799,20 +796,17 @@ To add (POST) test PAC use the following command:
799
796
  |--systemId |Integer - Unique system identifier |
800
797
  |--workflow |Possible Values: Assess and Authorize, Assess Only, Security Plan Approval |
801
798
  |--name |String - Package name. 100 Characters |
802
- |--comments |Strings - Comments submitted upon initiation of the indicated workflow, 4,000 character|
799
+ |--comments |String - Comments submitted upon initiation of the indicated workflow, 4,000 character|
803
800
 
804
801
  **Note**
805
802
  For information at the command line use:
806
803
  ```
807
804
  $ bundle exec exe/emasser post pac help add
808
805
  ```
809
-
806
+ [top](#post)
810
807
 
811
808
  ### ``post static_code_scan``
812
- [top](#api-endpoints-provided)
813
-
814
809
  ----
815
-
816
810
  To add (POST) static code scans use the following command:
817
811
 
818
812
  ````
@@ -858,12 +852,139 @@ For information at the command line use:
858
852
  ```
859
853
  $ bundle exec exe/emasser post scan_findings help add
860
854
  ```
855
+ [top](#post)
856
+
857
+ ### ```post cloud_resource```
858
+ ---
859
+
860
+ The following Cloud Resource parameters/fields have the following character limitations:
861
+ - Fields that can not exceed 50 characters:
862
+ - Policy Deployment Version (`policyDeploymentVersion`)
863
+ - Fields that can not exceed 100 characters:
864
+ - Assessment Procedure (`assessmentProcedure`)
865
+ - Security Control Acronym (`control`)
866
+ - CSP Account ID (`cspAccountId`)
867
+ - CSP Region (`cspRegion`)
868
+ - Email of POC (`initiatedBy`)
869
+ - Cloud Service Provider (`provider`)
870
+ - Type of Cloud resource (`resourceType`)
871
+ - Fields that can not exceed 500 characters:
872
+ - CSP/Resource’s Policy ID (`cspPolicyDefinitionId`)
873
+ - Policy Deployment Name (`policyDeploymentName`)
874
+ - Policy Compliance ID (`resourceId`)
875
+ - Cloud Resource Name (`resourceName`)
876
+ - Fields that can not exceed 1000 characters:
877
+ - Reason for Compliance (`complianceReason`)
878
+ - Fields that can not exceed 2000 characters:
879
+ - Policy Short Title (`policyDefinitionTitle`)
880
+
881
+ To add a cloud resource and their scan results in the assets module for a system use the following command:
882
+ ````
883
+ $ bundle exec exe/emasser post cloud_resource add --systemId [value] --provider [value] --resourceId [value] --resourceName [value] --resourceType [value] --cspPolicyDefinitionId [value] --isCompliant or --is-not-Compliant --policyDefinitionTitle [value] --test [value]
884
+ ````
885
+ - required parameter are:
886
+
887
+ |parameter | type or values |
888
+ |------------------------|:--------------------------------------------------------------------------|
889
+ |--systemId |Integer - Unique system identifier |
890
+ |--provider |string - Cloud service provider name |
891
+ |--resourceId |String - Unique identifier/resource namespace for policy compliance result |
892
+ |--resourceName |String - Friendly name of Cloud resource |
893
+ |--resourceType |String - Type of Cloud resource |
894
+ |--cspPolicyDefinitionId |String - Unique identifier/compliance namespace for CSP/Resource\'s policy definition/compliance check|
895
+ |--isCompliant | Boolean - Compliance status of the policy for the identified cloud resource |
896
+ |--policyDefinitionTitle | String - Friendly policy/compliance check title. Recommend short title |
897
+
898
+ - optional parameters are:
899
+
900
+ |parameter | type or values |
901
+ |-------------------|:------------------------------------------------------|
902
+ |--initiatedBy |String - Person initiating the process email address |
903
+ |--cspAccountId |String - System/owner\'s CSP account ID/number |
904
+ |--cspRegion |String - CSP region of system |
905
+ |--isBaseline |Boolean - Flag that indicates in results is a baseline |
906
+ |Tags Object (tags)|
907
+ |--text | String - Text that specifies the tag type |
908
+ |Compliance Results Array Objects (complianceResults)|
909
+ |--assessmentProcedure |String - Comma separated correlation to Assessment Procedure (i.e. CCI number for DoD Control Set) |
910
+ |--complianceCheckTimestamp |Date - The compliance check date - Unix time format |
911
+ |--complianceReason |String - Reason/comments for compliance result |
912
+ |--control |String - Comma separated correlation to Security Control (e.g. exact NIST Control acronym) |
913
+ |--policyDeploymentName |String - Name of policy deployment |
914
+ |--policyDeploymentVersion |String - Version of policy deployment |
915
+ |--severity |Possible Values: Low, Medium, High, Critical |
916
+
917
+
918
+ **Note**
919
+ For information at the command line use:
920
+ ```
921
+ $ bundle exec exe/emasser post cloud_resource help add
922
+ ```
923
+
924
+ [top](#post)
925
+
926
+
927
+ ### ```post container```
928
+ ---
929
+ The following Container parameters/fields have the following character limitations:
930
+ - Fields that can not exceed 100 characters:
931
+ - STIG Benchmark ID (`benchmark`)
932
+ - Container Namespace (`namespace`)
933
+ - Kubernetes assigned IP (`podIp`)
934
+ - Kubernetes Pod Name) (`podName`)
935
+ - Fields that can not exceed 500 characters:
936
+ - Container ID (`containerId`)
937
+ - Friendly Container Name (`containerName`)
938
+ - Fields that can not exceed 1000 characters:
939
+ - Result Comments (`message`)
940
+
941
+
942
+
943
+ To add containers and their scan results in the assets module for a system use the following command:
944
+ ````
945
+ $ bundle exec ruby exe/emasser post container add --systemId [value] --containerId [value] --containerName [value] --time [value] --benchmark [value] --lastSeen [value] --ruleId [value] --status [value]
946
+
947
+ ````
948
+
949
+ - required parameter are:
950
+
951
+ |parameter | type or values |
952
+ |------------------------|:--------------------------------------------------------------------------|
953
+ |--systemId |Integer - Unique system identifier |
954
+ |--containerId |String - Unique identifier of the container |
955
+ |--containerName |String - Friendly name of the container |
956
+ |--time |Date - Datetime of scan/result. Unix date format |
957
+ |Bench Marks Object (benchmarks)|
958
+ |--benchmark |String - Identifier of the benchmark/grouping of compliance results |
959
+ |benchmarks.results |Object
960
+ |--ruleId |String - Identifier for the compliance result, vulnerability, etc.
961
+ |--status |String - Benchmark result status
962
+ |--lastSeen |Date - Date last seen, Unix date format
963
+
964
+ - optional parameters are:
965
+
966
+ |parameter | type or values |
967
+ |----------------------------|:------------------------------------------------------|
968
+ |--podName |String - Name of pod (e.g. Kubernetes pod) |
969
+ |--podIp |String - IP address of pod |
970
+ |--namespace |String - Namespace of container in container orchestration (e.g. Kubernetes namespace)|
971
+ |Tags Object (tags)|
972
+ |--text | String - Text that specifies the tag type |
973
+ |Bench Marks Object (benchmarks)
974
+ |--isBaseline |Boolean - True/false flag for providing results as baseline. If true, all existing compliance results for the provided benchmark within the container will be replaced by results in the current call|
975
+ |benchmarks.results |Object
976
+ |--message |String - Comments for the result
861
977
 
978
+ **Note**
979
+ For information at the command line use:
980
+ ```
981
+ $ bundle exec exe/emasser post container help add
982
+ ```
983
+ [top](#post)
862
984
 
863
985
  ## Usage - PUT
864
986
 
865
987
  ### ``put controls``
866
- [top](#api-endpoints-provided)
867
988
 
868
989
  ----
869
990
  Business Rules
@@ -882,16 +1003,16 @@ Implementation Plan cannot be updated if a Security Control is "Inherited" excep
882
1003
 
883
1004
  The following parameters/fields have the following character limitations:
884
1005
  - Implementation Plan information cannot be saved if the fields below exceed 2,000 character limits:
885
- - N/A Justification (naJustification)
886
- - Responsible Entities (responsibleEntities)
887
- - Implementation Narrative (implementationNarrative)
888
- - Criticality (slcmCriticality)
889
- - Reporting (slcmReporting)
890
- - Tracking (slcmTracking)
891
- - Vulnerability Summary (vulnerabilitySummary)
892
- - Recommendations (recommendations)
1006
+ - N/A Justification (`naJustification`)
1007
+ - Responsible Entities (`responsibleEntities`)
1008
+ - Implementation Narrative (`implementationNarrative`)
1009
+ - Criticality (`slcmCriticality`)
1010
+ - Reporting (`slcmReporting`)
1011
+ - Tracking (`slcmTracking`)
1012
+ - Vulnerability Summary (`vulnerabilitySummary`)
1013
+ - Recommendations (`recommendations`)
893
1014
  - Implementation Plan information cannot be saved if the fields below exceed 4,000 character limits:
894
- - SLCM Comments (slcmComments)
1015
+ - SLCM Comments (`slcmComments`)
895
1016
 
896
1017
  Implementation Plan information cannot be updated if Security Control does not exist in the system record.
897
1018
 
@@ -943,10 +1064,9 @@ For information at the command line use:
943
1064
  ```
944
1065
  $ bundle exec exe/emasser put controls help update
945
1066
  ```
946
-
1067
+ [top](#put)
947
1068
 
948
1069
  ### ``put poams``
949
- [top](#api-endpoints-provided)
950
1070
 
951
1071
  ----
952
1072
  Business Rules
@@ -996,6 +1116,26 @@ The following parameters/fields have the following character limitations:
996
1116
  - POA&M Item cannot be saved if Resource field (resource) exceeds 250 characters.
997
1117
  - POA&M Items cannot be saved if Milestone Description (description) exceeds 2,000 characters.
998
1118
 
1119
+
1120
+ The following POA&M parameters/fields have the following character limitations:
1121
+ - Fields that can not exceed 100 characters:
1122
+ - Office / Organization (`pocOrganization`)
1123
+ - First Name (`pocFirstName`)
1124
+ - Last Name (`pocLastName`)
1125
+ - Email (`email`)
1126
+ - Phone Number (`pocPhoneNumber`)
1127
+ - External Unique ID (`externalUid`)
1128
+ - Fields that can not exceed 250 characters:
1129
+ - Resource (`resource`)
1130
+ - Fields have can not exceed 2000 character:
1131
+ - Vulnerability Description (`vulnerabilityDescription`)
1132
+ - Source Identifying Vulnerability (`sourceIdentVuln`)
1133
+ - Recommendations (`recommendations`)
1134
+ - Risk Accepted Comments (`comments`)
1135
+ - Milestone Description (`description`)
1136
+ - Mitigation Justification (`mitigation`)
1137
+
1138
+
999
1139
  ---
1000
1140
  Updating (PUT) a POA&M can be accomplished by invoking the following command:
1001
1141
  ````
@@ -1003,32 +1143,32 @@ Updating (PUT) a POA&M can be accomplished by invoking the following command:
1003
1143
  ````
1004
1144
  - required parameter are:
1005
1145
 
1006
- |parameter | type or values |
1007
- |---------------------------|:-----------------------------------------------------------------------|
1008
- |--systemId |Integer - Unique system identifier |
1009
- |--displayPoamId |Integer - Globally unique identifier for individual POA&M Items |
1010
- |--status |Possible Values: Ongoing,Risk Accepted,Completed,Not Applicable |
1011
- |--vulnerabilityDescription |String - Vulnerability description for the POA&M Item. 2000 Characters |
1012
- |--sourceIdentVuln |String - Include Source Identifying Vulnerability text. 2000 Characters |
1013
- |--pocOrganization |String - Organization/Office represented. 100 Characters |
1014
- |--resources |String - List of resources used. Character Limit = 250 |
1146
+ |parameter | type or values |
1147
+ |---------------------------|:---------------------------------------------------------------|
1148
+ |--systemId |Integer - Unique system identifier |
1149
+ |--displayPoamId |Integer - Globally unique identifier for individual POA&M Items |
1150
+ |--status |Possible Values: Ongoing,Risk Accepted,Completed,Not Applicable |
1151
+ |--vulnerabilityDescription |String - Vulnerability description for the POA&M Item |
1152
+ |--sourceIdentVuln |String - Include Source Identifying Vulnerability text |
1153
+ |--pocOrganization |String - Organization/Office represented |
1154
+ |--resources |String - List of resources used. Character Limit = 250 |
1015
1155
 
1016
1156
  ** If any poc information is provided all POC fields are required. See additional details for POC fields below.
1017
1157
 
1018
1158
  - conditional parameters are:
1019
1159
 
1020
- |parameter | type or values |
1021
- |--------------------------|:--------------------------------------------------------------------------------------|
1022
- |--milestones |JSON - see milestone format |
1023
- |--pocFirstName |String - First name of POC. 100 Characters |
1024
- |--pocLastName |String - Last name of POC. 100 Characters |
1025
- |--pocEmail |String - Email address of POC. 100 Characters |
1026
- |--pocPhoneNumber |String - Phone number of POC (area code) ***-**** format. 100 Characters |
1027
- |--severity |Possible values - Very Low, Low, Moderate, High, Very High |
1028
- |--scheduledCompletionDate |Date - Required for ongoing and completed POA&M items. Unix time format |
1029
- |--completionDate |Date - Field is required for completed POA&M items. Unix time format |
1030
- |--comments |String - Field is required for completed and risk accepted POA&M items. 2000 Characters|
1031
- |--isActive |Boolean - Used to delete milestones when updating a POA&M |
1160
+ |parameter | type or values |
1161
+ |--------------------------|:-----------------------------------------------------------------------|
1162
+ |--milestones |JSON - see milestone format |
1163
+ |--pocFirstName |String - First name of POC |
1164
+ |--pocLastName |String - Last name of POC |
1165
+ |--pocEmail |String - Email address of POC |
1166
+ |--pocPhoneNumber |String - Phone number of POC (area code) ***-**** format |
1167
+ |--severity |Possible values - Very Low, Low, Moderate, High, Very High |
1168
+ |--scheduledCompletionDate |Date - Required for ongoing and completed POA&M items. Unix time format |
1169
+ |--completionDate |Date - Field is required for completed POA&M items. Unix time format |
1170
+ |--comments |String - Field is required for completed and risk accepted POA&M items |
1171
+ |--isActive |Boolean - Used to delete milestones when updating a POA&M |
1032
1172
 
1033
1173
  ** If a POC email is supplied, the application will attempt to locate a user already registered within the application and pre-populate any information not explicitly supplied in the request. If no such user is found, these fields are required within the request:
1034
1174
  pocFirstName, pocLastName, pocPhoneNumber
@@ -1041,7 +1181,7 @@ Updating (PUT) a POA&M can be accomplished by invoking the following command:
1041
1181
 
1042
1182
  |parameter | type or values |
1043
1183
  |--------------------|:-----------------------------------------------------------------------------------------|
1044
- |--externalUid |String - External unique identifier for use with associating POA&M Items. 100 Characters |
1184
+ |--externalUid |String - External unique identifier for use with associating POA&M Items |
1045
1185
  |--controlAcronym |String - Control acronym associated with the POA&M Item. NIST SP 800-53 Revision 4 defined|
1046
1186
  |--cci |String - CCI associated with the test result |
1047
1187
  |--securityChecks |String - Security Checks that are associated with the POA&M |
@@ -1051,7 +1191,7 @@ Updating (PUT) a POA&M can be accomplished by invoking the following command:
1051
1191
  |--impact |Possible values: Very Low, Low, Moderate, High, Very High |
1052
1192
  |--impactDescription |String - Include description of Security Control’s impact |
1053
1193
  |--residualRiskLevel |Possible values: Very Low, Low, Moderate, High, Very High |
1054
- |--recommendations |String - Include recommendations. Character Limit 2,000 |
1194
+ |--recommendations |String - Include recommendations |
1055
1195
  |--mitigation |String - Include mitigation explanation. 2000 Characters |
1056
1196
 
1057
1197
  **Note**
@@ -1059,10 +1199,9 @@ For information at the command line use:
1059
1199
  ```
1060
1200
  $ bundle exec exe/emasser put poams help update
1061
1201
  ```
1062
-
1202
+ [top](#put)
1063
1203
 
1064
1204
  ### ``put milestones``
1065
- [top](#api-endpoints-provided)
1066
1205
 
1067
1206
  ----
1068
1207
 
@@ -1087,10 +1226,9 @@ For information at the command line use:
1087
1226
  ```
1088
1227
  $ bundle exec exe/emasser put milestones help update
1089
1228
  ```
1090
-
1229
+ [top](#put)
1091
1230
 
1092
1231
  ### ``put artifacts``
1093
- [top](#api-endpoints-provided)
1094
1232
 
1095
1233
  ----
1096
1234
  Business Rules
@@ -1143,12 +1281,11 @@ For information at the command line use:
1143
1281
  ```
1144
1282
  $ bundle exec exe/emasser put artifacts help update
1145
1283
  ```
1146
-
1284
+ [top](#put)
1147
1285
 
1148
1286
  ## Usage - DELETE
1149
1287
 
1150
1288
  ### ``delete poams``
1151
- [top](#api-endpoints-provided)
1152
1289
 
1153
1290
  ----
1154
1291
  Remove one or many poa&m items in a system
@@ -1157,10 +1294,9 @@ To remove (DELETE) one or more POA&M items use the following command:
1157
1294
  ```
1158
1295
  bundle exec exe/emasser delete poams remove --systemId [value] --poamId [value]
1159
1296
  ```
1160
-
1297
+ [top](#delete)
1161
1298
 
1162
1299
  ### ``delete milestones``
1163
- [top](#api-endpoints-provided)
1164
1300
 
1165
1301
  ----
1166
1302
  Remove milestones in a system for one or many POA&M items
@@ -1175,10 +1311,9 @@ To remove (DELETE) one or more Milestones in a system use the following command:
1175
1311
  ```
1176
1312
  bundle exec exe/emasser delete milestones remove--systemId [value] --poamId [value] --milestoneId [value]
1177
1313
  ```
1178
-
1314
+ [top](#delete)
1179
1315
 
1180
1316
  ### ``delete artifacts``
1181
- [top](#api-endpoints-provided)
1182
1317
 
1183
1318
  ---
1184
1319
  Remove one or many artifacts in a system
@@ -1193,3 +1328,4 @@ bundle exec exe/emasser delete artifacts remove --systemId [value] --files [valu
1193
1328
  or
1194
1329
  bundle exec exe/emasser delete artifacts remove --systemId [value] --files [value, value...]
1195
1330
  ```
1331
+ [top](#delete)