mirror of
https://github.com/LaCasemate/fab-manager.git
synced 2024-12-01 12:24:28 +01:00
103 lines
3.4 KiB
Ruby
103 lines
3.4 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
# openAPI documentation for user's trainings endpoint
|
|
class OpenAPI::V1::UserTrainingsDoc < OpenAPI::V1::BaseDoc
|
|
resource_description do
|
|
short 'User trainings'
|
|
desc 'Trainings validated by users'
|
|
formats FORMATS
|
|
api_version API_VERSION
|
|
end
|
|
|
|
include OpenAPI::V1::Concerns::ParamGroups
|
|
|
|
doc_for :index do
|
|
api :GET, "/#{API_VERSION}/user_trainings", 'User trainings index'
|
|
description 'Index of trainings accomplished by users, with optional pagination. Order by *created_at* descendant.'
|
|
param_group :pagination
|
|
param :training_id, [Integer, Array], optional: true, desc: 'Scope the request to one or various trainings.'
|
|
param :user_id, [Integer, Array], optional: true, desc: 'Scope the request to one or various users.'
|
|
example <<-TRAININGS
|
|
# /open_api/v1/user_trainings?training_id[]=3&training_id[]=4&page=1&per_page=2
|
|
{
|
|
"user_trainings": [
|
|
{
|
|
"id": 720,
|
|
"user_id": 1340,
|
|
"training_id": 3,
|
|
"updated_at": "2016-05-03T14:16:38.373+02:00",
|
|
"created_at": "2016-05-03T14:16:38.373+02:00",
|
|
"user": {
|
|
"id": 1340,
|
|
"email": "xxxxxxxxxxx",
|
|
"created_at": "2015-12-20T11:30:32.670+01:00",
|
|
"full_name": "xxxxxxxxxxx"
|
|
}
|
|
},
|
|
{
|
|
"id": 719,
|
|
"user_id": 1118,
|
|
"training_id": 4,
|
|
"updated_at": "2016-04-29T16:55:24.651+02:00",
|
|
"created_at": "2016-04-29T16:55:24.651+02:00",
|
|
"user": {
|
|
"id": 1118,
|
|
"email": "xxxxxxxxxxx",
|
|
"created_at": "2015-10-08T19:18:26.188+02:00",
|
|
"full_name": "xxxxxxxxxxx"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
|
|
# /open_api/v1/user_trainings?user_id=1340&page=1&per_page=3
|
|
{
|
|
"user_trainings": [
|
|
{
|
|
"id": 720,
|
|
"user_id": 1340,
|
|
"training_id": 3,
|
|
"updated_at": "2016-05-03T14:16:38.373+02:00",
|
|
"created_at": "2016-05-03T14:16:38.373+02:00",
|
|
"training": {
|
|
"id": 3,
|
|
"name": "Formation Petite fraiseuse numerique",
|
|
"slug": "formation-petite-fraiseuse-numerique",
|
|
"updated_at": "2015-02-05T13:49:23.040+01:00",
|
|
"created_at": "2014-06-30T03:32:32.164+02:00"
|
|
}
|
|
},
|
|
{
|
|
"id": 700,
|
|
"user_id": 1340,
|
|
"training_id": 2,
|
|
"updated_at": "2016-04-19T22:02:17.083+02:00",
|
|
"created_at": "2016-04-19T22:02:17.083+02:00",
|
|
"training": {
|
|
"id": 2,
|
|
"name": "Formation Laser / Vinyle",
|
|
"slug": "formation-laser-vinyle",
|
|
"updated_at": "2015-02-05T13:49:19.046+01:00",
|
|
"created_at": "2014-06-30T03:32:32.138+02:00"
|
|
}
|
|
},
|
|
{
|
|
"id": 694,
|
|
"user_id": 1340,
|
|
"training_id": 1,
|
|
"updated_at": "2016-04-13T09:22:49.633+02:00",
|
|
"created_at": "2016-04-13T09:22:49.633+02:00",
|
|
"training": {
|
|
"id": 1,
|
|
"name": "Formation Imprimante 3D",
|
|
"slug": "formation-imprimante-3d",
|
|
"updated_at": "2015-02-05T13:49:15.025+01:00",
|
|
"created_at": "2014-06-30T03:32:32.126+02:00"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
TRAININGS
|
|
end
|
|
end
|