This is my request spec:
post 'Create a log' do
tags 'Logs'
consumes 'multipart/form-data'
produces 'application/json'
parameter name: :reference, in: :formData, type: :string, required: true, description: 'Reference'
parameter name: :platform, in: :formData, type: :string, required: true
parameter name: :phone_version, in: :formData, type: :string, required: true
parameter name: :app_version, in: :formData, type: :string, required: true
parameter name: :username, in: :formData, type: :string
parameter name: :environment, in: :formData, type: :string
parameter name: :meta_data, in: :formData, type: :string
parameter name: :file, in: :formData, type: :file, required: true, description: 'File'
parameter name: 'X-APP-TOKEN', in: :header, type: :string, required: true, description: 'App token'
This is the generated yaml
requestBody:
content:
multipart/form-data:
schema:
type: string
And i'm looking for something like this:
requestBody:
content:
multipart/form-data:
schema:
type: object
properties:
file:
type: string
format: binary
description: Required
reference:
type: string
required: true
description: Required
....
pls try this:
consumes 'application/x-www-form-urlencoded'
produces 'application/json'
parameter in: :body, schema: {
type: :object,
properties: {
reference: { type: :string, description: 'reference' },
platform: { type: :string, example: 'ios', description: 'platform' }
},
required: [ 'reference', 'platform' ]
}
via: https://swagger.io/docs/specification/describing-request-body/
Hope this can help you.
Thanks for the hint @xgrei
solved it this way
parameter name: :user_data, in: :body, schema: {
type: :object,
properties: {
user_data: { type: :hash, description: 'user_data' }
},
required: [ 'user_data' ]
}
let(:user_data) { { user_data: { sub_content: { key1: '123', key2: '456' } } } }
Solved by using Body and not form_data
Most helpful comment
Thanks for the hint @xgrei
solved it this way