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