//! Directive API methods. use serde::Serialize; use uuid::Uuid; use super::client::{ApiClient, ApiError}; use super::supervisor::JsonValue; /// Request to update a directive. #[derive(Serialize)] #[serde(rename_all = "camelCase")] pub struct UpdateDirectiveRequest { #[serde(skip_serializing_if = "Option::is_none")] pub status: Option, #[serde(skip_serializing_if = "Option::is_none")] pub version: Option, } impl ApiClient { /// Get directive status and details. pub async fn directive_status(&self, directive_id: Uuid) -> Result { self.get(&format!("/api/v1/directives/{}", directive_id)) .await } /// List chains for a directive. pub async fn directive_chains(&self, directive_id: Uuid) -> Result { self.get(&format!("/api/v1/directives/{}/chains", directive_id)) .await } /// Get a chain with its steps. pub async fn directive_chain( &self, directive_id: Uuid, chain_id: Uuid, ) -> Result { self.get(&format!( "/api/v1/directives/{}/chains/{}", directive_id, chain_id )) .await } /// Update a directive. pub async fn directive_update( &self, directive_id: Uuid, req: UpdateDirectiveRequest, ) -> Result { self.put(&format!("/api/v1/directives/{}", directive_id), &req) .await } /// Start a directive (transition from draft to planning). pub async fn directive_start(&self, directive_id: Uuid) -> Result { self.post_empty(&format!("/api/v1/directives/{}/start", directive_id)) .await } }