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 aac6b94..f7fa696 100644 --- a/makima/src/daemon/api/contract.rs +++ b/makima/src/daemon/api/contract.rs @@ -41,7 +41,40 @@ pub struct CreateFileRequest { pub content: String, } +/// Request to update a contract. +#[derive(Serialize, Default)] +#[serde(rename_all = "camelCase")] +pub struct UpdateContractRequest { + #[serde(skip_serializing_if = "Option::is_none")] + pub name: Option<String>, + #[serde(skip_serializing_if = "Option::is_none")] + pub description: Option<String>, +} + impl ApiClient { + /// List all contracts for the authenticated user. + pub async fn list_contracts(&self) -> Result<JsonValue, ApiError> { + self.get("/api/v1/contracts").await + } + + /// Delete a contract. + pub async fn delete_contract(&self, contract_id: Uuid) -> Result<(), ApiError> { + self.delete(&format!("/api/v1/contracts/{}", contract_id)) + .await + } + + /// Update a contract. + pub async fn update_contract( + &self, + contract_id: Uuid, + name: Option<String>, + description: Option<String>, + ) -> Result<JsonValue, ApiError> { + let req = UpdateContractRequest { name, description }; + self.put(&format!("/api/v1/contracts/{}", contract_id), &req) + .await + } + /// Get contract status. pub async fn contract_status(&self, contract_id: Uuid) -> Result<JsonValue, ApiError> { self.get(&format!("/api/v1/contracts/{}/daemon/status", contract_id)) |
