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" post "sms/received", to: "sms#received" post "sms/status", to: "sms#status" 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 post "otp/send", to: "otp#send_otp" post "otp/verify", to: "otp#verify" # 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" resource :notifications, only: [:show, :update] do post :test end end # Public pages get "docs", to: "pages#docs" root to: "pages#home" end