diff options
author | Kamil Trzciński <ayufan@ayufan.eu> | 2016-01-14 21:56:00 +0000 |
---|---|---|
committer | Kamil Trzciński <ayufan@ayufan.eu> | 2016-01-14 21:56:00 +0000 |
commit | 948bb655f3cba9909b7396c3062da7b22f4409b3 (patch) | |
tree | 06912dd45ad5c5a74a8d3aa3568f65e252ff08ce /lib/api | |
parent | 0192903b238cdbc20752b9db88174c094b19b43a (diff) | |
parent | 96aeaeafb561990c554c8e0544b29a83240f45d2 (diff) | |
download | gitlab-ce-948bb655f3cba9909b7396c3062da7b22f4409b3.tar.gz |
Merge branch 'ci/api-triggers' into 'master'
Add triggers API
References #4264
See merge request !2286
Diffstat (limited to 'lib/api')
-rw-r--r-- | lib/api/entities.rb | 4 | ||||
-rw-r--r-- | lib/api/triggers.rb | 69 |
2 files changed, 73 insertions, 0 deletions
diff --git a/lib/api/entities.rb b/lib/api/entities.rb index cce46886672..82a75734de0 100644 --- a/lib/api/entities.rb +++ b/lib/api/entities.rb @@ -394,6 +394,10 @@ module API expose :runner, with: Runner end + class Trigger < Grape::Entity + expose :token, :created_at, :updated_at, :deleted_at, :last_used + end + class Variable < Grape::Entity expose :key, :value end diff --git a/lib/api/triggers.rb b/lib/api/triggers.rb index 2781f1cf191..5e4964f446c 100644 --- a/lib/api/triggers.rb +++ b/lib/api/triggers.rb @@ -43,6 +43,75 @@ module API render_api_error!(errors, 400) end end + + # Get triggers list + # + # Parameters: + # id (required) - The ID of a project + # page (optional) - The page number for pagination + # per_page (optional) - The value of items per page to show + # Example Request: + # GET /projects/:id/triggers + get ':id/triggers' do + authenticate! + authorize_admin_project + + triggers = user_project.triggers.includes(:trigger_requests) + triggers = paginate(triggers) + + present triggers, with: Entities::Trigger + end + + # Get specific trigger of a project + # + # Parameters: + # id (required) - The ID of a project + # token (required) - The `token` of a trigger + # Example Request: + # GET /projects/:id/triggers/:token + get ':id/triggers/:token' do + authenticate! + authorize_admin_project + + trigger = user_project.triggers.find_by(token: params[:token].to_s) + return not_found!('Trigger') unless trigger + + present trigger, with: Entities::Trigger + end + + # Create trigger + # + # Parameters: + # id (required) - The ID of a project + # Example Request: + # POST /projects/:id/triggers + post ':id/triggers' do + authenticate! + authorize_admin_project + + trigger = user_project.triggers.create + + present trigger, with: Entities::Trigger + end + + # Delete trigger + # + # Parameters: + # id (required) - The ID of a project + # token (required) - The `token` of a trigger + # Example Request: + # DELETE /projects/:id/triggers/:token + delete ':id/triggers/:token' do + authenticate! + authorize_admin_project + + trigger = user_project.triggers.find_by(token: params[:token].to_s) + return not_found!('Trigger') unless trigger + + trigger.destroy + + present trigger, with: Entities::Trigger + end end end end |