Skip to main content

uarp_sdk/generated/api/
scheduler.rs

1// Code generated by @uarp/codegen from spec/openapi.json. DO NOT EDIT.
2//!
3//! Cron-based scheduling
4
5#![allow(unused_imports, clippy::too_many_arguments)]
6
7use reqwest::Method;
8use serde::{Deserialize, Serialize};
9
10use crate::client::{Client, Request, NO_BODY, NO_QUERY};
11use crate::error::Result;
12use crate::generated::models;
13use crate::multipart::{field_text, FilePart};
14use crate::util::encode_path;
15
16/// Cron-based scheduling
17#[derive(Debug, Clone)]
18pub struct SchedulerApi {
19    pub(crate) client: Client,
20}
21
22impl Client {
23    /// Cron-based scheduling
24    pub fn scheduler(&self) -> SchedulerApi {
25        SchedulerApi { client: self.clone() }
26    }
27}
28
29impl SchedulerApi {
30    /// Get agent schedule
31    ///
32    /// `GET /api/v1/agents/{agentId}/schedule`
33    ///
34    /// Required scopes: `agents:read`.
35    pub async fn get_schedule(&self, agent_id: &str) -> Result<models::Schedule> {
36        self.client
37            .request_json(Request {
38                method: Method::GET,
39                path: format!("/api/v1/agents/{}/schedule", encode_path(agent_id)),
40                query: NO_QUERY,
41                body: NO_BODY,
42                headers: Vec::new(),
43                idempotent: false,
44            })
45            .await
46    }
47
48    /// List every agent schedule
49    ///
50    /// One call for the whole tenant, so a canvas can badge scheduled agents without a per-agent
51    /// fetch. `agent_name` is resolved for display and is absent when the agent record is gone — a
52    /// schedule outliving its agent is exactly the case worth showing.
53    ///
54    /// `GET /api/v1/schedules`
55    pub async fn list_schedules(&self) -> Result<models::ListSchedulesResponse> {
56        self.client
57            .request_json(Request {
58                method: Method::GET,
59                path: "/api/v1/schedules".to_string(),
60                query: NO_QUERY,
61                body: NO_BODY,
62                headers: Vec::new(),
63                idempotent: false,
64            })
65            .await
66    }
67
68    /// Remove agent schedule
69    ///
70    /// `DELETE /api/v1/agents/{agentId}/schedule`
71    ///
72    /// Required scopes: `agents:write`.
73    pub async fn remove_schedule(&self, agent_id: &str) -> Result<models::RemoveScheduleResponse> {
74        self.client
75            .request_json(Request {
76                method: Method::DELETE,
77                path: format!("/api/v1/agents/{}/schedule", encode_path(agent_id)),
78                query: NO_QUERY,
79                body: NO_BODY,
80                headers: Vec::new(),
81                idempotent: true,
82            })
83            .await
84    }
85
86    /// Set/update agent schedule
87    ///
88    /// `PUT /api/v1/agents/{agentId}/schedule`
89    ///
90    /// Required scopes: `agents:write`.
91    pub async fn set_schedule(&self, agent_id: &str, body: &models::SetScheduleRequest) -> Result<models::ScheduleEntry> {
92        self.client
93            .request_json(Request {
94                method: Method::PUT,
95                path: format!("/api/v1/agents/{}/schedule", encode_path(agent_id)),
96                query: NO_QUERY,
97                body: Some(body),
98                headers: Vec::new(),
99                idempotent: true,
100            })
101            .await
102    }
103}