A simple TypeScript utility to generate strongly typed contracts (input, output, and interfaces) based on an OpenAPI YAML specification. This tool helps backend and frontend developers work with consistent request and response types.
- Generate TypeScript interfaces from OpenAPI schemas
- Organize input (request), output (response), and controller interfaces
- Supports nested objects and
$refreferences - Fully configurable output paths
npm install --save-dev openapi-interface-generatorAdd this to your package.json:
"scripts": {
"generate-interfaces": "openapi-interface-generator --openApiPath=./openapi.yaml --generatedDir=./src/app/contracts --interfacesFolder=interfaces --requestsFolder=requests --responsesFolder=responses"
}openapi-interface-generator \
--openApiPath=./openapi.yaml \
--generatedDir=./src/app/contracts \
--interfacesFolder=interfaces \
--requestsFolder=requests \
--responsesFolder=responsesnpm run generate-interfaces| Option | Description | Default |
|---|---|---|
--openApiPath |
Path to OpenAPI YAML file | ./openapi.yaml |
--generatedDir |
Base output folder for all contracts | ./src/app/contracts |
--interfacesFolder |
Folder for generated Express interfaces | interfaces |
--requestsFolder |
Folder for generated request DTOs | requests |
--responsesFolder |
Folder for generated response DTOs | responses |
/contracts
├── interfaces
│ └── tag-name-interface.ts <-- Controller interfaces
├── requests
│ └── tag-name.request.ts <-- Input DTOs
└── responses
└── tag-name.response.ts <-- Output DTOs