Skip to main content

OpenAPI (Swagger) integration for Azure Functions Python v2 programming model

Project description

Azure Functions OpenAPI

PyPI Python Version CI Release Security Scans codecov pre-commit Docs License: MIT

Read this in: 한국어 | 日本語 | 简体中文

OpenAPI (Swagger) documentation and Swagger UI for the Azure Functions Python v2 programming model.

Why Use It

Documenting Azure Functions HTTP APIs typically requires maintaining a separate OpenAPI spec by hand. azure-functions-openapi generates the spec automatically from decorated handlers, keeping documentation and code in sync.

Scope

  • Azure Functions Python v2 programming model
  • Decorator-based func.FunctionApp() applications
  • HTTP-triggered functions documented with @openapi
  • Optional Pydantic schema generation (supports both Pydantic v1 and v2)

This package does not support the legacy function.json-based v1 programming model.

Features

  • @openapi decorator for operation metadata
  • /openapi.json, /openapi.yaml, and /docs endpoints
  • Query, path, header, body, and response schema support
  • Swagger UI helper with security defaults
  • CLI tooling for generation and validation workflows

Installation

pip install azure-functions-openapi

Your Function App dependencies should include:

azure-functions
azure-functions-openapi

Quick Start

import json

import azure.functions as func

from azure_functions_openapi.decorator import openapi
from azure_functions_openapi.openapi import get_openapi_json, get_openapi_yaml
from azure_functions_openapi.swagger_ui import render_swagger_ui


app = func.FunctionApp()


@app.function_name(name="http_trigger")
@app.route(route="http_trigger", auth_level=func.AuthLevel.ANONYMOUS, methods=["POST"])
@openapi(
    summary="Greet user",
    route="/api/http_trigger",
    method="post",
    request_body={
        "type": "object",
        "properties": {"name": {"type": "string"}},
        "required": ["name"],
    },
    response={
        200: {
            "description": "Successful greeting",
            "content": {
                "application/json": {
                    "schema": {
                        "type": "object",
                        "properties": {"message": {"type": "string"}},
                    }
                }
            },
        }
    },
    tags=["Example"],
)
def http_trigger(req: func.HttpRequest) -> func.HttpResponse:
    data = req.get_json()
    name = data.get("name", "world")
    return func.HttpResponse(
        json.dumps({"message": f"Hello, {name}!"}),
        mimetype="application/json",
    )

@app.function_name(name="openapi_json")
@app.route(route="openapi.json", auth_level=func.AuthLevel.ANONYMOUS, methods=["GET"])
def openapi_json(req: func.HttpRequest) -> func.HttpResponse:
    return get_openapi_json(
        title="Sample API",
        description="OpenAPI document for the Sample API.",
    )


@app.function_name(name="openapi_yaml")
@app.route(route="openapi.yaml", auth_level=func.AuthLevel.ANONYMOUS, methods=["GET"])
def openapi_yaml(req: func.HttpRequest) -> func.HttpResponse:
    return get_openapi_yaml(
        title="Sample API",
        description="OpenAPI document for the Sample API.",
    )


@app.function_name(name="swagger_ui")
@app.route(route="docs", auth_level=func.AuthLevel.ANONYMOUS, methods=["GET"])
def swagger_ui(req: func.HttpRequest) -> func.HttpResponse:
    return render_swagger_ui()

Run locally with Azure Functions Core Tools:

func start

Demo

The representative hello example shows the full outcome of adopting this library:

  • You annotate an Azure Functions v2 HTTP handler with @openapi.
  • The package generates a real OpenAPI document for that route.
  • The same route is rendered in Swagger UI for browser-based inspection.

Generated Spec Result

The generated OpenAPI file is captured as a static preview from the same example run, so the README shows the actual document produced by the representative function.

OpenAPI spec preview

Swagger UI Result

The web preview below is generated from the same representative example and captured automatically from the rendered Swagger UI page produced by that example flow.

OpenAPI Swagger UI preview

Documentation

Ecosystem

Disclaimer

This project is an independent community project and is not affiliated with, endorsed by, or maintained by Microsoft.

Azure and Azure Functions are trademarks of Microsoft Corporation.

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

azure_functions_openapi-0.13.1.tar.gz (359.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

azure_functions_openapi-0.13.1-py3-none-any.whl (17.5 kB view details)

Uploaded Python 3

File details

Details for the file azure_functions_openapi-0.13.1.tar.gz.

File metadata

  • Download URL: azure_functions_openapi-0.13.1.tar.gz
  • Upload date:
  • Size: 359.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for azure_functions_openapi-0.13.1.tar.gz
Algorithm Hash digest
SHA256 835b5f04120d433874e2b178f5ae8ff2011552cdbc7056d6b5a869c55aa30dbc
MD5 35bde16b156c85615f5c798606c1ae45
BLAKE2b-256 fadde400ce8381d748b125a6227c4222683327ef35f03cafe7dcbc3a3a67e31c

See more details on using hashes here.

Provenance

The following attestation bundles were made for azure_functions_openapi-0.13.1.tar.gz:

Publisher: release.yml on yeongseon/azure-functions-openapi

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file azure_functions_openapi-0.13.1-py3-none-any.whl.

File metadata

File hashes

Hashes for azure_functions_openapi-0.13.1-py3-none-any.whl
Algorithm Hash digest
SHA256 75b46fa732eff0a9db4562dc2545381a948fcf28a2c00407bdfab1b378f7d3bb
MD5 926653ac90138681bcf40aa9d26ba1dd
BLAKE2b-256 f18905d12e7418715513fdd9e8c9b11133a21f071d962226b5e8e38ebcae4f02

See more details on using hashes here.

Provenance

The following attestation bundles were made for azure_functions_openapi-0.13.1-py3-none-any.whl:

Publisher: release.yml on yeongseon/azure-functions-openapi

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page