cyber_trackr_live 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/CHANGELOG-GEM.md +47 -0
- data/CODE_OF_CONDUCT.md +20 -0
- data/CONTRIBUTING.md +422 -0
- data/LICENSE.md +16 -0
- data/NOTICE.md +16 -0
- data/README-GEM.md +75 -0
- data/SECURITY.md +86 -0
- data/cyber_trackr_live.gemspec +56 -0
- data/examples/cyber_trackr_client.rb +208 -0
- data/examples/fetch-complete-stig +174 -0
- data/examples/fetch-stig-complete +67 -0
- data/examples/fetch-stig-direct +99 -0
- data/examples/use_helper.rb +50 -0
- data/lib/cyber_trackr_client/api/api_documentation_api.rb +79 -0
- data/lib/cyber_trackr_client/api/cci_api.rb +147 -0
- data/lib/cyber_trackr_client/api/documents_api.rb +276 -0
- data/lib/cyber_trackr_client/api/rmf_controls_api.rb +272 -0
- data/lib/cyber_trackr_client/api/scap_api.rb +276 -0
- data/lib/cyber_trackr_client/api_client.rb +437 -0
- data/lib/cyber_trackr_client/api_error.rb +58 -0
- data/lib/cyber_trackr_client/configuration.rb +400 -0
- data/lib/cyber_trackr_client/models/api_documentation.rb +238 -0
- data/lib/cyber_trackr_client/models/assessment_procedure.rb +321 -0
- data/lib/cyber_trackr_client/models/cci_detail.rb +391 -0
- data/lib/cyber_trackr_client/models/document_detail.rb +434 -0
- data/lib/cyber_trackr_client/models/document_version.rb +385 -0
- data/lib/cyber_trackr_client/models/error.rb +313 -0
- data/lib/cyber_trackr_client/models/requirement_detail.rb +580 -0
- data/lib/cyber_trackr_client/models/requirement_summary.rb +360 -0
- data/lib/cyber_trackr_client/models/rmf_control_detail.rb +436 -0
- data/lib/cyber_trackr_client/models/rmf_control_list.rb +241 -0
- data/lib/cyber_trackr_client/version.rb +15 -0
- data/lib/cyber_trackr_client.rb +54 -0
- data/lib/cyber_trackr_helper.rb +269 -0
- data/lib/rubocop/cop/cyber_trackr_api/README.md +81 -0
- data/openapi/openapi.yaml +798 -0
- metadata +271 -0
@@ -0,0 +1,798 @@
|
|
1
|
+
---
|
2
|
+
openapi: 3.1.1
|
3
|
+
info:
|
4
|
+
title: Cyber Trackr API
|
5
|
+
description: "Complete OpenAPI 3.1.1 specification for cyber.trackr.live API.\nThis
|
6
|
+
API provides access to DISA STIGs, SRGs, RMF controls, CCIs, and SCAP data.\n\n##
|
7
|
+
DISA Cybersecurity Ecosystem Hierarchy\n\n```\nNIST RMF Controls (high-level policy
|
8
|
+
framework)\n ↓ (decomposed into atomic, testable statements)\nCCIs (Control
|
9
|
+
Correlation Identifiers - bridge policy to implementation)\n ↓ (grouped by
|
10
|
+
technology class into generic requirements) \nSRGs (Security Requirements Guides
|
11
|
+
- technology class \"what\" to do)\n ↓ (implemented as vendor-specific \"how\"
|
12
|
+
to do it)\nSTIGs (Security Technical Implementation Guides - vendor/product specific)\n
|
13
|
+
\ ↓ (automated versions for scanning tools)\nSCAP (Security Content Automation
|
14
|
+
Protocol documents)\n```\n\n## Critical Relationships\n\n- **RMF Controls** contain
|
15
|
+
assessment procedures that reference **CCIs**\n- **CCIs** map back to **RMF Controls**
|
16
|
+
and forward to **STIG/SRG requirements**\n- **SRGs** define generic technology
|
17
|
+
requirements that **STIGs** implement specifically\n- **V-IDs** can appear in
|
18
|
+
both SRG and corresponding STIG (same requirement, different specificity)\n- **SV-IDs**
|
19
|
+
are XCCDF rule identifiers with revision tracking across document releases\n"
|
20
|
+
version: 1.0.0
|
21
|
+
contact:
|
22
|
+
name: Community OpenAPI Documentation
|
23
|
+
url: https://github.com/mitre/inspec-juniper/tree/main/tools/cyber-trackr-api
|
24
|
+
license:
|
25
|
+
name: Apache-2.0
|
26
|
+
url: https://www.apache.org/licenses/LICENSE-2.0
|
27
|
+
servers:
|
28
|
+
- url: https://cyber.trackr.live/api
|
29
|
+
description: Production server (default)
|
30
|
+
- url: https://{subdomain}.trackr.live/api
|
31
|
+
description: Configurable server endpoint
|
32
|
+
variables:
|
33
|
+
subdomain:
|
34
|
+
default: cyber
|
35
|
+
description: The subdomain for the trackr.live API
|
36
|
+
enum:
|
37
|
+
- cyber
|
38
|
+
- test
|
39
|
+
- staging
|
40
|
+
x-code-samples:
|
41
|
+
- lang: Ruby
|
42
|
+
label: Fetch complete STIG with all controls
|
43
|
+
source: |
|
44
|
+
# First get the document summary
|
45
|
+
doc = client.get_document('Juniper_SRX_Services_Gateway_ALG', '3', '3')
|
46
|
+
|
47
|
+
# Then fetch detailed data for each requirement
|
48
|
+
complete_requirements = []
|
49
|
+
doc.requirements.each do |req|
|
50
|
+
detailed = client.get_requirement('Juniper_SRX_Services_Gateway_ALG', '3', '3', req.id)
|
51
|
+
complete_requirements << detailed
|
52
|
+
sleep 0.1 # Be respectful to the API
|
53
|
+
end
|
54
|
+
- lang: Ruby
|
55
|
+
label: Filter STIGs from mixed list
|
56
|
+
source: "# The listAllDocuments endpoint returns both STIGs and SRGs\nall_docs =
|
57
|
+
client.list_all_documents\n\n# Filter to get only STIGs\nstigs = all_docs.reject
|
58
|
+
{ |name, versions| \n name.include?('Security_Requirements_Guide') || name.include?('(SRG)')\n}\n\n#
|
59
|
+
Filter to get only SRGs\nsrgs = all_docs.select { |name, versions|\n name.include?('Security_Requirements_Guide')
|
60
|
+
|| name.include?('(SRG)')\n}\n"
|
61
|
+
tags:
|
62
|
+
- name: API Documentation
|
63
|
+
description: Self-documenting API root endpoint
|
64
|
+
- name: Documents
|
65
|
+
description: Security Technical Implementation Guides (STIGs) and Security Requirements
|
66
|
+
Guides (SRGs)
|
67
|
+
x-display-name: STIG/SRG Documents
|
68
|
+
- name: RMF Controls
|
69
|
+
description: Risk Management Framework controls (NIST 800-53 rev 4 & 5)
|
70
|
+
- name: CCI
|
71
|
+
description: Control Correlation Identifiers (bridge RMF to implementation)
|
72
|
+
- name: SCAP
|
73
|
+
description: Security Content Automation Protocol documents
|
74
|
+
paths:
|
75
|
+
"/":
|
76
|
+
get:
|
77
|
+
operationId: getApiDocumentation
|
78
|
+
summary: Get API documentation
|
79
|
+
description: Returns self-documenting schema showing all available endpoints
|
80
|
+
tags:
|
81
|
+
- API Documentation
|
82
|
+
responses:
|
83
|
+
'200':
|
84
|
+
description: API endpoint documentation
|
85
|
+
content:
|
86
|
+
application/json:
|
87
|
+
schema:
|
88
|
+
"$ref": "#/components/schemas/ApiDocumentation"
|
89
|
+
"/stig":
|
90
|
+
get:
|
91
|
+
operationId: listAllDocuments
|
92
|
+
summary: List all STIGs and SRGs
|
93
|
+
description: "Returns complete list of Security Technical Implementation Guides
|
94
|
+
(STIGs) and \nSecurity Requirements Guides (SRGs). **Note**: These are mixed
|
95
|
+
in one endpoint.\n"
|
96
|
+
tags:
|
97
|
+
- Documents
|
98
|
+
x-returns-mixed-content: true
|
99
|
+
x-note: Returns both STIGs and SRGs mixed together. Use name patterns to distinguish
|
100
|
+
x-rate-limit: No documented limit, but please be respectful
|
101
|
+
responses:
|
102
|
+
'200':
|
103
|
+
description: Complete list of STIGs and SRGs grouped by document name
|
104
|
+
content:
|
105
|
+
application/json:
|
106
|
+
schema:
|
107
|
+
"$ref": "#/components/schemas/DocumentList"
|
108
|
+
links:
|
109
|
+
GetDocument:
|
110
|
+
operationId: getDocument
|
111
|
+
description: Get full document details for any STIG/SRG from the list
|
112
|
+
parameters:
|
113
|
+
title: "$response.body#/{documentName}/0/name"
|
114
|
+
version: "$response.body#/{documentName}/0/version"
|
115
|
+
release: "$response.body#/{documentName}/0/release"
|
116
|
+
"/stig/{title}/{version}/{release}":
|
117
|
+
get:
|
118
|
+
operationId: getDocument
|
119
|
+
summary: Get STIG or SRG document details
|
120
|
+
description: Returns complete document with all requirements
|
121
|
+
tags:
|
122
|
+
- Documents
|
123
|
+
x-note: Returns document with requirement summaries only. Use getRequirement
|
124
|
+
for full control details
|
125
|
+
x-requirements-structure: Requirements are returned as an object with V-IDs
|
126
|
+
as keys, not an array
|
127
|
+
parameters:
|
128
|
+
- name: title
|
129
|
+
in: path
|
130
|
+
required: true
|
131
|
+
description: Document title exactly as it appears in the list endpoint
|
132
|
+
schema:
|
133
|
+
type: string
|
134
|
+
minLength: 1
|
135
|
+
maxLength: 200
|
136
|
+
example: Juniper_SRX_Services_Gateway_ALG
|
137
|
+
- name: version
|
138
|
+
in: path
|
139
|
+
required: true
|
140
|
+
description: Major version number of the document
|
141
|
+
schema:
|
142
|
+
type: string
|
143
|
+
pattern: "^\\d+$"
|
144
|
+
example: '3'
|
145
|
+
- name: release
|
146
|
+
in: path
|
147
|
+
required: true
|
148
|
+
description: Release number within the version
|
149
|
+
schema:
|
150
|
+
type: string
|
151
|
+
pattern: "^\\d+(\\.\\d+)?$"
|
152
|
+
example: '3'
|
153
|
+
responses:
|
154
|
+
'200':
|
155
|
+
description: Complete document details with all requirements
|
156
|
+
content:
|
157
|
+
application/json:
|
158
|
+
schema:
|
159
|
+
"$ref": "#/components/schemas/DocumentDetail"
|
160
|
+
links:
|
161
|
+
GetRequirement:
|
162
|
+
operationId: getRequirement
|
163
|
+
description: Get full details for any requirement in this document
|
164
|
+
parameters:
|
165
|
+
title: "$request.path.title"
|
166
|
+
version: "$request.path.version"
|
167
|
+
release: "$request.path.release"
|
168
|
+
vuln: "$response.body#/requirements/{index}/id"
|
169
|
+
"/stig/{title}/{version}/{release}/{vuln}":
|
170
|
+
get:
|
171
|
+
operationId: getRequirement
|
172
|
+
summary: Get individual STIG/SRG requirement details
|
173
|
+
description: Returns complete details for a specific requirement
|
174
|
+
tags:
|
175
|
+
- Documents
|
176
|
+
x-note: Returns full requirement details including assessment procedures and
|
177
|
+
CCI mappings
|
178
|
+
x-slow-operation: true
|
179
|
+
parameters:
|
180
|
+
- name: title
|
181
|
+
in: path
|
182
|
+
required: true
|
183
|
+
description: Document title exactly as it appears in the list endpoint
|
184
|
+
schema:
|
185
|
+
type: string
|
186
|
+
minLength: 1
|
187
|
+
maxLength: 200
|
188
|
+
example: Juniper_SRX_Services_Gateway_ALG
|
189
|
+
- name: version
|
190
|
+
in: path
|
191
|
+
required: true
|
192
|
+
description: Major version number of the document
|
193
|
+
schema:
|
194
|
+
type: string
|
195
|
+
pattern: "^\\d+$"
|
196
|
+
example: '3'
|
197
|
+
- name: release
|
198
|
+
in: path
|
199
|
+
required: true
|
200
|
+
description: Release number within the version
|
201
|
+
schema:
|
202
|
+
type: string
|
203
|
+
pattern: "^\\d+(\\.\\d+)?$"
|
204
|
+
example: '3'
|
205
|
+
- name: vuln
|
206
|
+
in: path
|
207
|
+
required: true
|
208
|
+
description: Vulnerability/Requirement ID (V-XXXXXX format)
|
209
|
+
schema:
|
210
|
+
type: string
|
211
|
+
pattern: "^V-\\d{6}$"
|
212
|
+
example: V-214518
|
213
|
+
responses:
|
214
|
+
'200':
|
215
|
+
description: Complete requirement details
|
216
|
+
content:
|
217
|
+
application/json:
|
218
|
+
schema:
|
219
|
+
"$ref": "#/components/schemas/RequirementDetail"
|
220
|
+
'500':
|
221
|
+
description: Server error (usually invalid parameter format)
|
222
|
+
x-note: Returns 500 (not 404) for invalid V-ID format like 'V-INVALID'
|
223
|
+
content:
|
224
|
+
application/json:
|
225
|
+
schema:
|
226
|
+
"$ref": "#/components/schemas/Error"
|
227
|
+
"/rmf/4":
|
228
|
+
get:
|
229
|
+
operationId: listRmfControlsV4
|
230
|
+
summary: List RMF revision 4 controls
|
231
|
+
description: Returns all Risk Management Framework revision 4 controls with
|
232
|
+
titles
|
233
|
+
tags:
|
234
|
+
- RMF Controls
|
235
|
+
responses:
|
236
|
+
'200':
|
237
|
+
description: Complete list of RMF rev 4 controls
|
238
|
+
content:
|
239
|
+
application/json:
|
240
|
+
schema:
|
241
|
+
"$ref": "#/components/schemas/RmfControlList"
|
242
|
+
"/rmf/5":
|
243
|
+
get:
|
244
|
+
operationId: listRmfControlsV5
|
245
|
+
summary: List RMF revision 5 controls
|
246
|
+
description: Returns all Risk Management Framework revision 5 controls with
|
247
|
+
titles
|
248
|
+
tags:
|
249
|
+
- RMF Controls
|
250
|
+
responses:
|
251
|
+
'200':
|
252
|
+
description: Complete list of RMF rev 5 controls
|
253
|
+
content:
|
254
|
+
application/json:
|
255
|
+
schema:
|
256
|
+
"$ref": "#/components/schemas/RmfControlList"
|
257
|
+
"/rmf/4/{control}":
|
258
|
+
get:
|
259
|
+
operationId: getRmfControlV4
|
260
|
+
summary: Get RMF revision 4 control details
|
261
|
+
description: Returns complete RMF control details including CCI mappings
|
262
|
+
tags:
|
263
|
+
- RMF Controls
|
264
|
+
parameters:
|
265
|
+
- name: control
|
266
|
+
in: path
|
267
|
+
required: true
|
268
|
+
description: RMF control identifier (family-number format)
|
269
|
+
schema:
|
270
|
+
type: string
|
271
|
+
pattern: "^[A-Z]+-\\d+$"
|
272
|
+
example: AC-1
|
273
|
+
responses:
|
274
|
+
'200':
|
275
|
+
description: Complete RMF control details with CCI mappings
|
276
|
+
content:
|
277
|
+
application/json:
|
278
|
+
schema:
|
279
|
+
"$ref": "#/components/schemas/RmfControlDetail"
|
280
|
+
"/rmf/5/{control}":
|
281
|
+
get:
|
282
|
+
operationId: getRmfControlV5
|
283
|
+
summary: Get RMF revision 5 control details
|
284
|
+
description: Returns complete RMF control details including CCI mappings
|
285
|
+
tags:
|
286
|
+
- RMF Controls
|
287
|
+
parameters:
|
288
|
+
- name: control
|
289
|
+
in: path
|
290
|
+
required: true
|
291
|
+
description: RMF control identifier (family-number format)
|
292
|
+
schema:
|
293
|
+
type: string
|
294
|
+
pattern: "^[A-Z]+-\\d+$"
|
295
|
+
example: AC-1
|
296
|
+
responses:
|
297
|
+
'200':
|
298
|
+
description: Complete RMF control details with CCI mappings
|
299
|
+
content:
|
300
|
+
application/json:
|
301
|
+
schema:
|
302
|
+
"$ref": "#/components/schemas/RmfControlDetail"
|
303
|
+
"/scap":
|
304
|
+
get:
|
305
|
+
operationId: listScapDocuments
|
306
|
+
summary: List all SCAP documents
|
307
|
+
description: |
|
308
|
+
Returns list of Security Content Automation Protocol documents.
|
309
|
+
These are automated scanning versions of STIGs.
|
310
|
+
tags:
|
311
|
+
- SCAP
|
312
|
+
responses:
|
313
|
+
'200':
|
314
|
+
description: List of SCAP documents grouped by name
|
315
|
+
content:
|
316
|
+
application/json:
|
317
|
+
schema:
|
318
|
+
"$ref": "#/components/schemas/DocumentList"
|
319
|
+
"/scap/{title}/{version}/{release}":
|
320
|
+
get:
|
321
|
+
operationId: getScapDocument
|
322
|
+
summary: Get SCAP document details
|
323
|
+
description: Returns complete SCAP document with all requirements (same structure
|
324
|
+
as STIG)
|
325
|
+
tags:
|
326
|
+
- SCAP
|
327
|
+
parameters:
|
328
|
+
- name: title
|
329
|
+
in: path
|
330
|
+
required: true
|
331
|
+
description: Document title exactly as it appears in the list endpoint
|
332
|
+
schema:
|
333
|
+
type: string
|
334
|
+
minLength: 1
|
335
|
+
maxLength: 200
|
336
|
+
example: U_MS_Windows_10_V3R2_STIG_SCAP_1-2_Benchmark
|
337
|
+
- name: version
|
338
|
+
in: path
|
339
|
+
required: true
|
340
|
+
description: Major version number of the document
|
341
|
+
schema:
|
342
|
+
type: string
|
343
|
+
pattern: "^\\d+$"
|
344
|
+
example: '3'
|
345
|
+
- name: release
|
346
|
+
in: path
|
347
|
+
required: true
|
348
|
+
description: Release number within the version
|
349
|
+
schema:
|
350
|
+
type: string
|
351
|
+
pattern: "^\\d+(\\.\\d+)?$"
|
352
|
+
example: '2'
|
353
|
+
responses:
|
354
|
+
'200':
|
355
|
+
description: Complete SCAP document details
|
356
|
+
content:
|
357
|
+
application/json:
|
358
|
+
schema:
|
359
|
+
"$ref": "#/components/schemas/DocumentDetail"
|
360
|
+
"/scap/{title}/{version}/{release}/{vuln}":
|
361
|
+
get:
|
362
|
+
operationId: getScapRequirement
|
363
|
+
summary: Get individual SCAP requirement details
|
364
|
+
description: Returns complete details for specific SCAP requirement (same structure
|
365
|
+
as STIG requirement)
|
366
|
+
tags:
|
367
|
+
- SCAP
|
368
|
+
parameters:
|
369
|
+
- name: title
|
370
|
+
in: path
|
371
|
+
required: true
|
372
|
+
description: Document title exactly as it appears in the list endpoint
|
373
|
+
schema:
|
374
|
+
type: string
|
375
|
+
minLength: 1
|
376
|
+
maxLength: 200
|
377
|
+
example: U_MS_Windows_10_V3R2_STIG_SCAP_1-2_Benchmark
|
378
|
+
- name: version
|
379
|
+
in: path
|
380
|
+
required: true
|
381
|
+
description: Major version number of the document
|
382
|
+
schema:
|
383
|
+
type: string
|
384
|
+
pattern: "^\\d+$"
|
385
|
+
example: '3'
|
386
|
+
- name: release
|
387
|
+
in: path
|
388
|
+
required: true
|
389
|
+
description: Release number within the version
|
390
|
+
schema:
|
391
|
+
type: string
|
392
|
+
pattern: "^\\d+(\\.\\d+)?$"
|
393
|
+
example: '2'
|
394
|
+
- name: vuln
|
395
|
+
in: path
|
396
|
+
required: true
|
397
|
+
description: Vulnerability/Requirement ID (V-XXXXXX format)
|
398
|
+
schema:
|
399
|
+
type: string
|
400
|
+
pattern: "^V-\\d{6}$"
|
401
|
+
example: V-220697
|
402
|
+
responses:
|
403
|
+
'200':
|
404
|
+
description: Complete SCAP requirement details
|
405
|
+
content:
|
406
|
+
application/json:
|
407
|
+
schema:
|
408
|
+
"$ref": "#/components/schemas/RequirementDetail"
|
409
|
+
'500':
|
410
|
+
description: Server error (usually invalid parameter format)
|
411
|
+
content:
|
412
|
+
application/json:
|
413
|
+
schema:
|
414
|
+
"$ref": "#/components/schemas/Error"
|
415
|
+
"/cci":
|
416
|
+
get:
|
417
|
+
operationId: listCcis
|
418
|
+
summary: List all Control Correlation Identifiers
|
419
|
+
description: Returns complete list of CCIs with their definitions
|
420
|
+
tags:
|
421
|
+
- CCI
|
422
|
+
responses:
|
423
|
+
'200':
|
424
|
+
description: Complete list of CCIs with definitions
|
425
|
+
content:
|
426
|
+
application/json:
|
427
|
+
schema:
|
428
|
+
"$ref": "#/components/schemas/CciList"
|
429
|
+
"/cci/{item}":
|
430
|
+
get:
|
431
|
+
operationId: getCciDetails
|
432
|
+
summary: Get CCI details with RMF mapping
|
433
|
+
description: Returns complete CCI details including RMF control mapping
|
434
|
+
tags:
|
435
|
+
- CCI
|
436
|
+
parameters:
|
437
|
+
- name: item
|
438
|
+
in: path
|
439
|
+
required: true
|
440
|
+
description: Control Correlation Identifier (CCI-XXXXXX format)
|
441
|
+
schema:
|
442
|
+
type: string
|
443
|
+
pattern: "^CCI-\\d{6}$"
|
444
|
+
example: CCI-000001
|
445
|
+
responses:
|
446
|
+
'200':
|
447
|
+
description: Complete CCI details with RMF control mapping
|
448
|
+
content:
|
449
|
+
application/json:
|
450
|
+
schema:
|
451
|
+
"$ref": "#/components/schemas/CciDetail"
|
452
|
+
links:
|
453
|
+
GetRmfControlV4:
|
454
|
+
operationId: getRmfControlV4
|
455
|
+
description: Get the mapped RMF revision 4 control
|
456
|
+
parameters:
|
457
|
+
control: "$response.body#/assessment_procedures/0/control_identifier"
|
458
|
+
GetRmfControlV5:
|
459
|
+
operationId: getRmfControlV5
|
460
|
+
description: Get the mapped RMF revision 5 control (if revision 5)
|
461
|
+
parameters:
|
462
|
+
control: "$response.body#/assessment_procedures/0/control_identifier"
|
463
|
+
'500':
|
464
|
+
description: Server error (usually invalid CCI format)
|
465
|
+
content:
|
466
|
+
application/json:
|
467
|
+
schema:
|
468
|
+
"$ref": "#/components/schemas/Error"
|
469
|
+
security: []
|
470
|
+
components:
|
471
|
+
securitySchemes: {}
|
472
|
+
schemas:
|
473
|
+
ApiDocumentation:
|
474
|
+
type: object
|
475
|
+
description: Self-documenting API schema from root endpoint
|
476
|
+
required:
|
477
|
+
- server_api_root
|
478
|
+
properties:
|
479
|
+
server_api_root:
|
480
|
+
type: string
|
481
|
+
format: uri
|
482
|
+
example: https://cyber.trackr.live/api
|
483
|
+
additionalProperties:
|
484
|
+
type: string
|
485
|
+
description: Endpoint path templates (e.g., '/stig/{title}/{version}/{release}')
|
486
|
+
DocumentList:
|
487
|
+
type: object
|
488
|
+
description: List of documents grouped by name with version information
|
489
|
+
additionalProperties:
|
490
|
+
type: array
|
491
|
+
items:
|
492
|
+
"$ref": "#/components/schemas/DocumentVersion"
|
493
|
+
DocumentVersion:
|
494
|
+
type: object
|
495
|
+
description: Version information for a specific document release
|
496
|
+
required:
|
497
|
+
- version
|
498
|
+
- release
|
499
|
+
- link
|
500
|
+
properties:
|
501
|
+
date:
|
502
|
+
type: string
|
503
|
+
description: File creation/build date in YYYY-MM-DD format (may be empty)
|
504
|
+
pattern: "^(\\d{4}-\\d{2}-\\d{2}|)$"
|
505
|
+
example: '2024-12-19'
|
506
|
+
released:
|
507
|
+
type: string
|
508
|
+
description: Publication/release date in human-readable format (with leading
|
509
|
+
space)
|
510
|
+
pattern: "^ \\d{1,2} \\w+ \\d{4}$"
|
511
|
+
example: " 30 Jan 2025"
|
512
|
+
version:
|
513
|
+
type: string
|
514
|
+
pattern: "^[Vv]?\\d+$"
|
515
|
+
example: '3'
|
516
|
+
release:
|
517
|
+
type: string
|
518
|
+
pattern: "^\\d+(\\.\\d+)?$"
|
519
|
+
example: '3'
|
520
|
+
link:
|
521
|
+
type: string
|
522
|
+
pattern: "^/(stig|scap)/.+$"
|
523
|
+
example: "/stig/Juniper_SRX_Services_Gateway_ALG/3/3"
|
524
|
+
DocumentDetail:
|
525
|
+
type: object
|
526
|
+
description: Complete document details with all requirements
|
527
|
+
required:
|
528
|
+
- id
|
529
|
+
- title
|
530
|
+
- description
|
531
|
+
- status
|
532
|
+
- published
|
533
|
+
- requirements
|
534
|
+
properties:
|
535
|
+
id:
|
536
|
+
type: string
|
537
|
+
minLength: 1
|
538
|
+
example: Juniper_SRX_SG_ALG_STIG
|
539
|
+
title:
|
540
|
+
type: string
|
541
|
+
minLength: 1
|
542
|
+
example: Juniper SRX Services Gateway ALG Security Technical Implementation
|
543
|
+
Guide
|
544
|
+
description:
|
545
|
+
type: string
|
546
|
+
minLength: 1
|
547
|
+
status:
|
548
|
+
type: string
|
549
|
+
enum:
|
550
|
+
- accepted
|
551
|
+
- draft
|
552
|
+
- deprecated
|
553
|
+
example: accepted
|
554
|
+
published:
|
555
|
+
type: string
|
556
|
+
description: Document publication date in YYYY-MM-DD format
|
557
|
+
pattern: "^\\d{4}-\\d{2}-\\d{2}$"
|
558
|
+
example: '2024-12-19'
|
559
|
+
requirements:
|
560
|
+
type: object
|
561
|
+
description: Requirements mapped by V-ID (e.g., V-214518 as key)
|
562
|
+
additionalProperties:
|
563
|
+
"$ref": "#/components/schemas/RequirementSummary"
|
564
|
+
RequirementSummary:
|
565
|
+
type: object
|
566
|
+
description: Summary information for a requirement within a document
|
567
|
+
required:
|
568
|
+
- title
|
569
|
+
- rule
|
570
|
+
- severity
|
571
|
+
- link
|
572
|
+
properties:
|
573
|
+
title:
|
574
|
+
type: string
|
575
|
+
minLength: 1
|
576
|
+
rule:
|
577
|
+
type: string
|
578
|
+
pattern: "^SV-\\d+r\\d+_rule$"
|
579
|
+
example: SV-214518r997541_rule
|
580
|
+
severity:
|
581
|
+
type: string
|
582
|
+
enum:
|
583
|
+
- high
|
584
|
+
- medium
|
585
|
+
- low
|
586
|
+
link:
|
587
|
+
type: string
|
588
|
+
RequirementDetail:
|
589
|
+
type: object
|
590
|
+
description: Complete requirement details with implementation guidance
|
591
|
+
required:
|
592
|
+
- id
|
593
|
+
- rule
|
594
|
+
- severity
|
595
|
+
- requirement-title
|
596
|
+
- check-text
|
597
|
+
- fix-text
|
598
|
+
properties:
|
599
|
+
id:
|
600
|
+
type: string
|
601
|
+
pattern: "^V-\\d{6}$"
|
602
|
+
example: V-214518
|
603
|
+
rule:
|
604
|
+
type: string
|
605
|
+
pattern: "^SV-\\d+r\\d+_rule$"
|
606
|
+
example: SV-214518r997541_rule
|
607
|
+
severity:
|
608
|
+
type: string
|
609
|
+
enum:
|
610
|
+
- high
|
611
|
+
- medium
|
612
|
+
- low
|
613
|
+
requirement-title:
|
614
|
+
type: string
|
615
|
+
minLength: 1
|
616
|
+
requirement-description:
|
617
|
+
type: string
|
618
|
+
minLength: 1
|
619
|
+
mitigation-statement:
|
620
|
+
anyOf:
|
621
|
+
- type: string
|
622
|
+
- type: 'null'
|
623
|
+
identifiers:
|
624
|
+
type: array
|
625
|
+
items:
|
626
|
+
type: string
|
627
|
+
example:
|
628
|
+
- V-66003
|
629
|
+
- SV-80493
|
630
|
+
- CCI-000213
|
631
|
+
check-text:
|
632
|
+
type: string
|
633
|
+
minLength: 1
|
634
|
+
fix-text:
|
635
|
+
type: string
|
636
|
+
minLength: 1
|
637
|
+
check-id:
|
638
|
+
type: string
|
639
|
+
description: Check procedure identifier
|
640
|
+
fix-id:
|
641
|
+
type: string
|
642
|
+
description: Fix procedure identifier
|
643
|
+
group:
|
644
|
+
type: string
|
645
|
+
description: Requirement group identifier
|
646
|
+
version:
|
647
|
+
type: string
|
648
|
+
description: Requirement version
|
649
|
+
stig:
|
650
|
+
type: string
|
651
|
+
description: Parent STIG identifier
|
652
|
+
stig-title:
|
653
|
+
type: string
|
654
|
+
description: Parent STIG title
|
655
|
+
stig-description:
|
656
|
+
type: string
|
657
|
+
description: Parent STIG description
|
658
|
+
stig-published:
|
659
|
+
type: string
|
660
|
+
description: Parent STIG publication date
|
661
|
+
stig-status:
|
662
|
+
type: string
|
663
|
+
description: Parent STIG status
|
664
|
+
RmfControlDetail:
|
665
|
+
type: object
|
666
|
+
description: Complete RMF control details with CCI mappings
|
667
|
+
required:
|
668
|
+
- number
|
669
|
+
- title
|
670
|
+
- family
|
671
|
+
- baseline
|
672
|
+
- statements
|
673
|
+
- assessment_procedures
|
674
|
+
properties:
|
675
|
+
number:
|
676
|
+
type: string
|
677
|
+
pattern: "^[A-Z]+-\\d+$"
|
678
|
+
example: AC-1
|
679
|
+
title:
|
680
|
+
type: string
|
681
|
+
minLength: 1
|
682
|
+
example: POLICY AND PROCEDURES
|
683
|
+
family:
|
684
|
+
type: string
|
685
|
+
minLength: 1
|
686
|
+
example: ACCESS CONTROL
|
687
|
+
baseline:
|
688
|
+
type: array
|
689
|
+
items:
|
690
|
+
type: string
|
691
|
+
enum:
|
692
|
+
- LOW
|
693
|
+
- MODERATE
|
694
|
+
- HIGH
|
695
|
+
- PRIVACY
|
696
|
+
minItems: 1
|
697
|
+
example:
|
698
|
+
- LOW
|
699
|
+
- MODERATE
|
700
|
+
- HIGH
|
701
|
+
- PRIVACY
|
702
|
+
statements:
|
703
|
+
type: string
|
704
|
+
minLength: 1
|
705
|
+
assessment_procedures:
|
706
|
+
type: array
|
707
|
+
items:
|
708
|
+
"$ref": "#/components/schemas/AssessmentProcedure"
|
709
|
+
minItems: 1
|
710
|
+
AssessmentProcedure:
|
711
|
+
type: object
|
712
|
+
description: Assessment procedure linking RMF control sub-parts to CCIs
|
713
|
+
required:
|
714
|
+
- assessment_procedures
|
715
|
+
- cci
|
716
|
+
- description
|
717
|
+
properties:
|
718
|
+
assessment_procedures:
|
719
|
+
type: string
|
720
|
+
pattern: "^[A-Z]+-\\d+\\.\\d+$"
|
721
|
+
example: AC-1.3
|
722
|
+
cci:
|
723
|
+
type: string
|
724
|
+
pattern: "^CCI-\\d{6}$"
|
725
|
+
example: CCI-000001
|
726
|
+
description:
|
727
|
+
type: string
|
728
|
+
minLength: 1
|
729
|
+
CciList:
|
730
|
+
type: object
|
731
|
+
description: Complete list of Control Correlation Identifiers with definitions
|
732
|
+
additionalProperties:
|
733
|
+
type: string
|
734
|
+
minLength: 1
|
735
|
+
CciDetail:
|
736
|
+
type: object
|
737
|
+
description: Complete CCI details with RMF control mapping
|
738
|
+
required:
|
739
|
+
- cci
|
740
|
+
- cci_definition
|
741
|
+
- rmf
|
742
|
+
- family
|
743
|
+
- name
|
744
|
+
properties:
|
745
|
+
cci:
|
746
|
+
type: string
|
747
|
+
pattern: "^CCI-\\d{6}$"
|
748
|
+
example: CCI-000001
|
749
|
+
cci_definition:
|
750
|
+
type: string
|
751
|
+
minLength: 1
|
752
|
+
rmf:
|
753
|
+
type: string
|
754
|
+
pattern: "^[A-Z]+-\\d+$"
|
755
|
+
example: AC-1
|
756
|
+
family:
|
757
|
+
type: string
|
758
|
+
minLength: 1
|
759
|
+
example: Access Control
|
760
|
+
name:
|
761
|
+
type: string
|
762
|
+
minLength: 1
|
763
|
+
example: Access Control Policy And Procedures
|
764
|
+
RmfControlList:
|
765
|
+
type: object
|
766
|
+
description: List of RMF controls with titles
|
767
|
+
required:
|
768
|
+
- controls
|
769
|
+
properties:
|
770
|
+
controls:
|
771
|
+
type: object
|
772
|
+
description: RMF controls mapped to titles
|
773
|
+
additionalProperties:
|
774
|
+
type: string
|
775
|
+
minLength: 1
|
776
|
+
Error:
|
777
|
+
type: object
|
778
|
+
description: Error response format
|
779
|
+
required:
|
780
|
+
- status
|
781
|
+
- title
|
782
|
+
properties:
|
783
|
+
type:
|
784
|
+
type: string
|
785
|
+
format: uri
|
786
|
+
description: Error type reference
|
787
|
+
title:
|
788
|
+
type: string
|
789
|
+
description: Error title
|
790
|
+
minLength: 1
|
791
|
+
status:
|
792
|
+
type: integer
|
793
|
+
description: HTTP status code
|
794
|
+
minimum: 400
|
795
|
+
maximum: 599
|
796
|
+
detail:
|
797
|
+
type: string
|
798
|
+
description: Error details
|