additionalProperties
has been deprecated and will be removed in a future version ofgrape-swagger
. It has been replaced withadditional_properties
.
- Official support for ruby < 2.5 removed, ruby 2.5 only in testing mode, but no support.
- The model (entity) description no longer comes from the route description. It will have a default value:
<<EntityName>> model
.
- The entity_name class method is now called on parent classes for inherited entities. Now you can do this
module Some::Long::Module
class Base < Grape::Entity
# ... other shared logic
def self.entity_name
"V2::#{self.to_s.demodulize}"
end
end
def MyEntity < Base
# ....
end
def OtherEntity < Base
# revert back to the default behavior by hiding the method
private_class_method :entity_name
end
end
- Full class name is modified to use
_
separator (e.g.A_B_C
instead ofA::B::C
).
Full class name is used for referencing entity by default (e.g. A::B::C
instead of just C
). Entity
and Entities
suffixes and prefixes are omitted (e.g. if entity name is Entities::SomeScope::MyFavourite::Entity
only SomeScope::MyFavourite
will be used).
The format can now be specified, to achieve it for definition properties one have to use grape-swagger-entity >= 0.1.6.
Usage of option markdown
won't no longer be supported,
cause OAPI accepts GFM and plain text.
(see: description of Info
)
Avoids ambiguous documentation of array parameters, by enforcing correct usage of both possibilities:
- Array of primitive types
params do
requires :foo, type: Array[String]
end
- Array of objects
params do
requires :put_params, type: Array do
requires :op, type: String
requires :path, type: String
requires :value, type: String
end
end
The global tag set now only includes tags for documented routes. This behaviour has impact in particular for calling the documtation of a specific route.
With grape >= 0.21.0, grape-entity
support moved to separate gem grape-swagger-entity
, if you use grape entity, update your Gemfile:
gem 'grape-swagger'
gem 'grape-swagger-entity'
add_swagger_documentation
has changed from
add_swagger_documentation \
api_version: '0.0.1'
to
add_swagger_documentation \
doc_version: '0.0.1'
The API version self, would be set by grape, see -> spec for #403.
With grape >= 0.12.0, support for notes
is replaced by passing a block detail
option specified. For future compatibility, update your code:
desc 'Get all kittens!', notes: 'this will expose all the kittens'
to
desc 'Get all kittens!' do
detail 'this will expose all the kittens'
end
Be aware of ruby-grape/grape#920, currently grape accepts either an option hash OR a block for desc
.
If you're using grape-swagger-rails, remove the .json
extension from GrapeSwaggerRails.options.url
.
For example, change
GrapeSwaggerRails.options.url = '/api/v1/swagger_doc.json'
to
GrapeSwaggerRails.options.url = '/api/v1/swagger_doc'
See #187 for more information.
If your API uses Grape 0.10.0 or newer with a single format :json
directive, add hide_format: true
to add_swagger_documentation
. Otherwise nested routes will render with .json
links to your API documentation, which will fail with a 404 Not Found.
The following options have been added, removed or have been changed in the grape-swagger interface:
markdown: true/false
=>markdown: GrapeSwagger::Markdown::KramdownAdapter
You can now configure a markdown adapter. This was originally changed because of performance issues with Kramdown and the markdown
option no longer takes a boolean argument. Built-in adapters include Kramdown and Redcarpet.
To configure the markdown with Kramdown, add the kramdown gem to your Gemfile:
gem 'kramdown'
Configure grape-swagger as follows:
add_swagger_documentation (
markdown: GrapeSwagger::Markdown::KramdownAdapter
)
To configure markdown with Redcarpet, add the redcarpet and the rouge gem to your Gemfile. Note that Redcarpet does not work with JRuby.
gem 'redcarpet'
gem 'rouge'
Configure grape-swagger as follows:
add_swagger_documentation (
markdown: GrapeSwagger::Markdown::RedcarpetAdapter
)
See #142 and documentation section Markdown in Notes for more information.