azure-functions-openapi ships with a CLI entry point for generating OpenAPI output from decorated handlers.
pip install azure-functions-openapiThen verify:
azure-functions-openapi --helpCurrent command set:
generate: build OpenAPI spec in JSON or YAML
azure-functions-openapi generateBy default this prints JSON to stdout using:
- title:
API - version:
1.0.0 - OpenAPI version:
3.0.0
Generate JSON to stdout:
azure-functions-openapi generate --title "Todo API" --version "1.2.0"Generate YAML to stdout:
azure-functions-openapi generate --format yaml --title "Todo API"Write JSON to file:
azure-functions-openapi generate --output openapi.json --format jsonWrite YAML to file:
azure-functions-openapi generate --output openapi.yaml --format yamlGenerate OpenAPI 3.1 output:
azure-functions-openapi generate --openapi-version 3.1 --output openapi-3.1.jsonImport your function app so routes are registered:
azure-functions-openapi generate --app function_app --title "Todo API"Pretty-print JSON output:
azure-functions-openapi generate --app function_app --pretty --output openapi.json| Option | Alias | Values | Default | Description |
|---|---|---|---|---|
--app |
- | module or module:var |
- | Import module before generating so @openapi decorators register routes |
--title |
- | any string | API |
OpenAPI info.title |
--version |
- | any string | 1.0.0 |
OpenAPI info.version |
--output |
-o |
file path | stdout | Write generated content to file |
--format |
-f |
json, yaml |
json |
Output serialization format |
--openapi-version |
- | 3.0, 3.1 |
3.0 |
OpenAPI schema version |
--pretty |
-p |
flag | false |
Pretty-print JSON output (adds indentation); no effect on YAML |
| Code | Meaning |
|---|---|
0 |
Success |
1 |
Runtime or generation error |
2 |
Invalid CLI arguments (argparse parse error) |
Use a validator in local checks and CI:
pip install openapi-spec-validator
openapi-spec-validator openapi.jsonFor YAML:
openapi-spec-validator openapi.yamlname: OpenAPI Validation
on: [push, pull_request]
jobs:
validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Install tools
run: pip install azure-functions-openapi openapi-spec-validator
- name: Generate spec
run: azure-functions-openapi generate --openapi-version 3.1 --output openapi.json
- name: Validate spec
run: openapi-spec-validator openapi.json- Confirm package installed in active environment
- Use
python -m azure_functions_openapi.cli --helpas fallback
-
Ensure app handlers are decorated with
@openapi -
Pass
--app <module>so decorated routes are registered before generation:azure-functions-openapi generate --app function_app --title "My API" -
Use
module:variablesyntax when theFunctionAppinstance is not namedapp:azure-functions-openapi generate --app function_app:my_app --title "My API"
- Use only
--openapi-version 3.0or--openapi-version 3.1