Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork185
A pluggable API specification generator. Currently supports the OpenAPI Specification (f.k.a. the Swagger specification)..
License
marshmallow-code/apispec
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
A pluggable API specification generator. Currently supports theOpenAPI Specification (f.k.a. the Swagger specification).
- Supports the OpenAPI Specification (versions 2 and 3)
- Framework-agnostic
- Built-in support formarshmallow
- Utilities for parsing docstrings
$ pip install -U apispec
When using the marshmallow plugin, ensure a compatible marshmallow version is used:
$ pip install -U apispec[marshmallow]
fromapispecimportAPISpecfromapispec.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)
importjsonprint(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: []
Documentation is available athttps://apispec.readthedocs.io/ .
A list of apispec-related libraries can be found at the GitHub wiki here:
https://github.com/marshmallow-code/apispec/wiki/Ecosystem
apispec is maintained by a group ofvolunteers.If you'd like to support the future of the project, please considercontributing to our Open Collective:

Professionally-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]

To report a security vulnerability, please use theTidelift security contact.Tidelift will coordinate the fix and disclosure.
- Docs:https://apispec.readthedocs.io/
- Changelog:https://apispec.readthedocs.io/en/latest/changelog.html
- Contributing Guidelines:https://apispec.readthedocs.io/en/latest/contributing.html
- PyPI:https://pypi.python.org/pypi/apispec
- Issues:https://github.com/marshmallow-code/apispec/issues
MIT licensed. See the bundledLICENSE file for more details.
About
A pluggable API specification generator. Currently supports the OpenAPI Specification (f.k.a. the Swagger specification)..
Topics
Resources
License
Contributing
Security policy
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Sponsor this project
Uh oh!
There was an error while loading.Please reload this page.