Spectree

2.0.1 · active · verified Thu Apr 16

Spectree is a Python library that helps generate OpenAPI documents and validate requests and responses using Python type annotations. It leverages Pydantic for data model definitions and supports various web frameworks like Flask, Quart, Falcon, and Starlette. The library is actively maintained, with the current version being 2.0.1, and typically releases minor fixes after major version updates.

Common errors

Warnings

Install

Imports

Quickstart

This quickstart demonstrates how to integrate `spectree` with Flask to validate incoming query parameters and define the response schema using Pydantic models. It sets up an API endpoint that creates a user and automatically generates OpenAPI documentation.

from flask import Flask, request
from pydantic import BaseModel, Field
from spectree import SpecTree, Response

app = Flask(__name__)
api = SpecTree('flask', app=app, title='User API', version='1.0.0')

class UserQuery(BaseModel):
    name: str = Field(..., description='User name')
    age: int = Field(..., gt=0, lt=150, description='User age')

class UserResponse(BaseModel):
    message: str
    user_id: int

@app.route('/user', methods=['POST'])
@api.validate(query=UserQuery, resp=Response(HTTP_200=UserResponse), tags=['User'])
def create_user():
    # The validated 'query' data is available in request.context.query
    user_data = request.context.query
    user_id = 123 # Simulate user creation
    return {'message': f'User {user_data.name} created', 'user_id': user_id}

# Access OpenAPI docs at /apidoc/redoc, /apidoc/swagger, or /apidoc/scalar

# To run: FLASK_APP=your_app_file.py flask run

view raw JSON →