Skip to main content
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.

Release files for apispec-chalice 0.2.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for apispec-chalice 0.2.2
File Size Uploaded
apispec-chalice-0.2.2.tar.gz 3.8 kB Details

Release files / apispec-chalice-0.2.2.tar.gz

Download URL apispec-chalice-0.2.2.tar.gz
Size 3.8 kB
Tags Source
SHA-256 checksum
How to use checksums
68984d90cfeacec85cb64c1beae6a48175c67603d9b4ffae148013f1bba802cb
BLAKE2b-256 checksum
How to use checksums
b83a02950de570c74145e824aa574944350a0b8eb277d46f43d2d4511094943b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

0.2.2 This release

1 release file

0.2.1

1 release file

0.2.0

1 release file

0.1.1

1 release file

0.1.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page