Skip to main content

Sanic OpenAPI v3

Build Status PyPI PyPI

Give your Sanic API an OpenAPI v3 specification. Based on original Sanic OpenAPI extension.

Installation

pip install sanic-openapi3

Usage

Import blueprint and use simple decorators to document routes:

from sanic_openapi3 import openapi, openapi_blueprint

@app.get("/user/<user_id:int>")
@openapi.summary("Fetches a user by ID")
@openapi.response(200, { "user": { "name": str, "id": int } })
async def get_user(request, user_id):
    ...

@app.post("/user")
@openapi.summary("Creates a user")
@openapi.body({"user": { "name": str }})
async def create_user(request):
    ...

app.blueprint(openapi_blueprint)

You'll now have a specification at the URL /openapi.json. Your routes will be automatically categorized by their blueprints.

Model your input/output

class Car:
    make = str
    model = str
    year = int

class Garage:
    spaces = int
    cars = [Car]

@app.get("/garage")
@openapi.summary("Gets the whole garage")
@openapi.response(200, Garage)
async def get_garage(request):
    return json({
        "spaces": 2,
        "cars": [{"make": "Nissan", "model": "370Z"}]
    })

Get more descriptive

class Car:
    make = doc.String("Who made the car")
    model = doc.String("Type of car.  This will vary by make")
    year = doc.Integer("4-digit year of the car", required=False)

class Garage:
    spaces = doc.Integer("How many cars can fit in the garage")
    cars = doc.List(Car, description="All cars in the garage")

Configure all the things

app.config.OPENAPI_VERSION = '1.0.0'
app.config.OPENAPI_TITLE = 'Car API'
app.config.OPENAPI_DESCRIPTION = 'Car API'
app.config.OPENAPI_TERMS_OF_SERVICE = 'https://example.com/terms'
app.config.OPENAPI_CONTACT_EMAIL = 'mail@example.com'
app.config.OPENAPI_CONTACT_NAME = 'mail@example.com'

Release files for sanic-openapi3 0.0.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for sanic-openapi3 0.0.2
File Size Uploaded
sanic-openapi3-0.0.2.tar.gz 5.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for sanic-openapi3 0.0.2
File Interpreter ABI Platform
sanic_openapi3-0.0.2-py3-none-any.whl Python 3 none any Details

Total release size: 13.8 kB

Release files / sanic-openapi3-0.0.2.tar.gz

Download URL sanic-openapi3-0.0.2.tar.gz
Size 5.7 kB
Tags Source
SHA-256 checksum
How to use checksums
3e93ed8390fa54c6695817a0f4b6ba415bea837850f921718d2cec9c3785130b
BLAKE2b-256 checksum
How to use checksums
99373a136e8c7a9465d05166d48a3e90d7d23dabdab9cebb426d8f557474fd7b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / sanic_openapi3-0.0.2-py3-none-any.whl

Download URL sanic_openapi3-0.0.2-py3-none-any.whl
Size 8.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
76ddfcd24e087bdaa7c662f76aa88792211623672e895759a299cf406d3b08e4
BLAKE2b-256 checksum
How to use checksums
53de941491e368c6e307694c70adc3becae83633e39a45c9e41a7e849ab28345
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

0.0.2 This release

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page