2019-11-19 10:06:24 -05:00
|
|
|
# frozen_string_literal: true
|
2016-11-14 09:55:31 -05:00
|
|
|
|
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
|
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'
|
2020-09-07 14:08:32 -04:00
|
|
|
# Since the page parameter can contain slashes (panel/new), use Rails'
|
|
|
|
# "Route Globbing" syntax (/*page) so that the route helpers do not encode
|
|
|
|
# the slash character.
|
|
|
|
get 'metrics(/:dashboard_path)(/*page)', constraints: { dashboard_path: /.+\.yml/, page: 'panel/new' },
|
2022-08-01 02:12:25 -04:00
|
|
|
to: 'metrics_dashboard#show', as: :metrics_dashboard, format: false
|
2019-05-24 11:20:07 -04:00
|
|
|
|
2020-08-04 14:09:49 -04:00
|
|
|
namespace :metrics, module: :metrics do
|
|
|
|
namespace :dashboards do
|
|
|
|
post :builder, to: 'builder#panel_preview'
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2021-02-04 16:09:06 -05:00
|
|
|
namespace :security do
|
2021-11-02 14:12:13 -04:00
|
|
|
resource :configuration, only: [:show], controller: :configuration do
|
|
|
|
resource :sast, only: [:show], controller: :sast_configuration
|
|
|
|
end
|
2021-02-04 16:09:06 -05:00
|
|
|
end
|
|
|
|
|
2019-09-18 17:06:34 -04:00
|
|
|
resources :artifacts, only: [:index, :destroy]
|
|
|
|
|
2020-07-21 08:09:30 -04:00
|
|
|
resources :packages, only: [:index, :show, :destroy], module: :packages
|
|
|
|
resources :package_files, only: [], module: :packages do
|
|
|
|
member do
|
|
|
|
get :download
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2021-06-01 11:09:52 -04:00
|
|
|
resources :infrastructure_registry, only: [:index, :show], module: :packages
|
2021-04-01 08:08:56 -04:00
|
|
|
|
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
|
2020-05-25 11:07:58 -04:00
|
|
|
get :proxy
|
2019-12-19 13:07:48 -05:00
|
|
|
|
2020-05-25 11:07:58 -04:00
|
|
|
# These routes are also defined in gitlab-workhorse. Make sure to update accordingly.
|
2019-12-03 16:06:23 -05:00
|
|
|
get '/terminal.ws/authorize', to: 'jobs#terminal_websocket_authorize', format: false
|
2020-05-25 11:07:58 -04:00
|
|
|
get '/proxy.ws/authorize', to: 'jobs#proxy_websocket_authorize', format: false
|
2019-05-24 11:20:07 -04:00
|
|
|
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
|
|
|
|
|
2021-02-16 04:09:36 -05:00
|
|
|
get :learn_gitlab, action: :index, controller: 'learn_gitlab'
|
|
|
|
|
2019-05-24 11:20:07 -04:00
|
|
|
namespace :ci do
|
|
|
|
resource :lint, only: [:show, :create]
|
2020-10-30 08:08:44 -04:00
|
|
|
resource :pipeline_editor, only: [:show], controller: :pipeline_editor, path: 'editor'
|
2020-06-09 14:08:28 -04:00
|
|
|
resources :daily_build_group_report_results, only: [:index], constraints: { format: /(csv|json)/ }
|
2021-02-04 13:09:22 -05:00
|
|
|
namespace :prometheus_metrics do
|
|
|
|
resources :histograms, only: [:create], constraints: { format: 'json' }
|
|
|
|
end
|
2019-05-24 11:20:07 -04:00
|
|
|
end
|
|
|
|
|
2021-06-28 11:08:03 -04:00
|
|
|
resources :runners, only: [:index, :edit, :update, :destroy, :show] do
|
|
|
|
member do
|
|
|
|
post :resume
|
|
|
|
post :pause
|
|
|
|
end
|
|
|
|
|
|
|
|
collection do
|
|
|
|
post :toggle_shared_runners
|
|
|
|
post :toggle_group_runners
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2019-05-24 11:20:07 -04:00
|
|
|
namespace :settings do
|
|
|
|
resource :ci_cd, only: [:show, :update], controller: 'ci_cd' do
|
|
|
|
post :reset_cache
|
|
|
|
put :reset_registration_token
|
2020-04-22 20:09:41 -04:00
|
|
|
post :create_deploy_token, path: 'deploy_token/create', to: 'repository#create_deploy_token'
|
2020-09-30 17:10:09 -04:00
|
|
|
get :runner_setup_scripts, format: :json
|
2019-05-24 11:20:07 -04:00
|
|
|
end
|
|
|
|
|
2020-03-25 05:08:11 -04:00
|
|
|
resource :operations, only: [:show, :update] do
|
|
|
|
member do
|
|
|
|
post :reset_alerting_token
|
2020-07-14 20:09:23 -04:00
|
|
|
post :reset_pagerduty_token
|
2020-03-25 05:08:11 -04:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2022-05-25 14:08:15 -04:00
|
|
|
resources :integrations, constraints: { id: %r{[^/]+} }, only: [:index, :edit, :update] do
|
|
|
|
member do
|
|
|
|
put :test
|
|
|
|
end
|
|
|
|
|
|
|
|
resources :hook_logs, only: [:show], controller: :integration_hook_logs do
|
|
|
|
member do
|
|
|
|
post :retry
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
2019-05-24 11:20:07 -04:00
|
|
|
|
2022-10-27 11:09:49 -04:00
|
|
|
resource :repository, only: [:show, :update], controller: :repository do
|
2020-04-06 11:10:04 -04:00
|
|
|
# TODO: Removed this "create_deploy_token" route after change was made in app/helpers/ci_variables_helper.rb:14
|
|
|
|
# See MR comment for more detail: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/27059#note_311585356
|
2020-04-22 20:09:41 -04:00
|
|
|
post :create_deploy_token, path: 'deploy_token/create'
|
2019-05-24 11:20:07 -04:00
|
|
|
post :cleanup
|
2022-05-31 20:08:20 -04:00
|
|
|
|
|
|
|
resources :branch_rules, only: [:index]
|
2019-05-24 11:20:07 -04:00
|
|
|
end
|
2020-05-05 17:09:42 -04:00
|
|
|
|
|
|
|
resources :access_tokens, only: [:index, :create] do
|
|
|
|
member do
|
|
|
|
put :revoke
|
|
|
|
end
|
|
|
|
end
|
2021-04-27 11:09:52 -04:00
|
|
|
|
2022-08-16 02:10:05 -04:00
|
|
|
resource :packages_and_registries, only: [:show] do
|
|
|
|
get '/cleanup_image_tags', to: 'packages_and_registries#cleanup_tags'
|
|
|
|
end
|
2022-09-06 08:10:02 -04:00
|
|
|
resource :merge_requests, only: [:show, :update]
|
2019-05-24 11:20:07 -04:00
|
|
|
end
|
|
|
|
|
2021-08-23 11:10:43 -04:00
|
|
|
resources :usage_quotas, only: [:index]
|
|
|
|
|
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'
|
2022-01-25 16:15:18 -05:00
|
|
|
get 'contacts'
|
2019-05-24 11:28:23 -04:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2022-03-09 19:08:36 -05:00
|
|
|
resources :project_members, except: [:show, :new, :create, :edit], constraints: { id: %r{[a-zA-Z./0-9_\-#%+:]+} }, concerns: :access_requestable do
|
2019-05-24 11:28:23 -04:00
|
|
|
collection do
|
|
|
|
delete :leave
|
|
|
|
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
|
2020-09-18 14:10:26 -04:00
|
|
|
get :issues
|
2019-05-28 09:01:39 -04:00
|
|
|
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
|
|
|
|
|
2022-09-28 11:09:17 -04:00
|
|
|
resources :boards, only: [:index, :show], constraints: { id: /\d+/ }
|
2019-01-25 15:53:00 -05:00
|
|
|
|
2022-06-16 02:08:59 -04:00
|
|
|
get 'releases/permalink/latest(/)(*suffix_path)', to: 'releases#latest_permalink', as: :latest_release_permalink, format: false
|
|
|
|
|
|
|
|
resources :releases, only: [:index, :new, :show, :edit], param: :tag, constraints: { tag: %r{[^\\]+} } do
|
2019-11-19 04:06:16 -05:00
|
|
|
member do
|
2020-03-04 07:07:52 -05:00
|
|
|
get :downloads, path: 'downloads/*filepath', format: false
|
2020-03-24 08:09:42 -04:00
|
|
|
scope module: :releases do
|
|
|
|
resources :evidences, only: [:show]
|
|
|
|
end
|
2019-11-19 04:06:16 -05:00
|
|
|
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]
|
2022-03-22 11:07:25 -04:00
|
|
|
resources :group_links, only: [:update, :destroy], constraints: { id: /\d+|:id/ }
|
2019-05-28 09:01:39 -04:00
|
|
|
|
|
|
|
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
|
|
|
|
|
2020-02-07 16:08:39 -05:00
|
|
|
resource :cycle_analytics, only: :show, path: 'value_stream_analytics'
|
|
|
|
scope module: :cycle_analytics, as: 'cycle_analytics', path: 'value_stream_analytics' do
|
2019-11-14 07:06:30 -05:00
|
|
|
scope :events, controller: 'events' do
|
|
|
|
get :issue
|
|
|
|
get :plan
|
|
|
|
get :code
|
|
|
|
get :test
|
|
|
|
get :review
|
|
|
|
get :staging
|
|
|
|
get :production
|
|
|
|
end
|
|
|
|
end
|
2020-02-07 16:08:39 -05:00
|
|
|
get '/cycle_analytics', to: redirect('%{namespace_id}/%{project_id}/-/value_stream_analytics')
|
2019-12-03 04:09:09 -05:00
|
|
|
|
2021-05-14 14:10:34 -04:00
|
|
|
namespace :analytics do
|
|
|
|
resource :cycle_analytics, only: :show, path: 'value_stream_analytics'
|
|
|
|
scope module: :cycle_analytics, as: 'cycle_analytics', path: 'value_stream_analytics' do
|
|
|
|
resources :value_streams, only: [:index] do
|
2021-07-28 11:09:57 -04:00
|
|
|
resources :stages, only: [:index] do
|
|
|
|
member do
|
|
|
|
get :median
|
|
|
|
get :average
|
|
|
|
get :records
|
|
|
|
get :count
|
|
|
|
end
|
|
|
|
end
|
2021-05-14 14:10:34 -04:00
|
|
|
end
|
2021-06-14 08:10:13 -04:00
|
|
|
resource :summary, controller: :summary, only: :show
|
2021-05-14 14:10:34 -04:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2021-09-29 08:11:22 -04:00
|
|
|
resources :cluster_agents, only: [:show], param: :name
|
|
|
|
|
2019-12-03 04:09:09 -05:00
|
|
|
concerns :clusterable
|
|
|
|
|
2020-11-06 07:09:17 -05:00
|
|
|
resources :terraform, only: [:index]
|
|
|
|
|
2021-11-24 10:14:19 -05:00
|
|
|
namespace :google_cloud do
|
2022-08-15 20:10:02 -04:00
|
|
|
get '/', to: redirect('%{namespace_id}/%{project_id}/-/google_cloud/configuration')
|
|
|
|
|
2022-07-18 14:08:47 -04:00
|
|
|
get '/configuration', to: 'configuration#index'
|
|
|
|
|
2022-03-15 08:07:44 -04:00
|
|
|
resources :revoke_oauth, only: [:create]
|
2021-11-24 10:14:19 -05:00
|
|
|
resources :service_accounts, only: [:index, :create]
|
2022-02-23 13:16:59 -05:00
|
|
|
resources :gcp_regions, only: [:index, :create]
|
2022-01-11 07:14:06 -05:00
|
|
|
|
2022-07-18 14:08:47 -04:00
|
|
|
get '/deployments', to: 'deployments#index'
|
2022-01-11 07:14:06 -05:00
|
|
|
get '/deployments/cloud_run', to: 'deployments#cloud_run'
|
|
|
|
get '/deployments/cloud_storage', to: 'deployments#cloud_storage'
|
2022-07-18 14:08:47 -04:00
|
|
|
|
2022-08-22 14:10:26 -04:00
|
|
|
resources :databases, only: [:index, :create, :new], path_names: { new: 'new/:product' }
|
2021-11-24 10:14:19 -05:00
|
|
|
end
|
|
|
|
|
2019-12-03 04:09:09 -05:00
|
|
|
resources :environments, except: [:destroy] do
|
|
|
|
member do
|
|
|
|
post :stop
|
2019-12-10 02:53:40 -05:00
|
|
|
post :cancel_auto_stop
|
2019-12-03 04:09:09 -05:00
|
|
|
get :terminal
|
|
|
|
get :metrics
|
|
|
|
get :additional_metrics
|
|
|
|
get :metrics_dashboard
|
2019-12-19 13:07:48 -05:00
|
|
|
|
|
|
|
# This route is also defined in gitlab-workhorse. Make sure to update accordingly.
|
2019-12-03 16:06:23 -05:00
|
|
|
get '/terminal.ws/authorize', to: 'environments#terminal_websocket_authorize', format: false
|
2019-12-03 04:09:09 -05:00
|
|
|
|
2020-07-02 20:09:23 -04:00
|
|
|
get '/prometheus/api/v1/*proxy_path', to: 'environments/prometheus_api#prometheus_proxy', as: :prometheus_api
|
2019-12-16 16:08:00 -05:00
|
|
|
|
2020-01-15 13:08:34 -05:00
|
|
|
get '/sample_metrics', to: 'environments/sample_metrics#query'
|
2019-12-03 04:09:09 -05:00
|
|
|
end
|
|
|
|
|
|
|
|
collection do
|
|
|
|
get :metrics, action: :metrics_redirect
|
|
|
|
get :folder, path: 'folders/*id', constraints: { format: /(html|json)/ }
|
|
|
|
get :search
|
|
|
|
end
|
|
|
|
|
|
|
|
resources :deployments, only: [:index] do
|
|
|
|
member do
|
|
|
|
get :metrics
|
|
|
|
get :additional_metrics
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2020-01-09 10:07:42 -05:00
|
|
|
namespace :performance_monitoring do
|
2020-02-26 10:08:56 -05:00
|
|
|
resources :dashboards, only: [:create] do
|
|
|
|
collection do
|
|
|
|
put '/:file_name', to: 'dashboards#update', constraints: { file_name: /.+\.yml/ }
|
|
|
|
end
|
|
|
|
end
|
2020-01-09 10:07:42 -05:00
|
|
|
end
|
|
|
|
|
2020-04-29 02:09:48 -04:00
|
|
|
resources :alert_management, only: [:index] do
|
2022-10-20 20:10:26 -04:00
|
|
|
member do
|
|
|
|
get 'details(/*page)', to: 'alert_management#details', as: 'details'
|
|
|
|
end
|
2020-04-29 02:09:48 -04:00
|
|
|
end
|
2020-04-21 11:21:10 -04:00
|
|
|
|
2021-11-09 07:12:15 -05:00
|
|
|
get 'alert_management/:id', to: 'alert_management#details', as: 'alert_management_alert'
|
|
|
|
|
2021-10-19 08:12:07 -04:00
|
|
|
get 'work_items/*work_items_path' => 'work_items#index', as: :work_items
|
2022-08-16 14:12:52 -04:00
|
|
|
get 'work_items/*work_items_path' => 'work_items#index', as: :work_item
|
2021-09-08 02:10:46 -04:00
|
|
|
|
2020-07-20 14:09:27 -04:00
|
|
|
post 'incidents/integrations/pagerduty', to: 'incident_management/pager_duty_incidents#create'
|
|
|
|
|
2020-07-23 05:09:18 -04:00
|
|
|
resources :incidents, only: [:index]
|
|
|
|
|
2022-09-21 08:13:58 -04:00
|
|
|
namespace :incident_management do
|
|
|
|
resources :timeline_events, only: [] do
|
|
|
|
collection do
|
|
|
|
post :preview_markdown
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2020-10-01 11:10:05 -04:00
|
|
|
get 'issues/incident/:id' => 'incidents#show', as: :issues_incident
|
|
|
|
|
2019-12-18 13:08:04 -05:00
|
|
|
namespace :error_tracking do
|
|
|
|
resources :projects, only: :index
|
|
|
|
end
|
|
|
|
|
2019-12-03 04:09:09 -05:00
|
|
|
resources :error_tracking, only: [:index], controller: :error_tracking do
|
|
|
|
collection do
|
|
|
|
get ':issue_id/details',
|
|
|
|
to: 'error_tracking#details',
|
|
|
|
as: 'details'
|
|
|
|
get ':issue_id/stack_trace',
|
2020-01-06 16:07:43 -05:00
|
|
|
to: 'error_tracking/stack_traces#index',
|
2019-12-03 04:09:09 -05:00
|
|
|
as: 'stack_trace'
|
2020-01-09 16:07:48 -05:00
|
|
|
put ':issue_id',
|
|
|
|
to: 'error_tracking#update',
|
|
|
|
as: 'update'
|
2019-12-03 04:09:09 -05:00
|
|
|
end
|
|
|
|
end
|
2019-12-05 13:07:51 -05:00
|
|
|
|
2020-05-11 05:09:45 -04:00
|
|
|
namespace :design_management do
|
|
|
|
namespace :designs, path: 'designs/:design_id(/:sha)', constraints: -> (params) { params[:sha].nil? || Gitlab::Git.commit_id?(params[:sha]) } do
|
|
|
|
resource :raw_image, only: :show
|
2021-08-13 14:09:11 -04:00
|
|
|
resources :resized_image, only: :show, constraints: -> (params) { ::DesignManagement::DESIGN_IMAGE_SIZES.include?(params[:id]) }
|
2020-05-11 05:09:45 -04:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2020-06-22 08:08:47 -04:00
|
|
|
get '/snippets/:snippet_id/raw/:ref/*path',
|
|
|
|
to: 'snippets/blobs#raw',
|
|
|
|
format: false,
|
|
|
|
as: :snippet_blob_raw,
|
|
|
|
constraints: { snippet_id: /\d+/ }
|
|
|
|
|
2020-03-02 10:08:01 -05:00
|
|
|
draw :issues
|
2020-01-20 19:08:46 -05:00
|
|
|
draw :merge_requests
|
2020-06-02 02:08:01 -04:00
|
|
|
draw :pipelines
|
2020-01-20 19:08:46 -05:00
|
|
|
|
2019-12-24 04:07:44 -05:00
|
|
|
# The wiki and repository routing contains wildcard characters so
|
2019-12-05 13:07:51 -05:00
|
|
|
# its preferable to keep it below all other project routes
|
2021-06-08 05:09:56 -04:00
|
|
|
draw :repository
|
2019-12-05 13:07:51 -05:00
|
|
|
draw :wiki
|
2020-03-13 08:09:22 -04:00
|
|
|
|
|
|
|
namespace :import do
|
2020-06-08 14:08:27 -04:00
|
|
|
resource :jira, only: [:show], controller: :jira
|
2020-03-13 08:09:22 -04:00
|
|
|
end
|
2020-07-23 11:09:28 -04:00
|
|
|
|
2020-10-12 11:08:32 -04:00
|
|
|
resources :snippets, except: [:create, :update, :destroy], concerns: :awardable, constraints: { id: /\d+/ } do
|
2020-07-23 11:09:28 -04:00
|
|
|
member do
|
|
|
|
get :raw
|
|
|
|
post :mark_as_spam
|
|
|
|
end
|
|
|
|
end
|
2020-09-03 17:08:18 -04:00
|
|
|
|
2020-10-07 08:09:12 -04:00
|
|
|
resources :feature_flags, param: :iid
|
2020-09-03 17:08:18 -04:00
|
|
|
resource :feature_flags_client, only: [] do
|
|
|
|
post :reset_token
|
|
|
|
end
|
2021-05-26 08:10:41 -04:00
|
|
|
resources :feature_flags_user_lists, param: :iid, only: [:index, :new, :edit, :show]
|
2020-09-15 23:09:23 -04:00
|
|
|
|
|
|
|
get '/schema/:branch/*filename',
|
|
|
|
to: 'web_ide_schemas#show',
|
|
|
|
format: false,
|
|
|
|
as: :schema
|
2021-03-29 20:09:26 -04:00
|
|
|
|
|
|
|
resources :hooks, only: [:index, :create, :edit, :update, :destroy], constraints: { id: /\d+/ } do
|
|
|
|
member do
|
|
|
|
post :test
|
|
|
|
end
|
|
|
|
|
|
|
|
resources :hook_logs, only: [:show] do
|
|
|
|
member do
|
|
|
|
post :retry
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
2021-11-18 13:14:27 -05:00
|
|
|
|
|
|
|
namespace :integrations do
|
|
|
|
resource :shimo, only: [:show]
|
|
|
|
end
|
2022-01-31 01:12:59 -05:00
|
|
|
|
|
|
|
get :planning_hierarchy
|
2022-02-17 04:15:27 -05:00
|
|
|
|
|
|
|
resources :badges, only: [] do
|
|
|
|
collection do
|
|
|
|
constraints format: /svg/ do
|
|
|
|
get :release
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
2022-07-13 20:08:59 -04:00
|
|
|
|
|
|
|
namespace :harbor do
|
2022-09-01 14:09:55 -04:00
|
|
|
resources :repositories, only: [:index, :show], constraints: { id: %r{[a-zA-Z./:0-9_\-]+} } do
|
2022-07-13 20:08:59 -04:00
|
|
|
resources :artifacts, only: [:index] do
|
|
|
|
resources :tags, only: [:index]
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
2022-10-31 14:09:25 -04:00
|
|
|
|
|
|
|
namespace :ml do
|
|
|
|
resources :experiments, only: [:index, :show], controller: 'experiments'
|
|
|
|
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
|
|
|
|
2019-11-28 13:06:11 -05:00
|
|
|
# All new routes should go under /-/ scope.
|
|
|
|
# Look for scope '-' at the top of the file.
|
|
|
|
|
2020-07-13 14:09:16 -04:00
|
|
|
#
|
|
|
|
# Service Desk
|
|
|
|
#
|
2020-07-23 14:10:06 -04:00
|
|
|
get '/service_desk' => 'service_desk#show', as: :service_desk # rubocop:todo Cop/PutProjectRoutesUnderScope
|
|
|
|
put '/service_desk' => 'service_desk#update', as: :service_desk_refresh # rubocop:todo Cop/PutProjectRoutesUnderScope
|
2020-07-13 14:09:16 -04:00
|
|
|
|
2016-10-05 08:21:27 -04:00
|
|
|
#
|
|
|
|
# Templates
|
|
|
|
#
|
2020-11-10 04:08:45 -05:00
|
|
|
get '/templates/:template_type' => 'templates#index', # rubocop:todo Cop/PutProjectRoutesUnderScope
|
|
|
|
as: :templates,
|
|
|
|
defaults: { format: 'json' },
|
|
|
|
constraints: { template_type: %r{issue|merge_request}, format: 'json' }
|
|
|
|
|
2020-07-23 14:10:06 -04:00
|
|
|
get '/templates/:template_type/:key' => 'templates#show', # rubocop:todo Cop/PutProjectRoutesUnderScope
|
2019-05-23 00:33:11 -04:00
|
|
|
as: :template,
|
|
|
|
defaults: { format: 'json' },
|
|
|
|
constraints: { key: %r{[^/]+}, template_type: %r{issue|merge_request}, format: 'json' }
|
2016-10-05 08:21:27 -04:00
|
|
|
|
2020-07-23 14:10:06 -04:00
|
|
|
get '/description_templates/names/:template_type', # rubocop:todo Cop/PutProjectRoutesUnderScope
|
2019-09-18 10:02:45 -04:00
|
|
|
to: 'templates#names',
|
|
|
|
as: :template_names,
|
|
|
|
defaults: { format: 'json' },
|
|
|
|
constraints: { template_type: %r{issue|merge_request}, format: 'json' }
|
|
|
|
|
2022-07-25 11:10:30 -04:00
|
|
|
resource :pages, only: [:new, :show, :update, :destroy] do # rubocop: disable Cop/PutProjectRoutesUnderScope
|
2020-04-23 11:09:55 -04:00
|
|
|
resources :domains, except: :index, controller: 'pages_domains', constraints: { id: %r{[^/]+} } do # rubocop: disable Cop/PutProjectRoutesUnderScope
|
2018-02-06 08:25:46 -05:00
|
|
|
member do
|
2020-07-23 14:10:06 -04:00
|
|
|
post :verify # rubocop:todo Cop/PutProjectRoutesUnderScope
|
|
|
|
post :retry_auto_ssl # rubocop:todo Cop/PutProjectRoutesUnderScope
|
|
|
|
delete :clean_certificate # rubocop:todo Cop/PutProjectRoutesUnderScope
|
2018-02-06 08:25:46 -05:00
|
|
|
end
|
|
|
|
end
|
2016-02-09 12:06:55 -05:00
|
|
|
end
|
|
|
|
|
2017-05-10 05:25:30 -04:00
|
|
|
namespace :prometheus do
|
2022-06-01 23:08:40 -04:00
|
|
|
resources :alerts, constraints: { id: /\d+/ }, only: [] do # rubocop: disable Cop/PutProjectRoutesUnderScope
|
2020-07-23 14:10:06 -04:00
|
|
|
post :notify, on: :collection # rubocop:todo Cop/PutProjectRoutesUnderScope
|
2020-03-23 08:09:47 -04:00
|
|
|
member do
|
2020-07-23 14:10:06 -04:00
|
|
|
get :metrics_dashboard # rubocop:todo Cop/PutProjectRoutesUnderScope
|
2020-03-23 08:09:47 -04:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2020-04-23 11:09:55 -04:00
|
|
|
resources :metrics, constraints: { id: %r{[^\/]+} }, only: [:index, :new, :create, :edit, :update, :destroy] do # rubocop: disable Cop/PutProjectRoutesUnderScope
|
2020-07-23 14:10:06 -04:00
|
|
|
get :active_common, on: :collection # rubocop:todo Cop/PutProjectRoutesUnderScope
|
|
|
|
post :validate_query, on: :collection # rubocop:todo Cop/PutProjectRoutesUnderScope
|
2019-11-08 10:06:21 -05:00
|
|
|
end
|
2017-05-10 05:25:30 -04:00
|
|
|
end
|
|
|
|
|
2020-07-23 14:10:06 -04:00
|
|
|
post 'alerts/notify', to: 'alerting/notifications#create' # rubocop:todo Cop/PutProjectRoutesUnderScope
|
2020-10-20 23:08:45 -04:00
|
|
|
post 'alerts/notify/:name/:endpoint_identifier', # rubocop:todo Cop/PutProjectRoutesUnderScope
|
|
|
|
to: 'alerting/notifications#create',
|
|
|
|
as: :alert_http_integration,
|
|
|
|
constraints: { endpoint_identifier: /[A-Za-z0-9]+/ }
|
2020-02-12 10:09:37 -05:00
|
|
|
|
2017-07-06 10:55:48 -04:00
|
|
|
draw :legacy_builds
|
2017-05-18 07:32:22 -04:00
|
|
|
|
2020-04-23 11:09:55 -04:00
|
|
|
resources :container_registry, only: [:index, :destroy, :show], # rubocop: disable Cop/PutProjectRoutesUnderScope
|
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
|
2020-04-23 11:09:55 -04:00
|
|
|
resources :repository, only: [] do # rubocop: disable Cop/PutProjectRoutesUnderScope
|
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
|
2020-04-23 11:09:55 -04:00
|
|
|
resources :tags, only: [:index, :destroy], # rubocop: disable Cop/PutProjectRoutesUnderScope
|
2019-07-18 01:24:40 -04:00
|
|
|
constraints: { id: Gitlab::Regex.container_registry_tag_regex } do
|
|
|
|
collection do
|
2020-07-23 14:10:06 -04:00
|
|
|
delete :bulk_destroy # rubocop:todo Cop/PutProjectRoutesUnderScope
|
2019-07-18 01:24:40 -04:00
|
|
|
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
|
|
|
|
2020-04-23 11:09:55 -04:00
|
|
|
resources :notes, only: [:create, :destroy, :update], concerns: :awardable, constraints: { id: /\d+/ } do # rubocop: disable Cop/PutProjectRoutesUnderScope
|
2016-10-05 08:21:27 -04:00
|
|
|
member do
|
2020-07-23 14:10:06 -04:00
|
|
|
delete :delete_attachment # rubocop:todo Cop/PutProjectRoutesUnderScope
|
|
|
|
post :resolve # rubocop:todo Cop/PutProjectRoutesUnderScope
|
|
|
|
delete :resolve, action: :unresolve # rubocop:todo Cop/PutProjectRoutesUnderScope
|
2021-11-11 07:10:41 -05:00
|
|
|
get :outdated_line_change # rubocop:todo Cop/PutProjectRoutesUnderScope
|
2016-10-05 08:21:27 -04:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2020-07-23 14:10:06 -04:00
|
|
|
get 'noteable/:target_type/:target_id/notes' => 'notes#index', as: 'noteable_notes' # rubocop:todo Cop/PutProjectRoutesUnderScope
|
2017-02-07 12:02:02 -05:00
|
|
|
|
2020-04-23 11:09:55 -04:00
|
|
|
resources :todos, only: [:create] # rubocop: disable Cop/PutProjectRoutesUnderScope
|
2016-10-05 08:21:27 -04:00
|
|
|
|
2020-04-23 11:09:55 -04:00
|
|
|
resources :uploads, only: [:create] do # rubocop: disable Cop/PutProjectRoutesUnderScope
|
2016-10-05 08:21:27 -04:00
|
|
|
collection do
|
2020-07-23 14:10:06 -04:00
|
|
|
get ":secret/:filename", action: :show, as: :show, constraints: { filename: %r{[^/]+} }, format: false, defaults: { format: nil } # rubocop:todo Cop/PutProjectRoutesUnderScope
|
|
|
|
post :authorize # rubocop:todo Cop/PutProjectRoutesUnderScope
|
2016-10-05 08:21:27 -04:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2020-04-23 11:09:55 -04:00
|
|
|
resources :runner_projects, only: [:create, :destroy] # rubocop: disable Cop/PutProjectRoutesUnderScope
|
|
|
|
resources :badges, only: [:index] do # rubocop: disable Cop/PutProjectRoutesUnderScope
|
2016-10-05 08:21:27 -04:00
|
|
|
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
|
2020-07-23 14:10:06 -04:00
|
|
|
get :pipeline # rubocop:todo Cop/PutProjectRoutesUnderScope
|
|
|
|
get :coverage # rubocop:todo Cop/PutProjectRoutesUnderScope
|
2016-10-05 08:21:27 -04:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
2019-05-20 05:59:01 -04:00
|
|
|
|
2021-06-21 08:07:45 -04:00
|
|
|
scope :service_ping, controller: :service_ping do
|
2020-07-23 14:10:06 -04:00
|
|
|
post :web_ide_clientside_preview # rubocop:todo Cop/PutProjectRoutesUnderScope
|
2022-01-25 16:15:18 -05:00
|
|
|
post :web_ide_clientside_preview_success # rubocop:todo Cop/PutProjectRoutesUnderScope
|
2020-07-23 14:10:06 -04:00
|
|
|
post :web_ide_pipelines_count # rubocop:todo Cop/PutProjectRoutesUnderScope
|
2019-11-06 04:06:23 -05:00
|
|
|
end
|
|
|
|
|
2020-05-25 11:07:58 -04:00
|
|
|
resources :web_ide_terminals, path: :ide_terminals, only: [:create, :show], constraints: { id: /\d+/, format: :json } do # rubocop: disable Cop/PutProjectRoutesUnderScope
|
|
|
|
member do
|
2020-07-23 14:10:06 -04:00
|
|
|
post :cancel # rubocop:todo Cop/PutProjectRoutesUnderScope
|
|
|
|
post :retry # rubocop:todo Cop/PutProjectRoutesUnderScope
|
2020-05-25 11:07:58 -04:00
|
|
|
end
|
|
|
|
|
|
|
|
collection do
|
2020-07-23 14:10:06 -04:00
|
|
|
post :check_config # rubocop:todo Cop/PutProjectRoutesUnderScope
|
2020-05-25 11:07:58 -04:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2020-01-27 07:08:35 -05:00
|
|
|
# Deprecated unscoped routing.
|
|
|
|
scope as: 'deprecated' do
|
2020-07-23 11:09:28 -04:00
|
|
|
# Issue https://gitlab.com/gitlab-org/gitlab/issues/118849
|
2021-06-03 23:10:08 -04:00
|
|
|
draw :repository_deprecated
|
2020-07-23 11:09:28 -04:00
|
|
|
|
2021-06-01 11:09:52 -04:00
|
|
|
# Issue https://gitlab.com/gitlab-org/gitlab/-/issues/223719
|
|
|
|
# rubocop: disable Cop/PutProjectRoutesUnderScope
|
|
|
|
get '/snippets/:id/raw',
|
|
|
|
to: 'snippets#raw',
|
|
|
|
format: false,
|
|
|
|
constraints: { id: /\d+/ }
|
|
|
|
# rubocop: enable Cop/PutProjectRoutesUnderScope
|
2019-12-24 04:07:44 -05:00
|
|
|
end
|
|
|
|
|
2019-11-28 13:06:11 -05:00
|
|
|
# All new routes should go under /-/ scope.
|
|
|
|
# Look for scope '-' at the top of the file.
|
|
|
|
|
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.
|
2021-03-29 20:09:26 -04:00
|
|
|
Gitlab::Routing.redirect_legacy_paths(self, :mirror, :tags, :hooks,
|
2021-05-20 08:10:26 -04:00
|
|
|
:commits, :commit, :find_file, :files, :compare,
|
2019-12-03 04:09:09 -05:00
|
|
|
:cycle_analytics, :mattermost, :variables, :triggers,
|
2020-04-21 11:21:10 -04:00
|
|
|
:environments, :protected_environments, :error_tracking, :alert_management,
|
2020-02-06 10:09:11 -05:00
|
|
|
:serverless, :clusters, :audit_events, :wikis, :merge_requests,
|
2021-03-31 14:09:19 -04:00
|
|
|
:vulnerability_feedback, :security, :dependencies, :issues,
|
2021-06-28 11:08:03 -04:00
|
|
|
:pipelines, :pipeline_schedules, :runners, :snippets)
|
2016-10-05 08:21:27 -04:00
|
|
|
end
|
2019-11-28 13:06:11 -05:00
|
|
|
# rubocop: disable Cop/PutProjectRoutesUnderScope
|
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
|
2020-10-19 02:09:08 -04:00
|
|
|
get :unfoldered_environment_names
|
2016-11-14 09:55:31 -05:00
|
|
|
end
|
|
|
|
end
|
2019-11-28 13:06:11 -05:00
|
|
|
# rubocop: enable Cop/PutProjectRoutesUnderScope
|
2016-10-05 08:21:27 -04:00
|
|
|
end
|
|
|
|
end
|
2020-09-01 08:11:01 -04:00
|
|
|
|
|
|
|
# It's under /-/jira scope but cop is only checking /-/
|
|
|
|
# rubocop: disable Cop/PutProjectRoutesUnderScope
|
|
|
|
scope path: '(/-/jira)', constraints: ::Constraints::JiraEncodedUrlConstrainer.new, as: :jira do
|
|
|
|
scope path: '*namespace_id/:project_id',
|
|
|
|
namespace_id: Gitlab::Jira::Dvcs::ENCODED_ROUTE_REGEX,
|
|
|
|
project_id: Gitlab::Jira::Dvcs::ENCODED_ROUTE_REGEX do
|
|
|
|
get '/', to: redirect { |params, req|
|
|
|
|
::Gitlab::Jira::Dvcs.restore_full_path(
|
|
|
|
namespace: params[:namespace_id],
|
|
|
|
project: params[:project_id]
|
|
|
|
)
|
|
|
|
}
|
|
|
|
|
|
|
|
get 'commit/:id', constraints: { id: /\h{7,40}/ }, to: redirect { |params, req|
|
|
|
|
project_full_path = ::Gitlab::Jira::Dvcs.restore_full_path(
|
|
|
|
namespace: params[:namespace_id],
|
|
|
|
project: params[:project_id]
|
|
|
|
)
|
|
|
|
|
|
|
|
"/#{project_full_path}/commit/#{params[:id]}"
|
|
|
|
}
|
|
|
|
|
|
|
|
get 'tree/*id', as: nil, to: redirect { |params, req|
|
|
|
|
project_full_path = ::Gitlab::Jira::Dvcs.restore_full_path(
|
|
|
|
namespace: params[:namespace_id],
|
|
|
|
project: params[:project_id]
|
|
|
|
)
|
|
|
|
|
|
|
|
"/#{project_full_path}/-/tree/#{params[:id]}"
|
|
|
|
}
|
|
|
|
end
|
|
|
|
end
|
|
|
|
# rubocop: enable Cop/PutProjectRoutesUnderScope
|