See also

Need help upgrading to a newer version? Check out the upgrading guide.


6.5.0 (2024-02-26)

Bug fixes:

  • Include null as a value when using validate.OneOf or fields.Enum when allow_none is True for a field (#812). Thanks @pmdarrow for reporting and @kolditz-senec for the PR.

Other changes:

  • Deprecate the __version__ attribute. Use feature detection, or importlib.metadata.version("apispec"), instead (#878).

6.4.0 (2024-01-09)


  • MarshmallowPlugin: Support different datetime formats for marshmallow.fields.DateTime fields (#814). Thanks @TheBigRoomXXL for the suggestion and PR.

  • MarshmallowPlugin: Handle resolving names of schemas with spaces in the name (#856). Thanks @duchuyvp for the PR.

  • Various typing improvements (#873).

Other changes:

  • Support Python 3.12.

  • Drop support for Python 3.7, which is EOL.

  • Remove [validation] from extras, as it is no longer used.

6.3.1 (2023-12-21)

Bug fixes:

  • Fix conversion of deprecated flag on parameters (#850).

Thanks @tsokalski for the PR.

6.3.0 (2023-03-10)


  • Resolve schema references in parameters content (#830). Thanks @codectl for the PR.

6.2.0 (2023-03-06)


  • Resolve references in callbacks (#827). Thanks @codectl for the PR.

6.1.0 (2023-03-03)

Bug fixes:

  • Serialize min/max values in field2range (#825).

Other changes:

  • Test against Python 3.11 (#809).

6.0.2 (2022-11-10)

Bug fixes:

  • Allow passing openapi_version as string in marshmallow OpenAPIConverter (#810). Thanks @paradoxxxzero for the PR.

6.0.1 (2022-11-05)

Bug fixes:

  • Document fields.Enum as list of values, not string (#806). Thanks @tadams42 for reporting.

6.0.0 (2022-10-15)


  • Support fields.Enum (#802).

  • Backwards-incompatible: Change MarshmallowPlugin.map_to_openapi_type from a decorator to a classic function, taking a field as first argument (#804).

  • Backwards-incompatible: Remove validate_spec from public API. Users may call their validator of choice directly (#803).

Other changes:

  • Drop support for marshmallow < 3.18.0 (#802).

6.0.0b1 (2022-10-04)


  • Add OpenAPIConverter.add_parameter_attribute_function to allow documentation of custom list fields such as webargs DelimitedList (#778).

  • Backwards-incompatible: Remove OpenAPIVersion and use packaging.Version instead (#801).

5.2.2 (2022-05-13)

Bug fixes:

  • Fix schema property ordering regression in ApiSpec.to_yaml() (#768). Thanks @vorticity for the PR.

5.2.1 (2022-05-01)

Bug fixes:

  • Fix type hints for APISpec.path and BasePlugin methods (#765).

5.2.0 (2022-04-29)


  • Use raise from whenever possible (#763).


  • Use a tuple rather than a namedtuple for “schema key” (#725).

Other changes:

  • Add type hints (#747). Thanks @kasium for the PR.

  • Test against Python 3.10 (#724).

  • Drop support for Python 3.6 (#727).

  • Switch to Github Actions for CI (#751).

5.1.1 (2021-09-27)

Bug fixes:

  • Fix field ordering in “ordered” schema classes documentation (#714).

Other changes:

  • Don’t build universal wheels. We don’t support Python 2 anymore. (#705)

  • Make the build reproducible (#669).

5.1.0 (2021-08-10)


  • Add lazy option to component registration methods. This allows to add components to the spec only if they are actually referenced. (#702)

  • Add BasePlugin.header_helper and MarshmallowPlugin.header_helper (#703).

Bug fixes:

  • Ensure plugin helpers get component copies. Avoids issues if a plugin helper mutates its inputs. (#704)

5.0.0 (2021-07-29)


  • Rename doc_default to default. Since schema metadata is namespaced in a single metadata parameter, there is no name collision with default parameter anymore (#687).

  • Don’t build schema component reference in OpenAPIConverter.resolve_nested_schema. This is done later in Components (#700).

  • MarshmallowPlugin: resolve schemas in allOf, oneOf, anyOf and not (#701). Thanks @stefanv for the initial work on this.

Other changes:

  • Refactor Components methods to make them consistent. Use component_id rather than name, remove **kwargs when unused. (#696)

5.0.0b1 (2021-07-22)


  • Resolve all component references in paths and components. All references must be passed as strings, not as a {$ref: '...'}} dict (#671).

Other changes:

  • Don’t use deprecated missing marshmallow field attribute but use load_default instead (#692).

  • Refactor references resolution. get_ref method is moved from APISpec to Components (#655). APISpec.clean_parameters and APISpec.clean_parameters are now private methods (#695).

  • Drop support for marshmallow < 3.13.0 (#692).

4.7.1 (2021-07-06)

Bug fixes:

  • Correct spelling of 'null': remove extra quotes (#689). Thanks @mjpieters for the PR.

4.7.0 (2021-06-28)


  • Document deprecated property from field metadata (#686). Thanks @greyli for the PR.

  • Document writeOnly and nullable properties from field metadata (#684). Thanks @greyli for the PR.

4.6.0 (2021-06-14)


  • Support Pluck field (#677). Thanks @mjpieters for the PR.

  • Support TimeDelta field (#678).

4.5.0 (2021-06-04)


  • Support OpenAPI 3.1.0 (#579).

Bug fixes:

  • Fix get_fields to avoid crashing when a field is named fields (#673). Thanks @Reskov for reporting.

Other changes:

  • Don’t pass field metadata as keyword arguments in the tests. This is deprecated since marshmallow 3.10. apispec is still compatible with marshmallow >=3,<3.10 but tests now require marshmallow >=3.10. (#675)

4.4.2 (2021-05-24)

Bug fixes:

  • Respect partial marshmallow schema parameter: don’t document the field as required. (#627). Thanks @Anti-Distinctlyminty for the PR.

4.4.1 (2021-05-07)

Bug fixes:

  • Don’t set additionalProperties if Meta.unknown is EXCLUDE (#659). Thanks @kupuguy for the PR.

4.4.0 (2021-03-31)


  • Populate additionalProperties from Meta.unknown (#635). Thanks @timsilvers for the PR.

  • Allow to_yaml to pass kwargs to yaml.dump (#648).

  • Resolve header references in responses (#650).

  • Resolve example references in parameters, request bodies and responses (#651).

4.3.0 (2021-02-10)


4.2.0 (2021-02-06)


  • Make components public attributes of Components class (#634).

4.1.0 (2021-01-26)


  • Resolve schemas in callbacks (#544). Thanks @kortsi for the PR.

Bug fixes:

  • Fix docstrings documenting kwargs type as dict (#534).

  • Use x-minimum and x-maximum extensions to document ranges that are not of number type (e.g. datetime) (#614).

Other changes:

  • Test against Python 3.9.

4.0.0 (2020-09-30)


  • Backwards-incompatible: Automatically generate references for schemas passed as strings in responses and request bodies. When using MarshmallowPlugin, if a schema is passed as string, the marshmallow registry is looked up for this schema name and if none is found, the name is assumed to be a reference to a manually created schema and a reference is generated. No exception is raised anymore if the schema name can’t be found in the registry. (#554)

4.0.0b1 (2020-09-06)


  • Backwards-incompatible: Ignore location field metadata. This attribute was used in webargs but it has now been dropped. A Schema can now only have a single location. This simplifies the logic in OpenAPIConverter methods, where default_in argument now becomes location. (#526)

  • Backwards-incompatible: Don’t document int format as "int32" and float format as "float", as those are platform-dependent (#595).


  • OpenAPIConverter.field2parameters and OpenAPIConverter.property2parameter are removed. OpenAPIConverter.field2parameter becomes private. (#581)

Other changes:

  • Drop support for marshmallow 2. Marshmallow 3.x is required. (#583)

  • Drop support for Python 3.5. Python 3.6+ is required. (#582)

3.3.2 (2020-08-29)

Bug fixes:

  • Fix crash when field metadata contains non-string keys (#596). Thanks @sanzoghenzo for the fix.

3.3.1 (2020-06-06)

Bug fixes:

  • Fix MarshmallowPlugin crash when resolve_schema_dict is passed a schema as string and schema_name_resolver returns None (#566). Thanks @black3r for reporting and thanks @Bangertm for the PR.

3.3.0 (2020-02-14)


  • Instantiate Components before calling plugins’ init_spec (#539). Thanks @Colin-b for the PR.

3.2.0 (2019-12-22)


  • Add match_info to __location_map__ (#517). Thanks @fedorfo for the PR.

3.1.1 (2019-12-17)

Bug fixes:

  • Don’t emit a warning when passing “default” as response status code in OASv2 (#521).

3.1.0 (2019-11-04)



  • Test against Python 3.8 (#510).

3.0.0 (2019-09-17)


  • Add support for generating user-defined OpenAPI properties for custom field classes via an add_attribute_function method (#478 and #498).

  • [apispec.ext.marshmallow]: Backwards-incompatible fields.Raw and fields.Field are now represented by OpenAPI Any Type (#495).

  • [apispec.ext.marshmallow]: Backwards-incompatible: The schema_name_resolver function now receives a Schema class, a Schema instance or a string that resolves to a Schema class. This allows a custom resolver to generate different names depending on schema modifiers used in a Schema instance (#476).

Bug fixes:

  • [apispec.ext.marshmallow]: With marshmallow 3, the default value of a field in the documentation is the serialized value of the missing attribute, not missing itself (#490).


  • clean_parameters and clean_operations are now APISpec methods (#489).

  • [apispec.ext.marshmallow]: Schema resolver methods are extracted from MarshmallowPlugin into a SchemaResolver class member (#496).

  • [apispec.ext.marshmallow]: OpenAPIConverter is now a class member of MarshmallowPlugin (#493).

  • [apispec.ext.marshmallow]: Field to properties conversion logic is extracted from OpenAPIConverter into FieldConverterMixin (#478).

Other changes:

  • Drop support for Python 2 (#491). Thanks @hugovk for the PR.

  • Drop support for marshmallow pre-releases. Only stable 2.x and 3.x versions are supported (#485).

2.0.2 (2019-07-04)

Bug fixes:

  • Fix compatibility with marshmallow 3.0.0rc8 (#469).

Other changes:

  • Switch to Azure Pipelines (#468).

2.0.1 (2019-06-26)

Bug fixes:

  • Don’t mutate operations and parameters in APISpec.path to avoid issues when calling it twice with the same operations or parameters (#464).

2.0.0 (2019-06-18)


  • Add support for path level parameters (#453). Thanks @karec for the PR.

  • Backwards-incompatible: A apispec.exceptions.DuplicateParameterError is raised when two parameters with same name and location are passed to a path or an operation (#455).

  • Backwards-incompatible: A apispec.exceptions.InvalidParameterError is raised when a parameter is missing required name and in attributes after helpers have been executed (#455).

Other changes:

  • Backwards-incompatible: All plugin helpers must accept extra **kwargs (#453).

  • Backwards-incompatible: Components must be referenced by ID, not full path (#463).

1.3.3 (2019-05-05)

Bug fixes:

  • marshmallow 3.0.0rc6 compatibility (#445).

1.3.2 (2019-05-02)

Bug fixes:

  • Fix handling of OpenAPI v3 components content without schema in MarshmallowPlugin (#443).

1.3.1 (2019-04-29)

Bug fixes:

  • Fix handling of http.HTTPStatus objects (#426). Thanks @DStape.

  • [apispec.ext.marshmallow]: Ensure make_schema_key returns a unique key on unhashable iterables (#416, #439). Thanks @zedrdave.

1.3.0 (2019-04-24)


  • [apispec.ext.marshmallow]: Use class hierarchy to infer type and format properties (#433, #250). Thanks @andrjohn for the PR.

1.2.1 (2019-04-18)

Bug fixes:

  • Fix error in MarshmallowPlugin when passing exclude and dump_only as class Meta attributes mixing list and tuple (#431). Thanks @blagasz for the PR.

1.2.0 (2019-04-08)


  • Strip empty sections (components, tags) from generated documentation (#421 and #425).

1.1.2 (2019-04-07)

Bug fixes:

  • Fix behavior when using “2xx”, 3xx”, etc. for response keys (#422). Thanks @zachmullen for reporting.

1.1.1 (2019-04-02)

Bug fixes:

  • Fix passing references for parameters/responses when using MarshmallowPlugin (#414).

1.1.0 (2019-03-17)


  • Resolve Schema classes in response headers (#409).

1.0.0 (2019-02-08)


  • Expanded support for OpenAPI Specification version 3 (#165).

  • Add summary and description parameters to APISpec.path (#227). Thanks @timakro for the suggestion.

  • Add apispec.core.Components.security_scheme for adding Security Scheme Objects (#245).

  • [apispec.ext.marshmallow]: Add support for outputting field patterns from Regexp validators (#364). Thanks @DStape for the PR.

Bug fixes:

  • [apispec.ext.marshmallow]: Fix automatic documentation of schemas when using Nested(MySchema, many==True) (#383). Thanks @whoiswes for reporting.

Other changes:

  • Backwards-incompatible: Components properties are now passed as dictionaries rather than keyword arguments (#381).

# <1.0.0
spec.components.schema("Pet", properties={"name": {"type": "string"}})
spec.components.parameter("PetId", "path", format="int64", type="integer")
spec.components.response("NotFound", description="Pet not found")

# >=1.0.0
spec.components.schema("Pet", {"properties": {"name": {"type": "string"}}})
spec.components.parameter("PetId", "path", {"format": "int64", "type": "integer"})
spec.components.response("NotFound", {"description": "Pet not found"})


  • Backwards-incompatible: The ref argument passed to fields is no longer used (#354). References for nested Schema are stored automatically.

  • Backwards-incompatible: The extra_fields argument of apispec.core.Components.schema is removed. All properties may be passed in the component argument.

# <1.0.0
spec.definition("Pet", schema=PetSchema, extra_fields={"discriminator": "name"})

# >=1.0.0
spec.components.schema("Pet", schema=PetSchema, component={"discriminator": "name"})

1.0.0rc1 (2018-01-29)


  • Automatically generate references to nested schemas with a computed name, e.g. fields.Nested(PetSchema()) -> #components/schemas/Pet.

  • Automatically generate references for requestBody using the above mechanism.

  • Ability to opt out of the above behavior by passing a schema_name_resolver function that returns None to api.ext.MarshmallowPlugin.

  • References now respect Schema modifiers, including exclude and partial.

  • Backwards-incompatible: A apispec.exceptions.DuplicateComponentNameError is raised when registering two components with the same name (#340).

1.0.0b6 (2018-12-16)


  • Backwards-incompatible: basePath is not removed from paths anymore. Paths passed to APISpec.path should not contain the application base path (#345).

  • Add apispec.ext.marshmallow.openapi.OpenAPIConverter.resolve_schema_class (#346). Thanks @buxx.

1.0.0b5 (2018-11-06)


  • apispec.core.Components is added. Each APISpec instance has a Components object used to define components such as schemas, parameters or responses. “Components” is the OpenAPI v3 terminology for those reusable top-level objects.

  • apispec.core.Components.parameter and apispec.core.Components.response are added.

  • Backwards-incompatible: apispec.APISpec.add_path and apispec.APISpec.add_tag are renamed to apispec.APISpec.path and apispec.APISpec.tag.

  • Backwards-incompatible: apispec.APISpec.definition is moved to the Components class and renamed to apispec.core.Components.schema.

# apispec<1.0.0b5
spec.add_tag({'name': 'Pet', 'description': 'Operations on pets'})
spec.add_path('/pets/', operations=...)
spec.definition('Pet', properties=...)

# apispec>=1.0.0b5
spec.tag({'name': 'Pet', 'description': 'Operations on pets'})
spec.path('/pets/', operations=...)
spec.components.schema('Pet', properties=...)
  • Plugins can define parameter_helper and response_helper to modify parameter and response components definitions.

  • MarshmallowPlugin resolves schemas in parameters and responses components.

  • Components helpers may return None as a no-op rather than an empty dict (#336).

Bug fixes:

  • MarshmallowPlugin.schema_helper does not crash when no schema is passed (#336).


  • The legacy response_helper feature is removed. The same can be achieved from operation_helper.

1.0.0b4 (2018-10-28)

  • Backwards-incompatible: apispec.ext.flask, apispec.ext.bottle, and apispec.ext.tornado are moved to a separate package, apispec-webframeworks. (#302).

If you use these plugins, install apispec-webframeworks and update your imports like so:

# apispec<1.0.0b4
from apispec.ext.flask import FlaskPlugin

# apispec>=1.0.0b4
from apispec_webframeworks.flask import FlaskPlugin

Thanks @ergo for the suggestion and the PR.

1.0.0b3 (2018-10-08)


  • [apispec.core]: Backwards-incompatible: openapi_version parameter of APISpec class does not default to '2.0' anymore and info parameter is merged with **options kwargs.

Bug fixes:

  • [apispec.ext.marshmallow]: Exclude load_only fields when documenting responses (#119). Thanks @luisincrespo for reporting.

  • [apispec.ext.marshmallow]: Exclude dump_only fields when documenting request body parameter schema.

1.0.0b2 (2018-09-09)

  • Drop deprecated plugin interface. Only plugin classes are now supported. This includes the removal of APISpec’s register_*_helper methods, as well as its schema_name_resolver parameter. Also drop deprecated apispec.utils.validate_swagger. (#259)

  • Use yaml.safe_load instead of yaml.load when reading docstrings (#278). Thanks @lbeaufort for the suggestion and the PR.

1.0.0b1 (2018-07-29)


  • [apispec.core]: Backwards-incompatible: Remove Path class. Plugins’ path_helper methods should now return a path as a string and optionally mutate the operations dictionary (#238).

  • [apispec.core]: Backwards-incompatible: YAML support is optional. To install with YAML support, use pip install 'apispec[yaml]'. You will need to do this if you use FlaskPlugin, BottlePlugin, or TornadoPlugin (#251).

  • [apispec.ext.marshmallow]: Allow overriding the documentation for a field’s default. This is especially useful for documenting callable defaults (#196).

0.39.0 (2018-06-28)


  • [apispec.core]: Backwards-incompatible: Change plugin interface. Plugins are now child classes of apispec.BasePlugin. Built-in plugins are still usable with the deprecated legacy interface. However, the new class interface is mandatory to pass parameters to plugins or to access specific methods that used to be accessed as module level functions (typically in apispec.ext.marshmallow.swagger). Also, schema_name_resolver is now a parameter of apispec.ext.marshmallow.MarshmallowPlugin. It can still be passed to APISpec while using the legacy interface. (#207)

  • [apispec.core]: Backwards-incompatible: APISpec.openapi_version is now an apispec.utils.OpenAPIVersion instance.

0.38.0 (2018-06-10)


  • [apispec.core]: Backwards-incompatible: Rename apispec.utils.validate_swagger to apispec.utils.validate_spec and apispec.exceptions.SwaggerError to apispec.exceptions.OpenAPIError. Using validate_swagger will raise a DeprecationWarning (#224).

  • [apispec.core]: apispec.utils.validate_spec no longer relies on the check_api NPM module. prance and openapi-spec-validator are required for validation, and can be installed using pip install 'apispec[validation]' (#224).

  • [apispec.core]: Deep update components instead of overwriting components for OpenAPI 3 (#222). Thanks @Guoli-Lyu.

Bug fixes:

  • [apispec.ext.marshmallow]: Fix description for parameters in OpenAPI 3 (#223). Thanks again @Guoli-Lyu.

Other changes:

  • Drop official support for Python 3.4. Only Python 2.7 and >=3.5 are supported.

0.37.1 (2018-05-28)


  • [apispec.ext.marshmallow]: Fix OpenAPI 3 conversion of schemas in parameters (#217). Thanks @Guoli-Lyu for the PR.

0.37.0 (2018-05-14)


  • [apispec.ext.marshmallow]: Resolve an array of schema objects in parameters (#209). Thanks @cvlong for reporting and implementing this.

0.36.0 (2018-05-07)


  • [apispec.ext.marshmallow]: Document values parameter of Dict field as additionalProperties (#201). Thanks @UrKr.

0.35.0 (2018-04-10)


  • [apispec.ext.marshmallow]: Recurse over properties when resolving schemas (#186). Thanks @lphuberdeau.

  • [apispec.ext.marshmallow]: Support writeOnly and nullable in OpenAPI 3 (fall back to x-nullable for OpenAPI 2) (#165). Thanks @lafrech.

Bug fixes:

  • [apispec.ext.marshmallow]: Always use field.missing instead of field.default when introspecting fields (#32). Thanks @lafrech.

Other changes:

  • [apispec.ext.marshmallow]: Refactor some of the internal functions in apispec.ext.marshmallow.swagger for consistent API (#199). Thanks @lafrech.

0.34.0 (2018-04-04)


  • [apispec.core]: Maintain order in which methods are added to an endpoint (#189). Thanks @lafrech.

Other changes:

0.33.0 (2018-04-01)


  • [apispec.ext.marshmallow]: Respect data_key argument on fields (in marshmallow 3). Thanks @lafrech.

0.32.0 (2018-03-24)


  • [apispec.ext.bottle]: Allow app to be passed to spec.add_path (#188). Thanks @dtaniwaki for the PR.

Bug fixes:

  • [apispec.ext.marshmallow]: Fix issue where “body” and “required” were getting overwritten when passing a Schema to a parameter (#168, #184). Thanks @dlopuch and @mathewmarcus for reporting and thanks @mathewmarcus for the PR.

0.31.0 (2018-01-30)

  • [apispec.ext.marshmallow]: Use dump_to for name even if load_from does not match it (#178). Thanks @LeonAgmonNacht for reporting and thanks @lafrech for the fix.

0.30.0 (2018-01-12)


  • [apispec.core]: Add Spec.to_yaml method for serializing to YAML (#161). Thanks @jd.

0.29.0 (2018-01-04)


  • [apispec.core and apispec.ext.marshmallow]: Add limited support for OpenAPI v3. Pass openapi_version='3.0.0' to Spec to use it (#165). Thanks @Bangertm.

0.28.0 (2017-12-09)


  • [apispec.core and apispec.ext.marshmallow]: Add schema_name_resolver param to APISpec for resolving ref names for marshmallow Schemas. This is useful when a self-referencing schema is nested within another schema (#167). Thanks @buxx for the PR.

0.27.1 (2017-12-06)

Bug fixes:

  • [apispec.ext.flask]: Don’t document view methods that aren’t included in app.add_url_rule(..., methods=[...])) (#173). Thanks @ukaratay.

0.27.0 (2017-10-30)


  • [apispec.core]: Add register_operation_helper.

Bug fixes:

  • Order of plugins does not matter (#136).

Thanks @yoichi for these changes.

0.26.0 (2017-10-23)


  • [apispec.ext.marshmallow]: Generate “enum” property with single entry when the validate.Equal validator is used (#155). Thanks @Bangertm for the suggestion and PR.

Bug fixes:

  • Allow OPTIONS to be documented (#162). Thanks @buxx for the PR.

  • Fix regression from 0.25.3 that caused a KeyError (#163). Thanks @yoichi.

0.25.4 (2017-10-09)

Bug fixes:

  • [apispec.ext.marshmallow]: Fix swagger location mapping for default_in param in fields2parameters (#156). Thanks @decaz.

0.25.3 (2017-09-27)

Bug fixes:

  • [apispec.ext.marshmallow]: Correctly handle multiple fields with location=json (#75). Thanks @shaicantor for reporting and thanks @yoichi for the patch.

0.25.2 (2017-09-05)

Bug fixes:

  • [apispec.ext.marshmallow]: Avoid AttributeError when passing non-dict items to path objects (#151). Thanks @yoichi.

0.25.1 (2017-08-23)

Bug fixes:

  • [apispec.ext.marshmallow]: Fix use_instances when many=True is set (#148). Thanks @theirix.

0.25.0 (2017-08-15)


  • [apispec.ext.marshmallow]: Add use_instances parameter to fields2paramters (#144). Thanks @theirix.

Other changes:

  • Don’t swallow YAMLError when YAML parsing fails (#135). Thanks @djanderson for the suggestion and the PR.

0.24.0 (2017-08-15)


  • [apispec.ext.marshmallow]: Add swagger.map_to_swagger_field decorator to support custom field classes (#120). Thanks @frol for the suggestion and thanks @dradetsky for the PR.

0.23.1 (2017-08-08)

Bug fixes:

  • [apispec.ext.marshmallow]: Fix swagger location mapping for default_in param in property2parameter (#142). Thanks @decaz.

0.23.0 (2017-08-03)

  • Pass operations constructed by plugins to downstream marshmallow plugin (#138). Thanks @yoichi.

  • [apispec.ext.marshmallow] Generate parameter specification from marshmallow Schemas (#127). Thanks @ewalker11 for the suggestion thanks @yoichi for the PR.

  • [apispec.ext.flask] Add support for Flask MethodViews (#85, #125). Thanks @lafrech and @boosh for the suggestion. Thanks @djanderson and @yoichi for the PRs.

0.22.3 (2017-07-16)

  • Release wheel distribution.

0.22.2 (2017-07-12)

Bug fixes:

  • [apispec.ext.marshmallow]: Properly handle callable default values in output spec (#131). Thanks @NightBlues.

0.22.1 (2017-06-25)

Bug fixes:

  • [apispec.ext.marshmallow]: Include default in output spec when False is the default for a Boolean field (#130). Thanks @nebularazer.

0.22.0 (2017-05-30)


  • [apispec.ext.bottle] Added bottle plugin (#128). Thanks @lucasrc.

0.21.0 (2017-04-21)


  • [apispec.ext.marshmallow] Sort list of required field names in generated spec (#124). Thanks @dradetsky.

0.20.1 (2017-04-18)

Bug fixes:

  • [apispec.ext.tornado]: Fix compatibility with Tornado>=4.5.

  • [apispec.ext.tornado]: Fix adding paths for handlers with coroutine methods in Python 2 (#99).

0.20.0 (2017-03-19)


  • [apispec.core]: Definition helper functions receive the definition keyword argument, which is the current state of the definition (#122). Thanks @martinlatrille for the PR.

Other changes:

  • [apispec.ext.marshmallow] Backwards-incompatible: Remove dump parameter from schema2parameters, fields2parameters, and field2parameter (#114). Thanks @lafrech and @frol for the feedback and @lafrech for the PR.

0.19.0 (2017-03-05)


  • [apispec.core]: Add extra_fields parameter to APISpec.definition (#110). Thanks @lafrech for the PR.

  • [apispec.ext.marshmallow]: Preserve the order of choices (#113). Thanks @frol for the PR.

Bug fixes:

  • [apispec.ext.marshmallow]: ‘discriminator’ is no longer valid as field metadata. It should be defined by passing extra_fields={'discriminator': '...'} to APISpec.definition. Thanks for reporting, @lafrech.

  • [apispec.ext.marshmallow]: Allow additional properties when translating Nested fields using allOf (#108). Thanks @lafrech for the suggestion and the PR.

  • [apispec.ext.marshmallow]: Respect dump_only and load_only specified in class Meta (#84). Thanks @lafrech for the fix.

Other changes:

  • Drop support for Python 3.3.

0.18.0 (2017-02-19)


  • [apispec.ext.marshmallow]: Translate allow_none on Fields to x-nullable (#66). Thanks @lafrech.

0.17.4 (2017-02-16)

Bug fixes:

  • [apispec.ext.marshmallow]: Fix corruption of Schema._declared_fields when serializing an APISpec (#107). Thanks @serebrov for the catch and patch.

0.17.3 (2017-01-21)

Bug fixes:

  • [apispec.ext.marshmallow]: Fix behavior when passing Schema instances to APISpec.definition. The Schema's class will correctly be registered as a an available ref (#84). Thanks @lafrech for reporting and for the PR.

0.17.2 (2017-01-03)

Bug fixes:

  • [apispec.ext.tornado]: Remove usage of inspect.getargspec for Python >= 3.3 (#102). Thanks @matijabesednik.

0.17.1 (2016-11-19)

Bug fixes:

  • [apispec.ext.marshmallow]: Prevent unnecessary warning when generating specs for marshmallow Schema’s with autogenerated fields (#95). Thanks @khorolets reporting and for the PR.

  • [apispec.ext.marshmallow]: Correctly translate Length validator to minItems and maxItems for array-type fields (Nested and List) (#97). Thanks @YuriHeupa for reporting and for the PR.

0.17.0 (2016-10-30)


  • [apispec.ext.marshmallow]: Add support for properties that start with x-. Thanks @martinlatrille for the PR.

0.16.0 (2016-10-12)


  • [apispec.core]: Allow description to be passed to APISpec.definition (#93). Thanks @martinlatrille.

0.15.0 (2016-10-02)


  • [apispec.ext.marshmallow]: Allow 'query' to be passed as a field location (#89). Thanks @lafrech.

Bug fixes:

  • [apispec.ext.flask]: Properly strip off basePath when APPLICATION_ROOT is set on a Flask app’s config (#78). Thanks @deckar01 for reporting and @asteinlein for the PR.

0.14.0 (2016-08-14)


  • [apispec.core]: Maintain order in which paths are added to a spec (#87). Thanks @ranjanashish for the PR.

  • [apispec.ext.marshmallow]: Maintain order of fields when ordered=True on Schema. Thanks again @ranjanashish.

0.13.0 (2016-07-03)


  • [apispec.ext.marshmallow]: Add support for Dict field (#80). Thanks @ericb for the PR.

  • [apispec.ext.marshmallow]: dump_only fields add readOnly flag in OpenAPI spec (#79). Thanks @itajaja for the suggestion and PR.

Bug fixes:

  • [apispec.ext.marshmallow]: Properly exclude nested dump-only fields from parameters (#82). Thanks @incognick for the catch and patch.


  • Update for compatibility with invoke>=0.13.0.

0.12.0 (2016-05-22)


  • [apispec.ext.marshmallow]: Inspect validators to set additional attributes (#66). Thanks @deckar01 for the PR.

Bug fixes:

  • [apispec.ext.marshmallow]: Respect partial parameters on Schemas (#74). Thanks @incognick for reporting.

0.11.1 (2016-05-02)

Bug fixes:

  • [apispec.ext.flask]: Flask plugin respects APPLICATION_ROOT from app’s config (#69). Thanks @deckar01 for the catch and patch.

  • [apispec.ext.marshmallow]: Fix support for plural schema instances (#71). Thanks again @deckar01.

0.11.0 (2016-04-12)


  • Support vendor extensions on paths (#65). Thanks @lucascosta for the PR.

  • Backwards-incompatible: Remove support for old versions (<=0.15.0) of webargs.

Bug fixes:

  • Fix error message when plugin does not have a setup() function.

  • [apispec.ext.marshmallow] Fix bug in introspecting self-referencing marshmallow fields, i.e. fields.Nested('self') (#55). Thanks @whoiswes for reporting.

  • [apispec.ext.marshmallow] field2property no longer pops off location from a field’s metadata (#67).


  • Lots of new docs, including a User Guide and improved extension docs.

0.10.1 (2016-04-09)

Note: This version is a re-upload of 0.10.0. There is no 0.10.0 release on PyPI.


  • Add Tornado extension (#62).

Bug fixes:

  • Compatibility fix with marshmallow>=2.7.0 (#64).

  • Fix bug that raised error for Swagger parameters that didn’t include the in key (#63).

Big thanks @lucascosta for all these changes.

0.9.1 (2016-03-17)

Bug fixes:

0.9.0 (2016-03-13)


  • Add APISpec.add_tags method for adding Swagger tags. Thanks @martinlatrille.

Bug fixes:

  • Fix bug in marshmallow extension where metadata was being lost when converting marshmallow Schemas when many=False. Thanks again @martinlatrille.

Other changes:

  • Remove duplicate SWAGGER_VERSION from api.ext.marshmallow.swagger.


  • Update docs to reflect rename of Swagger to OpenAPI.

0.8.0 (2016-03-06)


  • apispec.ext.marshmallow.swagger.schema2jsonschema properly introspects Schema instances when many=True (#53). Thanks @frol for the PR.

Bug fixes:

  • Fix error reporting when an invalid object is passed to schema2jsonschema or schema2parameters (#52). Thanks again @frol.

0.7.0 (2016-02-11)


  • APISpec.add_path accepts Path objects (#49). Thanks @Trii for the suggestion and the implementation.

Bug fixes:

  • Use correct field name in “required” array when load_from and dump_to are used (#48). Thanks @benbeadle for the catch and patch.

0.6.0 (2016-01-04)


  • Add APISpec#add_parameter for adding common Swagger parameter objects. Thanks @jta.

  • The field name in a spec will be adjusted if a Field's load_from and dump_to attributes are the same. #43. Thanks again @jta.

Bug fixes:

  • Fix bug that caused a stack overflow when adding nested Schemas to an APISpec (#31, #41). Thanks @alapshin and @itajaja for reporting. Thanks @itajaja for the patch.

0.5.0 (2015-12-13)

  • schema2jsonschema and schema2parameters can introspect a marshmallow Schema instance as well as a Schema class (#37). Thanks @frol.

  • Backwards-incompatible: The first argument to schema2jsonschema and schema2parameters was changed from schema_cls to schema.

Bug fixes:

  • Handle conflicting signatures for plugin helpers. Thanks @AndrewPashkin for the catch and patch.

0.4.2 (2015-11-23)

  • Skip dump-only fields when dump=False is passed to schema2parameters and fields2parameters. Thanks @frol.

Bug fixes:

  • Raise SwaggerError when validate_swagger fails. Thanks @frol.

0.4.1 (2015-10-19)

  • Correctly pass dump parameter to field2parameters.

0.4.0 (2015-10-18)

  • Add dump parameter to field2property (#32).

0.3.0 (2015-10-02)

  • Rename and repackage as “apispec”.

  • Support enum field of JSON Schema based on OneOf and ContainsOnly validators.

0.2.0 (2015-09-27)

  • Add schema2parameters, fields2parameters, and field2parameters.

  • Removed Fixed from swagger.FIELD_MAPPING for compatibility with marshmallow>=2.0.0.

0.1.0 (2015-09-13)

  • First release.