summaryrefslogtreecommitdiff
path: root/makima/src/server/mod.rs
diff options
context:
space:
mode:
authorsoryu <soryu@soryu.co>2026-02-03 23:49:08 +0000
committersoryu <soryu@soryu.co>2026-02-03 23:49:19 +0000
commitc732dd048128808cd9f67f6e1176a5b565df5678 (patch)
tree6ebf359c9c3f2d8aca264c53da6367b7f0af5fc8 /makima/src/server/mod.rs
parent9ebc9724afcc0482a8e7cd2369c06208fedbcbd1 (diff)
downloadsoryu-c732dd048128808cd9f67f6e1176a5b565df5678.tar.gz
soryu-c732dd048128808cd9f67f6e1176a5b565df5678.zip
Allow chain creation via web interface
Diffstat (limited to 'makima/src/server/mod.rs')
-rw-r--r--makima/src/server/mod.rs18
1 files changed, 17 insertions, 1 deletions
diff --git a/makima/src/server/mod.rs b/makima/src/server/mod.rs
index 553797f..5dde099 100644
--- a/makima/src/server/mod.rs
+++ b/makima/src/server/mod.rs
@@ -9,7 +9,7 @@ pub mod state;
use axum::{
http::StatusCode,
response::IntoResponse,
- routing::{get, post},
+ routing::{get, post, put},
Json, Router,
};
use serde::Serialize;
@@ -229,6 +229,22 @@ pub fn make_router(state: SharedState) -> Router {
.route("/chains/{id}/graph", get(chains::get_chain_graph))
.route("/chains/{id}/events", get(chains::get_chain_events))
.route("/chains/{id}/editor", get(chains::get_chain_editor))
+ // Chain contract definitions
+ .route(
+ "/chains/{id}/definitions",
+ get(chains::list_chain_definitions).post(chains::create_chain_definition),
+ )
+ .route(
+ "/chains/{chain_id}/definitions/{definition_id}",
+ put(chains::update_chain_definition).delete(chains::delete_chain_definition),
+ )
+ .route(
+ "/chains/{id}/definitions/graph",
+ get(chains::get_chain_definition_graph),
+ )
+ // Chain control
+ .route("/chains/{id}/start", post(chains::start_chain))
+ .route("/chains/{id}/stop", post(chains::stop_chain))
// Contract type templates (built-in only)
.route("/contract-types", get(templates::list_contract_types))
// Settings endpoints