rails gem rswag custom parameter

2.9k Views Asked by At

How do I add a custom parameter in my rswag-specification?

Rswag seems to consumate only parameters which exists as fields

but I need to add a custom parameter. So whatever I do - I can see in controllers params only fields of my model.

RSpec.describe Api::V1::LogsController, type: :request do
  path '/api/v1/logs' do
    post 'Create a Log' do
      tags 'Logs'
      security [ApiKeyAuth: {}]
      consumes 'application/json'
      produces 'application/json'
      parameter name: :log, in: :body, schema: {
        type: :object,
        properties: {
          title: { type: :string },
          description: { type: :string },
          my_custom_parameter: { type: :string }
        },
        required: %w(title description user_phone_number),
      }
      response '200', 'New Log created' do
        let(:Authorization) { "Token token=#{company.api_key}" }
        run_test!
      end
    end
  end
end
1

There are 1 best solutions below

0
On

you can add any parameters with any name that you liked, and then you can give values to those parameters in the response block like below:

parameter name: :params, in: :body, schema: {
        type: :object,
        properties: {
          profile_attributes: {
            type: :object,
            properties: {
              email: { type: :string, example: Faker::Internet.email(Faker::Name.first_name) }
            },
            required: %w[email]
          }

response('201', 'successfully') do
   let(:params) do
          {
            profile_attributes: { email: Faker::Internet.email(Faker::Name.first_name) }
          }
end