Swagger docs
This commit is contained in:
parent
a643f34621
commit
c3410c104b
10 changed files with 280 additions and 1 deletions
3
Gemfile
3
Gemfile
|
@ -77,6 +77,9 @@ gem "smart_listing"
|
|||
gem 'css_splitter'
|
||||
gem 'bootstrap-wysihtml5-rails', '~> 0.3.3.8'
|
||||
|
||||
gem 'swagger-docs'
|
||||
gem 'grape-swagger-rails'
|
||||
|
||||
group :test do
|
||||
gem 'capybara'
|
||||
gem 'factory_girl'
|
||||
|
|
44
Gemfile.lock
44
Gemfile.lock
|
@ -55,6 +55,10 @@ GEM
|
|||
autoprefixer-rails (5.2.1)
|
||||
execjs
|
||||
json
|
||||
axiom-types (0.1.1)
|
||||
descendants_tracker (~> 0.0.4)
|
||||
ice_nine (~> 0.11.0)
|
||||
thread_safe (~> 0.3, >= 0.3.1)
|
||||
bcrypt (3.1.10)
|
||||
bindata (2.1.0)
|
||||
binding_of_caller (0.7.2)
|
||||
|
@ -85,6 +89,8 @@ GEM
|
|||
ffi (~> 1.0, >= 1.0.11)
|
||||
cliver (0.3.2)
|
||||
coderay (1.1.0)
|
||||
coercible (1.0.0)
|
||||
descendants_tracker (~> 0.0.1)
|
||||
coffee-rails (4.1.0)
|
||||
coffee-script (>= 2.2.0)
|
||||
railties (>= 4.0.0, < 5.0)
|
||||
|
@ -99,6 +105,8 @@ GEM
|
|||
sprockets (>= 2.0.0)
|
||||
database_cleaner (1.4.1)
|
||||
debug_inspector (0.0.2)
|
||||
descendants_tracker (0.0.4)
|
||||
thread_safe (~> 0.3, >= 0.3.1)
|
||||
devise (3.4.1)
|
||||
bcrypt (~> 3.0)
|
||||
orm_adapter (~> 0.1)
|
||||
|
@ -118,6 +126,7 @@ GEM
|
|||
em-websocket (0.5.1)
|
||||
eventmachine (>= 0.12.9)
|
||||
http_parser.rb (~> 0.6.0)
|
||||
equalizer (0.0.11)
|
||||
erubis (2.7.0)
|
||||
eventmachine (1.0.8)
|
||||
execjs (2.5.2)
|
||||
|
@ -131,6 +140,25 @@ GEM
|
|||
formatador (0.2.5)
|
||||
globalid (0.3.5)
|
||||
activesupport (>= 4.1.0)
|
||||
grape (0.14.0)
|
||||
activesupport
|
||||
builder
|
||||
hashie (>= 2.1.0)
|
||||
multi_json (>= 1.3.2)
|
||||
multi_xml (>= 0.5.2)
|
||||
rack (>= 1.3.0)
|
||||
rack-accept
|
||||
rack-mount
|
||||
virtus (>= 1.0.0)
|
||||
grape-entity (0.4.8)
|
||||
activesupport
|
||||
multi_json (>= 1.3.2)
|
||||
grape-swagger (0.10.4)
|
||||
grape (>= 0.8.0)
|
||||
grape-entity (< 0.5.0)
|
||||
grape-swagger-rails (0.1.0)
|
||||
grape-swagger (>= 0.7.2)
|
||||
railties (>= 3.2.12)
|
||||
guard (2.13.0)
|
||||
formatador (>= 0.2.4)
|
||||
listen (>= 2.7, <= 4.0)
|
||||
|
@ -168,6 +196,7 @@ GEM
|
|||
http_parser.rb (0.6.0)
|
||||
httpclient (2.6.0.1)
|
||||
i18n (0.7.0)
|
||||
ice_nine (0.11.2)
|
||||
jbuilder (2.3.1)
|
||||
activesupport (>= 3.0.0, < 5)
|
||||
multi_json (~> 1.2)
|
||||
|
@ -212,6 +241,7 @@ GEM
|
|||
mini_portile (0.6.2)
|
||||
minitest (5.7.0)
|
||||
multi_json (1.11.2)
|
||||
multi_xml (0.5.5)
|
||||
multipart-post (2.0.0)
|
||||
nenv (0.2.0)
|
||||
netrc (0.10.3)
|
||||
|
@ -255,6 +285,10 @@ GEM
|
|||
byebug (~> 5.0)
|
||||
pry (~> 0.10)
|
||||
rack (1.6.4)
|
||||
rack-accept (0.4.5)
|
||||
rack (>= 0.4)
|
||||
rack-mount (0.8.3)
|
||||
rack (>= 1.0.0)
|
||||
rack-oauth2 (1.2.1)
|
||||
activesupport (>= 2.3)
|
||||
attr_required (>= 0.0.5)
|
||||
|
@ -384,6 +418,9 @@ GEM
|
|||
actionpack (>= 3.0)
|
||||
activesupport (>= 3.0)
|
||||
sprockets (>= 2.8, < 4.0)
|
||||
swagger-docs (0.2.8)
|
||||
activesupport (>= 3, < 5)
|
||||
rails (>= 3, < 5)
|
||||
swd (1.0.0)
|
||||
activesupport (>= 3)
|
||||
attr_required (>= 0.0.5)
|
||||
|
@ -420,6 +457,11 @@ GEM
|
|||
validate_url (1.0.2)
|
||||
activemodel (>= 3.0.0)
|
||||
addressable
|
||||
virtus (1.0.5)
|
||||
axiom-types (~> 0.1)
|
||||
coercible (~> 1.0)
|
||||
descendants_tracker (~> 0.0, >= 0.0.3)
|
||||
equalizer (~> 0.0, >= 0.0.9)
|
||||
warden (1.2.3)
|
||||
rack (>= 1.0)
|
||||
web-console (2.2.1)
|
||||
|
@ -463,6 +505,7 @@ DEPENDENCIES
|
|||
draper
|
||||
factory_girl
|
||||
font-awesome-rails
|
||||
grape-swagger-rails
|
||||
guard
|
||||
guard-livereload (~> 2.4)
|
||||
guard-rspec
|
||||
|
@ -499,6 +542,7 @@ DEPENDENCIES
|
|||
smart_listing
|
||||
spring
|
||||
spring-commands-rspec
|
||||
swagger-docs
|
||||
terminal-notifier
|
||||
terminal-notifier-guard
|
||||
therubyracer
|
||||
|
|
|
@ -1,5 +1,26 @@
|
|||
class API::V1::DossiersController < APIController
|
||||
|
||||
swagger_controller :dossiers, "Dossiers"
|
||||
|
||||
swagger_api :index do
|
||||
summary "Récupérer la liste de ses dossiers."
|
||||
param :path, :procedure_id, :integer, "Procédure ID"
|
||||
param :query, :token, :integer, "Admin TOKEN"
|
||||
response :ok, "Success", :Dossier
|
||||
response :unauthorized
|
||||
response :not_found
|
||||
end
|
||||
|
||||
swagger_api :show do
|
||||
summary "Récupérer le détails d'un dossier."
|
||||
param :path, :procedure_id, :integer, "Procédure ID"
|
||||
param :path, :id, :integer, "Dossier ID"
|
||||
param :query, :token, :integer, "Admin TOKEN"
|
||||
response :ok, "Success", :Dossier
|
||||
response :unauthorized
|
||||
response :not_found
|
||||
end
|
||||
|
||||
def index
|
||||
procedure = current_administrateur.procedures.find(params[:procedure_id])
|
||||
dossiers = procedure.dossiers.where.not(state: :draft).paginate(page: params[:page])
|
||||
|
|
|
@ -1,4 +1,16 @@
|
|||
class API::V1::ProceduresController < APIController
|
||||
|
||||
swagger_controller :procedures, "Procédures"
|
||||
|
||||
swagger_api :show do
|
||||
summary "Récupérer la liste de ses procédures."
|
||||
param :path, :id, :integer, "Procédure ID"
|
||||
param :query, :token, :integer, "Admin TOKEN"
|
||||
response :ok, "Success", :Procedure
|
||||
response :unauthorized
|
||||
response :not_found
|
||||
end
|
||||
|
||||
def show
|
||||
@procedure = current_administrateur.procedures.find(params[:id]).decorate
|
||||
|
||||
|
@ -7,5 +19,4 @@ class API::V1::ProceduresController < APIController
|
|||
Rails.logger.error(e.message)
|
||||
render json: {}, status: 404
|
||||
end
|
||||
|
||||
end
|
||||
|
|
3
config/initializers/grape_swagger_rails.rb
Normal file
3
config/initializers/grape_swagger_rails.rb
Normal file
|
@ -0,0 +1,3 @@
|
|||
GrapeSwaggerRails.options.url = 'api-docs.json'
|
||||
GrapeSwaggerRails.options.app_name = 'API TéléProcédure Simplifiée'
|
||||
GrapeSwaggerRails.options.app_url = TPS::Application::URL
|
21
config/initializers/swagger-docs.rb
Normal file
21
config/initializers/swagger-docs.rb
Normal file
|
@ -0,0 +1,21 @@
|
|||
Swagger::Docs::Config.register_apis({
|
||||
"1.0" => {
|
||||
# the extension used for the API
|
||||
# :api_extension_type => :json,
|
||||
# the output location where your .json files are written to
|
||||
:api_file_path => "public",
|
||||
# the URL base path to your API
|
||||
:base_path => TPS::Application::URL,
|
||||
# if you want to delete all .json files at each generation
|
||||
:clean_directory => false,
|
||||
# Ability to setup base controller for each api version. Api::V1::SomeController for example.
|
||||
# :parent_controller => API::V1,
|
||||
# add custom attributes to api-docs
|
||||
:attributes => {
|
||||
:info => {
|
||||
"title" => "API TéléProcédure Simplifiée",
|
||||
"description" => "",
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
|
@ -25,6 +25,8 @@ Rails.application.routes.draw do
|
|||
|
||||
root 'root#index'
|
||||
|
||||
mount GrapeSwaggerRails::Engine => '/docs'
|
||||
|
||||
namespace :france_connect do
|
||||
get 'particulier' => 'particulier#login'
|
||||
get 'particulier/callback' => 'particulier#callback'
|
||||
|
|
20
public/api-docs.json
Normal file
20
public/api-docs.json
Normal file
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
"apiVersion": "1.0",
|
||||
"swaggerVersion": "1.2",
|
||||
"basePath": "http://localhost:3000",
|
||||
"apis": [
|
||||
{
|
||||
"path": "/api/v1/dossiers.{format}",
|
||||
"description": "Dossiers"
|
||||
},
|
||||
{
|
||||
"path": "/api/v1/procedures.{format}",
|
||||
"description": "Procédures"
|
||||
}
|
||||
],
|
||||
"authorizations": null,
|
||||
"info": {
|
||||
"title": "API TéléProcédure Simplifiée",
|
||||
"description": ""
|
||||
}
|
||||
}
|
102
public/api/v1/dossiers.json
Normal file
102
public/api/v1/dossiers.json
Normal file
|
@ -0,0 +1,102 @@
|
|||
{
|
||||
"apiVersion": "1.0",
|
||||
"swaggerVersion": "1.2",
|
||||
"basePath": "http://localhost:3000",
|
||||
"resourcePath": "dossiers",
|
||||
"apis": [
|
||||
{
|
||||
"path": "/api/v1/procedures/{procedure_id}/dossiers",
|
||||
"operations": [
|
||||
{
|
||||
"summary": "Récupérer la liste de ses dossiers.",
|
||||
"parameters": [
|
||||
{
|
||||
"paramType": "path",
|
||||
"name": "procedure_id",
|
||||
"type": "integer",
|
||||
"description": null,
|
||||
"required": false
|
||||
},
|
||||
{
|
||||
"paramType": "query",
|
||||
"name": "token",
|
||||
"type": "integer",
|
||||
"description": null,
|
||||
"required": false
|
||||
}
|
||||
],
|
||||
"responseMessages": [
|
||||
{
|
||||
"code": 200,
|
||||
"responseModel": "Dossier",
|
||||
"message": "Success"
|
||||
},
|
||||
{
|
||||
"code": 401,
|
||||
"responseModel": null,
|
||||
"message": "Unauthorized"
|
||||
},
|
||||
{
|
||||
"code": 404,
|
||||
"responseModel": null,
|
||||
"message": "Not Found"
|
||||
}
|
||||
],
|
||||
"nickname": "API::V1::Dossiers#index",
|
||||
"method": "get"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"path": "/api/v1/procedures/{procedure_id}/dossiers/{id}",
|
||||
"operations": [
|
||||
{
|
||||
"summary": "Récupérer le détails d'un dossier.",
|
||||
"parameters": [
|
||||
{
|
||||
"paramType": "path",
|
||||
"name": "procedure_id",
|
||||
"type": "integer",
|
||||
"description": null,
|
||||
"required": false
|
||||
},
|
||||
{
|
||||
"paramType": "path",
|
||||
"name": "id",
|
||||
"type": "integer",
|
||||
"description": null,
|
||||
"required": false
|
||||
},
|
||||
{
|
||||
"paramType": "query",
|
||||
"name": "token",
|
||||
"type": "integer",
|
||||
"description": null,
|
||||
"required": false
|
||||
}
|
||||
],
|
||||
"responseMessages": [
|
||||
{
|
||||
"code": 200,
|
||||
"responseModel": "Dossier",
|
||||
"message": "Success"
|
||||
},
|
||||
{
|
||||
"code": 401,
|
||||
"responseModel": null,
|
||||
"message": "Unauthorized"
|
||||
},
|
||||
{
|
||||
"code": 404,
|
||||
"responseModel": null,
|
||||
"message": "Not Found"
|
||||
}
|
||||
],
|
||||
"nickname": "API::V1::Dossiers#show",
|
||||
"method": "get"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"authorizations": null
|
||||
}
|
52
public/api/v1/procedures.json
Normal file
52
public/api/v1/procedures.json
Normal file
|
@ -0,0 +1,52 @@
|
|||
{
|
||||
"apiVersion": "1.0",
|
||||
"swaggerVersion": "1.2",
|
||||
"basePath": "http://localhost:3000",
|
||||
"resourcePath": "procedures",
|
||||
"apis": [
|
||||
{
|
||||
"path": "/api/v1/procedures/{id}",
|
||||
"operations": [
|
||||
{
|
||||
"summary": "Récupérer la liste de ses procédures.",
|
||||
"parameters": [
|
||||
{
|
||||
"paramType": "path",
|
||||
"name": "id",
|
||||
"type": "integer",
|
||||
"description": null,
|
||||
"required": false
|
||||
},
|
||||
{
|
||||
"paramType": "query",
|
||||
"name": "token",
|
||||
"type": "integer",
|
||||
"description": null,
|
||||
"required": false
|
||||
}
|
||||
],
|
||||
"responseMessages": [
|
||||
{
|
||||
"code": 200,
|
||||
"responseModel": "Procedure",
|
||||
"message": "Success"
|
||||
},
|
||||
{
|
||||
"code": 401,
|
||||
"responseModel": null,
|
||||
"message": "Unauthorized"
|
||||
},
|
||||
{
|
||||
"code": 404,
|
||||
"responseModel": null,
|
||||
"message": "Not Found"
|
||||
}
|
||||
],
|
||||
"nickname": "API::V1::Procedures#show",
|
||||
"method": "get"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"authorizations": null
|
||||
}
|
Loading…
Reference in a new issue