Skip to main content

A pluggable API documentation generator. Currently supports the Swagger 2.0 specification.

Project description

https://travis-ci.org/marshmallow-code/apispec.svg?branch=dev

A pluggable API documentation generator. Currently supports the Swagger 2.0 specification.

Features

  • Supports Swagger 2.0

  • Framework-agnostic

  • Includes plugins for marshmallow and Flask

  • 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',
    description='A sample Petstore API.',
    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 Swagger Spec

spec.to_dict()
# {
#   "info": {
#     "title": "Swagger Petstore",
#     "version": "1.0.0"
#   },
#   "swagger": "2.0",
#   "description": "A sample Petstore API."
#   "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.4.0.tar.gz (25.6 kB view details)

Uploaded Source

Built Distribution

apispec-0.4.0-py2.py3-none-any.whl (16.2 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file apispec-0.4.0.tar.gz.

File metadata

  • Download URL: apispec-0.4.0.tar.gz
  • Upload date:
  • Size: 25.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for apispec-0.4.0.tar.gz
Algorithm Hash digest
SHA256 32ff8d6984faab0cab8dac1e9204290c89740e1932293e0b873729a18bc330fb
MD5 86802b0b3a30a12fdac28872d12513ff
BLAKE2b-256 4edb805a9cffa071e18cf2767047f74b7a8e92486a7b60a271f95ca327c85cb0

See more details on using hashes here.

Provenance

File details

Details for the file apispec-0.4.0-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for apispec-0.4.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 9e7a5c2ec1d12a751043a86be8453d29029f371f7b156c764c4768479dc00df4
MD5 3e86ae59cdc81b508a9ec5255513739f
BLAKE2b-256 c37bd74d2bceef9f3544be7f7fc34edc947c24b709d13920a9ff99240295632d

See more details on using hashes here.

Provenance

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