Forum Discussion

Wicia's avatar
Wicia
New Contributor
5 years ago

Add Upload button for OpenAPI 2.0 file as Octet-Stream

Context

  • I am using OpenAPI ver 2.0
  • I have API which consumes application/octet-stream (Java InputStream)

Issue

In OpenAPI ver 2.0 I can only set input type as multipart/form-data (link) to have upload button. When I have applied this solution for my swagger:
<code>
"consumes": [ "multipart/form-data" ],
"produces": [ "application/json" ],
"parameters": [ {
"in": "formData",
"name": "messageFile",
"description": "Description...",
"required": true,
"type": "file"
} ]

</code>

 

I am getting following error: Unsupported Media Type after sending a file - it is normal due to my API wants octet-stream.

 

Question

Is it possible to have upload button using OpenAPI ver 2.0 and application/octet-stream like:

 

If no, then what will be better solution / workaround for this? 

  • Not out of the box. You can try forking Swagger UI and implementing this non-standard functionality yourself. But the proper solution is to use OpenAPI 3.0. If you write the API definition manually (rather than generate it from code), there are OpenAPI 2.0-to-3.0 converters to help you with the migration.

  • HKosova's avatar
    HKosova
    SmartBear Alumni (Retired)

    OpenAPI 2.0 does not support application/octet-stream in the request body, it only supports file upload via multipart/form-data.

     

    To define application/octet-stream request bodies you need OpenAPI 3.0:

     

    openapi: 3.0.0
    ...
    paths:
      /something:
        post:
          requestBody:
            required: true
            content:
              application/octet-stream:
                schema:
                  type: string
                  format: binary

     

    See also: File upload in OpenAPI 3.0

    • Wicia's avatar
      Wicia
      New Contributor

      And there is no solution which could cause that we will be able to upload files as octet-stream using OpenAPI 2.0 and some component to attach file🙂

      • HKosova's avatar
        HKosova
        SmartBear Alumni (Retired)

        Not out of the box. You can try forking Swagger UI and implementing this non-standard functionality yourself. But the proper solution is to use OpenAPI 3.0. If you write the API definition manually (rather than generate it from code), there are OpenAPI 2.0-to-3.0 converters to help you with the migration.