swagger-ui
swagger-ui copied to clipboard
Rendering nested object in multipart/form-data request "try it out" shows JSON vs form UI fields
Q&A (please complete the following information)
- OS: macOS
- Browser: chrome
- Version: 95.0.4638.69
- Method of installation: non, using online version https://editor.swagger.io/
- Swagger-UI version: [e.g. 3.10.0]
- Swagger/OpenAPI version: OpenAPI 3.0.3
Example Swagger/OpenAPI definition:
openapi: 3.0.3
info:
title: 'My API'
version: 3.0.0
servers: []
paths:
/api_app:
post:
operationId: apiAppCreate
requestBody:
content:
multipart/form-data:
schema:
$ref: '#/components/schemas/ApiAppCreateRequest'
responses:
'200':
description: 'success'
content:
application/json:
schema: {}
components:
schemas:
ApiAppCreateRequest:
properties:
oauth:
type: object
properties:
callback_url:
type: string
example: 'https://example.com/oauth'
scopes:
type: array
items:
type: string
example:
- basic_account_info
- request_signature
type: object
Describe the bug you're encountering
When a component schema is defined that has another object nested inside of it, the UI shows JSON instead of form fields in the "try it out" page.
To reproduce...
Steps to reproduce the behavior:
- Go to https://editor.swagger.io/
- Paste the above example
- Click on POST /api_app
- Click "Try it out"
- See JSON:

Expected behavior
I believe nested objects should be represented with UI fields like any other root-level field. For example, if I move callback_url and scopes into the top-level of ApiAppCreateRequest:
openapi: 3.0.3
info:
title: 'My API'
version: 3.0.0
servers: []
paths:
/api_app:
post:
operationId: apiAppCreate
requestBody:
content:
multipart/form-data:
schema:
$ref: '#/components/schemas/ApiAppCreateRequest'
responses:
'200':
description: 'success'
content:
application/json:
schema: {}
components:
schemas:
ApiAppCreateRequest:
properties:
callback_url:
type: string
example: 'https://example.com/oauth'
scopes:
type: array
items:
type: string
example:
- basic_account_info
- request_signature
type: object
this is what I now see:

The problem is more obvious when you mix root-level properties with nested objects:

I confirm the problem.
I Have the same problem
any solution on this one? I am facing same issue
I am also facing this issue as well.
are there any workarounds for this? i need array of DTOs which has bool flag and file itself.
Same for me...
I faced the same problem.
Nested structures are not defined correctly.
has anyone figured out a good workaround for this? it would help to cleanup a lot of endpoints for us when uploading multiple files with data for the images like title, tag,...
I have the same issue. Flattening complex structures for display in multipart (to avoid this limitation) is confusing to users trying to understand them and it breaks symmetry with the json nested schemas.