A pluggable API specification generator. Currently supports the OpenAPI specification (f.k.a. Swagger 2.0).
Project description
A pluggable API specification generator. Currently supports the OpenAPI specification (f.k.a. Swagger 2.0).
Features
Supports OpenAPI 2.0 specification (f.k.a. Swagger)
Framework-agnostic
Includes plugins for marshmallow, Flask, and Tornado
Utilities for parsing docstrings
Example Application
from apispec import APISpec
from flask import Flask, jsonify
from marshmallow import Schema, fields
# Create an APISpec
spec = APISpec(
title='Swagger Petstore',
version='1.0.0',
plugins=[
'apispec.ext.flask',
'apispec.ext.marshmallow',
],
)
# Optional marshmallow support
class CategorySchema(Schema):
id = fields.Int()
name = fields.Str(required=True)
class PetSchema(Schema):
category = fields.Nested(CategorySchema, many=True)
name = fields.Str()
# Optional Flask support
app = Flask(__name__)
@app.route('/random')
def random_pet():
"""A cute furry animal endpoint.
---
get:
description: Get a random pet
responses:
200:
description: A pet to be returned
schema: PetSchema
"""
pet = get_random_pet()
return jsonify(PetSchema().dump(pet).data)
ctx = app.test_request_context()
ctx.push()
# Register entities and paths
spec.definition('Category', schema=CategorySchema)
spec.definition('Pet', schema=PetSchema)
spec.add_path(view=random_pet)
Generated OpenAPI Spec
spec.to_dict()
# {
# "info": {
# "title": "Swagger Petstore",
# "version": "1.0.0"
# },
# "swagger": "2.0",
# "paths": {
# "/random": {
# "get": {
# "description": "A cute furry animal endpoint.",
# "responses": {
# "200": {
# "schema": {
# "$ref": "#/definitions/Pet"
# },
# "description": "A pet to be returned"
# }
# },
# }
# }
# },
# "definitions": {
# "Pet": {
# "properties": {
# "category": {
# "type": "array",
# "items": {
# "$ref": "#/definitions/Category"
# }
# },
# "name": {
# "type": "string"
# }
# }
# },
# "Category": {
# "required": [
# "name"
# ],
# "properties": {
# "name": {
# "type": "string"
# },
# "id": {
# "type": "integer",
# "format": "int32"
# }
# }
# }
# },
# }
Documentation
Documentation is available at http://apispec.readthedocs.org/ .
License
MIT licensed. See the bundled LICENSE file for more details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
apispec-0.11.0.tar.gz
(34.4 kB
view details)
Built Distribution
File details
Details for the file apispec-0.11.0.tar.gz
.
File metadata
- Download URL: apispec-0.11.0.tar.gz
- Upload date:
- Size: 34.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | facaf1e0a9a7cb71d0708dc601672ecf7dd6a183f918bb9fbf674ea7927c3c74 |
|
MD5 | 2bf0d06e4af0fb1be16c24a0bf733932 |
|
BLAKE2b-256 | c42c776d2bdc5960f37af4e24ffbd7e8aba59d3b8a0cc00f8347c5fb16a219b9 |
Provenance
File details
Details for the file apispec-0.11.0-py2.py3-none-any.whl
.
File metadata
- Download URL: apispec-0.11.0-py2.py3-none-any.whl
- Upload date:
- Size: 20.0 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 80d153163bc8d2cc8b9bfea3f6053970549308beb4d002a434e2107923fc84f5 |
|
MD5 | 78281030ef45ec4d06189b093a26b3c6 |
|
BLAKE2b-256 | 31461dcf65f3af920f457870fdb4e1b833882232d633d244821305cc0bb6b2b6 |