OpenAPI Specification Validation โ
Professional-grade validation approach ensuring our OpenAPI specification maintains the highest quality standards for cybersecurity API documentation.
๐ฏ Validation Philosophy โ
Our validation strategy follows specification-first development principles:
- Validate Early - Catch issues before they reach production
- Validate Often - Continuous integration validation
- Validate Comprehensively - Static analysis + runtime validation
- Validate Professionally - Industry-standard tools and practices
๐ง Spectral Validation โ
We use Spectral for professional-grade OpenAPI specification validation with custom rules for cybersecurity data APIs.
Core Validation Rules โ
Our .spectral.yaml
configuration includes:
# Spectral ruleset for cyber.trackr.live OpenAPI specification
extends: ["spectral:oas", "spectral:asyncapi"]
rules:
# OpenAPI 3.1 specific validation
oas3-valid-content-types:
description: Content types should be valid
severity: error
# API design best practices
operation-description:
description: Operation should have meaningful description
severity: warn
operation-summary:
description: Operation should have concise summary
severity: warn
operation-tags:
description: Operation should be tagged for organization
severity: warn
DISA-Specific Validation Rules โ
Custom rules for cybersecurity compliance data:
# Custom rules for DISA ecosystem
disa-id-patterns:
description: DISA ID parameters should follow correct patterns
severity: error
cyber-trackr-examples:
description: Examples should reflect real API responses
severity: info
๐ Validation Categories โ
๐ด Error Level (Must Fix) โ
- Invalid content types - Content-Type headers must be valid
- Missing path parameters - All path parameters must be defined
- Missing success schemas - 2xx responses must have schemas
- Invalid DISA ID patterns - Security identifiers must follow patterns
๐ก Warning Level (Should Fix) โ
- Missing operation descriptions - Operations should have meaningful descriptions
- Missing operation summaries - Operations should have concise summaries
- Missing operation tags - Operations should be tagged for organization
- Short info descriptions - API description should be comprehensive (100+ chars)
๐ต Info Level (Nice to Have) โ
- Missing schema examples - Schema properties should have examples
- Missing contact info - Contact should have name and URL
- Missing response examples - Examples should reflect real API responses
๐ Validation Commands โ
Local Development โ
# Install Spectral
npm install -g @stoplight/spectral-cli
# Validate OpenAPI specification
spectral lint openapi/openapi.yaml
# Validate with specific ruleset
spectral lint openapi/openapi.yaml --ruleset .spectral.yaml
# Validate with JSON output
spectral lint openapi/openapi.yaml --format json
# Validate with JUnit output (for CI)
spectral lint openapi/openapi.yaml --format junit
Continuous Integration โ
# Package.json validation scripts
npm run docs:validate # Validate OpenAPI spec
npm run docs:validate-mermaid # Validate Mermaid diagrams
npm run docs:build # Build and validate entire site
Make Commands โ
# Comprehensive validation
make validate
# Validate and regenerate client
make generate
# Full test suite including validation
make test
๐ Validation Workflow โ
Development Workflow โ
Two-Tier Validation Approach โ
Our validation follows a two-tier approach:
Tier 1: Static Validation (Spectral)
- OpenAPI specification compliance
- Custom cybersecurity data rules
- Documentation quality checks
- Security pattern validation
Tier 2: Runtime Validation (Ruby Tests)
- Live API behavior validation
- Response schema verification
- Integration testing with real data
- Cross-platform compatibility
๐ Validation Results โ
Clean Validation Output โ
$ spectral lint openapi/openapi.yaml
โ
No issues found!
Typical Validation Issues โ
$ spectral lint openapi/openapi.yaml
OpenAPI 3.x detected
/path/to/openapi.yaml
12:34 warning operation-description Operation should have meaningful description
45:67 warning operation-summary Operation should have concise summary
89:12 info schema-properties-define-example Schema properties should have examples
โ 3 problems (0 errors, 2 warnings, 1 info)
๐งช Custom Validation Rules โ
DISA Cybersecurity Patterns โ
# Validate STIG title patterns
stig-title-pattern:
description: STIG titles should follow DISA naming conventions
given: "$.paths['/api/stig/{title}/{version}/{release}'].get.parameters[?(@.name == 'title')]"
severity: error
then:
field: schema.pattern
function: pattern
functionOptions:
match: "^[A-Z][a-zA-Z0-9_]+$"
# Validate version patterns
version-pattern:
description: Version should follow semantic versioning
given: "$.paths[*].get.parameters[?(@.name == 'version')]"
severity: warn
then:
field: schema.pattern
function: pattern
functionOptions:
match: "^[0-9]+$"
Response Validation โ
# Ensure all endpoints return consistent error format
consistent-error-format:
description: Error responses should follow consistent format
given: "$.paths[*][*].responses[?(@property >= '400')]"
severity: error
then:
field: content.application/json.schema.$ref
function: pattern
functionOptions:
match: "#/components/schemas/Error"
๐ Validation Metrics โ
Quality Metrics โ
- Specification Coverage: 100% of endpoints documented
- Example Coverage: 95% of responses have examples
- Error Coverage: 100% of error responses documented
- Security Coverage: All authentication/authorization documented
Validation Performance โ
- Spectral Validation: < 1 second
- Full Test Suite: < 30 seconds
- CI/CD Pipeline: < 2 minutes total
- Documentation Build: < 1 minute
๐ ๏ธ Advanced Validation โ
Schema Validation โ
# Validate against OpenAPI 3.1 schema
ajv validate -s openapi-3.1-schema.json -d openapi/openapi.yaml
# Validate examples against schemas
spectral lint openapi/openapi.yaml --ruleset .spectral.yaml --format pretty
Security Validation โ
# Security-focused validation
spectral lint openapi/openapi.yaml --ruleset security-rules.yaml
# Check for security best practices
npm audit
bundle audit
๐ Continuous Validation โ
Pre-commit Hooks โ
# .pre-commit-config.yaml
repos:
- repo: local
hooks:
- id: spectral
name: Spectral OpenAPI Lint
entry: spectral lint openapi/openapi.yaml
language: node
files: ^openapi/.*\\.yaml$
GitHub Actions โ
# .github/workflows/validation.yml
name: OpenAPI Validation
on: [push, pull_request]
jobs:
validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: '18'
- run: npm install -g @stoplight/spectral-cli
- run: spectral lint openapi/openapi.yaml --format junit --output results.xml
- uses: dorny/test-reporter@v1
with:
name: Spectral Results
path: results.xml
reporter: java-junit
๐ Resources โ
Tools & Documentation โ
- Spectral Documentation - Official Spectral guide
- OpenAPI 3.1 Specification - Official OpenAPI standard
- Spectral Rulesets - Community rulesets
Best Practices โ
- API Design Guidelines - Industry standards
- OpenAPI Style Guide - Professional patterns
- Security Best Practices - OWASP API Security
๐ฏ Validation Success โ
Our comprehensive validation approach ensures:
โ Professional Quality - Industry-standard validation tools and practices โ Cybersecurity Focus - Custom rules for DISA compliance data โ Developer Experience - Clear error messages and actionable feedback โ CI/CD Integration - Automated validation in deployment pipeline โ Documentation Quality - Comprehensive examples and descriptions
The validation process is the foundation of our specification-first development approach. It ensures our OpenAPI specification maintains the highest professional standards for cybersecurity API documentation.