Skip to content

Getting Started with the API

Base URL

All API requests use this base URL:

https://cyber.trackr.live/api

Authentication

No authentication required! The cyber.trackr.live API is publicly accessible. No API keys, tokens, or authentication headers needed.

Understanding the Data Model

Before making API calls, it helps to understand the compliance hierarchy:

NIST RMF Controls (high-level policy framework)
    ↓ (decomposed into atomic, testable statements)
CCIs (Control Correlation Identifiers - bridge policy to implementation)
    ↓ (grouped by technology class into generic requirements)
SRGs (Security Requirements Guides - technology class "what" to do)
    ↓ (implemented as vendor-specific "how" to do it)
STIGs (Security Technical Implementation Guides - vendor/product specific)
    ↓ (automated versions for scanning tools)
SCAP (Security Content Automation Protocol documents)

Key Terms

  • STIG: Security Technical Implementation Guide - vendor-specific security checklist (e.g., Windows 10 STIG)
  • SRG: Security Requirements Guide - generic technology requirements (e.g., Operating System SRG)
  • CCI: Control Correlation Identifier - bridges policy to implementation
  • RMF Control: Risk Management Framework control from NIST (e.g., AC-1 for Access Control Policy)

Common ID Formats

  • V-IDs: V-214518 - Requirement identifiers
  • SV-IDs: SV-214518r997541_rule - XCCDF rule IDs with revision tracking
  • CCI-IDs: CCI-000213 - Control Correlation Identifiers
  • Control IDs: AC-1, AU-2 - RMF control identifiers

Your First API Call

Now let's fetch a list of available STIGs:

bash
curl https://cyber.trackr.live/api/stig

This returns a JSON array of all available STIG and SRG documents:

json
[
  {
    "title": "MS_Windows_10_STIG",
    "version": "2",
    "release": "8",
    "release_date": "2024-01-25",
    "filename": "U_MS_Windows_10_V2R8_STIG.zip"
  },
  // ... more STIGs
]

Common Use Cases

1. Browse Available STIGs/SRGs

bash
# List all documents
curl "https://cyber.trackr.live/api/stig"

# Response includes both STIGs (vendor-specific) and SRGs (generic)

2. Get Document Details

bash
# Get Windows 10 STIG summary with all requirements
curl "https://cyber.trackr.live/api/stig/MS_Windows_10_STIG/2/8"

# Returns document metadata and list of all requirements (V-IDs)

3. Get Specific Requirement

bash
# Get details for requirement V-220706
curl "https://cyber.trackr.live/api/stig/MS_Windows_10_STIG/2/8/V-220706"

# Returns full requirement with check text, fix text, and severity

4. Work with RMF Controls

bash
# List all RMF Rev 5 controls
curl "https://cyber.trackr.live/api/rmf/5"

# Get specific control details (AC-1)
curl "https://cyber.trackr.live/api/rmf/5/AC-1"

5. Look Up CCIs

bash
# Get CCI details and mappings
curl "https://cyber.trackr.live/api/cci/CCI-000213"

Response Format

All responses are JSON. The actual format varies by endpoint, but common patterns include:

List Endpoints

json
[
  { /* item 1 */ },
  { /* item 2 */ },
  // ...
]

Detail Endpoints

json
{
  "title": "...",
  "version": "...",
  "requirements": [...],
  // other fields
}

Error Responses

json
{
  "error": {
    "message": "STIG not found",
    "status": 500  // Note: Currently returns 500 for not found (not 404)
  }
}

Code Examples

JavaScript (fetch)

javascript
// Get all STIGs
const response = await fetch('https://cyber.trackr.live/api/stig');
const stigs = await response.json();

// Get specific requirement
const reqResponse = await fetch('https://cyber.trackr.live/api/stig/MS_Windows_10_STIG/2/8/V-220706');
const requirement = await reqResponse.json();

Python (requests)

python
import requests

# Get all STIGs
response = requests.get('https://cyber.trackr.live/api/stig')
stigs = response.json()

# Get specific requirement
req_response = requests.get('https://cyber.trackr.live/api/stig/MS_Windows_10_STIG/2/8/V-220706')
requirement = req_response.json()

PowerShell

powershell
# Get all STIGs
$stigs = Invoke-RestMethod -Uri "https://cyber.trackr.live/api/stig"

# Get specific requirement
$requirement = Invoke-RestMethod -Uri "https://cyber.trackr.live/api/stig/MS_Windows_10_STIG/2/8/V-220706"

Best Practices

Rate Limiting

While there are no enforced rate limits, please be respectful:

  • Add delays between bulk requests (100ms recommended)
  • Cache responses when possible
  • Avoid downloading all STIGs simultaneously

Handling Large Responses

Some STIG documents have hundreds of requirements:

  • Implement pagination in your application
  • Cache responses locally
  • Use specific requirement endpoints instead of fetching entire documents

Error Handling

  • Check for HTTP status codes
  • Handle 500 errors (currently returned for "not found")
  • Implement retry logic for network failures

Common Issues

CORS Errors

The API supports CORS, but if you encounter issues:

  • Make requests from server-side code instead of browser
  • Use our Ruby client which handles this

500 Errors Instead of 404

Currently, invalid parameters return HTTP 500 instead of 404. If you get unexpected 500 errors:

  • Verify your STIG title, version, and release are correct
  • Check that V-IDs exist in the document
  • Ensure control IDs use correct format (e.g., "AC-1" not "ac-1")

Next Steps

Released under the Apache-2.0 License.