Skip to main content

APISpec plugin handling Starlette.

Project description

Plugin for APISpec handling Starlette

pypi version Build status Coverage Code style: black Number of tests Number of downloads

This module should not be considered as stable as it is still under development.

However a stable version can be expected by mid March 2020 and any issue or pull request is welcome at any time.

Provides a plugin to use with APISpec to be able to handle Starlette endpoints.

StarlettePlugin usage

from starlette.applications import Starlette
from apispec import APISpec
from apispec_starlette import StarlettePlugin


app = Starlette()
spec = APISpec(
    title="My API",
    version="0.0.1",
    openapi_version="2.0",
    plugins=[StarlettePlugin(app)],
)

Documenting responses inside endpoint docstring

from starlette.applications import Starlette
from starlette.responses import JSONResponse
from apispec import APISpec
from apispec_starlette import StarlettePlugin


app = Starlette()
spec = APISpec(
    title="My API",
    version="0.0.1",
    openapi_version="2.0",
    plugins=[StarlettePlugin(app)],
)


@app.route("/my_endpoint")
def my_endpoint():
    """
    responses:
        200:
            description: "Action performed"
            schema:
                properties:
                    status:
                        type: string
                type: object
    """
    return JSONResponse({"status": "test"})

Documenting responses outside of endpoint docstring

from starlette.applications import Starlette
from starlette.responses import JSONResponse
from apispec import APISpec
from apispec_starlette import StarlettePlugin, document_response


app = Starlette()
spec = APISpec(
    title="My API",
    version="0.0.1",
    openapi_version="2.0",
    plugins=[StarlettePlugin(app)],
)


@app.route("/my_endpoint")
def my_endpoint():
    return JSONResponse({"status": "test"})


document_response(spec, endpoint="/my_endpoint", method="get", status_code=200, response={
    "description": "Action performed",
    "schema": {
        "properties": {"status": {"type": "string"}},
        "type": "object",
    }
})

Documenting OAuth2 security outside of endpoint docstring

from starlette.applications import Starlette
from starlette.middleware import Middleware
from starlette.middleware.authentication import AuthenticationMiddleware
from starlette.authentication import requires, AuthenticationBackend
from starlette.responses import JSONResponse
from apispec import APISpec
from apispec_starlette import StarlettePlugin, document_endpoint_oauth2_authentication, document_oauth2_authentication


# TODO Replace by your OAuth2 backend
app = Starlette(middleware=[Middleware(AuthenticationMiddleware, backend=AuthenticationBackend())])
spec = APISpec(
    title="My API",
    version="0.0.1",
    openapi_version="2.0",
    plugins=[StarlettePlugin(app)],
)

# TODO Adjust parameters
document_oauth2_authentication(spec, authorization_url="http://authorization_url", flow="implicit", scopes={"scope1": "Description of scope 1", "scope2": "Description of scope 2"})

@requires(scopes=["scope1", "scope2"])
@app.route("/my_endpoint")
def my_endpoint():
    return JSONResponse({"status": "test"})


document_endpoint_oauth2_authentication(spec, endpoint="/my_endpoint", method="get", required_scopes=["scope1", "scope2"])

Add a /swagger.json endpoint

Your endpoints can be automatically discovered and documented when requesting /swagger.json

from starlette.applications import Starlette
from apispec_starlette import add_swagger_json_endpoint


app = Starlette()
spec = add_swagger_json_endpoint(app=app)

How to install

  1. python 3.6+ must be installed
  2. Use pip to install module:
python -m pip install apispec_starlette

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

apispec_starlette-0.0.3.tar.gz (5.7 kB view details)

Uploaded Source

Built Distribution

apispec_starlette-0.0.3-py3-none-any.whl (7.4 kB view details)

Uploaded Python 3

File details

Details for the file apispec_starlette-0.0.3.tar.gz.

File metadata

  • Download URL: apispec_starlette-0.0.3.tar.gz
  • Upload date:
  • Size: 5.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/45.2.0 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.7.1

File hashes

Hashes for apispec_starlette-0.0.3.tar.gz
Algorithm Hash digest
SHA256 9f40c96e2533069ac9cf9903486c96679edb9789cccadc508865b1f63bee4190
MD5 4f3f8f4ac2edf1b3a0fb08cc397649c7
BLAKE2b-256 5248997e847d477a332a4b2357f010282c44f0c41e07d7345c01707aff6690bd

See more details on using hashes here.

File details

Details for the file apispec_starlette-0.0.3-py3-none-any.whl.

File metadata

  • Download URL: apispec_starlette-0.0.3-py3-none-any.whl
  • Upload date:
  • Size: 7.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/45.2.0 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.7.1

File hashes

Hashes for apispec_starlette-0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 73bde5d6244d8365a365750b3e57812f2174f5e55a0612f565b4130a0d3050c0
MD5 cae40919e0cc459595b4f3b60a135e28
BLAKE2b-256 4f934c524aefdf63a992a83dbafa8c1939a165e0f127f27e951672a66e1055aa

See more details on using hashes here.

Supported by

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