diff --git a/openapi_codec/encode.py b/openapi_codec/encode.py index a95aaed..b2a6339 100644 --- a/openapi_codec/encode.py +++ b/openapi_codec/encode.py @@ -1,6 +1,8 @@ from collections import OrderedDict + from coreapi.compat import urlparse -from openapi_codec.utils import get_method, get_encoding, get_location, get_links_from_document +from openapi_codec.utils import (get_encoding, get_links_from_document, + get_location, get_method) def generate_swagger_object(document): @@ -108,7 +110,8 @@ def _get_parameters(link, encoding): for field in link.fields: location = get_location(link, field) if location == 'form': - if encoding in ('multipart/form-data', 'application/x-www-form-urlencoded'): + if encoding in ('multipart/form-data', + 'application/x-www-form-urlencoded'): # 'formData' in swagger MUST be one of these media types. parameter = { 'name': field.name, @@ -121,9 +124,7 @@ def _get_parameters(link, encoding): else: # Expand coreapi fields with location='form' into a single swagger # parameter, with a schema containing multiple properties. - schema_property = { - 'description': field.description - } + schema_property = {'description': field.description} properties[field.name] = schema_property if field.required: required.append(field.name) @@ -152,15 +153,19 @@ def _get_parameters(link, encoding): parameters.append(parameter) if properties: - parameters.append({ + parameters_dict = { 'name': 'data', 'in': 'body', 'schema': { 'type': 'object', 'properties': properties, - 'required': required } - }) + } + # Add required fields to the schema just if there are required + # params see https://github.com/core-api/python-openapi-codec/issues/16 + if required: + parameters_dict['schema']['required'] = required + parameters.append(parameters_dict) return parameters
Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.
Alternative Proxies: