diff options
Diffstat (limited to 'makima/src/daemon/api/contract.rs')
| -rw-r--r-- | makima/src/daemon/api/contract.rs | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/makima/src/daemon/api/contract.rs b/makima/src/daemon/api/contract.rs index f7fa696..955fe41 100644 --- a/makima/src/daemon/api/contract.rs +++ b/makima/src/daemon/api/contract.rs @@ -51,12 +51,39 @@ pub struct UpdateContractRequest { pub description: Option<String>, } +/// Request to create a new contract. +#[derive(Serialize)] +#[serde(rename_all = "camelCase")] +pub struct CreateContractRequest { + pub name: String, + #[serde(skip_serializing_if = "Option::is_none")] + pub description: Option<String>, + #[serde(skip_serializing_if = "Option::is_none")] + pub contract_type: Option<String>, + #[serde(skip_serializing_if = "Option::is_none")] + pub initial_phase: Option<String>, + #[serde(skip_serializing_if = "Option::is_none")] + pub autonomous_loop: Option<bool>, + #[serde(skip_serializing_if = "Option::is_none")] + pub phase_guard: Option<bool>, +} + impl ApiClient { /// List all contracts for the authenticated user. pub async fn list_contracts(&self) -> Result<JsonValue, ApiError> { self.get("/api/v1/contracts").await } + /// Create a new contract. + pub async fn create_contract(&self, req: CreateContractRequest) -> Result<JsonValue, ApiError> { + self.post("/api/v1/contracts", &req).await + } + + /// Get a contract with its tasks, files, and repositories. + pub async fn get_contract(&self, contract_id: Uuid) -> Result<JsonValue, ApiError> { + self.get(&format!("/api/v1/contracts/{}", contract_id)).await + } + /// Delete a contract. pub async fn delete_contract(&self, contract_id: Uuid) -> Result<(), ApiError> { self.delete(&format!("/api/v1/contracts/{}", contract_id)) @@ -191,4 +218,10 @@ impl ApiClient { self.post(&format!("/api/v1/contracts/{}/daemon/files", contract_id), &req) .await } + + /// Get task output history. + pub async fn get_task_output(&self, task_id: Uuid) -> Result<JsonValue, ApiError> { + self.get(&format!("/api/v1/mesh/tasks/{}/output", task_id)) + .await + } } |
