2019-11-19 10:06:24 -05:00
|
|
|
# frozen_string_literal: true
|
2016-11-14 09:55:31 -05:00
|
|
|
|
2019-11-19 10:06:24 -05:00
|
|
|
resources :projects, only: [:index, :new, :create]
|
2019-09-13 17:06:15 -04:00
|
|
|
|
2016-11-14 09:55:31 -05:00
|
|
|
draw :git_http
|
2016-10-05 08:21:27 -04:00
|
|
|
|
2019-01-18 07:19:31 -05:00
|
|
|
get '/projects/:id' => 'projects#resolve'
|
|
|
|
|
2018-03-08 07:56:54 -05:00
|
|
|
constraints(::Constraints::ProjectUrlConstrainer.new) do
|
2017-05-19 20:46:40 -04:00
|
|
|
# If the route has a wildcard segment, the segment has a regex constraint,
|
|
|
|
# the segment is potentially followed by _another_ wildcard segment, and
|
|
|
|
# the `format` option is not set to false, we need to specify that
|
|
|
|
# regex constraint _outside_ of `constraints: {}`.
|
|
|
|
#
|
|
|
|
# Otherwise, Rails will overwrite the constraint with `/.+?/`,
|
|
|
|
# which breaks some of our wildcard routes like `/blob/*id`
|
|
|
|
# and `/tree/*id` that depend on the negative lookahead inside
|
2017-05-24 16:59:26 -04:00
|
|
|
# `Gitlab::PathRegex.full_namespace_route_regex`, which helps the router
|
2017-05-19 20:46:40 -04:00
|
|
|
# determine whether a certain path segment is part of `*namespace_id`,
|
|
|
|
# `:project_id`, or `*id`.
|
|
|
|
#
|
|
|
|
# See https://github.com/rails/rails/blob/v4.2.8/actionpack/lib/action_dispatch/routing/mapper.rb#L155
|
|
|
|
scope(path: '*namespace_id',
|
|
|
|
as: :namespace,
|
2017-05-24 16:59:26 -04:00
|
|
|
namespace_id: Gitlab::PathRegex.full_namespace_route_regex) do
|
2016-11-14 09:55:31 -05:00
|
|
|
scope(path: ':project_id',
|
2017-05-24 16:59:26 -04:00
|
|
|
constraints: { project_id: Gitlab::PathRegex.project_route_regex },
|
2016-11-14 09:55:31 -05:00
|
|
|
module: :projects,
|
|
|
|
as: :project) do
|
2016-10-05 08:21:27 -04:00
|
|
|
|
2019-05-24 11:28:23 -04:00
|
|
|
# Begin of the /-/ scope.
|
|
|
|
# Use this scope for all new project routes.
|
2019-05-24 11:20:07 -04:00
|
|
|
scope '-' do
|
|
|
|
get 'archive/*id', constraints: { format: Gitlab::PathRegex.archive_formats_regex, id: /.+?/ }, to: 'repositories#archive', as: 'archive'
|
|
|
|
|
2019-09-18 17:06:34 -04:00
|
|
|
resources :artifacts, only: [:index, :destroy]
|
|
|
|
|
2019-05-24 11:20:07 -04:00
|
|
|
resources :jobs, only: [:index, :show], constraints: { id: /\d+/ } do
|
|
|
|
collection do
|
|
|
|
resources :artifacts, only: [] do
|
|
|
|
collection do
|
|
|
|
get :latest_succeeded,
|
|
|
|
path: '*ref_name_and_path',
|
|
|
|
format: false
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
member do
|
|
|
|
get :status
|
|
|
|
post :cancel
|
|
|
|
post :unschedule
|
|
|
|
post :retry
|
|
|
|
post :play
|
|
|
|
post :erase
|
|
|
|
get :trace, defaults: { format: 'json' }
|
|
|
|
get :raw
|
|
|
|
get :terminal
|
|
|
|
get '/terminal.ws/authorize', to: 'jobs#terminal_websocket_authorize', constraints: { format: nil }
|
|
|
|
end
|
|
|
|
|
|
|
|
resource :artifacts, only: [] do
|
|
|
|
get :download
|
|
|
|
get :browse, path: 'browse(/*path)', format: false
|
|
|
|
get :file, path: 'file/*path', format: false
|
|
|
|
get :raw, path: 'raw/*path', format: false
|
|
|
|
post :keep
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
namespace :ci do
|
|
|
|
resource :lint, only: [:show, :create]
|
|
|
|
end
|
|
|
|
|
|
|
|
namespace :settings do
|
|
|
|
get :members, to: redirect("%{namespace_id}/%{project_id}/project_members")
|
|
|
|
|
|
|
|
resource :ci_cd, only: [:show, :update], controller: 'ci_cd' do
|
|
|
|
post :reset_cache
|
|
|
|
put :reset_registration_token
|
|
|
|
end
|
|
|
|
|
|
|
|
resource :operations, only: [:show, :update]
|
|
|
|
resource :integrations, only: [:show]
|
|
|
|
|
|
|
|
resource :repository, only: [:show], controller: :repository do
|
|
|
|
post :create_deploy_token, path: 'deploy_token/create'
|
|
|
|
post :cleanup
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2019-05-24 11:28:23 -04:00
|
|
|
resources :autocomplete_sources, only: [] do
|
|
|
|
collection do
|
|
|
|
get 'members'
|
|
|
|
get 'issues'
|
|
|
|
get 'merge_requests'
|
|
|
|
get 'labels'
|
|
|
|
get 'milestones'
|
|
|
|
get 'commands'
|
|
|
|
get 'snippets'
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
resources :project_members, except: [:show, :new, :edit], constraints: { id: %r{[a-zA-Z./0-9_\-#%+]+} }, concerns: :access_requestable do
|
|
|
|
collection do
|
|
|
|
delete :leave
|
|
|
|
|
|
|
|
# Used for import team
|
|
|
|
# from another project
|
|
|
|
get :import
|
|
|
|
post :apply_import
|
|
|
|
end
|
|
|
|
|
|
|
|
member do
|
|
|
|
post :resend_invite
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
resources :deploy_keys, constraints: { id: /\d+/ }, only: [:index, :new, :create, :edit, :update] do
|
|
|
|
member do
|
|
|
|
put :enable
|
|
|
|
put :disable
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
resources :deploy_tokens, constraints: { id: /\d+/ }, only: [] do
|
|
|
|
member do
|
|
|
|
put :revoke
|
|
|
|
end
|
2016-10-12 23:33:09 -04:00
|
|
|
end
|
2019-05-28 09:01:39 -04:00
|
|
|
|
|
|
|
resources :milestones, constraints: { id: /\d+/ } do
|
|
|
|
member do
|
|
|
|
post :promote
|
|
|
|
put :sort_issues
|
|
|
|
put :sort_merge_requests
|
|
|
|
get :merge_requests
|
|
|
|
get :participants
|
|
|
|
get :labels
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
resources :labels, except: [:show], constraints: { id: /\d+/ } do
|
|
|
|
collection do
|
|
|
|
post :generate
|
|
|
|
post :set_priorities
|
|
|
|
end
|
|
|
|
|
|
|
|
member do
|
|
|
|
post :promote
|
|
|
|
post :toggle_subscription
|
|
|
|
delete :remove_priority
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
resources :services, constraints: { id: %r{[^/]+} }, only: [:edit, :update] do
|
|
|
|
member do
|
|
|
|
put :test
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2019-06-17 08:58:48 -04:00
|
|
|
resources :boards, only: [:index, :show, :create, :update, :destroy], constraints: { id: /\d+/ } do
|
|
|
|
collection do
|
|
|
|
get :recent
|
|
|
|
end
|
|
|
|
end
|
2019-01-25 15:53:00 -05:00
|
|
|
|
2019-11-19 04:06:16 -05:00
|
|
|
resources :releases, only: [:index, :edit], param: :tag, constraints: { tag: %r{[^/]+} } do
|
|
|
|
member do
|
|
|
|
get :evidence
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2019-01-25 15:53:00 -05:00
|
|
|
resources :starrers, only: [:index]
|
2019-05-28 09:01:39 -04:00
|
|
|
resources :forks, only: [:index, :new, :create]
|
|
|
|
resources :group_links, only: [:index, :create, :update, :destroy], constraints: { id: /\d+/ }
|
|
|
|
|
|
|
|
resource :import, only: [:new, :create, :show]
|
|
|
|
resource :avatar, only: [:show, :destroy]
|
2019-10-10 08:06:19 -04:00
|
|
|
|
2019-10-31 11:06:41 -04:00
|
|
|
scope :grafana, as: :grafana_api do
|
|
|
|
get 'proxy/:datasource_id/*proxy_path', to: 'grafana_api#proxy'
|
|
|
|
get :metrics_dashboard, to: 'grafana_api#metrics_dashboard'
|
|
|
|
end
|
2019-11-14 07:06:30 -05:00
|
|
|
|
|
|
|
resource :mattermost, only: [:new, :create]
|
|
|
|
resource :variables, only: [:show, :update]
|
|
|
|
resources :triggers, only: [:index, :create, :edit, :update, :destroy]
|
|
|
|
|
|
|
|
resource :mirror, only: [:show, :update] do
|
|
|
|
member do
|
|
|
|
get :ssh_host_keys, constraints: { format: :json }
|
|
|
|
post :update_now
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
resource :cycle_analytics, only: [:show]
|
|
|
|
|
|
|
|
namespace :cycle_analytics do
|
|
|
|
scope :events, controller: 'events' do
|
|
|
|
get :issue
|
|
|
|
get :plan
|
|
|
|
get :code
|
|
|
|
get :test
|
|
|
|
get :review
|
|
|
|
get :staging
|
|
|
|
get :production
|
|
|
|
end
|
|
|
|
end
|
2016-10-12 23:33:09 -04:00
|
|
|
end
|
2019-05-24 11:28:23 -04:00
|
|
|
# End of the /-/ scope.
|
2016-10-12 23:33:09 -04:00
|
|
|
|
2016-10-05 08:21:27 -04:00
|
|
|
#
|
|
|
|
# Templates
|
|
|
|
#
|
2019-05-23 00:33:11 -04:00
|
|
|
get '/templates/:template_type/:key' => 'templates#show',
|
|
|
|
as: :template,
|
|
|
|
defaults: { format: 'json' },
|
|
|
|
constraints: { key: %r{[^/]+}, template_type: %r{issue|merge_request}, format: 'json' }
|
2016-10-05 08:21:27 -04:00
|
|
|
|
2019-09-18 10:02:45 -04:00
|
|
|
get '/description_templates/names/:template_type',
|
|
|
|
to: 'templates#names',
|
|
|
|
as: :template_names,
|
|
|
|
defaults: { format: 'json' },
|
|
|
|
constraints: { template_type: %r{issue|merge_request}, format: 'json' }
|
|
|
|
|
2016-10-05 08:21:27 -04:00
|
|
|
resources :commit, only: [:show], constraints: { id: /\h{7,40}/ } do
|
|
|
|
member do
|
|
|
|
get :branches
|
|
|
|
get :pipelines
|
|
|
|
post :revert
|
|
|
|
post :cherry_pick
|
|
|
|
get :diff_for_path
|
2018-01-12 15:38:36 -05:00
|
|
|
get :merge_requests
|
2016-10-05 08:21:27 -04:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2018-01-03 03:07:03 -05:00
|
|
|
resource :pages, only: [:show, :update, :destroy] do
|
2018-02-25 08:06:09 -05:00
|
|
|
resources :domains, except: :index, controller: 'pages_domains', constraints: { id: %r{[^/]+} } do
|
2018-02-06 08:25:46 -05:00
|
|
|
member do
|
|
|
|
post :verify
|
2019-10-28 20:06:10 -04:00
|
|
|
delete :clean_certificate
|
2018-02-06 08:25:46 -05:00
|
|
|
end
|
|
|
|
end
|
2016-02-09 12:06:55 -05:00
|
|
|
end
|
|
|
|
|
2016-10-05 08:21:27 -04:00
|
|
|
resources :snippets, concerns: :awardable, constraints: { id: /\d+/ } do
|
|
|
|
member do
|
2017-04-30 13:15:20 -04:00
|
|
|
get :raw
|
2017-02-01 13:15:59 -05:00
|
|
|
post :mark_as_spam
|
2016-10-05 08:21:27 -04:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2017-05-10 05:25:30 -04:00
|
|
|
namespace :prometheus do
|
2019-06-24 12:53:17 -04:00
|
|
|
resources :metrics, constraints: { id: %r{[^\/]+} }, only: [:index, :new, :create, :edit, :update, :destroy] do
|
2018-02-23 12:58:40 -05:00
|
|
|
get :active_common, on: :collection
|
2019-11-08 10:06:21 -05:00
|
|
|
end
|
2017-05-10 05:25:30 -04:00
|
|
|
end
|
|
|
|
|
2019-09-16 02:06:02 -04:00
|
|
|
resources :merge_requests, concerns: :awardable, except: [:new, :create, :show], constraints: { id: /\d+/ } do
|
2016-10-05 08:21:27 -04:00
|
|
|
member do
|
2019-09-16 02:06:02 -04:00
|
|
|
get :show # Insert this first to ensure redirections using merge_requests#show match this route
|
2017-05-09 00:15:34 -04:00
|
|
|
get :commit_change_content
|
2016-10-05 08:21:27 -04:00
|
|
|
post :merge
|
2019-05-22 07:45:27 -04:00
|
|
|
post :cancel_auto_merge
|
2017-03-17 02:58:12 -04:00
|
|
|
get :pipeline_status
|
2016-10-07 18:10:06 -04:00
|
|
|
get :ci_environments_status
|
2016-10-05 08:21:27 -04:00
|
|
|
post :toggle_subscription
|
|
|
|
post :remove_wip
|
2016-08-08 18:30:01 -04:00
|
|
|
post :assign_related_issues
|
2018-02-27 19:10:43 -05:00
|
|
|
get :discussions, format: :json
|
2017-12-20 04:01:21 -05:00
|
|
|
post :rebase
|
2018-08-02 02:05:07 -04:00
|
|
|
get :test_reports
|
2019-10-21 11:05:58 -04:00
|
|
|
get :exposed_artifacts
|
2017-06-13 18:12:31 -04:00
|
|
|
|
|
|
|
scope constraints: { format: nil }, action: :show do
|
|
|
|
get :commits, defaults: { tab: 'commits' }
|
|
|
|
get :pipelines, defaults: { tab: 'pipelines' }
|
|
|
|
get :diffs, defaults: { tab: 'diffs' }
|
|
|
|
end
|
|
|
|
|
|
|
|
scope constraints: { format: 'json' }, as: :json do
|
|
|
|
get :commits
|
|
|
|
get :pipelines
|
|
|
|
get :diffs, to: 'merge_requests/diffs#show'
|
2019-10-09 17:06:24 -04:00
|
|
|
get :diffs_batch, to: 'merge_requests/diffs#diffs_batch'
|
2019-10-10 08:06:19 -04:00
|
|
|
get :diffs_metadata, to: 'merge_requests/diffs#diffs_metadata'
|
2019-06-21 14:22:55 -04:00
|
|
|
get :widget, to: 'merge_requests/content#widget'
|
2019-08-09 17:01:55 -04:00
|
|
|
get :cached_widget, to: 'merge_requests/content#cached_widget'
|
2017-06-13 18:12:31 -04:00
|
|
|
end
|
|
|
|
|
|
|
|
get :diff_for_path, controller: 'merge_requests/diffs'
|
|
|
|
|
|
|
|
scope controller: 'merge_requests/conflicts' do
|
|
|
|
get :conflicts, action: :show
|
|
|
|
get :conflict_for_path
|
|
|
|
post :resolve_conflicts
|
|
|
|
end
|
2016-10-05 08:21:27 -04:00
|
|
|
end
|
|
|
|
|
|
|
|
collection do
|
|
|
|
get :diff_for_path
|
|
|
|
post :bulk_update
|
|
|
|
end
|
|
|
|
|
2018-03-13 08:01:36 -04:00
|
|
|
resources :discussions, only: [:show], constraints: { id: /\h{40}/ } do
|
2016-10-05 08:21:27 -04:00
|
|
|
member do
|
|
|
|
post :resolve
|
|
|
|
delete :resolve, action: :unresolve
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2018-09-11 16:46:02 -04:00
|
|
|
scope path: 'merge_requests', controller: 'merge_requests/creations' do
|
2017-06-13 18:12:31 -04:00
|
|
|
post '', action: :create, as: nil
|
|
|
|
|
2018-11-07 08:32:20 -05:00
|
|
|
scope path: 'new', as: :new_merge_request do
|
|
|
|
get '', action: :new
|
|
|
|
|
2017-06-13 18:12:31 -04:00
|
|
|
scope constraints: { format: nil }, action: :new do
|
|
|
|
get :diffs, defaults: { tab: 'diffs' }
|
|
|
|
get :pipelines, defaults: { tab: 'pipelines' }
|
|
|
|
end
|
|
|
|
|
|
|
|
scope constraints: { format: 'json' }, as: :json do
|
|
|
|
get :diffs
|
|
|
|
get :pipelines
|
|
|
|
end
|
|
|
|
|
|
|
|
get :diff_for_path
|
|
|
|
get :branch_from
|
|
|
|
get :branch_to
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2016-10-05 08:21:27 -04:00
|
|
|
resources :pipelines, only: [:index, :new, :create, :show] do
|
|
|
|
collection do
|
|
|
|
resource :pipelines_settings, path: 'settings', only: [:show, :update]
|
2017-03-02 12:57:01 -05:00
|
|
|
get :charts
|
2018-07-27 00:26:13 -04:00
|
|
|
scope '(*ref)', constraints: { ref: Gitlab::PathRegex.git_reference_regex } do
|
|
|
|
get :latest, action: :show, defaults: { latest: true }
|
|
|
|
end
|
2016-10-05 08:21:27 -04:00
|
|
|
end
|
|
|
|
|
|
|
|
member do
|
2016-12-19 07:20:17 -05:00
|
|
|
get :stage
|
2018-05-01 17:56:33 -04:00
|
|
|
get :stage_ajax
|
2016-10-05 08:21:27 -04:00
|
|
|
post :cancel
|
|
|
|
post :retry
|
2016-11-23 09:44:05 -05:00
|
|
|
get :builds
|
2017-04-15 21:33:01 -04:00
|
|
|
get :failures
|
2017-03-03 01:59:25 -05:00
|
|
|
get :status
|
2019-10-08 05:06:09 -04:00
|
|
|
get :test_report
|
2016-10-05 08:21:27 -04:00
|
|
|
end
|
2019-05-02 14:27:35 -04:00
|
|
|
|
|
|
|
member do
|
|
|
|
resources :stages, only: [], param: :name do
|
|
|
|
post :play_manual
|
|
|
|
end
|
|
|
|
end
|
2016-10-05 08:21:27 -04:00
|
|
|
end
|
|
|
|
|
2017-05-07 18:35:56 -04:00
|
|
|
resources :pipeline_schedules, except: [:show] do
|
|
|
|
member do
|
2017-12-06 01:24:20 -05:00
|
|
|
post :play
|
2017-05-07 18:35:56 -04:00
|
|
|
post :take_ownership
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2018-10-14 23:37:51 -04:00
|
|
|
concerns :clusterable
|
2017-09-25 03:10:25 -04:00
|
|
|
|
2016-10-17 09:40:18 -04:00
|
|
|
resources :environments, except: [:destroy] do
|
2016-10-17 05:33:24 -04:00
|
|
|
member do
|
|
|
|
post :stop
|
2016-12-14 19:59:04 -05:00
|
|
|
get :terminal
|
2017-03-07 11:57:42 -05:00
|
|
|
get :metrics
|
2017-05-10 05:25:30 -04:00
|
|
|
get :additional_metrics
|
2019-04-11 01:58:18 -04:00
|
|
|
get :metrics_dashboard
|
2016-12-14 19:59:04 -05:00
|
|
|
get '/terminal.ws/authorize', to: 'environments#terminal_websocket_authorize', constraints: { format: nil }
|
2019-04-02 02:26:09 -04:00
|
|
|
|
2019-06-05 03:24:21 -04:00
|
|
|
get '/prometheus/api/v1/*proxy_path', to: 'environments/prometheus_api#proxy', as: :prometheus_api
|
2016-10-17 05:33:24 -04:00
|
|
|
end
|
2017-02-07 09:06:31 -05:00
|
|
|
|
|
|
|
collection do
|
2018-06-28 05:54:02 -04:00
|
|
|
get :metrics, action: :metrics_redirect
|
2017-03-27 05:15:29 -04:00
|
|
|
get :folder, path: 'folders/*id', constraints: { format: /(html|json)/ }
|
2019-02-05 02:14:30 -05:00
|
|
|
get :search
|
2017-02-07 09:06:31 -05:00
|
|
|
end
|
2017-03-27 05:22:43 -04:00
|
|
|
|
2017-05-09 00:15:34 -04:00
|
|
|
resources :deployments, only: [:index] do
|
|
|
|
member do
|
|
|
|
get :metrics
|
2017-05-25 11:39:43 -04:00
|
|
|
get :additional_metrics
|
2017-05-09 00:15:34 -04:00
|
|
|
end
|
|
|
|
end
|
2016-10-17 05:33:24 -04:00
|
|
|
end
|
2016-10-05 08:21:27 -04:00
|
|
|
|
2018-12-06 13:08:49 -05:00
|
|
|
namespace :serverless do
|
2019-04-05 22:02:39 -04:00
|
|
|
scope :functions do
|
|
|
|
get '/:environment_id/:id', to: 'functions#show'
|
|
|
|
get '/:environment_id/:id/metrics', to: 'functions#metrics', as: :metrics
|
|
|
|
end
|
|
|
|
|
2018-12-06 13:08:49 -05:00
|
|
|
resources :functions, only: [:index]
|
|
|
|
end
|
|
|
|
|
2017-07-06 10:55:48 -04:00
|
|
|
draw :legacy_builds
|
2017-05-18 07:32:22 -04:00
|
|
|
|
2017-04-20 04:31:37 -04:00
|
|
|
resources :hooks, only: [:index, :create, :edit, :update, :destroy], constraints: { id: /\d+/ } do
|
2016-10-05 08:21:27 -04:00
|
|
|
member do
|
2018-06-21 04:38:59 -04:00
|
|
|
post :test
|
2016-10-05 08:21:27 -04:00
|
|
|
end
|
2017-04-27 06:08:57 -04:00
|
|
|
|
|
|
|
resources :hook_logs, only: [:show] do
|
|
|
|
member do
|
2018-08-24 12:52:23 -04:00
|
|
|
post :retry
|
2017-04-27 06:08:57 -04:00
|
|
|
end
|
|
|
|
end
|
2016-10-05 08:21:27 -04:00
|
|
|
end
|
|
|
|
|
2017-04-05 08:13:46 -04:00
|
|
|
resources :container_registry, only: [:index, :destroy],
|
2017-04-05 09:19:48 -04:00
|
|
|
controller: 'registry/repositories'
|
2016-10-05 08:21:27 -04:00
|
|
|
|
2017-03-31 07:56:07 -04:00
|
|
|
namespace :registry do
|
|
|
|
resources :repository, only: [] do
|
2017-10-18 19:35:37 -04:00
|
|
|
# We default to JSON format in the controller to avoid ambiguity.
|
|
|
|
# `latest.json` could either be a request for a tag named `latest`
|
|
|
|
# in JSON format, or a request for tag named `latest.json`.
|
|
|
|
scope format: false do
|
|
|
|
resources :tags, only: [:index, :destroy],
|
2019-07-18 01:24:40 -04:00
|
|
|
constraints: { id: Gitlab::Regex.container_registry_tag_regex } do
|
|
|
|
collection do
|
|
|
|
delete :bulk_destroy
|
|
|
|
end
|
|
|
|
end
|
2017-10-18 19:35:37 -04:00
|
|
|
end
|
2017-03-31 07:56:07 -04:00
|
|
|
end
|
|
|
|
end
|
2016-10-05 08:21:27 -04:00
|
|
|
|
2018-05-31 10:01:04 -04:00
|
|
|
get :issues, to: 'issues#calendar', constraints: lambda { |req| req.format == :ics }
|
2019-05-28 09:01:39 -04:00
|
|
|
|
2016-10-05 08:21:27 -04:00
|
|
|
resources :issues, concerns: :awardable, constraints: { id: /\d+/ } do
|
|
|
|
member do
|
|
|
|
post :toggle_subscription
|
|
|
|
post :mark_as_spam
|
2017-08-14 03:26:19 -04:00
|
|
|
post :move
|
2019-05-31 21:19:08 -04:00
|
|
|
put :reorder
|
2016-10-05 08:21:27 -04:00
|
|
|
get :related_branches
|
|
|
|
get :can_create_branch
|
2017-05-13 16:19:49 -04:00
|
|
|
get :realtime_changes
|
2017-05-04 04:09:21 -04:00
|
|
|
post :create_merge_request
|
2017-06-09 17:24:54 -04:00
|
|
|
get :discussions, format: :json
|
2016-10-05 08:21:27 -04:00
|
|
|
end
|
2019-05-28 09:01:39 -04:00
|
|
|
|
2016-10-05 08:21:27 -04:00
|
|
|
collection do
|
2018-09-20 12:47:34 -04:00
|
|
|
post :bulk_update
|
2018-12-04 03:42:27 -05:00
|
|
|
post :import_csv
|
2016-10-05 08:21:27 -04:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2017-02-07 12:02:02 -05:00
|
|
|
resources :notes, only: [:create, :destroy, :update], concerns: :awardable, constraints: { id: /\d+/ } do
|
2016-10-05 08:21:27 -04:00
|
|
|
member do
|
|
|
|
delete :delete_attachment
|
|
|
|
post :resolve
|
|
|
|
delete :resolve, action: :unresolve
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2017-02-07 12:02:02 -05:00
|
|
|
get 'noteable/:target_type/:target_id/notes' => 'notes#index', as: 'noteable_notes'
|
|
|
|
|
2016-10-05 08:21:27 -04:00
|
|
|
resources :todos, only: [:create]
|
|
|
|
|
|
|
|
resources :uploads, only: [:create] do
|
|
|
|
collection do
|
2018-01-27 00:35:53 -05:00
|
|
|
get ":secret/:filename", action: :show, as: :show, constraints: { filename: %r{[^/]+} }
|
2018-06-12 11:54:37 -04:00
|
|
|
post :authorize
|
2016-10-05 08:21:27 -04:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
resources :runners, only: [:index, :edit, :update, :destroy, :show] do
|
|
|
|
member do
|
2017-12-19 16:24:36 -05:00
|
|
|
post :resume
|
|
|
|
post :pause
|
2016-10-05 08:21:27 -04:00
|
|
|
end
|
|
|
|
|
|
|
|
collection do
|
|
|
|
post :toggle_shared_runners
|
2017-10-05 03:55:01 -04:00
|
|
|
post :toggle_group_runners
|
2016-10-05 08:21:27 -04:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
resources :runner_projects, only: [:create, :destroy]
|
|
|
|
resources :badges, only: [:index] do
|
|
|
|
collection do
|
2017-05-24 16:59:26 -04:00
|
|
|
scope '*ref', constraints: { ref: Gitlab::PathRegex.git_reference_regex } do
|
2016-10-05 08:21:27 -04:00
|
|
|
constraints format: /svg/ do
|
2017-07-19 07:08:47 -04:00
|
|
|
get :pipeline
|
2016-10-05 08:21:27 -04:00
|
|
|
get :coverage
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
2019-05-20 05:59:01 -04:00
|
|
|
|
2019-02-06 11:27:18 -05:00
|
|
|
resources :error_tracking, only: [:index], controller: :error_tracking do
|
|
|
|
collection do
|
2019-11-08 16:06:38 -05:00
|
|
|
get ':issue_id/details',
|
|
|
|
to: 'error_tracking#details',
|
|
|
|
as: 'details'
|
|
|
|
get ':issue_id/stack_trace',
|
|
|
|
to: 'error_tracking#stack_trace',
|
|
|
|
as: 'stack_trace'
|
2019-02-06 11:27:18 -05:00
|
|
|
post :list_projects
|
|
|
|
end
|
|
|
|
end
|
2019-01-09 16:04:27 -05:00
|
|
|
|
2019-11-06 04:06:23 -05:00
|
|
|
scope :usage_ping, controller: :usage_ping do
|
|
|
|
post :web_ide_clientside_preview
|
|
|
|
end
|
|
|
|
|
2016-11-07 10:14:34 -05:00
|
|
|
# Since both wiki and repository routing contains wildcard characters
|
2019-10-31 17:06:28 -04:00
|
|
|
# its preferable to keep it below all other project routes
|
2016-11-07 10:14:34 -05:00
|
|
|
draw :wiki
|
|
|
|
draw :repository
|
2019-06-24 12:53:17 -04:00
|
|
|
|
2019-11-19 10:06:24 -05:00
|
|
|
# Legacy routes.
|
|
|
|
# Introduced in 12.0.
|
|
|
|
# Should be removed with https://gitlab.com/gitlab-org/gitlab/issues/28848.
|
|
|
|
Gitlab::Routing.redirect_legacy_paths(self, :settings, :branches, :tags,
|
|
|
|
:network, :graphs, :autocomplete_sources,
|
|
|
|
:project_members, :deploy_keys, :deploy_tokens,
|
|
|
|
:labels, :milestones, :services, :boards, :releases,
|
|
|
|
:forks, :group_links, :import, :avatar, :mirror,
|
|
|
|
:cycle_analytics, :mattermost, :variables, :triggers)
|
2016-10-05 08:21:27 -04:00
|
|
|
end
|
2016-11-14 09:55:31 -05:00
|
|
|
|
|
|
|
resources(:projects,
|
|
|
|
path: '/',
|
2017-05-24 16:59:26 -04:00
|
|
|
constraints: { id: Gitlab::PathRegex.project_route_regex },
|
2016-11-14 09:55:31 -05:00
|
|
|
only: [:edit, :show, :update, :destroy]) do
|
|
|
|
member do
|
|
|
|
put :transfer
|
|
|
|
delete :remove_fork
|
|
|
|
post :archive
|
|
|
|
post :unarchive
|
|
|
|
post :housekeeping
|
|
|
|
post :toggle_star
|
|
|
|
post :preview_markdown
|
|
|
|
post :export
|
|
|
|
post :remove_export
|
|
|
|
post :generate_new_export
|
|
|
|
get :download_export
|
|
|
|
get :activity
|
|
|
|
get :refs
|
2017-08-24 02:20:36 -04:00
|
|
|
put :new_issuable_address
|
2016-11-14 09:55:31 -05:00
|
|
|
end
|
|
|
|
end
|
2016-10-05 08:21:27 -04:00
|
|
|
end
|
|
|
|
end
|