defmodule StepFlow.Router do use StepFlow, :router pipeline :api do plug(Plug.Parsers, parsers: [:json], pass: ["application/json"], json_decoder: Jason ) end @version Mix.Project.config()[:version] pipe_through(:api) get("/", StepFlow.IndexController, :index) # Roles and rights APIs resources("/roles", StepFlow.RoleController, except: [:new, :edit]) get("/right_definitions", StepFlow.RightDefinitionController, :index) # Workflow definitions APIs resources("/definitions", StepFlow.WorkflowDefinitionController, except: [:new, :edit, :delete, :update] ) # Workflows APIs resources "/workflows", StepFlow.WorkflowController, except: [:new, :edit] do post("/events", StepFlow.WorkflowEventsController, :handle) end get("/workflows_status", StepFlow.WorkflowStatusController, :list) post("/launch_workflow", StepFlow.WorkflowController, :create) get("/workflows_statistics", StepFlow.WorkflowController, :statistics) # Statistics APIs get("/durations/jobs", StepFlow.DurationsController, :list_jobs_durations) get("/durations/workflows", StepFlow.DurationsController, :list_workflows_durations) get( "/statistics/durations/workflows", StepFlow.StatisticsController, :get_workflows_duration_statistics ) get( "/statistics/durations/jobs", StepFlow.StatisticsController, :get_jobs_duration_statistics ) # Jobs APIs resources("/jobs", StepFlow.JobController, except: [:new, :edit, :delete, :update]) # Workers APIs resources("/worker_definitions", StepFlow.WorkerDefinitionController, except: [:new, :edit, :delete, :update] ) # Live Workers APIs get("/live_workers", StepFlow.LiveWorkersController, :index) # Workers APIs resources("/workers", StepFlow.WorkersController, only: [:index, :show, :update]) # Metrics APIs get("/metrics", StepFlow.MetricController, :index) scope "/swagger" do forward("/", PhoenixSwagger.Plug.SwaggerUI, otp_app: :step_flow, swagger_file: "step_flow_swagger.json" ) end get("/*path", StepFlow.IndexController, :not_found) def swagger_info do %{ info: %{ version: @version, title: "Step Flow" } } end end