12216: Allow Content-Type header via CORS.
[arvados.git] / apps / workbench / config / routes.rb
1 # Copyright (C) The Arvados Authors. All rights reserved.
2 #
3 # SPDX-License-Identifier: AGPL-3.0
4
5 ArvadosWorkbench::Application.routes.draw do
6   themes_for_rails
7
8   resources :keep_disks
9   resources :keep_services
10   resources :user_agreements do
11     post 'sign', on: :collection
12     get 'signatures', on: :collection
13   end
14   get '/user_agreements/signatures' => 'user_agreements#signatures'
15   get "users/setup_popup" => 'users#setup_popup', :as => :setup_user_popup
16   get "users/setup" => 'users#setup', :as => :setup_user
17   get "report_issue_popup" => 'actions#report_issue_popup', :as => :report_issue_popup
18   post "report_issue" => 'actions#report_issue', :as => :report_issue
19   get "star" => 'actions#star', :as => :star
20   get "all_processes" => 'work_units#index', :as => :all_processes
21   get "choose_work_unit_templates" => 'work_unit_templates#choose', :as => :choose_work_unit_templates
22   resources :work_units do
23     post 'show_child_component', :on => :member
24   end
25   resources :nodes
26   resources :humans
27   resources :traits
28   resources :api_client_authorizations
29   resources :virtual_machines
30   resources :containers
31   resources :container_requests do
32     post 'cancel', :on => :member
33     post 'copy', on: :member
34   end
35   get '/virtual_machines/:id/webshell/:login' => 'virtual_machines#webshell', :as => :webshell_virtual_machine
36   resources :authorized_keys
37   resources :job_tasks
38   resources :jobs do
39     post 'cancel', :on => :member
40     get 'logs', :on => :member
41   end
42   resources :repositories do
43     post 'share_with', on: :member
44   end
45   # {format: false} prevents rails from treating "foo.png" as foo?format=png
46   get '/repositories/:id/tree/:commit' => 'repositories#show_tree'
47   get '/repositories/:id/tree/:commit/*path' => 'repositories#show_tree', as: :show_repository_tree, format: false
48   get '/repositories/:id/blob/:commit/*path' => 'repositories#show_blob', as: :show_repository_blob, format: false
49   get '/repositories/:id/commit/:commit' => 'repositories#show_commit', as: :show_repository_commit
50   resources :sessions
51   match '/logout' => 'sessions#destroy', via: [:get, :post]
52   get '/logged_out' => 'sessions#logged_out'
53   resources :users do
54     get 'choose', :on => :collection
55     get 'home', :on => :member
56     get 'welcome', :on => :collection
57     get 'inactive', :on => :collection
58     get 'activity', :on => :collection
59     get 'storage', :on => :collection
60     post 'sudo', :on => :member
61     post 'unsetup', :on => :member
62     get 'setup_popup', :on => :member
63     get 'profile', :on => :member
64     post 'request_shell_access', :on => :member
65     get 'virtual_machines', :on => :member
66     get 'repositories', :on => :member
67     get 'ssh_keys', :on => :member
68   end
69   get '/current_token' => 'users#current_token'
70   get "/add_ssh_key_popup" => 'users#add_ssh_key_popup', :as => :add_ssh_key_popup
71   get "/add_ssh_key" => 'users#add_ssh_key', :as => :add_ssh_key
72   resources :logs
73   resources :factory_jobs
74   resources :uploaded_datasets
75   resources :groups do
76     get 'choose', on: :collection
77   end
78   resources :specimens
79   resources :pipeline_templates do
80     get 'choose', on: :collection
81   end
82   resources :pipeline_instances do
83     post 'cancel', :on => :member
84     get 'compare', on: :collection
85     post 'copy', on: :member
86   end
87   resources :links
88   get '/collections/graph' => 'collections#graph'
89   resources :collections do
90     post 'set_persistent', on: :member
91     get 'sharing_popup', :on => :member
92     post 'share', :on => :member
93     post 'unshare', :on => :member
94     get 'choose', on: :collection
95     post 'remove_selected_files', on: :member
96     get 'tags', on: :member
97     post 'save_tags', on: :member
98     get 'multisite', on: :collection
99   end
100   get('/collections/download/:uuid/:reader_token/*file' => 'collections#show_file',
101       format: false)
102   get '/collections/download/:uuid/:reader_token' => 'collections#show_file_links'
103   get '/collections/:uuid/*file' => 'collections#show_file', :format => false
104   resources :projects do
105     match 'remove/:item_uuid', on: :member, via: :delete, action: :remove_item
106     match 'remove_items', on: :member, via: :delete, action: :remove_items
107     get 'choose', on: :collection
108     post 'share_with', on: :member
109     get 'tab_counts', on: :member
110     get 'public', on: :collection
111   end
112
113   resources :search do
114     get 'choose', :on => :collection
115   end
116
117   resources :workflows
118
119   get "trash" => 'trash_items#index', :as => :trash
120   resources :trash_items do
121     post 'untrash_items', on: :collection
122   end
123
124   post 'actions' => 'actions#post'
125   get 'actions' => 'actions#show'
126   get 'websockets' => 'websocket#index'
127   post "combine_selected" => 'actions#combine_selected_files_into_collection'
128
129   root :to => 'projects#index'
130
131   match '/_health/ping', to: 'healthcheck#ping', via: [:get]
132
133   get '/tests/mithril', to: 'tests#mithril'
134
135   get '/status', to: 'status#status'
136
137   # Send unroutable requests to an arbitrary controller
138   # (ends up at ApplicationController#render_not_found)
139   match '*a', to: 'links#render_not_found', via: [:get, :post]
140 end