Rails.application.routes.draw do # Health check endpoint get "up" => "rails/health#show", as: :rails_health_check # Mount Action Cable WebSocket server mount ActionCable.server => "/cable" # API routes namespace :api do namespace :v1 do # Gateway device endpoints namespace :gateway do post "register", to: "registrations#create" post "heartbeat", to: "heartbeats#create" namespace :sms do post "received", to: "sms#received" post "status", to: "sms#status" end end # Client application endpoints post "sms/send", to: "sms#send_sms" get "sms/status/:message_id", to: "sms#status" get "sms/received", to: "sms#received" # OTP endpoints namespace :otp do post "send", to: "otp#send_otp" post "verify", to: "otp#verify" end # Admin endpoints namespace :admin do get "gateways", to: "gateways#index" post "gateways/:id/toggle", to: "gateways#toggle" get "stats", to: "stats#index" end end end # Admin interface routes namespace :admin do get "login", to: "sessions#new" post "login", to: "sessions#create" delete "logout", to: "sessions#destroy" get "dashboard", to: "dashboard#index" root to: "dashboard#index" resources :api_keys, only: [:index, :new, :create, :show, :destroy] do member do post :toggle end end resources :logs, only: [:index] resources :gateways, only: [:index, :new, :create, :show] do member do post :toggle get :test post :send_test_sms post :check_connection end end get "api_tester", to: "api_tester#index" end # Root route root to: proc { [200, {}, ["SMS Gateway API v1.0"]] } end