1341 lines
77 KiB
Ruby
1341 lines
77 KiB
Ruby
# Even on Rails 2.3, we're using Rails 3 style routes.
|
|
#
|
|
# You should have plenty of examples in here for anything you're trying to do,
|
|
# but if you want a full primer this is a good one:
|
|
# http://blog.engineyard.com/2010/the-lowdown-on-routes-in-rails-3
|
|
#
|
|
# Don't try anything too fancy, FakeRails3Routes doesn't support some of the
|
|
# more advanced Rails 3 routing features, since in the background it's just
|
|
# calling into the Rails 2 routing system.
|
|
FakeRails3Routes.draw do
|
|
resources :submission_comments, :only => :destroy
|
|
|
|
match 'inbox' => 'context#mark_inbox_as_read', :as => :mark_inbox_as_read, :via => :delete
|
|
match 'inbox' => 'context#inbox', :as => :inbox
|
|
match 'inbox/:id' => 'context#destroy_inbox_item', :as => :destroy_inbox_item, :via => :delete
|
|
match 'inbox/:id' => 'context#inbox_item', :as => :inbox_item
|
|
|
|
match 'conversations/discussion_replies' => 'context#discussion_replies', :as => :discussion_replies
|
|
match 'conversations/unread' => 'conversations#index', :as => :conversations_unread, :redirect_scope => 'unread'
|
|
match 'conversations/starred' => 'conversations#index', :as => :conversations_starred, :redirect_scope => 'starred'
|
|
match 'conversations/sent' => 'conversations#index', :as => :conversations_sent, :redirect_scope => 'sent'
|
|
match 'conversations/archived' => 'conversations#index', :as => :conversations_archived, :redirect_scope => 'archived'
|
|
match 'conversations/find_recipients' => 'search#recipients'
|
|
match '/conversations/beta' => 'conversations#index_new'
|
|
|
|
match 'search/recipients' => 'search#recipients', :as => :search_recipients
|
|
match 'conversations/mark_all_as_read' => 'conversations#mark_all_as_read', :as => :conversations_mark_all_as_read, :via => :post
|
|
match 'conversations/watched_intro' => 'conversations#watched_intro', :as => :conversations_watched_intro, :via => :post
|
|
match 'conversations/batches' => 'conversations#batches', :as => :conversation_batches
|
|
resources :conversations, :only => [:index, :show, :update, :create, :destroy] do
|
|
match 'add_recipients' => 'conversations#add_recipients', :as => :add_recipients, :via => :post
|
|
match 'add_message' => 'conversations#add_message', :as => :add_message, :via => :post
|
|
match 'remove_messages' => 'conversations#remove_messages', :as => :remove_messages, :via => :post
|
|
end
|
|
|
|
# So, this will look like:
|
|
# http://instructure.com/register/5R32s9iqwLK75Jbbj0
|
|
match 'register/:nonce' => 'communication_channels#confirm', :as => :registration_confirmation
|
|
# deprecated
|
|
match 'pseudonyms/:id/register/:nonce' => 'communication_channels#confirm', :as => :registration_confirmation_deprecated
|
|
match 'confirmations/:user_id/re_send/:id' => 'communication_channels#re_send_confirmation', :as => :re_send_confirmation, :id => nil
|
|
match 'forgot_password' => 'pseudonyms#forgot_password', :as => :forgot_password
|
|
match 'pseudonyms/:pseudonym_id/change_password/:nonce' => 'pseudonyms#confirm_change_password', :as => :confirm_change_password, :via => :get
|
|
match 'pseudonyms/:pseudonym_id/change_password/:nonce' => 'pseudonyms#change_password', :as => :change_password, :via => :post
|
|
|
|
# callback urls for oauth authorization processes
|
|
match 'oauth' => 'users#oauth', :as => :oauth
|
|
match 'oauth_success' => 'users#oauth_success', :as => :oauth_success
|
|
|
|
match 'mr/:id' => 'info#message_redirect', :as => :message_redirect
|
|
match 'help_links' => 'info#help_links', :as => :help_links
|
|
|
|
concern :question_banks do
|
|
resources :question_banks do
|
|
match 'bookmark' => 'question_banks#bookmark', :as => :bookmark
|
|
match 'reorder' => 'question_banks#reorder', :as => :reorder
|
|
match 'questions' => 'question_banks#questions', :as => :questions
|
|
match 'move_questions' => 'question_banks#move_questions', :as => :move_questions
|
|
resources :assessment_questions do
|
|
match 'move' => 'assessment_questions#move', :as => :move_question
|
|
end
|
|
end
|
|
end
|
|
|
|
concern :groups do
|
|
resources :groups
|
|
resources :group_categories, :only => [:create, :update, :destroy]
|
|
match 'group_unassigned_members' => 'groups#unassigned_members', :as => :group_unassigned_members, :via => :get
|
|
match 'group_unassigned_members.:format' => 'groups#unassigned_members', :as => :group_unassigned_members, :via => :get
|
|
match 'group_assign_unassigned_members' => 'groups#assign_unassigned_members', :as => :group_assign_unassigned_members, :via => :post
|
|
end
|
|
|
|
concern :files do
|
|
resources :files do
|
|
match 'inline' => 'files#text_show', :as => :text_inline
|
|
match 'download' => 'files#show', :as => :download, :download => '1'
|
|
match 'download.:type' => 'files#show', :as => :typed_download, :download => '1'
|
|
match 'preview' => 'files#show', :as => :preview, :preview => '1'
|
|
match 'inline_view' => 'files#show', :as => :inline_view, :inline => '1'
|
|
match 'contents' => 'files#attachment_content', :as => :attachment_content
|
|
match ':file_path' => 'files#show_relative', :as => :relative_path, :file_path => /.+/
|
|
collection do
|
|
get :quota
|
|
post :reorder
|
|
end
|
|
end
|
|
end
|
|
|
|
concern :file_images do
|
|
match 'images' => 'files#images', :as => :images
|
|
end
|
|
|
|
concern :relative_files do
|
|
match 'file_contents/:file_path' => 'files#show_relative', :as => :relative_file_path, :file_path => /.+/
|
|
end
|
|
|
|
concern :folders do
|
|
resources :folders do
|
|
match 'download' => 'folders#download', :as => :download
|
|
end
|
|
end
|
|
|
|
concern :media do
|
|
match 'media_download' => 'users#media_download', :as => :media_download
|
|
match 'media_download.:type' => 'users#media_download', :as => :typed_media_download
|
|
end
|
|
|
|
concern :users do
|
|
match 'users' => 'context#roster', :as => :users
|
|
match 'user_services' => 'context#roster_user_services', :as => :user_services
|
|
match 'users/:user_id/usage' => 'context#roster_user_usage', :as => :user_usage
|
|
match 'users/:id' => 'context#roster_user', :as => :user, :via => :get
|
|
end
|
|
|
|
concern :chats do
|
|
resources :chats
|
|
match 'chat' => 'context#chat', :as => :chat
|
|
match 'tinychat.html' => 'context#chat_iframe', :as => :tinychat
|
|
match 'chat.:format' => 'context#chat', :as => :formatted_chat
|
|
end
|
|
|
|
concern :announcements do
|
|
resources :announcements
|
|
match 'announcements/external_feeds' => 'announcements#create_external_feed', :as => :announcements_external_feeds, :via => :post
|
|
match 'announcements/external_feeds/:id' => 'announcements#destroy_external_feed', :as => :announcements_external_feed, :via => :delete
|
|
end
|
|
|
|
concern :discussions do
|
|
resources :discussion_topics, :only => [:index, :new, :show, :edit, :destroy]
|
|
match 'discussion_topics/:id/:extras' => 'discussion_topics#show', :as => :map, :extras => /.+/
|
|
resources :discussion_entries
|
|
end
|
|
|
|
concern :wikis do
|
|
####
|
|
## Leaving these routes here for when we need them later :)
|
|
##
|
|
## Aside from the /wiki route itself, all new routes will be /pages. The /wiki route will be reused to redirect
|
|
## the user to the wiki front page, if configured, or the wiki page list otherwise.
|
|
####
|
|
# match 'wiki' => 'wiki_pages#front_page', :via => :get, :as => :wiki
|
|
|
|
####
|
|
## Placing these routes above the /wiki routes below will cause the helper functions to generate urls and paths
|
|
## pointing to /pages rather than the legacy /wiki.
|
|
####
|
|
# resources :wiki_pages, :path => :pages do
|
|
# match 'revisions/latest' => 'wiki_page_revisions#latest_version_number', :as => :latest_version_number
|
|
# resources :wiki_page_revisions, :as => "revisions"
|
|
# resources :wiki_page_comments, :as => "comments"
|
|
# end
|
|
#
|
|
####
|
|
## We'll just do specific routes below until we can swap /pages and /wiki completely.
|
|
####
|
|
get 'pages' => 'wiki_pages#pages_index'
|
|
get 'pages/:wiki_page_id' => 'wiki_pages#show_page', :wiki_page_id => /[^\/]+/, :as => :named_page
|
|
|
|
resources :wiki_pages, :path => :wiki do
|
|
match 'revisions/latest' => 'wiki_page_revisions#latest_version_number', :as => :latest_version_number
|
|
resources :wiki_page_revisions, :path => :revisions
|
|
resources :wiki_page_comments, :path => :comments
|
|
end
|
|
|
|
####
|
|
## This will cause the helper functions to generate /pages urls, but will still allow /wiki routes to work properly
|
|
####
|
|
#match 'pages/:id' => 'wiki_pages#show', :id => /[^\/]+/, :as => :named_wiki_page
|
|
|
|
match 'wiki/:id' => 'wiki_pages#show', :as => :named_wiki_page, :id => /[^\/]+/
|
|
end
|
|
|
|
concern :conferences do
|
|
resources :conferences do
|
|
match 'join' => 'conferences#join', :as => :join
|
|
match 'close' => 'conferences#close', :as => :close
|
|
match 'settings' => 'conferences#settings', :as => :settings
|
|
end
|
|
end
|
|
|
|
concern :zip_file_imports do
|
|
resources :zip_file_imports, :only => [:new, :create, :show]
|
|
match 'imports/files' => 'content_imports#files', :as => :import_files
|
|
end
|
|
|
|
# There are a lot of resources that are all scoped to the course level
|
|
# (assignments, files, wiki pages, user lists, forums, etc.). Many of
|
|
# these resources also apply to groups and individual users. We call
|
|
# courses, users, groups, or even accounts in this setting, "contexts".
|
|
# There are some helper methods like the before_filter :get_context in application_controller
|
|
# and the application_helper method :context_url to make retrieving
|
|
# these contexts, and also generating context-specific urls, easier.
|
|
resources :courses do
|
|
# DEPRECATED
|
|
match 'self_enrollment/:self_enrollment' => 'courses#self_enrollment', :as => :self_enrollment, :via => :get
|
|
match 'self_unenrollment/:self_unenrollment' => 'courses#self_unenrollment', :as => :self_unenrollment, :via => :post
|
|
match 'restore' => 'courses#restore', :as => :restore
|
|
match 'backup' => 'courses#backup', :as => :backup
|
|
match 'unconclude' => 'courses#unconclude', :as => :unconclude
|
|
match 'students' => 'courses#students', :as => :students
|
|
match 'enrollment_invitation' => 'courses#enrollment_invitation', :as => :enrollment_invitation
|
|
# this needs to come before the users concern, or users/:id will preempt it
|
|
match 'users/prior' => 'context#prior_users', :as => :prior_users
|
|
concerns :users
|
|
match 'statistics' => 'courses#statistics', :as => :statistics
|
|
match 'unenroll/:id' => 'courses#unenroll_user', :as => :unenroll, :via => :delete
|
|
match 'move_enrollment/:id' => 'courses#move_enrollment', :as => :move_enrollment, :via => :post
|
|
match 'unenroll/:id.:format' => 'courses#unenroll_user', :as => :formatted_unenroll, :via => :delete
|
|
match 'limit_user_grading/:id' => 'courses#limit_user', :as => :limit_user_grading, :via => :post
|
|
match 'conclude_user/:id' => 'courses#conclude_user', :as => :conclude_user_enrollment, :via => :delete
|
|
match 'unconclude_user/:id' => 'courses#unconclude_user', :as => :unconclude_user_enrollment, :via => :post
|
|
resources :sections, :except => ["index", "edit", "new"] do
|
|
match 'crosslist/confirm/:new_course_id' => 'sections#crosslist_check', :as => :confirm_crosslist
|
|
match 'crosslist' => 'sections#crosslist', :as => :crosslist, :via => :post
|
|
match 'crosslist' => 'sections#uncrosslist', :as => :uncrosslist, :via => :delete
|
|
end
|
|
|
|
match 'undelete' => 'context#undelete_index', :as => :undelete_items
|
|
match 'undelete/:asset_string' => 'context#undelete_item', :as => :undelete_item
|
|
match 'settings' => 'courses#settings', :as => :settings
|
|
match 'details' => 'courses#settings', :as => :details
|
|
match 're_send_invitations' => 'courses#re_send_invitations', :as => :re_send_invitations, :via => :post
|
|
match 'enroll_users' => 'courses#enroll_users', :as => :enroll_users
|
|
match 'link_enrollment' => 'courses#link_enrollment', :as => :link_enrollment
|
|
match 'update_nav' => 'courses#update_nav', :as => :update_nav
|
|
match 'enroll_users.:format' => 'courses#enroll_users', :as => :formatted_enroll_users
|
|
resource :gradebook do
|
|
match 'submissions_upload/:assignment_id' => 'gradebooks#submissions_zip_upload', :as => :submissions_upload, :via => :post
|
|
collection do
|
|
get :change_gradebook_version
|
|
get :blank_submission
|
|
get :speed_grader
|
|
get :history
|
|
post :update_submission
|
|
end
|
|
end
|
|
|
|
resource :gradebook2, :controller => :gradebook2
|
|
match 'attendance' => 'gradebooks#attendance', :as => :attendance
|
|
match 'attendance/:user_id' => 'gradebooks#attendance', :as => :attendance_user
|
|
concerns :zip_file_imports
|
|
# DEPRECATED old migration emails pointed the user to this url, leave so the controller can redirect
|
|
match 'imports/list' => 'content_imports#index', :as => :import_list
|
|
# DEPRECATED
|
|
match 'imports' => 'content_imports#intro', :as => :imports
|
|
resource :gradebook_upload
|
|
match 'grades' => 'gradebooks#grade_summary', :as => :grades, :id => nil
|
|
match 'grading_rubrics' => 'gradebooks#grading_rubrics', :as => :grading_rubrics
|
|
match 'grades/:id' => 'gradebooks#grade_summary', :as => :student_grades
|
|
concerns :announcements
|
|
concerns :chats
|
|
match 'calendar' => 'calendars#show', :as => :old_calendar
|
|
match 'locks' => 'courses#locks', :as => :locks
|
|
concerns :discussions
|
|
resources :assignments do
|
|
resources :submissions do
|
|
match 'turnitin/resubmit' => 'submissions#resubmit_to_turnitin', :as => :resubmit_to_turnitin, :via => :post
|
|
match 'turnitin/:asset_string' => 'submissions#turnitin_report', :as => :turnitin_report
|
|
end
|
|
match 'rubric' => 'assignments#rubric', :as => :rubric
|
|
resource :rubric_association, :path => :rubric do
|
|
resources :rubric_assessments, :path => :assessments
|
|
end
|
|
|
|
match 'peer_reviews' => 'assignments#peer_reviews', :as => :peer_reviews, :via => :get
|
|
match 'assign_peer_reviews' => 'assignments#assign_peer_reviews', :as => :assign_peer_reviews, :via => :post
|
|
match 'peer_reviews/:id' => 'assignments#delete_peer_review', :as => :delete_peer_review, :via => :delete
|
|
match 'peer_reviews/:id' => 'assignments#remind_peer_review', :as => :remind_peer_review, :via => :post
|
|
match 'peer_reviews/users/:reviewer_id' => 'assignments#assign_peer_review', :as => :assign_peer_review, :via => :post
|
|
match 'mute' => 'assignments#toggle_mute', :as => :mute, :via => :put
|
|
|
|
collection do
|
|
get :syllabus
|
|
get :submissions
|
|
end
|
|
|
|
member do
|
|
get :list_google_docs
|
|
end
|
|
end
|
|
|
|
resources :grading_standards, :only => ["index", "create", "update", "destroy"]
|
|
resources :assignment_groups do
|
|
match 'reorder' => 'assignment_groups#reorder_assignments', :as => :reorder_assignments
|
|
collection do
|
|
post :reorder
|
|
end
|
|
end
|
|
|
|
match 'external_tools/sessionless_launch' => 'external_tools#sessionless_launch', :as => :external_tools_sessionless_launch
|
|
resources :external_tools do
|
|
match 'resource_selection' => 'external_tools#resource_selection', :as => :resource_selection
|
|
match 'homework_submission' => 'external_tools#homework_submission', :as => :homework_submission
|
|
match 'finished' => 'external_tools#finished', :as => :finished
|
|
collection do
|
|
get :retrieve
|
|
get :homework_submissions
|
|
end
|
|
end
|
|
|
|
resources :submissions
|
|
resources :calendar_events
|
|
|
|
concerns :files, :file_images, :relative_files, :folders
|
|
concerns :groups
|
|
concerns :wikis
|
|
concerns :conferences
|
|
concerns :question_banks
|
|
|
|
match 'quizzes/publish' => 'quizzes#publish', :as => :quizzes_publish
|
|
resources :quizzes do
|
|
match 'managed_quiz_data' => 'quizzes#managed_quiz_data', :as => :managed_quiz_data
|
|
match 'reorder' => 'quizzes#reorder', :as => :reorder
|
|
match 'history' => 'quizzes#history', :as => :history
|
|
match 'statistics' => 'quizzes#statistics', :as => :statistics
|
|
match 'read_only' => 'quizzes#read_only', :as => :read_only
|
|
match 'filters' => 'quizzes#filters', :as => :filters
|
|
resources :quiz_submissions, :path => :submissions do
|
|
collection do
|
|
put :backup
|
|
end
|
|
member do
|
|
post :record_answer
|
|
end
|
|
end
|
|
|
|
match 'extensions/:user_id' => 'quiz_submissions#extensions', :as => :extensions, :via => :post
|
|
resources :quiz_questions, :path => :questions, :only => ["create", "update", "destroy", "show"]
|
|
resources :quiz_groups, :path => :groups, :only => ["create", "update", "destroy"] do
|
|
match 'reorder' => 'quiz_groups#reorder', :as => :reorder
|
|
end
|
|
|
|
match 'take' => 'quizzes#show', :as => :take, :take => '1'
|
|
match 'take/questions/:question_id' => 'quizzes#show', :as => :question, :take => '1'
|
|
match 'moderate' => 'quizzes#moderate', :as => :moderate
|
|
match 'lockdown_browser_required' => 'quizzes#lockdown_browser_required', :as => :lockdown_browser_required
|
|
end
|
|
|
|
resources :collaborations
|
|
resources :gradebook_uploads
|
|
resources :rubrics
|
|
resources :rubric_associations do
|
|
match 'invite' => 'rubric_assessments#invite', :as => :invite_assessor
|
|
match 'remind/:assessment_request_id' => 'rubric_assessments#remind', :as => :remind_assessee
|
|
resources :rubric_assessments, :path => 'assessments'
|
|
end
|
|
|
|
match 'outcomes/users/:user_id' => 'outcomes#user_outcome_results', :as => :user_outcomes_results
|
|
resources :outcomes do
|
|
match 'alignments/reorder' => 'outcomes#reorder_alignments', :as => :reorder_alignments, :via => :post
|
|
match 'alignments/:id' => 'outcomes#alignment_redirect', :as => :alignment_redirect, :via => :get
|
|
match 'alignments' => 'outcomes#align', :as => :align, :via => :post
|
|
match 'alignments/:id' => 'outcomes#remove_alignment', :as => :remove_alignment, :via => :delete
|
|
match 'results' => 'outcomes#outcome_results', :as => :results
|
|
match 'results/:id' => 'outcomes#outcome_result', :as => :result
|
|
match 'details' => 'outcomes#details', :as => :details
|
|
collection do
|
|
get :list
|
|
post :add_outcome
|
|
end
|
|
end
|
|
|
|
resources :outcome_groups, :only => ["create", "update", "destroy"] do
|
|
match 'reorder' => 'outcome_groups#reorder', :as => :reorder
|
|
end
|
|
|
|
resources :context_modules, :path => :modules do
|
|
match 'items' => 'context_modules#add_item', :as => :add_item, :via => :post
|
|
match 'reorder' => 'context_modules#reorder_items', :as => :reorder, :via => :post
|
|
match 'collapse' => 'context_modules#toggle_collapse', :as => :toggle_collapse
|
|
match 'prerequisites/:code' => 'context_modules#content_tag_prerequisites_needing_finishing', :as => :prerequisites_needing_finishing
|
|
match 'items/last' => 'context_modules#module_redirect', :as => :last_redirect, :last => 1
|
|
match 'items/first' => 'context_modules#module_redirect', :as => :first_redirect, :first => 1
|
|
collection do
|
|
post :reorder
|
|
get :progressions
|
|
end
|
|
end
|
|
|
|
resources :content_exports, :only => ["create", "index", "destroy", "show"]
|
|
match 'modules/items/assignment_info' => 'context_modules#content_tag_assignment_data', :as => :context_modules_assignment_info, :via => :get
|
|
match 'modules/items/:id' => 'context_modules#item_redirect', :as => :context_modules_item_redirect, :via => :get
|
|
match 'modules/items/sequence/:id' => 'context_modules#item_details', :as => :context_modules_item_details, :via => :get
|
|
match 'modules/items/:id' => 'context_modules#remove_item', :as => :context_modules_remove_item, :via => :delete
|
|
match 'modules/items/:id' => 'context_modules#update_item', :as => :context_modules_update_item, :via => :put
|
|
match 'confirm_action' => 'courses#confirm_action', :as => :confirm_action
|
|
match 'copy' => 'courses#copy', :as => :start_copy, :via => :get
|
|
match 'copy' => 'courses#copy_course', :as => :copy_course, :via => :post
|
|
concerns :media
|
|
match 'user_notes' => 'user_notes#user_notes', :as => :user_notes
|
|
match 'switch_role/:role' => 'courses#switch_role', :as => :switch_role
|
|
match 'details/sis_publish' => 'courses#sis_publish_status', :as => :sis_publish_status, :via => :get
|
|
match 'details/sis_publish' => 'courses#publish_to_sis', :as => :publish_to_sis, :via => :post
|
|
resources :user_lists, :only => :create
|
|
match 'reset' => 'courses#reset_content', :as => :reset, :via => :post
|
|
resources :alerts
|
|
match 'student_view' => 'courses#student_view', :as => :student_view, :via => :post
|
|
match 'student_view' => 'courses#leave_student_view', :as => :student_view, :via => :delete
|
|
match 'test_student' => 'courses#reset_test_student', :as => :test_student, :via => :delete
|
|
match 'content_migrations' => 'content_migrations#index', :as => :content_migrations, :via => :get
|
|
end
|
|
|
|
match 'quiz_statistics/:quiz_statistics_id/files/:file_id/download' => 'files#show', :as => :quiz_statistics_download, :download => '1'
|
|
|
|
match '/submissions/:submission_id/attachments/:attachment_id/crocodoc_sessions' => 'crocodoc_sessions#create', :via => :post
|
|
match '/attachments/:attachment_id/crocodoc_sessions' => 'crocodoc_sessions#create', :via => :post
|
|
|
|
resources :page_views, :only => [:update]
|
|
match 'media_objects' => 'context#create_media_object', :as => :create_media_object, :via => :post
|
|
match 'media_objects/kaltura_notifications' => 'context#kaltura_notifications', :as => :kaltura_notifications
|
|
match 'media_objects/:id' => 'context#media_object_inline', :as => :media_object
|
|
match 'media_objects/:id/redirect' => 'context#media_object_redirect', :as => :media_object_redirect
|
|
match 'media_objects/:id/thumbnail' => 'context#media_object_thumbnail', :as => :media_object_thumbnail
|
|
match 'media_objects/:media_object_id/info' => 'media_objects#show', :as => :media_object_info
|
|
match 'media_objects/:media_object_id/media_tracks/:id' => 'media_tracks#show', :as => :show_media_tracks, :via => :get
|
|
match 'media_objects/:media_object_id/media_tracks' => 'media_tracks#create', :as => :create_media_tracks, :via => :post
|
|
match 'media_objects/:media_object_id/media_tracks/:media_track_id' => 'media_tracks#destroy', :as => :delete_media_tracks, :via => :delete
|
|
|
|
match 'external_content/success/:service' => 'external_content#success', :as => :external_content_success
|
|
match 'external_content/retrieve/oembed' => 'external_content#oembed_retrieve', :as => :external_content_oembed_retrieve
|
|
match 'external_content/cancel/:service' => 'external_content#cancel', :as => :external_content_cancel
|
|
|
|
# We offer a bunch of atom and ical feeds for the user to get
|
|
# data out of Instructure. The :feed_code attribute is keyed
|
|
# off of either a user, and enrollment, a course, etc. based on
|
|
# that item's uuid. In config/initializers/active_record.rb you'll
|
|
# find a feed_code method to generate the code, and in
|
|
# application_controller there's a get_feed_context to get it back out.
|
|
scope '/feeds' do
|
|
match 'calendars/:feed_code' => 'calendar_events_api#public_feed', :as => :feeds_calendar
|
|
match 'calendars/:feed_code.:format' => 'calendar_events_api#public_feed', :as => :feeds_calendar_format
|
|
match 'forums/:feed_code' => 'discussion_topics#public_feed', :as => :feeds_forum
|
|
match 'forums/:feed_code.:format' => 'discussion_topics#public_feed', :as => :feeds_forum_format
|
|
match 'topics/:discussion_topic_id/:feed_code' => 'discussion_entries#public_feed', :as => :feeds_topic
|
|
match 'topics/:discussion_topic_id/:feed_code.:format' => 'discussion_entries#public_feed', :as => :feeds_topic_format
|
|
match 'announcements/:feed_code' => 'announcements#public_feed', :as => :feeds_announcements
|
|
match 'announcements/:feed_code.:format' => 'announcements#public_feed', :as => :feeds_announcements_format
|
|
match 'courses/:feed_code' => 'courses#public_feed', :as => :feeds_course
|
|
match 'courses/:feed_code.:format' => 'courses#public_feed', :as => :feeds_course_format
|
|
match 'groups/:feed_code' => 'groups#public_feed', :as => :feeds_group
|
|
match 'groups/:feed_code.:format' => 'groups#public_feed', :as => :feeds_group_format
|
|
match 'enrollments/:feed_code' => 'courses#public_feed', :as => :feeds_enrollment
|
|
match 'enrollments/:feed_code.:format' => 'courses#public_feed', :as => :feeds_enrollment_format
|
|
match 'users/:feed_code' => 'users#public_feed', :as => :feeds_user
|
|
match 'users/:feed_code.:format' => 'users#public_feed', :as => :feeds_user_format
|
|
match 'eportfolios/:eportfolio_id.:format' => 'eportfolios#public_feed', :as => :feeds_eportfolio
|
|
match 'conversations/:feed_code' => 'conversations#public_feed', :as => :feeds_conversation
|
|
match 'conversations/:feed_code.:format' => 'conversations#public_feed', :as => :feeds_conversation_format
|
|
end
|
|
|
|
resources :assessment_questions do
|
|
match 'files/:id/download' => 'files#assessment_question_show', :as => :map, :download => '1'
|
|
match 'files/:id/preview' => 'files#assessment_question_show', :as => :map, :preview => '1'
|
|
match 'files/:id/:verifier' => 'files#assessment_question_show', :as => :verified_file, :download => '1'
|
|
end
|
|
|
|
resources :eportfolios, :except => [:index] do
|
|
match 'reorder_categories' => 'eportfolios#reorder_categories', :as => :reorder_categories
|
|
match ':eportfolio_category_id/reorder_entries' => 'eportfolios#reorder_entries', :as => :reorder_entries
|
|
resources :categories, :controller => :eportfolio_categories
|
|
resources :entries, :controller => :eportfolio_entries do
|
|
resources :page_comments, :path => :comments, :only => ["create", "destroy"]
|
|
match 'files/:attachment_id' => 'eportfolio_entries#attachment', :as => :view_file, :via => :get
|
|
match 'submissions/:submission_id' => 'eportfolio_entries#submission', :as => :preview_submission, :via => :get
|
|
end
|
|
|
|
match 'export' => 'eportfolios#export', :as => :export_portfolio
|
|
match 'export.:format' => 'eportfolios#export', :as => :formatted_export_portfolio
|
|
match ':category_name' => 'eportfolio_categories#show', :as => :named_category, :via => :get
|
|
match ':category_name/:entry_name' => 'eportfolio_entries#show', :as => :named_category_entry, :via => :get
|
|
end
|
|
|
|
resources :groups do
|
|
concerns :users
|
|
match 'remove_user/:id' => 'groups#remove_user', :as => :remove_user, :via => :delete
|
|
match 'add_user' => 'groups#add_user', :as => :add_user
|
|
match 'accept_invitation/:uuid' => 'groups#accept_invitation', :as => :accept_invitation, :via => :get
|
|
match 'members.:format' => 'groups#context_group_members', :as => :members, :via => :get
|
|
match 'members' => 'groups#context_group_members', :as => :members, :via => :get
|
|
match 'undelete' => 'context#undelete_index', :as => :undelete_items
|
|
match 'undelete/:asset_string' => 'context#undelete_item', :as => :undelete_item
|
|
concerns :announcements
|
|
concerns :discussions
|
|
resources :calendar_events
|
|
concerns :chats
|
|
concerns :files, :file_images, :relative_files, :folders
|
|
concerns :zip_file_imports
|
|
|
|
resources :external_tools, :only => [:show] do
|
|
collection do
|
|
get :retrieve
|
|
end
|
|
end
|
|
|
|
concerns :wikis
|
|
concerns :conferences
|
|
concerns :media
|
|
|
|
resources :collaborations
|
|
match 'calendar' => 'calendars#show', :as => :old_calendar
|
|
end
|
|
|
|
resources :accounts do
|
|
match 'settings' => 'accounts#settings', :as => :settings
|
|
match 'admin_tools' => 'accounts#admin_tools', :as => :admin_tools
|
|
match 'account_users' => 'accounts#add_account_user', :as => :add_account_user, :via => :post
|
|
match 'account_users/:id' => 'accounts#remove_account_user', :as => :remove_account_user, :via => :delete
|
|
resources :grading_standards, :only => ["index", "create", "update", "destroy"]
|
|
match 'statistics' => 'accounts#statistics', :as => :statistics
|
|
match 'statistics/over_time/:attribute' => 'accounts#statistics_graph', :as => :statistics_graph
|
|
match 'statistics/over_time/:attribute.:format' => 'accounts#statistics_graph', :as => :formatted_statistics_graph
|
|
match 'turnitin_confirmation' => 'accounts#turnitin_confirmation', :as => :turnitin_confirmation
|
|
resources :permissions, :controller => :role_overrides, :only => [:index, :create] do
|
|
collection do
|
|
post :add_role
|
|
delete :remove_role
|
|
end
|
|
end
|
|
|
|
resources :role_overrides, :only => [:index, :create] do
|
|
collection do
|
|
post :add_role
|
|
delete :remove_role
|
|
end
|
|
end
|
|
|
|
resources :terms
|
|
resources :sub_accounts
|
|
match 'avatars' => 'accounts#avatars', :as => :avatars
|
|
match 'sis_import' => 'accounts#sis_import', :as => :sis_import, :via => :get
|
|
resources :sis_imports, :only => [:create, :show], :controller => :sis_imports_api
|
|
match 'users' => 'users#create', :as => :add_user, :via => :post
|
|
match 'users/:user_id/delete' => 'accounts#confirm_delete_user', :as => :confirm_delete_user
|
|
match 'users/:user_id' => 'accounts#remove_user', :as => :delete_user, :via => :delete
|
|
resources :users
|
|
resources :account_notifications, :only => [:create, :destroy]
|
|
concerns :announcements
|
|
resources :assignments
|
|
resources :submissions
|
|
match 'account_authorization_configs' => 'account_authorization_configs#update_all', :as => :update_all_authorization_configs, :via => :put
|
|
match 'account_authorization_configs' => 'account_authorization_configs#destroy_all', :as => :remove_all_authorization_configs, :via => :delete
|
|
resources :account_authorization_configs
|
|
match 'test_ldap_connections' => 'account_authorization_configs#test_ldap_connection', :as => :test_ldap_connections
|
|
match 'test_ldap_binds' => 'account_authorization_configs#test_ldap_bind', :as => :test_ldap_binds
|
|
match 'test_ldap_searches' => 'account_authorization_configs#test_ldap_search', :as => :test_ldap_searches
|
|
match 'test_ldap_logins' => 'account_authorization_configs#test_ldap_login', :as => :test_ldap_logins
|
|
match 'saml_testing' => 'account_authorization_configs#saml_testing', :as => :saml_testing
|
|
match 'saml_testing_stop' => 'account_authorization_configs#saml_testing_stop', :as => :saml_testing_stop
|
|
match 'external_tools/sessionless_launch' => 'external_tools#sessionless_launch', :as => :external_tools_sessionless_launch
|
|
resources :external_tools do
|
|
match 'finished' => 'external_tools#finished', :as => :finished
|
|
end
|
|
|
|
concerns :chats
|
|
match 'outcomes/users/:user_id' => 'outcomes#user_outcome_results', :as => :user_outcomes_results
|
|
resources :outcomes do
|
|
match 'results' => 'outcomes#outcome_results', :as => :results
|
|
match 'results/:id' => 'outcomes#outcome_result', :as => :result
|
|
match 'details' => 'outcomes#details', :as => :details
|
|
collection do
|
|
get :list
|
|
post :add_outcome
|
|
end
|
|
end
|
|
|
|
resources :outcome_groups, :only => ["create", "update", "destroy"] do
|
|
match 'reorder' => 'outcome_groups#reorder', :as => :reorder
|
|
end
|
|
|
|
resources :rubrics
|
|
resources :rubric_associations do
|
|
resources :rubric_assessments, :path => 'assessments'
|
|
end
|
|
|
|
concerns :files, :file_images, :relative_files, :folders
|
|
concerns :media
|
|
concerns :groups
|
|
|
|
resources :outcomes
|
|
match 'courses' => 'accounts#courses', :as => :courses
|
|
match 'courses.:format' => 'accounts#courses', :as => :courses_formatted
|
|
match 'courses/:id' => 'accounts#courses_redirect', :as => :courses_redirect
|
|
match 'user_notes' => 'user_notes#user_notes', :as => :user_notes
|
|
match 'run_report' => 'accounts#run_report', :as => :run_report
|
|
resources :alerts
|
|
resources :question_banks do
|
|
match 'bookmark' => 'question_banks#bookmark', :as => :bookmark
|
|
match 'reorder' => 'question_banks#reorder', :as => :reorder
|
|
match 'questions' => 'question_banks#questions', :as => :questions
|
|
match 'move_questions' => 'question_banks#move_questions', :as => :move_questions
|
|
resources :assessment_questions do
|
|
match 'move' => 'assessment_questions#move', :as => :move_question
|
|
end
|
|
end
|
|
|
|
resources :user_lists, :only => :create
|
|
|
|
member do
|
|
get :statistics
|
|
end
|
|
end
|
|
|
|
match 'images/users/:user_id' => 'users#avatar_image', :as => :avatar_image, :via => :get
|
|
match 'images/thumbnails/:id/:uuid' => 'files#image_thumbnail', :as => :thumbnail_image
|
|
match 'images/thumbnails/show/:id/:uuid' => 'files#show_thumbnail', :as => :show_thumbnail_image
|
|
match 'images/users/:user_id/report' => 'users#report_avatar_image', :as => :report_avatar_image, :via => :post
|
|
match 'images/users/:user_id' => 'users#update_avatar_image', :as => :update_avatar_image, :via => :put
|
|
match 'all_menu_courses' => 'users#all_menu_courses', :as => :all_menu_courses
|
|
match 'grades' => 'users#grades', :as => :grades
|
|
match 'login' => 'pseudonym_sessions#new', :as => :login, :via => :get
|
|
match 'login' => 'pseudonym_sessions#create', :via => :post
|
|
match 'logout' => 'pseudonym_sessions#destroy', :as => :logout
|
|
match 'login/cas' => 'pseudonym_sessions#new', :as => :cas_login, :via => :get
|
|
match 'login/cas' => 'pseudonym_sessions#cas_logout', :as => :cas_logout, :via => :post
|
|
match 'login/otp' => 'pseudonym_sessions#otp_login', :as => :otp_login, :via => [:get, :post]
|
|
match 'login/:account_authorization_config_id' => 'pseudonym_sessions#new', :as => :aac_login, :via => :get
|
|
match 'users/:user_id/mfa' => 'pseudonym_sessions#disable_otp_login', :as => :disable_mfa, :via => :delete
|
|
match 'file_session/clear' => 'pseudonym_sessions#clear_file_session', :as => :clear_file_session
|
|
match 'register' => 'users#new', :as => :register
|
|
match 'register_from_website' => 'users#new', :as => :register_from_website
|
|
match 'enroll/:self_enrollment_code' => 'self_enrollments#new', :as => :enroll, :via => :get
|
|
match 'enroll/:self_enrollment_code' => 'self_enrollments#create', :as => :enroll_frd, :via => :post
|
|
match 'services' => 'users#services', :as => :services
|
|
match 'search/bookmarks' => 'users#bookmark_search', :as => :bookmark_search
|
|
match 'search/rubrics' => 'search#rubrics', :as => :search_rubrics
|
|
match 'tours/dismiss/:name' => 'tours#dismiss', :as => :dismiss_tour, :via => :delete
|
|
match 'tours/dismiss/session/:name' => 'tours#dismiss_session', :as => :dismiss_tour_session, :via => :delete
|
|
resources :users do
|
|
match 'masquerade' => 'users#masquerade', :as => :masquerade
|
|
match 'delete' => 'users#delete', :as => :delete
|
|
concerns :files, :file_images
|
|
concerns :zip_file_imports
|
|
|
|
resources :page_views, :only => "index"
|
|
resources :folders do
|
|
match 'download' => 'folders#download', :as => :download
|
|
end
|
|
|
|
resources :calendar_events
|
|
match 'external_tools/:id' => 'users#external_tool', :as => :external_tool
|
|
resources :rubrics
|
|
resources :rubric_associations do
|
|
match 'invite' => 'rubric_assessments#invite', :as => :invite_assessor
|
|
resources :rubric_assessments, :path => :assessments
|
|
end
|
|
|
|
resources :pseudonyms, :except => ["index"]
|
|
resources :question_banks, :only => [:index]
|
|
match 'assignments_needing_grading' => 'users#assignments_needing_grading', :as => :assignments_needing_grading
|
|
match 'assignments_needing_submitting' => 'users#assignments_needing_submitting', :as => :assignments_needing_submitting
|
|
match 'admin_merge' => 'users#admin_merge', :as => :admin_merge, :via => :get
|
|
match 'merge' => 'users#merge', :as => :merge, :via => :post
|
|
match 'grades' => 'users#grades', :as => :grades
|
|
resources :user_notes
|
|
match 'manageable_courses' => 'users#manageable_courses', :as => :manageable_courses
|
|
match 'outcomes' => 'outcomes#user_outcome_results', :as => :outcomes
|
|
match 'teacher_activity/course/:course_id' => 'users#teacher_activity', :as => :course_teacher_activity
|
|
match 'teacher_activity/student/:student_id' => 'users#teacher_activity', :as => :student_teacher_activity
|
|
match 'media_download' => 'users#media_download', :as => :media_download
|
|
resources :messages, :only => [:index, :create] do
|
|
match 'html_message' => 'messages#html_message', :as => :html_message, :via => :get
|
|
end
|
|
end
|
|
|
|
match 'show_message_template' => 'messages#show_message_template', :as => :show_message_template
|
|
match 'message_templates' => 'messages#templates', :as => :message_templates
|
|
resource :profile, :controller => :profile, :only => ["show", "update"] do
|
|
resources :pseudonyms, :except => ["index"]
|
|
resources :tokens, :except => ["index"]
|
|
member do
|
|
put :update_profile
|
|
get :communication
|
|
put :communication_update
|
|
get :settings
|
|
end
|
|
end
|
|
|
|
scope '/profile' do
|
|
match 'profile_pictures' => 'profile#profile_pics', :as => :profile_pics
|
|
match 'user_services/:id' => 'users#delete_user_service', :as => :profile_user_service, :via => :delete
|
|
match 'user_services' => 'users#create_user_service', :as => :profile_create_user_service, :via => :post
|
|
end
|
|
|
|
match 'about/:id' => 'profile#show', :as => :user_profile
|
|
resources :communication_channels
|
|
resource :pseudonym_session
|
|
|
|
# dashboard_url is / , not /dashboard
|
|
match '' => 'users#user_dashboard', :as => :dashboard, :via => :get
|
|
match 'dashboard-sidebar' => 'users#dashboard_sidebar', :as => :dashboard_sidebar, :via => :get
|
|
match 'toggle_dashboard' => 'users#toggle_dashboard', :as => :toggle_dashboard, :via => :post
|
|
match 'styleguide' => 'info#styleguide', :as => :styleguide, :via => :get
|
|
match 'old_styleguide' => 'info#old_styleguide', :as => :old_styleguide, :via => :get
|
|
root :to => 'users#user_dashboard', :as => :root, :via => :get
|
|
# backwards compatibility with the old /dashboard url
|
|
match 'dashboard' => 'users#user_dashboard', :as => :dashboard_redirect, :via => :get
|
|
|
|
# Thought this idea of having dashboard-scoped urls was a good idea at the
|
|
# time... now I'm not as big a fan.
|
|
resource :dashboard, :only => [] do
|
|
resources :files do
|
|
match 'inline' => 'files#text_show', :as => :text_inline
|
|
match 'download' => 'files#show', :as => :download, :download => '1'
|
|
match 'download.:type' => 'files#show', :as => :typed_download, :download => '1'
|
|
match 'preview' => 'files#show', :as => :preview, :preview => '1'
|
|
match 'inline_view' => 'files#show', :as => :inline_view, :inline => '1'
|
|
match 'contents' => 'files#attachment_content', :as => :attachment_content
|
|
match ':file_path' => 'files#show_relative', :as => :relative_path, :file_path => /.+/
|
|
collection do
|
|
get :quota
|
|
post :reorder
|
|
end
|
|
end
|
|
|
|
resources :rubrics, :path => :assessments
|
|
end
|
|
|
|
scope '/dashboard' do
|
|
concerns :files
|
|
match 'account_notifications/:id' => 'users#close_notification', :as => :dashboard_close_notification, :via => :delete
|
|
match 'eportfolios' => 'eportfolios#user_index', :as => :dashboard_eportfolios
|
|
match 'grades' => 'users#grades', :as => :dashboard_grades
|
|
match 'comment_session' => 'services_api#start_kaltura_session', :as => :dashboard_comment_session
|
|
match 'ignore_stream_item/:id' => 'users#ignore_stream_item', :as => :dashboard_ignore_stream_item, :via => :delete
|
|
end
|
|
|
|
resources :plugins, :only => [:index, :show, :update]
|
|
|
|
match 'calendar' => 'calendars#show', :as => :calendar, :via => :get
|
|
match 'calendar2' => 'calendars#show2', :as => :calendar2, :via => :get
|
|
match 'course_sections/:course_section_id/calendar_events/:id' => 'calendar_events#show', :as => :course_section_calendar_event, :via => :get
|
|
match 'switch_calendar/:preferred_calendar' => 'calendars#switch_calendar', :as => :switch_calendar, :via => :post
|
|
match 'files' => 'files#full_index', :as => :files, :via => :get
|
|
match 'files/s3_success/:id' => 'files#s3_success', :as => :s3_success
|
|
match 'files/:id/public_url.:format' => 'files#public_url', :as => :public_url
|
|
match 'files/preflight' => 'files#preflight', :as => :file_preflight
|
|
match 'files/pending' => 'files#create_pending', :as => :file_create_pending
|
|
match 'assignments' => 'assignments#index', :as => :assignments, :via => :get
|
|
|
|
resources :appointment_groups, :only => [:index, :show]
|
|
|
|
match 'errors' => 'info#record_error', :as => :errors, :via => :post
|
|
match 'record_js_error' => 'info#record_js_error', :as => :record_js_error, :via => :get
|
|
resources :errors, :only => [:show, :index], :path => :error_reports
|
|
|
|
match 'health_check' => 'info#health_check', :as => :health_check
|
|
|
|
match 'facebook' => 'facebook#index', :as => :facebook
|
|
match 'facebook/message/:id' => 'facebook#hide_message', :as => :facebook_hide_message
|
|
match 'facebook/settings' => 'facebook#settings', :as => :facebook_settings
|
|
match 'facebook/notification_preferences' => 'facebook#notification_preferences', :as => :facebook_notification_preferences
|
|
|
|
resources :interaction_tests do
|
|
collection do
|
|
get :next
|
|
get :register
|
|
post :groups
|
|
end
|
|
end
|
|
|
|
match 'object_snippet' => 'context#object_snippet', :as => :object_snippet, :via => :post
|
|
match 'saml_consume' => 'pseudonym_sessions#saml_consume', :as => :saml_consume
|
|
match 'saml_logout' => 'pseudonym_sessions#saml_logout', :as => :saml_logout
|
|
match 'saml_meta_data' => 'accounts#saml_meta_data', :as => :saml_meta_data
|
|
|
|
# Routes for course exports
|
|
match 'xsd/:version.xsd' => 'content_exports#xml_schema'
|
|
resources :jobs, :only => ["index", "show"] do
|
|
collection do
|
|
post 'batch_update'
|
|
end
|
|
end
|
|
|
|
match 'equation_images/:id' => 'equation_images#show', :as => :equation_images, :id => /.+/
|
|
|
|
# assignments at the top level (without a context) -- we have some specs that
|
|
# assert these routes exist, but just 404. I'm not sure we ever actually want
|
|
# top-level assignments available, maybe we should change the specs instead.
|
|
resources :assignments, :only => ["index", "show"]
|
|
|
|
resources :files do
|
|
match 'download' => 'files#show', :as => :download, :download => '1'
|
|
end
|
|
|
|
resources :developer_keys, :only => [:index]
|
|
|
|
resources :rubrics do
|
|
resources :rubric_assessments, :path => :assessments
|
|
end
|
|
|
|
match 'selection_test' => 'external_content#selection_test', :as => :selection_test
|
|
|
|
resources :quiz_submissions do
|
|
concerns :files
|
|
end
|
|
|
|
# commenting out all collection urls until collections are live
|
|
# resources :collection_items, :only => [:new]
|
|
# match 'get_bookmarklet', => 'collection_items#get_bookmarklet', :as => :get_bookmarklet
|
|
match 'collection_items/link_data' => 'collection_items#link_data', :as => :collection_item_link_data, :via => :post
|
|
# resources :collections, :only => [:show, :index] do
|
|
# resources :collection_items, :only => [:show, :index]
|
|
# end
|
|
|
|
### API routes ###
|
|
|
|
# TODO: api routes can't yet take advantage of concerns for DRYness, because of
|
|
# the way ApiRouteSet works. For now we get around it by defining methods
|
|
# inline in the routes file, but getting concerns working would rawk.
|
|
ApiRouteSet::V1.draw(self) do
|
|
scope(:controller => :courses) do
|
|
get 'courses', :action => :index
|
|
post 'accounts/:account_id/courses', :action => :create
|
|
put 'courses/:id', :action => :update
|
|
get 'courses/:id', :action => :show
|
|
get 'courses/:course_id/students', :action => :students
|
|
get 'courses/:course_id/settings', :action => :settings, :path_name => 'course_settings'
|
|
put 'courses/:course_id/settings', :action => :update_settings
|
|
get 'courses/:course_id/recent_students', :action => :recent_students, :path_name => 'course_recent_students'
|
|
get 'courses/:course_id/users', :action => :users, :path_name => 'course_users'
|
|
get 'courses/:course_id/users/:id', :action => :user, :path_name => 'course_user'
|
|
get 'courses/:course_id/search_users', :action => :search_users, :path_name => 'course_search_users'
|
|
get 'courses/:course_id/activity_stream', :action => :activity_stream, :path_name => 'course_activity_stream'
|
|
get 'courses/:course_id/activity_stream/summary', :action => :activity_stream_summary, :path_name => 'course_activity_stream_summary'
|
|
get 'courses/:course_id/todo', :action => :todo_items
|
|
post 'courses/:course_id/preview_html', :action => :preview_html
|
|
delete 'courses/:id', :action => :destroy
|
|
post 'courses/:course_id/course_copy', :controller => :content_imports, :action => :copy_course_content
|
|
get 'courses/:course_id/course_copy/:id', :controller => :content_imports, :action => :copy_course_status, :path_name => :course_copy_status
|
|
post 'courses/:course_id/files', :action => :create_file, :path_name => 'course_create_file'
|
|
post 'courses/:course_id/folders', :controller => :folders, :action => :create
|
|
get 'courses/:course_id/folders/:id', :controller => :folders, :action => :show, :path_name => 'course_folder'
|
|
put 'accounts/:account_id/courses', :action => :batch_update
|
|
end
|
|
|
|
scope(:controller => :tabs) do
|
|
get "courses/:course_id/tabs", :action => :index, :path_name => 'course_tabs'
|
|
get "groups/:group_id/tabs", :action => :index, :path_name => 'group_tabs'
|
|
end
|
|
|
|
scope(:controller => :sections) do
|
|
get 'courses/:course_id/sections', :action => :index, :path_name => 'course_sections'
|
|
get 'courses/:course_id/sections/:id', :action => :show, :path_name => 'course_section'
|
|
get 'sections/:id', :action => :show
|
|
post 'courses/:course_id/sections', :action => :create
|
|
put 'sections/:id', :action => :update
|
|
delete 'sections/:id', :action => :destroy
|
|
post 'sections/:id/crosslist/:new_course_id', :action => :crosslist
|
|
delete 'sections/:id/crosslist', :action => :uncrosslist
|
|
end
|
|
|
|
scope(:controller => :enrollments_api) do
|
|
get 'courses/:course_id/enrollments', :action => :index, :path_name => 'course_enrollments'
|
|
get 'sections/:section_id/enrollments', :action => :index, :path_name => 'section_enrollments'
|
|
get 'users/:user_id/enrollments', :action => :index, :path_name => 'user_enrollments'
|
|
|
|
post 'courses/:course_id/enrollments', :action => :create
|
|
post 'sections/:section_id/enrollments', :action => :create
|
|
|
|
delete 'courses/:course_id/enrollments/:id', :action => :destroy
|
|
end
|
|
|
|
scope(:controller => :assignments_api) do
|
|
get 'courses/:course_id/assignments', :action => :index, :path_name => 'course_assignments'
|
|
get 'courses/:course_id/assignments/:id', :action => :show, :path_name => 'course_assignment'
|
|
post 'courses/:course_id/assignments', :action => :create
|
|
put 'courses/:course_id/assignments/:id', :action => :update
|
|
delete 'courses/:course_id/assignments/:id', :action => :destroy, :controller => :assignments
|
|
end
|
|
|
|
scope(:controller => :assignment_overrides) do
|
|
get 'courses/:course_id/assignments/:assignment_id/overrides', :action => :index
|
|
post 'courses/:course_id/assignments/:assignment_id/overrides', :action => :create
|
|
get 'courses/:course_id/assignments/:assignment_id/overrides/:id', :action => :show, :path_name => 'assignment_override'
|
|
put 'courses/:course_id/assignments/:assignment_id/overrides/:id', :action => :update
|
|
delete 'courses/:course_id/assignments/:assignment_id/overrides/:id', :action => :destroy
|
|
get 'sections/:course_section_id/assignments/:assignment_id/override', :action => :section_alias
|
|
get 'groups/:group_id/assignments/:assignment_id/override', :action => :group_alias
|
|
end
|
|
|
|
scope(:controller => :submissions_api) do
|
|
def submissions_api(context)
|
|
get "#{context.pluralize}/:#{context}_id/assignments/:assignment_id/submissions", :action => :index, :path_name => "#{context}_assignment_submissions"
|
|
get "#{context.pluralize}/:#{context}_id/students/submissions", :controller => :submissions_api, :action => :for_students, :path_name => "#{context}_student_submissions"
|
|
get "#{context.pluralize}/:#{context}_id/assignments/:assignment_id/submissions/:user_id", :action => :show, :path_name => "#{context}_assignment_submission"
|
|
post "#{context.pluralize}/:#{context}_id/assignments/:assignment_id/submissions", :action => :create, :controller => :submissions
|
|
post "#{context.pluralize}/:#{context}_id/assignments/:assignment_id/submissions/:user_id/files", :action => :create_file
|
|
put "#{context.pluralize}/:#{context}_id/assignments/:assignment_id/submissions/:user_id", :action => :update, :path_name => "#{context}_assignment_submission"
|
|
end
|
|
submissions_api("course")
|
|
submissions_api("section")
|
|
end
|
|
|
|
scope(:controller => :gradebook_history_api) do
|
|
get "courses/:course_id/gradebook_history/days", :action => :days, :path_name => 'gradebook_history'
|
|
get "courses/:course_id/gradebook_history/feed", :action => :feed, :path_name => 'gradebook_history_feed'
|
|
get "courses/:course_id/gradebook_history/:date", :action =>:day_details, :path_name => 'gradebook_history_for_day'
|
|
get "courses/:course_id/gradebook_history/:date/graders/:grader_id/assignments/:assignment_id/submissions", :action => :submissions, :path_name => 'gradebook_history_submissions'
|
|
end
|
|
|
|
get 'courses/:course_id/assignment_groups', :controller => :assignment_groups, :action => :index, :path_name => 'course_assignment_groups'
|
|
scope(:controller => :assignment_groups_api) do
|
|
resources :assignment_groups, :path_prefix => "courses/:course_id", :name_prefix => "course_", :except => [:index]
|
|
end
|
|
|
|
scope(:controller => :discussion_topics) do
|
|
get 'courses/:course_id/discussion_topics', :action => :index, :path_name => 'course_discussion_topics'
|
|
get 'groups/:group_id/discussion_topics', :action => :index, :path_name => 'group_discussion_topics'
|
|
end
|
|
|
|
scope(:controller => :content_migrations) do
|
|
get 'courses/:course_id/content_migrations/migrators', :action => :available_migrators, :path_name => 'course_content_migration_migrators_list'
|
|
get 'courses/:course_id/content_migrations/:id', :action => :show, :path_name => 'course_content_migration'
|
|
get 'courses/:course_id/content_migrations', :action => :index, :path_name => 'course_content_migration_list'
|
|
post 'courses/:course_id/content_migrations', :action => :create, :path_name => 'course_content_migration_create'
|
|
put 'courses/:course_id/content_migrations/:id', :action => :update, :path_name => 'course_content_migration_update'
|
|
get 'courses/:course_id/content_migrations/:id/selective_data', :action => :content_list, :path_name => 'course_content_migration_selective_data'
|
|
end
|
|
|
|
scope(:controller => :migration_issues) do
|
|
get 'courses/:course_id/content_migrations/:content_migration_id/migration_issues/:id', :action => :show, :path_name => 'course_content_migration_migration_issue'
|
|
get 'courses/:course_id/content_migrations/:content_migration_id/migration_issues', :action => :index, :path_name => 'course_content_migration_migration_issue_list'
|
|
post 'courses/:course_id/content_migrations/:content_migration_id/migration_issues', :action => :create, :path_name => 'course_content_migration_migration_issue_create'
|
|
put 'courses/:course_id/content_migrations/:content_migration_id/migration_issues/:id', :action => :update, :path_name => 'course_content_migration_migration_issue_update'
|
|
end
|
|
|
|
scope(:controller => :discussion_topics_api) do
|
|
def topic_routes(context)
|
|
get "#{context.pluralize}/:#{context}_id/discussion_topics/:topic_id", :action => :show, :path_name => "#{context}_discussion_topic"
|
|
post "#{context.pluralize}/:#{context}_id/discussion_topics", :controller => :discussion_topics, :action => :create
|
|
put "#{context.pluralize}/:#{context}_id/discussion_topics/:topic_id", :controller => :discussion_topics, :action => :update
|
|
delete "#{context.pluralize}/:#{context}_id/discussion_topics/:topic_id", :controller => :discussion_topics, :action => :destroy
|
|
|
|
get "#{context.pluralize}/:#{context}_id/discussion_topics/:topic_id/view", :action => :view, :path_name => "#{context}_discussion_topic_view"
|
|
|
|
get "#{context.pluralize}/:#{context}_id/discussion_topics/:topic_id/entry_list", :action => :entry_list, :path_name => "#{context}_discussion_topic_entry_list"
|
|
post "#{context.pluralize}/:#{context}_id/discussion_topics/:topic_id/entries", :action => :add_entry, :path_name => "#{context}_discussion_add_entry"
|
|
get "#{context.pluralize}/:#{context}_id/discussion_topics/:topic_id/entries", :action => :entries, :path_name => "#{context}_discussion_entries"
|
|
post "#{context.pluralize}/:#{context}_id/discussion_topics/:topic_id/entries/:entry_id/replies", :action => :add_reply, :path_name => "#{context}_discussion_add_reply"
|
|
get "#{context.pluralize}/:#{context}_id/discussion_topics/:topic_id/entries/:entry_id/replies", :action => :replies, :path_name => "#{context}_discussion_replies"
|
|
put "#{context.pluralize}/:#{context}_id/discussion_topics/:topic_id/entries/:id", :controller => :discussion_entries, :action => :update, :path_name => "#{context}_discussion_update_reply"
|
|
delete "#{context.pluralize}/:#{context}_id/discussion_topics/:topic_id/entries/:id", :controller => :discussion_entries, :action => :destroy, :path_name => "#{context}_discussion_delete_reply"
|
|
|
|
put "#{context.pluralize}/:#{context}_id/discussion_topics/:topic_id/read", :action => :mark_topic_read, :path_name => "#{context}_discussion_topic_mark_read"
|
|
delete "#{context.pluralize}/:#{context}_id/discussion_topics/:topic_id/read", :action => :mark_topic_unread, :path_name => "#{context}_discussion_topic_mark_unread"
|
|
put "#{context.pluralize}/:#{context}_id/discussion_topics/:topic_id/read_all", :action => :mark_all_read, :path_name => "#{context}_discussion_topic_mark_all_read"
|
|
delete "#{context.pluralize}/:#{context}_id/discussion_topics/:topic_id/read_all", :action => :mark_all_unread, :path_name => "#{context}_discussion_topic_mark_all_unread"
|
|
put "#{context.pluralize}/:#{context}_id/discussion_topics/:topic_id/entries/:entry_id/read", :action => :mark_entry_read, :path_name => "#{context}_discussion_topic_discussion_entry_mark_read"
|
|
delete "#{context.pluralize}/:#{context}_id/discussion_topics/:topic_id/entries/:entry_id/read", :action => :mark_entry_unread, :path_name => "#{context}_discussion_topic_discussion_entry_mark_unread"
|
|
put "#{context.pluralize}/:#{context}_id/discussion_topics/:topic_id/subscribed", :action => :subscribe_topic, :path_name => "#{context}_discussion_topic_subscribe"
|
|
delete "#{context.pluralize}/:#{context}_id/discussion_topics/:topic_id/subscribed", :action => :unsubscribe_topic, :path_name => "#{context}_discussion_topic_unsubscribe"
|
|
end
|
|
topic_routes("course")
|
|
topic_routes("group")
|
|
topic_routes("collection_item")
|
|
end
|
|
|
|
scope(:controller => :collaborations) do
|
|
get 'collaborations/:id/members', :action => :members, :path_name => 'collaboration_members'
|
|
end
|
|
|
|
scope(:controller => :external_tools) do
|
|
def et_routes(context)
|
|
get "#{context}s/:#{context}_id/external_tools/sessionless_launch", :action => :generate_sessionless_launch, :path_name => "#{context}_external_tool_sessionless_launch"
|
|
get "#{context}s/:#{context}_id/external_tools/:external_tool_id", :action => :show, :path_name => "#{context}_external_tool_show"
|
|
get "#{context}s/:#{context}_id/external_tools", :action => :index, :path_name => "#{context}_external_tools"
|
|
post "#{context}s/:#{context}_id/external_tools", :action => :create, :path_name => "#{context}_external_tools_create"
|
|
put "#{context}s/:#{context}_id/external_tools/:external_tool_id", :action => :update, :path_name => "#{context}_external_tools_update"
|
|
delete "#{context}s/:#{context}_id/external_tools/:external_tool_id", :action => :destroy, :path_name => "#{context}_external_tools_delete"
|
|
end
|
|
et_routes("course")
|
|
et_routes("account")
|
|
end
|
|
|
|
scope(:controller => :external_feeds) do
|
|
def ef_routes(context)
|
|
get "#{context}s/:#{context}_id/external_feeds", :action => :index, :path_name => "#{context}_external_feeds"
|
|
post "#{context}s/:#{context}_id/external_feeds", :action => :create, :path_name => "#{context}_external_feeds_create"
|
|
delete "#{context}s/:#{context}_id/external_feeds/:external_feed_id", :action => :destroy, :path_name => "#{context}_external_feeds_delete"
|
|
end
|
|
ef_routes("course")
|
|
ef_routes("group")
|
|
end
|
|
|
|
scope(:controller => :sis_imports_api) do
|
|
post 'accounts/:account_id/sis_imports', :action => :create
|
|
get 'accounts/:account_id/sis_imports/:id', :action => :show
|
|
end
|
|
|
|
scope(:controller => :users) do
|
|
get 'users/self/activity_stream', :action => :activity_stream, :path_name => 'user_activity_stream'
|
|
get 'users/activity_stream', :action => :activity_stream # deprecated
|
|
get 'users/self/activity_stream/summary', :action => :activity_stream_summary, :path_name => 'user_activity_stream_summary'
|
|
|
|
put "users/:user_id/followers/self", :action => :follow
|
|
delete "users/:user_id/followers/self", :action => :unfollow
|
|
|
|
get 'users/self/todo', :action => :todo_items
|
|
get 'users/self/upcoming_events', :action => :upcoming_events
|
|
|
|
delete 'users/self/todo/:asset_string/:purpose', :action => :ignore_item, :path_name => 'users_todo_ignore'
|
|
post 'accounts/:account_id/users', :action => :create
|
|
get 'accounts/:account_id/users', :action => :index, :path_name => 'account_users'
|
|
delete 'accounts/:account_id/users/:id', :action => :destroy
|
|
|
|
put 'users/:id', :action => :update
|
|
post 'users/:user_id/files', :action => :create_file
|
|
|
|
post 'users/:user_id/folders', :controller => :folders, :action => :create
|
|
get 'users/:user_id/folders/:id', :controller => :folders, :action => :show, :path_name => 'user_folder'
|
|
|
|
get 'users/:id/settings', controller: 'users', action: 'settings'
|
|
put 'users/:id/settings', controller: 'users', action: 'settings', path_name: 'user_settings'
|
|
end
|
|
|
|
scope(:controller => :pseudonyms) do
|
|
get 'accounts/:account_id/logins', :action => :index, :path_name => 'account_pseudonyms'
|
|
get 'users/:user_id/logins', :action => :index, :path_name => 'user_pseudonyms'
|
|
post 'accounts/:account_id/logins', :action => :create
|
|
put 'accounts/:account_id/logins/:id', :action => :update
|
|
delete 'users/:user_id/logins/:id', :action => :destroy
|
|
end
|
|
|
|
scope(:controller => :accounts) do
|
|
get 'accounts', :action => :index, :path_name => :accounts
|
|
get 'accounts/:id', :action => :show
|
|
put 'accounts/:id', :action => :update
|
|
get 'accounts/:account_id/courses', :action => :courses_api, :path_name => 'account_courses'
|
|
get 'accounts/:account_id/sub_accounts', :action => :sub_accounts, :path_name => 'sub_accounts'
|
|
get 'accounts/:account_id/courses/:id', :controller => :courses, :action => :show, :path_name => 'account_course_show'
|
|
end
|
|
|
|
scope(:controller => :role_overrides) do
|
|
get 'accounts/:account_id/roles', :action => :api_index, :path_name => 'account_roles'
|
|
get 'accounts/:account_id/roles/:role', :role => /[^\/]+/, :action => :show
|
|
post 'accounts/:account_id/roles', :action => :add_role
|
|
post 'accounts/:account_id/roles/:role/activate', :role => /[^\/]+/, :action => :activate_role
|
|
put 'accounts/:account_id/roles/:role', :role => /[^\/]+/, :action => :update
|
|
delete 'accounts/:account_id/roles/:role', :role => /[^\/]+/, :action => :remove_role
|
|
end
|
|
|
|
scope(:controller => :account_reports) do
|
|
get 'accounts/:account_id/reports/:report', :action => :index
|
|
get 'accounts/:account_id/reports', :action => :available_reports
|
|
get 'accounts/:account_id/reports/:report/:id', :action => :show
|
|
post 'accounts/:account_id/reports/:report', :action => :create
|
|
delete 'accounts/:account_id/reports/:report/:id', :action => :destroy
|
|
end
|
|
|
|
scope(:controller => :admins) do
|
|
post 'accounts/:account_id/admins', :action => :create
|
|
delete 'accounts/:account_id/admins/:user_id', :action => :destroy
|
|
get 'accounts/:account_id/admins', :action => :index, :path_name => 'account_admins'
|
|
end
|
|
|
|
scope(:controller => :account_authorization_configs) do
|
|
get 'accounts/:account_id/account_authorization_configs/discovery_url', :action => :show_discovery_url
|
|
put 'accounts/:account_id/account_authorization_configs/discovery_url', :action => :update_discovery_url, :path_name => 'account_update_discovery_url'
|
|
delete 'accounts/:account_id/account_authorization_configs/discovery_url', :action => :destroy_discovery_url, :path_name => 'account_destroy_discovery_url'
|
|
|
|
get 'accounts/:account_id/account_authorization_configs', :action => :index
|
|
get 'accounts/:account_id/account_authorization_configs/:id', :action => :show
|
|
post 'accounts/:account_id/account_authorization_configs', :action => :create, :path_name => 'account_create_aac'
|
|
put 'accounts/:account_id/account_authorization_configs/:id', :action => :update, :path_name => 'account_update_aac'
|
|
delete 'accounts/:account_id/account_authorization_configs/:id', :action => :destroy, :path_name => 'account_delete_aac'
|
|
end
|
|
|
|
get 'users/:user_id/page_views', :controller => :page_views, :action => :index, :path_name => 'user_page_views'
|
|
get 'users/:user_id/profile', :controller => :profile, :action => :settings
|
|
get 'users/:user_id/avatars', :controller => :profile, :action => :profile_pics
|
|
|
|
# deprecated routes, second one is solely for YARD. preferred API is api/v1/search/recipients
|
|
get 'conversations/find_recipients', :controller => :search, :action => :recipients
|
|
get 'conversations/find_recipients', :controller => :conversations, :action => :find_recipients
|
|
|
|
scope(:controller => :conversations) do
|
|
get 'conversations', :action => :index, :path_name => 'conversations'
|
|
post 'conversations', :action => :create
|
|
post 'conversations/mark_all_as_read', :action => :mark_all_as_read
|
|
get 'conversations/batches', :action => :batches, :path_name => 'conversations_batches'
|
|
get 'conversations/unread_count', :action => :unread_count
|
|
get 'conversations/:id', :action => :show
|
|
put 'conversations/:id', :action => :update # stars, subscribed-ness, workflow_state
|
|
delete 'conversations/:id', :action => :destroy
|
|
post 'conversations/:id/add_message', :action => :add_message
|
|
post 'conversations/:id/add_recipients', :action => :add_recipients
|
|
post 'conversations/:id/remove_messages', :action => :remove_messages
|
|
put 'conversations', :action => :batch_update
|
|
delete 'conversations/:id/delete_for_all', :action => :delete_for_all
|
|
end
|
|
|
|
scope(:controller => :communication_channels) do
|
|
get 'users/:user_id/communication_channels', :action => :index, :path_name => 'communication_channels'
|
|
post 'users/:user_id/communication_channels', :action => :create
|
|
delete 'users/:user_id/communication_channels/:id', :action => :destroy
|
|
end
|
|
|
|
scope(:controller => :comm_messages_api) do
|
|
get 'comm_messages', :action => :index, :path_name => 'comm_messages'
|
|
end
|
|
|
|
scope(:controller => :services_api) do
|
|
get 'services/kaltura', :action => :show_kaltura_config
|
|
post 'services/kaltura_session', :action => :start_kaltura_session
|
|
end
|
|
|
|
scope(:controller => :calendar_events_api) do
|
|
get 'calendar_events', :action => :index, :path_name => 'calendar_events'
|
|
post 'calendar_events', :action => :create
|
|
get 'calendar_events/:id', :action => :show, :path_name => 'calendar_event'
|
|
put 'calendar_events/:id', :action => :update
|
|
delete 'calendar_events/:id', :action => :destroy
|
|
post 'calendar_events/:id/reservations', :action => :reserve
|
|
post 'calendar_events/:id/reservations/:participant_id', :action => :reserve, :path_name => 'calendar_event_reserve'
|
|
end
|
|
|
|
scope(:controller => :appointment_groups) do
|
|
get 'appointment_groups', :action => :index, :path_name => 'appointment_groups'
|
|
post 'appointment_groups', :action => :create
|
|
get 'appointment_groups/:id', :action => :show, :path_name => 'appointment_group'
|
|
put 'appointment_groups/:id', :action => :update
|
|
delete 'appointment_groups/:id', :action => :destroy
|
|
get 'appointment_groups/:id/users', :action => :users, :path_name => 'appointment_group_users'
|
|
get 'appointment_groups/:id/groups', :action => :groups, :path_name => 'appointment_group_groups'
|
|
end
|
|
|
|
scope(:controller => :groups) do
|
|
resources :groups, :except => [:index]
|
|
get 'users/self/groups', :action => :index, :path_name => "current_user_groups"
|
|
get 'accounts/:account_id/groups', :action => :context_index, :path_name => 'account_user_groups'
|
|
get 'courses/:course_id/groups', :action => :context_index, :path_name => 'course_user_groups'
|
|
get 'groups/:group_id/users', :action => :users, :path_name => 'group_users'
|
|
post 'groups/:group_id/invite', :action => :invite
|
|
post 'groups/:group_id/files', :action => :create_file
|
|
post 'groups/:group_id/preview_html', :action => :preview_html
|
|
post 'group_categories/:group_category_id/groups', :action => :create
|
|
get 'groups/:group_id/activity_stream', :action => :activity_stream, :path_name => 'group_activity_stream'
|
|
get 'groups/:group_id/activity_stream/summary', :action => :activity_stream_summary, :path_name => 'group_activity_stream_summary'
|
|
put "groups/:group_id/followers/self", :action => :follow
|
|
delete "groups/:group_id/followers/self", :action => :unfollow
|
|
|
|
scope(:controller => :group_memberships) do
|
|
resources :memberships, :path_prefix => "groups/:group_id", :name_prefix => "group_", :controller => :group_memberships, :except => [:show]
|
|
resources :users, :path_prefix => "groups/:group_id", :name_prefix => "group_", :controller => :group_memberships, :except => [:show, :create]
|
|
end
|
|
|
|
post 'groups/:group_id/folders', :controller => :folders, :action => :create
|
|
get 'groups/:group_id/folders/:id', :controller => :folders, :action => :show, :path_name => 'group_folder'
|
|
end
|
|
|
|
scope(:controller => :collections) do
|
|
get "collections", :action => :list, :path_name => 'collections'
|
|
resources :collections, :path_prefix => "users/:user_id", :name_prefix => "user_", :only => [:index, :create]
|
|
resources :collections, :path_prefix => "groups/:group_id", :name_prefix => "group_", :only => [:index, :create]
|
|
resources :collections, :except => [:index, :create]
|
|
put "collections/:collection_id/followers/self", :action => :follow
|
|
delete "collections/:collection_id/followers/self", :action => :unfollow
|
|
|
|
scope(:controller => :collection_items) do
|
|
get "collections/:collection_id/items", :action => :index, :path_name => 'collection_items_list'
|
|
resources :items, :path_prefix => "collections/:collection_id", :name_prefix => "collection_", :controller => :collection_items, :only => [:index, :create]
|
|
resources :items, :path_prefix => "collections", :name_prefix => "collection_", :controller => :collection_items, :except => [:index, :create]
|
|
put "collections/items/:item_id/upvotes/self", :action => :upvote
|
|
delete "collections/items/:item_id/upvotes/self", :action => :remove_upvote
|
|
end
|
|
end
|
|
|
|
scope(:controller => :developer_keys) do
|
|
get 'developer_keys', :action => :index
|
|
get 'developer_keys/:id', :action => :show
|
|
delete 'developer_keys/:id', :action => :destroy
|
|
put 'developer_keys/:id', :action => :update
|
|
post 'developer_keys', :action => :create
|
|
end
|
|
|
|
scope(:controller => :search) do
|
|
get 'search/rubrics', :action => 'rubrics', :path_name => 'search_rubrics'
|
|
get 'search/recipients', :action => 'recipients', :path_name => 'search_recipients'
|
|
end
|
|
|
|
post 'files/:id/create_success', :controller => :files, :action => :api_create_success, :path_name => 'files_create_success'
|
|
get 'files/:id/create_success', :controller => :files, :action => :api_create_success, :path_name => 'files_create_success'
|
|
|
|
scope(:controller => :files) do
|
|
post 'files/:id/create_success', :action => :api_create_success, :path_name => 'files_create_success'
|
|
get 'files/:id/create_success', :action => :api_create_success, :path_name => 'files_create_success'
|
|
# 'attachment' (rather than 'file') is used below so modules API can use polymorphic_url to generate an item API link
|
|
get 'files/:id', :action => :api_show, :path_name => 'attachment'
|
|
delete 'files/:id', :action => :destroy
|
|
put 'files/:id', :action => :api_update
|
|
get 'files/:id/:uuid/status', :action => :api_file_status, :path_name => 'file_status'
|
|
end
|
|
|
|
scope(:controller => :folders) do
|
|
get 'folders/:id', :action => :show
|
|
get 'folders/:id/folders', :action => :api_index, :path_name => 'list_folders'
|
|
get 'folders/:id/files', :controller => :files, :action => :api_index, :path_name => 'list_files'
|
|
delete 'folders/:id', :action => :api_destroy
|
|
put 'folders/:id', :action => :update
|
|
post 'folders/:folder_id/folders', :action => :create, :path_name => 'create_folder'
|
|
post 'folders/:folder_id/files', :action => :create_file
|
|
end
|
|
|
|
scope(:controller => :favorites) do
|
|
get "users/self/favorites/courses", :action => :list_favorite_courses, :path_name => :list_favorite_courses
|
|
post "users/self/favorites/courses/:id", :action => :add_favorite_course
|
|
delete "users/self/favorites/courses/:id", :action => :remove_favorite_course
|
|
delete "users/self/favorites/courses", :action => :reset_course_favorites
|
|
end
|
|
|
|
scope(:controller => :wiki_pages_api) do
|
|
get "courses/:course_id/pages", :action => :index, :path_name => 'course_wiki_pages'
|
|
get "groups/:group_id/pages", :action => :index, :path_name => 'group_wiki_pages'
|
|
get "courses/:course_id/pages/:url", :action => :show, :path_name => 'course_wiki_page'
|
|
get "groups/:group_id/pages/:url", :action => :show, :path_name => 'group_wiki_page'
|
|
get "courses/:course_id/front_page", :action => :show
|
|
get "groups/:group_id/front_page", :action => :show
|
|
post "courses/:course_id/pages", :action => :create
|
|
post "groups/:group_id/pages", :action => :create
|
|
put "courses/:course_id/pages/:url", :action => :update
|
|
put "groups/:group_id/pages/:url", :action => :update
|
|
put "courses/:course_id/front_page", :action => :update
|
|
put "groups/:group_id/front_page", :action => :update
|
|
delete "courses/:course_id/pages/:url", :action => :destroy
|
|
delete "groups/:group_id/pages/:url", :action => :destroy
|
|
delete "courses/:course_id/front_page", :action => :destroy
|
|
delete "groups/:group_id/front_page", :action => :destroy
|
|
end
|
|
|
|
scope(:controller => :context_modules_api) do
|
|
get "courses/:course_id/modules", :action => :index, :path_name => 'course_context_modules'
|
|
get "courses/:course_id/modules/:id", :action => :show, :path_name => 'course_context_module'
|
|
put "courses/:course_id/modules", :action => :batch_update
|
|
post "courses/:course_id/modules", :action => :create, :path_name => 'course_context_module_create'
|
|
put "courses/:course_id/modules/:id", :action => :update, :path_name => 'course_context_module_update'
|
|
delete "courses/:course_id/modules/:id", :action => :destroy
|
|
end
|
|
|
|
scope(:controller => :context_module_items_api) do
|
|
get "courses/:course_id/modules/:module_id/items", :action => :index, :path_name => 'course_context_module_items'
|
|
get "courses/:course_id/modules/:module_id/items/:id", :action => :show, :path_name => 'course_context_module_item'
|
|
get "courses/:course_id/module_item_redirect/:id", :action => :redirect, :path_name => 'course_context_module_item_redirect'
|
|
post "courses/:course_id/modules/:module_id/items", :action => :create, :path_name => 'course_context_module_items_create'
|
|
put "courses/:course_id/modules/:module_id/items/:id", :action => :update, :path_name => 'course_context_module_item_update'
|
|
delete "courses/:course_id/modules/:module_id/items/:id", :action => :destroy
|
|
end
|
|
|
|
scope(:controller => :quizzes_api) do
|
|
get "courses/:course_id/quizzes", :action => :index, :path_name => 'course_quizzes'
|
|
post "courses/:course_id/quizzes", :action => :create, :path_name => 'course_quiz_create'
|
|
get "courses/:course_id/quizzes/:id", :action => :show, :path_name => 'course_quiz'
|
|
put "courses/:course_id/quizzes/:id", :action => :update, :path_name => 'course_quiz_update'
|
|
delete "courses/:course_id/quizzes/:id", action: :destroy, path_name: 'course_quiz_destroy'
|
|
end
|
|
|
|
scope(:controller => :quiz_reports) do
|
|
post "courses/:course_id/quizzes/:quiz_id/reports", :action => :create, :path_name => 'course_quiz_reports_create'
|
|
get "courses/:course_id/quizzes/:quiz_id/reports/:id", :action => :show, :path_name => 'course_quiz_report'
|
|
end
|
|
|
|
scope(:controller => :quiz_submissions_api) do
|
|
post 'courses/:course_id/quizzes/:quiz_id/quiz_submissions/self/files', :action => :create_file, :path_name => 'quiz_submission_create_file'
|
|
end
|
|
|
|
scope(:controller => :outcome_groups_api) do
|
|
def og_routes(context)
|
|
prefix = (context == "global" ? context : "#{context}s/:#{context}_id")
|
|
get "#{prefix}/root_outcome_group", :action => :redirect, :path_name => "#{context}_redirect"
|
|
get "#{prefix}/outcome_groups/account_chain", :action => :account_chain, :path_name => "#{context}_account_chain"
|
|
get "#{prefix}/outcome_groups/:id", :action => :show, :path_name => "#{context}_outcome_group"
|
|
put "#{prefix}/outcome_groups/:id", :action => :update
|
|
delete "#{prefix}/outcome_groups/:id", :action => :destroy
|
|
get "#{prefix}/outcome_groups/:id/outcomes", :action => :outcomes, :path_name => "#{context}_outcome_group_outcomes"
|
|
get "#{prefix}/outcome_groups/:id/available_outcomes", :action => :available_outcomes, :path_name => "#{context}_outcome_group_available_outcomes"
|
|
post "#{prefix}/outcome_groups/:id/outcomes", :action => :link
|
|
put "#{prefix}/outcome_groups/:id/outcomes/:outcome_id", :action => :link, :path_name => "#{context}_outcome_link"
|
|
delete "#{prefix}/outcome_groups/:id/outcomes/:outcome_id", :action => :unlink
|
|
get "#{prefix}/outcome_groups/:id/subgroups", :action => :subgroups, :path_name => "#{context}_outcome_group_subgroups"
|
|
post "#{prefix}/outcome_groups/:id/subgroups", :action => :create
|
|
post "#{prefix}/outcome_groups/:id/import", :action => :import, :path_name => "#{context}_outcome_group_import"
|
|
post "#{prefix}/outcome_groups/:id/batch", :action => :batch, :path_name => "#{context}_outcome_group_batch"
|
|
end
|
|
|
|
og_routes('global')
|
|
og_routes('account')
|
|
og_routes('course')
|
|
end
|
|
|
|
scope(:controller => :outcomes_api) do
|
|
get "outcomes/:id", :action => :show, :path_name => "outcome"
|
|
put "outcomes/:id", :action => :update
|
|
delete "outcomes/:id", :action => :destroy
|
|
end
|
|
|
|
scope(:controller => :group_categories) do
|
|
resources :group_categories, :except => [:index, :create]
|
|
get 'accounts/:account_id/group_categories', :action => :index, :path_name => 'account_group_categories'
|
|
get 'courses/:course_id/group_categories', :action => :index, :path_name => 'course_group_categories'
|
|
post 'accounts/:account_id/group_categories', :action => :create
|
|
post 'courses/:course_id/group_categories', :action => :create
|
|
get 'group_categories/:group_category_id/groups', :action => :groups, :path_name => 'group_category_groups'
|
|
get 'group_categories/:group_category_id/users', :action => :users, :path_name => 'group_category_users'
|
|
end
|
|
|
|
scope(:controller => :progress) do
|
|
get "progress/:id", :action => :show, :path_name => "progress"
|
|
end
|
|
|
|
scope(:controller => :app_center) do
|
|
['course', 'account'].each do |context|
|
|
prefix = "#{context}s/:#{context}_id/app_center"
|
|
get "#{prefix}/apps", :action => :index, :path_name => "#{context}_app_center_apps"
|
|
get "#{prefix}/apps/:app_id/reviews", :action => :reviews, :path_name => "#{context}_app_center_app_reviews"
|
|
get "#{prefix}/apps/:app_id/reviews/self", :action => :review, :path_name => "#{context}_app_center_app_review"
|
|
post "#{prefix}/apps/:app_id/reviews/self", :action => :add_review
|
|
end
|
|
end
|
|
end
|
|
|
|
# this is not a "normal" api endpoint in the sense that it is not documented
|
|
# or called directly, it's used as the redirect in the file upload process
|
|
# for local files. it also doesn't use the normal oauth authentication
|
|
# system, so we can't put it in the api uri namespace.
|
|
match 'files_api' => 'files#api_create', :as => :api_v1_files_create, :via => :post
|
|
|
|
match 'login/oauth2/auth' => 'pseudonym_sessions#oauth2_auth', :as => :oauth2_auth, :via => :get
|
|
match 'login/oauth2/token' => 'pseudonym_sessions#oauth2_token', :as => :oauth2_token, :via => :post
|
|
match 'login/oauth2/confirm' => 'pseudonym_sessions#oauth2_confirm', :as => :oauth2_auth_confirm, :via => :get
|
|
match 'login/oauth2/accept' => 'pseudonym_sessions#oauth2_accept', :as => :oauth2_auth_accept, :via => :post
|
|
match 'login/oauth2/deny' => 'pseudonym_sessions#oauth2_deny', :as => :oauth2_auth_deny, :via => :get
|
|
match 'login/oauth2/token' => 'pseudonym_sessions#oauth2_logout', :as => :oauth2_logout, :via => :delete
|
|
|
|
ApiRouteSet.draw(self, "/api/lti/v1") do
|
|
post "tools/:tool_id/grade_passback", :controller => :lti_api, :action => :grade_passback, :path_name => "lti_grade_passback_api"
|
|
post "tools/:tool_id/ext_grade_passback", :controller => :lti_api, :action => :legacy_grade_passback, :path_name => "blti_legacy_grade_passback_api"
|
|
end
|
|
|
|
# in rails 2 this was Jammit::Routes.draw(map)
|
|
match '/assets/:package.:extension' => 'jammit#package', :as => :jammit if defined?(Jammit)
|
|
end
|