1use schemars::JsonSchema;
6use serde::{Deserialize, Serialize};
7use serde_json::Value;
8
9#[derive(Debug, Clone, Deserialize, JsonSchema)]
13#[serde(rename_all = "snake_case")]
14pub enum ApprovalDecision {
15 Approve,
16 Reject,
17 RequestChanges,
18 Escalate,
19}
20
21#[derive(Debug, Clone, Deserialize, JsonSchema)]
23#[serde(rename_all = "snake_case")]
24pub enum RenderFormat {
25 Mermaid,
26 Json,
27}
28
29#[derive(Debug, Deserialize, JsonSchema)]
33pub struct GraphCreateParams {
34 #[serde(default)]
36 pub spec: Option<Value>,
37 #[serde(default)]
39 pub action: Option<String>,
40 #[serde(default)]
42 pub graph_id: Option<String>,
43 #[serde(default)]
45 pub idempotency_key: Option<String>,
46 #[serde(default)]
48 pub template: Option<Value>,
49 #[serde(default)]
51 pub overwrite: Option<bool>,
52}
53
54#[derive(Debug, Deserialize, JsonSchema)]
56pub struct GraphListParams {
57 #[serde(default)]
59 pub query: Option<String>,
60 #[serde(default)]
62 pub limit: Option<u32>,
63}
64
65#[derive(Debug, Deserialize, JsonSchema)]
67pub struct GraphInspectParams {
68 pub graph_id: String,
70}
71
72#[derive(Debug, Deserialize, JsonSchema)]
74pub struct GraphDeleteParams {
75 pub graph_id: String,
77}
78
79#[derive(Debug, Deserialize, JsonSchema)]
83pub struct GraphExecuteParams {
84 pub graph_id: String,
86 #[serde(default)]
88 pub input: Option<Value>,
89 #[serde(default)]
91 pub graph_version: Option<String>,
92 #[serde(default)]
94 pub thread_id: Option<String>,
95 #[serde(default)]
97 pub mode: Option<String>,
98 #[serde(default)]
100 pub idempotency_key: Option<String>,
101}
102
103#[derive(Debug, Deserialize, JsonSchema)]
107pub struct GraphStatusParams {
108 #[serde(default)]
111 pub resource: Option<String>,
112 #[serde(default)]
114 pub graph_id: Option<String>,
115 #[serde(default)]
117 pub run_id: Option<String>,
118 #[serde(default)]
120 pub cursor: Option<u64>,
121 #[serde(default)]
123 pub limit: Option<u64>,
124}
125
126#[derive(Debug, Serialize, Deserialize, JsonSchema)]
130pub struct StructuredOutput {
131 pub ok: bool,
133 #[serde(default)]
135 pub status: Option<String>,
136 #[serde(default)]
138 pub data: Option<Value>,
139 #[serde(default)]
141 pub error: Option<String>,
142 #[serde(default)]
144 pub error_code: Option<String>,
145 #[serde(default)]
147 pub graph_id: Option<String>,
148 #[serde(default)]
150 pub graph_version: Option<String>,
151 #[serde(default)]
153 pub run_id: Option<String>,
154}
155
156#[derive(Debug, Deserialize, JsonSchema)]
159#[serde(deny_unknown_fields)]
160pub struct ApprovalRequestParams {
161 pub checkpoint_id: String,
163 pub audience: String,
165 pub prompt: String,
167 pub allowed_decisions: Vec<String>,
169 pub expiration: String,
171}
172
173#[derive(Debug, Deserialize, JsonSchema)]
174pub struct ApprovalListParams {
175 #[serde(default)]
176 pub run_id: Option<String>,
177 #[serde(default)]
178 pub status: Option<String>,
179 #[serde(default)]
180 pub limit: Option<u32>,
181}
182
183#[derive(Debug, Deserialize, JsonSchema)]
184pub struct ApprovalGetParams {
185 pub approval_id: String,
186}
187
188#[derive(Debug, Deserialize, JsonSchema)]
189pub struct ApprovalDecideParams {
190 pub approval_id: String,
191 pub decision: String,
192 #[serde(alias = "actor")]
194 pub claimed_actor_label: String,
195}
196
197#[derive(Debug, Deserialize, JsonSchema)]
200pub struct RunStartParams {
201 pub graph_id: String,
202 #[serde(default)]
203 pub input: Option<Value>,
204 #[serde(default)]
205 pub graph_version: Option<String>,
206 #[serde(default)]
207 pub thread_id: Option<String>,
208 #[serde(default)]
209 pub idempotency_key: Option<String>,
210 #[serde(default)]
211 pub budgets: Option<Value>,
212 #[serde(default)]
215 pub checkpoint: Option<bool>,
216}
217
218#[derive(Debug, Deserialize, JsonSchema)]
219pub struct RunWaitParams {
220 pub run_id: String,
221 #[serde(default)]
222 pub timeout_ms: Option<u64>,
223}
224
225#[derive(Debug, Deserialize, JsonSchema)]
226pub struct RunCancelParams {
227 pub run_id: String,
228 #[serde(default)]
229 pub reason: Option<String>,
230}
231
232#[derive(Debug, Deserialize, JsonSchema)]
233pub struct RunGetParams {
234 pub run_id: String,
235}
236
237#[derive(Debug, Deserialize, JsonSchema)]
238pub struct RunStateParams {
239 pub run_id: String,
240 #[serde(default)]
241 pub checkpoint_id: Option<String>,
242 #[serde(default)]
243 pub json_pointer: Option<String>,
244}
245
246#[derive(Debug, Deserialize, JsonSchema)]
247pub struct RunEventsParams {
248 pub run_id: String,
249 #[serde(default)]
250 pub cursor: Option<u64>,
251 #[serde(default)]
252 pub limit: Option<u64>,
253}
254
255#[derive(Debug, Deserialize, JsonSchema)]
256pub struct RunReceiptParams {
257 pub run_id: String,
258}
259
260#[derive(Debug, Deserialize, JsonSchema)]
261pub struct RunCheckpointParams {
262 #[serde(default)]
263 pub run_id: Option<String>,
264 #[serde(default)]
265 pub checkpoint_id: Option<String>,
266}
267
268#[derive(Debug, Deserialize, JsonSchema)]
269pub struct RunResumeParams {
270 #[serde(default)]
271 pub checkpoint_id: Option<String>,
272 #[serde(default)]
273 pub run_id: Option<String>,
274}
275
276#[derive(Debug, Deserialize, JsonSchema)]
280#[serde(deny_unknown_fields)]
281pub struct WitnessCaptureParams {
282 pub locator: String,
283 pub content: String,
284 pub media_type: String,
285 pub authority_class: String,
286 #[serde(default)]
287 pub retrieved_at: Option<String>,
288}
289
290#[derive(Debug, Deserialize, JsonSchema)]
291#[serde(deny_unknown_fields)]
292pub struct WitnessGetParams {
293 pub witness_id: String,
294}
295
296#[derive(Debug, Deserialize, JsonSchema)]
299pub struct PolicyCheckParams {
300 pub graph_id: String,
301 #[serde(default)]
302 pub input: Option<Value>,
303}
304
305#[derive(Debug, Deserialize, JsonSchema)]
306pub struct RenderParams {
307 pub graph_id: String,
308 #[serde(default)]
309 pub format: Option<String>,
310}
311
312#[derive(Debug, Deserialize, JsonSchema)]
315pub struct TemplateListParams {
316 #[serde(default)]
317 pub query: Option<String>,
318}
319
320#[derive(Debug, Deserialize, JsonSchema)]
321pub struct TemplateInstantiateParams {
322 pub template_id: String,
323 pub name: String,
324}
325
326#[derive(Debug, Deserialize, JsonSchema)]
327pub struct TemplateCandidatesParams {
328 #[serde(default)]
329 pub state: Option<String>,
330}
331
332#[derive(Debug, Deserialize, JsonSchema)]
333pub struct TemplateOutcomesParams {
334 pub template_id: String,
335}