Advanced Client Generation
Take your client generation to the next level with custom configurations, templates, and automated workflows.
Custom Generator Options
bash
# List available generators
openapi-generator-cli list
# Get help for specific generator
openapi-generator-cli config-help -g python
# Generate with custom configuration
openapi-generator-cli generate \
-i https://raw.githubusercontent.com/mitre/cyber-trackr-live/main/openapi/openapi.yaml \
-g python \
-c custom-config.json \
-o ./python-client
Configuration Files
Create a config.json
file for consistent generation:
json
{
"packageName": "cyber_trackr_live",
"packageVersion": "1.0.0",
"packageCompany": "MITRE Corporation",
"packageAuthors": "MITRE Corporation",
"packageCopyright": "Copyright 2025 MITRE Corporation",
"packageDescription": "Python client for cyber.trackr.live API - DISA cybersecurity data",
"packageUrl": "https://github.com/mitre/cyber-trackr-live",
"projectName": "cyber-trackr-live",
"clientPackage": "cyber_trackr_live",
"packageKeywords": ["cybersecurity", "compliance", "stig", "disa", "api"]
}
Template Customization
bash
# Download templates for customization
openapi-generator-cli author template -g python -o ./python-templates
# Generate with custom templates
openapi-generator-cli generate \
-i https://raw.githubusercontent.com/mitre/cyber-trackr-live/main/openapi/openapi.yaml \
-g python \
-t ./python-templates \
-o ./python-client
Generation Workflow
Development Workflow
Automated Generation Script
bash
#!/bin/bash
# generate-all-clients.sh
set -e
SPEC_URL="https://raw.githubusercontent.com/mitre/cyber-trackr-live/main/openapi/openapi.yaml"
VERSION="1.0.0"
echo "🔄 Generating all clients from OpenAPI specification..."
# Ruby (Reference Implementation)
echo "📦 Generating Ruby client..."
docker run --rm -v "${PWD}:/local" openapitools/openapi-generator-cli generate \
-i $SPEC_URL -g ruby --library=faraday \
--additional-properties=gemName=cyber_trackr_live,gemVersion=$VERSION \
-o /local/clients/ruby
# TypeScript
echo "📦 Generating TypeScript client..."
docker run --rm -v "${PWD}:/local" openapitools/openapi-generator-cli generate \
-i $SPEC_URL -g typescript-fetch \
--additional-properties=npmName=cyber-trackr-live,npmVersion=$VERSION \
-o /local/clients/typescript
# Python
echo "📦 Generating Python client..."
docker run --rm -v "${PWD}:/local" openapitools/openapi-generator-cli generate \
-i $SPEC_URL -g python \
--additional-properties=packageName=cyber_trackr_live,packageVersion=$VERSION \
-o /local/clients/python
# Go
echo "📦 Generating Go client..."
docker run --rm -v "${PWD}:/local" openapitools/openapi-generator-cli generate \
-i $SPEC_URL -g go \
--additional-properties=packageName=cybertrackrlive,packageVersion=$VERSION \
-o /local/clients/go
echo "✅ All clients generated successfully!"
Enterprise Features
Version Synchronization
Keep all your clients in sync with your OpenAPI specification:
bash
# Extract version from OpenAPI spec
API_VERSION=$(grep "version:" openapi/openapi.yaml | sed 's/.*: //' | tr -d '"')
# Use extracted version in generation
docker run --rm -v "${PWD}:/local" openapitools/openapi-generator-cli generate \
-i openapi/openapi.yaml \
-g ruby \
--additional-properties=gemVersion=$API_VERSION \
-o /local/ruby-client
CI/CD Integration
Add client generation to your GitHub Actions workflow:
yaml
- name: Generate Ruby Client
run: |
docker run --rm -v "${PWD}:/workspace" openapitools/openapi-generator-cli generate \
-i /workspace/openapi/openapi.yaml \
-g ruby --library=faraday \
--additional-properties=gemName=cyber_trackr_live \
-o /workspace/clients/ruby
📚 Next Steps
- Usage Examples - See these advanced configurations in action
- Reference Guide - Troubleshooting and complete documentation
- Language Commands - Back to basic generation commands
- Overview - Start from the beginning
🔧 Custom Templates
Want to create your own templates? Check out: