Skip to main content

Chalice plugin for the apispec library

Project description

Latest version Travis-CI

Chalice plugin for the apispec (fka Swagger) generation library.

Installation

From PyPi:

$ pip install apispec-chalice

Example RESTful Application

from apispec import APISpec
from chalice import Chalice
from marshmallow import Schema, fields
import apispec_chalice

# Create an APISpec
spec = APISpec(
    title='Swagger Petstore',
    version='1.0.0',
    plugins=[
        'apispec_chalice',
        '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()

class ErrorSchema(Schema):
    status_code = fields.Int(required=True)
    message = fields.Str()

app = Chalice(__name__)

@app.route('/pets', methods=['GET', 'POST'])
def pets(gist_id):
    '''
    ---
    get:
        responses:
            200:
                schema:
                    type: array
                    items: PetSchema
            404:
                schema: ErrorSchema
    post:
        responses:
            201:
                headers:
                    Location:
                        description: 'URI of new pet'
                        type: string
            400:
                schema: ErrorSchema
    '''
    pass

@app.route('/pets/{pet_name}', methods=['GET', 'PUT', 'DELETE'])
def pet(gist_id):
    '''
    ---
    get:
        responses:
            200:
                schema: PetSchema
            404:
                schema: ErrorSchema
    delete:
        responses:
            204:
                description: 'deleted pet'
            404:
                schema: ErrorSchema
    put:
        responses:
            204:
                description: 'deleted pet'
            400:
                schema: ErrorSchema
    '''
    pass

# Register entities and paths
spec.definition('Category', schema=CategorySchema)
spec.definition('Pet', schema=PetSchema)
spec.definition('Error', schema=ErrorSchema)
spec.add_path(app=app, view=pets)
spec.add_path(app=app, view=pet)

Generated OpenAPI Spec

spec.to_dict()
#{
#   'info':{
#      'title':'Swagger Petstore',
#      'version':'1.0.0'
#   },
#   'paths':{
#      '/pets':{
#         'get':{
#            'responses':{
#               '200':{
#                  'schema':{
#                     'type':'array',
#                     'items':{
#                        '$ref':'#/definitions/Pet'
#                     }
#                  }
#               },
#               '404':{
#                  'schema':{
#                     '$ref':'#/definitions/Error'
#                  }
#               }
#            }
#         },
#         'post':{
#            'responses':{
#               '201':{
#                  'headers':{
#                     'Location':{
#                        'description':'URI of new pet',
#                        'type':'string'
#                     }
#                  }
#               },
#               '400':{
#                  'schema':{
#                     '$ref':'#/definitions/Error'
#                  }
#               }
#            }
#         }
#      },
#      '/pets/{pet_name}':{
#         'get':{
#            'responses':{
#               '200':{
#                  'schema':{
#                     '$ref':'#/definitions/Pet'
#                  }
#               },
#               '404':{
#                  'schema':{
#                     '$ref':'#/definitions/Error'
#                  }
#               }
#            }
#         },
#         'delete':{
#            'responses':{
#               '204':{
#                  'description':'deleted pet'
#               },
#               '404':{
#                  'schema':{
#                     '$ref':'#/definitions/Error'
#                  }
#               }
#            }
#         },
#         'put':{
#            'responses':{
#               '204':{
#                  'description':'deleted pet'
#               },
#               '400':{
#                  'schema':{
#                     '$ref':'#/definitions/Error'
#                  }
#               }
#            }
#         }
#      }
#   },
#   'tags':[
#
#   ],
#   'swagger':'2.0',
#   'definitions':{
#      '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':'#/definitions/Category'
#               }
#            }
#         }
#      },
#      'Error':{
#         'type':'object',
#         'properties':{
#            'message':{
#               'type':'string'
#            },
#            'status_code':{
#               'type':'integer',
#               'format':'int32'
#            }
#         },
#         'required':[
#            'status_code'
#         ]
#      }
#   },
#   'parameters':{
#
#   }
#}

License

MIT licensed. See the bundled LICENSE file for more details.

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-chalice-0.2.2.tar.gz (3.8 kB view hashes)

Uploaded Source

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