If you can't make it perfect, make it adjustable.
is a client library to interface RESTful services using OpenAPI/Swagger description documents, built upon pydantic for data validation/coercion and httpx for transport. Located on github.
No code generation
Suits the code-first pattern for REST services used by major frameworks (FastAPI, Django REST framework) as well as design first APIs.
Features & Limitations
While aiopenapi3 supports some of the more exotic features of the Swagger/OpenAPI specification, e.g.:
- multilingual
- Swagger 2.0
- OpenAPI 3.0
- OpenAPI 3.1
- multi file description documents
- recursive schemas
- additionalProperties mixed with properties
- additionalProperties
- Discriminator/Polymorphism
plugin interface </plugin>
to mangle description documents and messagesapi:Parameter Encoding
advanced:Forms
advanced:mutualTLS
authenticationRequest <advanced:Request Streaming>
andResponse <advanced:Response Streaming>
streaming to reduce memory usage- Culling
extra:Large Description Documents
some aspects of the specifications are implemented loose
- Schema Composition
- oneOf - validation does not care if more than one matches
- anyOf - implemented as oneOf
- allOf - merging Schemas is limited wrt. to merge conflicts
and other aspects of the specification are not implemented at all
- Conditional Subschemas
- dependentRequired
- dependentSchemas
- If-Then-Else
- Implication
- non-unique parameter names in an operations headers/path/query