Convert Arazzo workflow descriptions to OpenAPI documents.
- ✅ Convert Arazzo 1.0 workflows to OpenAPI 3.0/3.1 documents
- ✅ Intelligent type inference from source OpenAPI documents
- ✅ Support for remote and local source documents
- ✅ $ref resolution in OpenAPI schemas
- ✅ Preserve types, formats, descriptions, and constraints
- ✅ CLI and programmatic API
- ✅ TypeScript support
npm install -g arazzo2openapi# Convert local file
arazzo2openapi workflow.yaml -o openapi.yaml
# Convert remote URL
arazzo2openapi https://example.com/workflow.yaml -o openapi.yaml
# Override metadata
arazzo2openapi workflow.yaml \
--title "My API" \
--version "2.0.0" \
--description "Custom description" <arazzo-file> Path or URL to Arazzo document
-o, --output <file> Output file path
-f, --format <format> Output format: json or yaml
--openapi-version <version> OpenAPI version (3.0.0 or 3.1.0)
--title <title> Override API title
--version-override <version> Override API version
--description <description> Override API description
--server <url> Add server URL (repeatable)
--response-code <code> HTTP response code (default: 200)
import { ArazzoParser, WorkflowAnalyzer, OpenAPIGenerator } from 'arazzo2openapi';
// Parse Arazzo document
const parser = new ArazzoParser();
const { document } = await parser.loadDocument('workflow.yaml');
// Analyze workflows
const analyzer = new WorkflowAnalyzer();
const workflows = analyzer.analyzeAllWorkflows(document);
// Generate OpenAPI
const generator = new OpenAPIGenerator();
const config = {
arazzoPath: 'workflow.yaml',
outputPath: 'openapi.yaml',
openapiVersion: '3.1.0',
};
const openapi = await generator.generateOpenAPI(
document,
workflows,
'workflow.yaml',
config
);Automatically infers accurate types from source OpenAPI documents:
# Input: Arazzo workflow
outputs:
petId: $steps.getPet.outputs.id
petName: $steps.getPet.outputs.name
# Output: OpenAPI with inferred types
schema:
properties:
petId:
type: integer # ✅ Inferred from source
format: int64
petName:
type: string # ✅ Inferred from sourceSupports:
- Primitive types (string, number, integer, boolean)
- Formats (uuid, email, date-time, int32, int64, float, etc.)
- Enums and constraints (min/max, pattern, etc.)
- Nested objects and arrays
- $ref resolution
See test fixtures for example Arazzo documents.
# Install dependencies
npm install
# Build
npm run build
# Run tests
npm test
# Run linter
npm run lintContributions welcome! Please read the contributing guidelines first.
Apache-2.0 © Frank Kilcommins