Package: apispec
A pluggable API specification generator. Currently supports theOpenAPI Specification(f.k.a. the Swagger specification).FeaturesSupports the OpenAPI Specification (versions 2 and 3)Framework-agnosticBuilt-in support formarshmallowUtilities for parsing docstringsInstallation$ pip install -U apispecWhen using the marshmallow plugin, ensure a compatible marshmallow version is used:$ pip install -U apispec[marshmallow]Example ApplicationfromapispecimportAPISpecfromapispec.ext.marshmallowimportMarshmallowPluginfromapispec_webframeworks.flaskimportFlaskPluginfromflaskimportFlaskfrommarshmallowimportSchema,fields# Create an APISpecspec=APISpec(title="Swagger Petstore",version="1.0.0",openapi_version="3.0.2",plugins=[FlaskPlugin(),MarshmallowPlugin()],)# Optional marshmallow supportclassCategorySchema(Schema):id=fields.Int()name=fields.Str(required=True)classPetSchema(Schema):category=fields.List(fields.Nested(CategorySchema))name=fields.Str()# Optional security scheme supportapi_key_scheme={"type":"apiKey","in":"header","name":"X-API-Key"}spec.components.security_scheme("ApiKeyAuth",api_key_scheme)# Optional Flask supportapp=Flask(__name__)@app.route("/random")defrandom_pet():"""A cute furry animal endpoint.
    ---
    get:
      description: Get a random pet
      security:
        - ApiKeyAuth: []
      responses:
        200:
          content:
            application/json:
              schema: PetSchema
    """pet=get_random_pet()returnPetSchema().dump(pet)# Register the path and the entities within itwithapp.test_request_context():spec.path(view=random_pet)Generated OpenAPI Specimportjsonprint(json.dumps(spec.to_dict(),indent=2))# {#   "paths": {#     "/random": {#       "get": {#         "description": "Get a random pet",#         "security": [#           {#             "ApiKeyAuth": []#           }#         ],#         "responses": {#           "200": {#             "content": {#               "application/json": {#                 "schema": {#                   "$ref": "#/components/schemas/Pet"#                 }#               }#             }#           }#         }#       }#     }#   },#   "tags": [],#   "info": {#     "title": "Swagger Petstore",#     "version": "1.0.0"#   },#   "openapi": "3.0.2",#   "components": {#     "parameters": {},#     "responses": {},#     "schemas": {#       "Category": {#         "type": "object",#         "properties": {#           "name": {#             "type": "string"#           },#           "id": {#             "type": "integer",#             "format": "int32"#           }#         },#         "required": [#           "name"#         ]#       },#       "Pet": {#         "type": "object",#         "properties": {#           "name": {#             "type": "string"#           },#           "category": {#             "type": "array",#             "items": {#               "$ref": "#/components/schemas/Category"#             }#           }#         }#       }#       "securitySchemes": {#          "ApiKeyAuth": {#            "type": "apiKey",#            "in": "header",#            "name": "X-API-Key"#         }#       }#     }#   }# }print(spec.to_yaml())# components:#   parameters: {}#   responses: {}#   schemas:#     Category:#       properties:#         id: {format: int32, type: integer}#         name: {type: string}#       required: [name]#       type: object#     Pet:#       properties:#         category:#           items: {$ref: '#/components/schemas/Category'}#           type: array#         name: {type: string}#       type: object#   securitySchemes:#     ApiKeyAuth:#       in: header#       name: X-API-KEY#       type: apiKey# info: {title: Swagger Petstore, version: 1.0.0}# openapi: 3.0.2# paths:#   /random:#     get:#       description: Get a random pet#       responses:#         200:#           content:#             application/json:#               schema: {$ref: '#/components/schemas/Pet'}#       security:#       - ApiKeyAuth: []# tags: []DocumentationDocumentation is available athttps://apispec.readthedocs.io/.EcosystemA list of apispec-related libraries can be found at the GitHub wiki here:https://github.com/marshmallow-code/apispec/wiki/EcosystemSupport apispecapispec is maintained by a group ofvolunteers.
If you’d like to support the future of the project, please consider
contributing to our Open Collective:Professional SupportProfessionally-supported apispec is available through theTidelift Subscription.Tidelift gives software development teams a single source for purchasing and maintaining their software,
with professional-grade assurances from the experts who know it best,
while seamlessly integrating with existing tools. [Get professional support]Security Contact InformationTo report a security vulnerability, please use theTidelift security contact.
Tidelift will coordinate the fix and disclosure.Project LinksDocs:https://apispec.readthedocs.io/Changelog:https://apispec.readthedocs.io/en/latest/changelog.htmlContributing Guidelines:https://apispec.readthedocs.io/en/latest/contributing.htmlPyPI:https://pypi.python.org/pypi/apispecIssues:https://github.com/marshmallow-code/apispec/issuesLicenseMIT licensed. See the bundledLICENSEfile for more details.