# Chatwoot Route Source Declarations Source: `reference/chatwoot/config/routes.rb` Ruby is unavailable in the current workspace, so this file records static route DSL declarations with source lines. It is a repeatable fallback until `bin/rails routes` can run. | Line | Declaration | | --- | --- | | 3 | `mount_devise_token_auth_for 'User', at: 'auth', controllers: {` | | 11 | `post 'resend_confirmation', to: 'auth/resend_confirmations#create'` | | 19 | `get '/app', to: 'dashboard#index'` | | 20 | `get '/app/*params', to: 'dashboard#index'` | | 21 | `get '/app/accounts/:account_id/settings/inboxes/new/twitter', to: 'dashboard#index', as: 'app_new_twitter_inbox'` | | 22 | `get '/app/accounts/:account_id/settings/inboxes/new/microsoft', to: 'dashboard#index', as: 'app_new_microsoft_inbox'` | | 23 | `get '/app/accounts/:account_id/settings/inboxes/new/instagram', to: 'dashboard#index', as: 'app_new_instagram_inbox'` | | 24 | `get '/app/accounts/:account_id/settings/inboxes/new/tiktok', to: 'dashboard#index', as: 'app_new_tiktok_inbox'` | | 25 | `get '/app/accounts/:account_id/settings/inboxes/new/:inbox_id/agents', to: 'dashboard#index', as: 'app_twitter_inbox_agents'` | | 26 | `get '/app/accounts/:account_id/settings/inboxes/new/:inbox_id/agents', to: 'dashboard#index', as: 'app_email_inbox_agents'` | | 27 | `get '/app/accounts/:account_id/settings/inboxes/new/:inbox_id/agents', to: 'dashboard#index', as: 'app_instagram_inbox_agents'` | | 28 | `get '/app/accounts/:account_id/settings/inboxes/new/:inbox_id/agents', to: 'dashboard#index', as: 'app_tiktok_inbox_agents'` | | 29 | `get '/app/accounts/:account_id/settings/inboxes/:inbox_id', to: 'dashboard#index', as: 'app_instagram_inbox_settings'` | | 30 | `get '/app/accounts/:account_id/settings/inboxes/:inbox_id', to: 'dashboard#index', as: 'app_tiktok_inbox_settings'` | | 31 | `get '/app/accounts/:account_id/settings/inboxes/:inbox_id', to: 'dashboard#index', as: 'app_email_inbox_settings'` | | 32 | `get '/app/accounts/:account_id/onboarding/inbox-setup', to: 'dashboard#index', as: 'app_onboarding_inbox_setup'` | | 34 | `resource :widget, only: [:show]` | | 35 | `namespace :survey do` | | 36 | `resources :responses, only: [:show]` | | 38 | `resource :slack_uploads, only: [:show]` | | 41 | `get '/health', to: 'health#show'` | | 42 | `get '/api', to: 'api#index'` | | 43 | `namespace :api, defaults: { format: 'json' } do` | | 44 | `namespace :v1 do` | | 47 | `resources :accounts, only: [:create, :show, :update] do` | | 49 | `post :update_active_at` | | 50 | `get :cache_keys` | | 53 | `scope module: :accounts do` | | 54 | `namespace :actions do` | | 55 | `resource :contact_merge, only: [:create]` | | 57 | `resource :bulk_actions, only: [:create]` | | 58 | `resource :onboarding, only: [:update]` | | 59 | `resources :agents, only: [:index, :create, :update, :destroy] do` | | 60 | `post :bulk_create, on: :collection` | | 62 | `namespace :captain do` | | 63 | `resource :preferences, only: [:show, :update]` | | 64 | `resources :assistants do` | | 66 | `post :playground` | | 69 | `get :tools` | | 71 | `resources :inboxes, only: [:index, :create, :destroy], param: :inbox_id` | | 72 | `resources :scenarios` | | 74 | `resources :assistant_responses` | | 75 | `resources :bulk_actions, only: [:create]` | | 76 | `resources :copilot_threads, only: [:index, :create] do` | | 77 | `resources :copilot_messages, only: [:index, :create]` | | 79 | `resources :custom_tools do` | | 80 | `post :test, on: :collection` | | 82 | `resources :documents, only: [:index, :show, :create, :destroy] do` | | 83 | `post :sync, on: :member` | | 85 | `resource :tasks, only: [], controller: 'tasks' do` | | 86 | `post :rewrite` | | 87 | `post :summarize` | | 88 | `post :reply_suggestion` | | 89 | `post :label_suggestion` | | 90 | `post :follow_up` | | 93 | `resource :saml_settings, only: [:show, :create, :update, :destroy]` | | 94 | `resources :agent_bots, only: [:index, :create, :show, :update, :destroy] do` | | 95 | `delete :avatar, on: :member` | | 96 | `post :reset_access_token, on: :member` | | 97 | `post :reset_secret, on: :member` | | 99 | `resources :contact_inboxes, only: [] do` | | 101 | `post :filter` | | 104 | `resources :assignable_agents, only: [:index]` | | 105 | `resource :audit_logs, only: [:show]` | | 106 | `resources :callbacks, only: [] do` | | 108 | `post :register_facebook_page` | | 109 | `get :register_facebook_page` | | 110 | `post :facebook_pages` | | 111 | `post :reauthorize_page` | | 114 | `resources :canned_responses, only: [:index, :create, :update, :destroy]` | | 115 | `resources :automation_rules, only: [:index, :create, :show, :update, :destroy] do` | | 116 | `post :clone` | | 118 | `resources :macros, only: [:index, :create, :show, :update, :destroy] do` | | 119 | `post :execute, on: :member` | | 121 | `resources :sla_policies, only: [:index, :create, :show, :update, :destroy]` | | 122 | `resources :custom_roles, only: [:index, :create, :show, :update, :destroy]` | | 123 | `resources :agent_capacity_policies, only: [:index, :create, :show, :update, :destroy] do` | | 124 | `scope module: :agent_capacity_policies do` | | 125 | `resources :users, only: [:index, :create, :destroy]` | | 126 | `resources :inbox_limits, only: [:create, :update, :destroy]` | | 129 | `resources :campaigns, only: [:index, :create, :show, :update, :destroy]` | | 130 | `resources :dashboard_apps, only: [:index, :show, :create, :update, :destroy]` | | 131 | `namespace :channels do` | | 132 | `resource :twilio_channel, only: [:create]` | | 134 | `resources :conversations, only: [:index, :create, :show, :update, :destroy] do` | | 136 | `get :meta` | | 137 | `get :search` | | 138 | `get :unread_counts, to: 'conversations/unread_counts#index'` | | 139 | `post :filter` | | 141 | `scope module: :conversations do` | | 142 | `resources :messages, only: [:index, :create, :destroy, :update] do` | | 144 | `post :translate` | | 145 | `post :retry` | | 148 | `resources :assignments, only: [:create]` | | 149 | `resources :labels, only: [:create, :index]` | | 150 | `resource :participants, only: [:show, :create, :update, :destroy]` | | 151 | `resource :direct_uploads, only: [:create]` | | 152 | `resource :draft_messages, only: [:show, :update, :destroy]` | | 155 | `post :mute` | | 156 | `post :unmute` | | 157 | `post :transcript` | | 158 | `post :toggle_status` | | 159 | `post :toggle_priority` | | 160 | `post :toggle_typing_status` | | 161 | `post :update_last_seen` | | 162 | `post :unread` | | 163 | `post :custom_attributes` | | 164 | `get :attachments` | | 165 | `get :inbox_assistant` | | 166 | `get :reporting_events if ChatwootApp.enterprise?` | | 170 | `resources :search, only: [:index] do` | | 172 | `get :conversations` | | 173 | `get :messages` | | 174 | `get :contacts` | | 175 | `get :articles` | | 179 | `resources :companies, only: [:index, :show, :create, :update, :destroy] do` | | 181 | `get :search` | | 184 | `post :destroy_custom_attributes` | | 185 | `delete :avatar` | | 187 | `scope module: :companies do` | | 188 | `resources :contacts, only: [:index, :create, :destroy] do` | | 190 | `get :search` | | 193 | `resources :conversations, only: [:index]` | | 194 | `resources :notes, only: [:index]` | | 197 | `resources :contacts, only: [:index, :show, :update, :create, :destroy] do` | | 199 | `get :active` | | 200 | `get :search` | | 201 | `post :filter` | | 202 | `post :import` | | 203 | `post :export` | | 206 | `get :contactable_inboxes` | | 207 | `post :destroy_custom_attributes` | | 208 | `delete :avatar` | | 210 | `scope module: :contacts do` | | 211 | `resources :conversations, only: [:index]` | | 212 | `resources :contact_inboxes, only: [:create]` | | 213 | `resources :labels, only: [:create, :index]` | | 214 | `resources :notes` | | 215 | `get :attachments, to: 'attachments#index'` | | 216 | `post :call, on: :member, to: 'calls#create' if ChatwootApp.enterprise?` | | 219 | `resources :csat_survey_responses, only: [:index] do` | | 221 | `get :metrics` | | 222 | `get :download` | | 225 | `patch :update if ChatwootApp.enterprise?` | | 228 | `resources :applied_slas, only: [:index] do` | | 230 | `get :metrics` | | 231 | `get :download` | | 234 | `resources :reporting_events, only: [:index] if ChatwootApp.enterprise?` | | 237 | `resources :whatsapp_calls, only: [:show] do` | | 239 | `post :accept` | | 240 | `post :reject` | | 241 | `post :terminate` | | 242 | `post :upload_recording` | | 245 | `post :initiate` | | 250 | `resources :custom_attribute_definitions, only: [:index, :show, :create, :update, :destroy]` | | 251 | `resources :custom_filters, only: [:index, :show, :create, :update, :destroy]` | | 252 | `resources :inboxes, only: [:index, :show, :create, :update, :destroy] do` | | 253 | `get :assignable_agents, on: :member` | | 254 | `get :campaigns, on: :member` | | 255 | `get :agent_bot, on: :member` | | 256 | `post :set_agent_bot, on: :member` | | 257 | `delete :avatar, on: :member` | | 258 | `post :sync_templates, on: :member` | | 259 | `get :health, on: :member` | | 260 | `post :register_webhook, on: :member` | | 261 | `post :reset_secret, on: :member` | | 263 | `resource :conference, only: %i[create destroy], controller: 'conference' do` | | 264 | `get :token, on: :member` | | 266 | `post :enable_whatsapp_calling, on: :member` | | 267 | `post :disable_whatsapp_calling, on: :member` | | 270 | `resource :csat_template, only: [:show, :create], controller: 'inbox_csat_templates' do` | | 271 | `post :analyze, on: :collection` | | 275 | `resources :inbox_members, only: [:create, :show], param: :inbox_id do` | | 277 | `delete :destroy` | | 278 | `patch :update` | | 281 | `resources :labels, only: [:index, :show, :create, :update, :destroy]` | | 283 | `resources :notifications, only: [:index, :update, :destroy] do` | | 285 | `post :read_all` | | 286 | `get :unread_count` | | 287 | `post :destroy_all` | | 290 | `post :snooze` | | 291 | `post :unread` | | 294 | `resource :notification_settings, only: [:show, :update]` | | 296 | `resources :teams do` | | 297 | `resources :team_members, only: [:index, :create] do` | | 299 | `delete :destroy` | | 300 | `patch :update` | | 306 | `resources :assignment_policies do` | | 307 | `resources :inboxes, only: [:index, :create, :destroy], module: :assignment_policies` | | 310 | `resources :inboxes, only: [] do` | | 311 | `resource :assignment_policy, only: [:show, :create, :destroy], module: :inboxes` | | 314 | `namespace :twitter do` | | 315 | `resource :authorization, only: [:create]` | | 318 | `namespace :microsoft do` | | 319 | `resource :authorization, only: [:create]` | | 322 | `namespace :google do` | | 323 | `resource :authorization, only: [:create]` | | 326 | `namespace :instagram do` | | 327 | `resource :authorization, only: [:create]` | | 330 | `namespace :tiktok do` | | 331 | `resource :authorization, only: [:create]` | | 334 | `namespace :notion do` | | 335 | `resource :authorization, only: [:create]` | | 338 | `namespace :whatsapp do` | | 339 | `resource :authorization, only: [:create]` | | 342 | `resources :webhooks, only: [:index, :create, :update, :destroy]` | | 343 | `namespace :integrations do` | | 344 | `resources :apps, only: [:index, :show]` | | 345 | `resources :hooks, only: [:show, :create, :update, :destroy] do` | | 347 | `post :process_event` | | 350 | `resource :slack, only: [:create, :update, :destroy], controller: 'slack' do` | | 352 | `get :list_all_channels` | | 355 | `resource :dyte, controller: 'dyte', only: [] do` | | 357 | `post :create_a_meeting` | | 358 | `post :add_participant_to_meeting` | | 361 | `resource :shopify, controller: 'shopify', only: [:destroy] do` | | 363 | `post :auth` | | 364 | `get :orders` | | 367 | `resource :linear, controller: 'linear', only: [] do` | | 369 | `delete :destroy` | | 370 | `get :teams` | | 371 | `get :team_entities` | | 372 | `post :create_issue` | | 373 | `post :link_issue` | | 374 | `post :unlink_issue` | | 375 | `get :search_issue` | | 376 | `get :linked_issues` | | 379 | `resource :notion, controller: 'notion', only: [] do` | | 381 | `delete :destroy` | | 385 | `resources :portals do` | | 387 | `patch :archive` | | 388 | `delete :logo` | | 389 | `post :send_instructions` | | 390 | `get :ssl_status` | | 392 | `resources :categories do` | | 393 | `post :reorder, on: :collection` | | 395 | `namespace :articles do` | | 396 | `resource :bulk_actions, only: [] do` | | 397 | `post :translate` | | 398 | `patch :update_status` | | 399 | `patch :update_category` | | 400 | `delete :delete_articles` | | 403 | `resources :articles do` | | 404 | `post :reorder, on: :collection` | | 408 | `resources :upload, only: [:create]` | | 414 | `namespace :integrations do` | | 415 | `resources :webhooks, only: [:create]` | | 419 | `post 'auth/saml_login', to: 'auth#saml_login'` | | 421 | `resource :profile, only: [:show, :update] do` | | 422 | `delete :avatar, on: :collection` | | 424 | `post :availability` | | 425 | `post :auto_offline` | | 426 | `put :set_active_account` | | 427 | `post :resend_confirmation` | | 428 | `post :reset_access_token` | | 432 | `scope module: 'profile' do` | | 433 | `resource :mfa, controller: 'mfa', only: [:show, :create, :destroy] do` | | 434 | `post :verify` | | 435 | `post :backup_codes` | | 440 | `resource :notification_subscriptions, only: [:create, :destroy]` | | 442 | `namespace :widget do` | | 443 | `resource :direct_uploads, only: [:create]` | | 444 | `resource :config, only: [:create]` | | 445 | `resources :campaigns, only: [:index]` | | 446 | `resources :events, only: [:create]` | | 447 | `resources :messages, only: [:index, :create, :update]` | | 448 | `resources :conversations, only: [:index, :create] do` | | 450 | `post :destroy_custom_attributes` | | 451 | `post :set_custom_attributes` | | 452 | `post :update_last_seen` | | 453 | `post :toggle_typing` | | 454 | `post :transcript` | | 455 | `get :toggle_status` | | 458 | `resource :contact, only: [:show, :update] do` | | 460 | `post :destroy_custom_attributes` | | 461 | `patch :set_user` | | 464 | `resources :inbox_members, only: [:index]` | | 465 | `resources :labels, only: [:create, :destroy]` | | 466 | `namespace :integrations do` | | 467 | `resource :dyte, controller: 'dyte', only: [] do` | | 469 | `post :add_participant_to_meeting` | | 476 | `namespace :v2 do` | | 477 | `resources :accounts, only: [:create] do` | | 478 | `scope module: :accounts do` | | 479 | `resources :summary_reports, only: [] do` | | 481 | `get :agent` | | 482 | `get :team` | | 483 | `get :inbox` | | 484 | `get :label` | | 485 | `get :channel` | | 488 | `resources :reports, only: [:index] do` | | 490 | `get :summary` | | 491 | `get :bot_summary` | | 492 | `get :agents` | | 493 | `get :inboxes` | | 494 | `get :labels` | | 495 | `get :teams` | | 496 | `get :conversations` | | 497 | `get :conversations_summary` | | 498 | `get :conversation_traffic` | | 499 | `get :bot_metrics` | | 500 | `get :inbox_label_matrix` | | 501 | `get :first_response_time_distribution` | | 502 | `get :outgoing_messages_count` | | 505 | `resource :year_in_review, only: [:show]` | | 506 | `resources :live_reports, only: [] do` | | 508 | `get :conversation_metrics` | | 509 | `get :grouped_conversation_metrics` | | 518 | `namespace :enterprise, defaults: { format: 'json' } do` | | 519 | `namespace :api do` | | 520 | `namespace :v1 do` | | 521 | `resources :accounts do` | | 523 | `post :checkout` | | 524 | `post :subscription` | | 525 | `get :limits` | | 526 | `post :toggle_deletion` | | 527 | `post :topup_checkout` | | 533 | `post 'webhooks/stripe', to: 'webhooks/stripe#process_payload'` | | 534 | `post 'webhooks/firecrawl', to: 'webhooks/firecrawl#process_payload'` | | 540 | `namespace :platform, defaults: { format: 'json' } do` | | 541 | `namespace :api do` | | 542 | `namespace :v1 do` | | 543 | `resources :users, only: [:create, :show, :update, :destroy] do` | | 545 | `get :login` | | 546 | `post :token` | | 549 | `resources :agent_bots, only: [:index, :create, :show, :update, :destroy] do` | | 550 | `delete :avatar, on: :member` | | 552 | `resources :accounts, only: [:index, :create, :show, :update, :destroy] do` | | 553 | `resources :account_users, only: [:index, :create] do` | | 555 | `delete :destroy` | | 558 | `resources :email_channel_migrations, only: [:create]` | | 566 | `namespace :public, defaults: { format: 'json' } do` | | 567 | `namespace :api do` | | 568 | `namespace :v1 do` | | 569 | `resources :inboxes do` | | 570 | `scope module: :inboxes do` | | 571 | `resources :contacts, only: [:create, :show, :update] do` | | 572 | `resources :conversations, only: [:index, :create, :show] do` | | 574 | `post :toggle_status` | | 575 | `post :toggle_typing` | | 576 | `post :update_last_seen` | | 579 | `resources :messages, only: [:index, :create, :update]` | | 585 | `resources :csat_survey, only: [:show, :update]` | | 590 | `get 'hc/:slug', to: 'public/api/v1/portals#show'` | | 591 | `get 'hc/:slug/sitemap.xml', to: 'public/api/v1/portals#sitemap'` | | 592 | `get 'hc/:slug/:locale', to: 'public/api/v1/portals#show', as: :public_portal_locale` | | 593 | `get 'hc/:slug/:locale/search', to: 'public/api/v1/portals/search#index', as: :portal_search` | | 594 | `get 'hc/:slug/:locale/articles', to: 'public/api/v1/portals/articles#index'` | | 595 | `get 'hc/:slug/:locale/categories', to: 'public/api/v1/portals/categories#index'` | | 596 | `get 'hc/:slug/:locale/categories/:category_slug', to: 'public/api/v1/portals/categories#show', as: :public_portal_category` | | 597 | `get 'hc/:slug/:locale/categories/:category_slug/articles', to: 'public/api/v1/portals/articles#index'` | | 598 | `get 'hc/:slug/articles/:article_slug.png', to: 'public/api/v1/portals/articles#tracking_pixel'` | | 599 | `get 'hc/:slug/articles/:article_slug.md', to: 'public/api/v1/portals/articles#show_markdown', as: :public_portal_article_markdown,` | | 601 | `get 'hc/:slug/articles/:article_slug', to: 'public/api/v1/portals/articles#show', as: :public_portal_article` | | 605 | `resource :app, only: [:index] do` | | 606 | `resources :accounts do` | | 607 | `resources :conversations, only: [:show]` | | 613 | `mount Facebook::Messenger::Server, at: 'bot'` | | 614 | `get 'webhooks/twitter', to: 'api/v1/webhooks#twitter_crc'` | | 615 | `post 'webhooks/twitter', to: 'api/v1/webhooks#twitter_events'` | | 616 | `post 'webhooks/line/:line_channel_id', to: 'webhooks/line#process_payload'` | | 617 | `post 'webhooks/telegram/:bot_token', to: 'webhooks/telegram#process_payload'` | | 618 | `post 'webhooks/sms/:phone_number', to: 'webhooks/sms#process_payload'` | | 619 | `get 'webhooks/whatsapp/:phone_number', to: 'webhooks/whatsapp#verify'` | | 620 | `post 'webhooks/whatsapp/:phone_number', to: 'webhooks/whatsapp#process_payload'` | | 621 | `get 'webhooks/instagram', to: 'webhooks/instagram#verify'` | | 622 | `post 'webhooks/instagram', to: 'webhooks/instagram#events'` | | 623 | `post 'webhooks/tiktok', to: 'webhooks/tiktok#events'` | | 624 | `post 'webhooks/shopify', to: 'webhooks/shopify#events'` | | 626 | `namespace :twitter do` | | 627 | `resource :callback, only: [:show]` | | 630 | `namespace :linear do` | | 631 | `resource :callback, only: [:show]` | | 634 | `namespace :shopify do` | | 635 | `resource :callback, only: [:show]` | | 638 | `namespace :twilio do` | | 639 | `resources :callback, only: [:create]` | | 640 | `resources :delivery_status, only: [:create]` | | 643 | `post 'voice/call/:phone', to: 'voice#call_twiml', as: :voice_call` | | 644 | `post 'voice/status/:phone', to: 'voice#status', as: :voice_status` | | 645 | `post 'voice/conference_status/:phone', to: 'voice#conference_status', as: :voice_conference_status` | | 646 | `post 'voice/recording_status/:phone', to: 'voice#recording_status', as: :voice_recording_status` | | 650 | `get 'microsoft/callback', to: 'microsoft/callbacks#show'` | | 651 | `get 'google/callback', to: 'google/callbacks#show'` | | 652 | `get 'instagram/callback', to: 'instagram/callbacks#show'` | | 653 | `get 'tiktok/callback', to: 'tiktok/callbacks#show'` | | 654 | `get 'notion/callback', to: 'notion/callbacks#show'` | | 657 | `get '.well-known/assetlinks.json' => 'android_app#assetlinks'` | | 658 | `get '.well-known/apple-app-site-association' => 'apple_app#site_association'` | | 659 | `get '.well-known/microsoft-identity-association.json' => 'microsoft#identity_association'` | | 660 | `get '.well-known/cf-custom-hostname-challenge/:id', to: 'custom_domains#verify'` | | 669 | `get 'super_admin/logout', to: 'super_admin/devise/sessions#destroy'` | | 670 | `namespace :super_admin do` | | 673 | `resource :app_config, only: [:show, :create]` | | 674 | `resource :push_diagnostics, only: [:show, :create] do` | | 675 | `post :destroy_subscriptions, on: :collection` | | 679 | `resources :accounts, only: [:index, :new, :create, :show, :edit, :update, :destroy] do` | | 680 | `post :seed, on: :member` | | 681 | `post :reset_cache, on: :member` | | 683 | `resources :users, only: [:index, :new, :create, :show, :edit, :update, :destroy] do` | | 684 | `delete :avatar, on: :member, action: :destroy_avatar` | | 687 | `resources :access_tokens, only: [:index, :show]` | | 688 | `resources :installation_configs, only: [:index, :new, :create, :show, :edit, :update]` | | 689 | `resources :agent_bots, only: [:index, :new, :create, :show, :edit, :update, :destroy] do` | | 690 | `delete :avatar, on: :member, action: :destroy_avatar` | | 692 | `resources :platform_apps, only: [:index, :new, :create, :show, :edit, :update, :destroy]` | | 693 | `resources :platform_banners` | | 694 | `resource :instance_status, only: [:show]` | | 696 | `resource :settings, only: [:show] do` | | 697 | `get :refresh, on: :collection` | | 701 | `resources :account_users, only: [:new, :create, :show, :destroy]` | | 704 | `mount Sidekiq::Web => '/monitoring/sidekiq'` | | 708 | `namespace :installation do` | | 709 | `get 'onboarding', to: 'onboarding#index'` | | 710 | `post 'onboarding', to: 'onboarding#create'` | | 715 | `get '/swagger/*path', to: 'swagger#respond'` | | 716 | `get '/swagger', to: 'swagger#respond'` | | 720 | `resources :widget_tests, only: [:index] unless Rails.env.production?` |