TypeSpec OpenAPI 3.0 Emitter
This package provides the TypeSpec emitter to produce OpenAPI 3.0 output from TypeSpec source.
Install
In your typespec project root
npm install @typespec/openapi3
Emit OpenAPI 3.0 spec
- Via the command line
tsp compile . --emit @typespec/openapi3
- Via the config
Add the following to the tspconfig.yaml
file.
emitters:
@typespec/openapi3: true
For configuration see options
Use OpenAPI 3.0 specific decorators:
import "@typespec/openapi3";
using OpenAPI;
// Using `using`
@useRef("common.json#/components/schemas/Foo")
model Foo {}
// Using fully qualified names
@OpenAPI.oneOf
union MyUnion {
cat: Cat,
dog: Dog,
}
Decorators
@useRef
Syntax:
@useRef(urlString)
@useRef
@useRef
is used to replace the TypeSpec model type in emitter output with a pre-existing named OpenAPI schema.
@oneOf
Syntax:
@oneOf()
@oneOf
emits oneOf
keyword for a union type in the resulting OpenAPI 3.0 specification. It indicates that the value of union type can only contain exactly one of the subschemas.
@oneOf
can only be applied to a union types.
Emitter options:
Emitter options can be configured via the tspconfig.yaml
configuration:
emitters:
'@typespec/openapi3':
<optionName>: <value>
emitters:
'@typespec/openapi3':
outputFile: my-custom-openapi.json
or via the command line with
--option "@typespec/openapi3.<optionName>=<value>"
--option "@typespec/openapi3.output-file=my-custom-openapi.json"
output-file
Configure the name of the swagger output file relative to the compiler output-path
.
new-line
Set the newline character for emitting files. Can be either:
omit-unreachable-types
Only include types referenced via an operation.
See also