Skip to main content

spiral/api/tasks/
objects.rs

1// Generated by tools/service-contracts/rust.py. Do not edit.
2#![doc = "Generated transport-independent contract objects."]
3
4use std::collections::BTreeMap;
5use std::error::Error as StdError;
6use std::fmt::{self, Display, Formatter};
7
8use serde::{Deserialize, Deserializer, Serialize, Serializer};
9use serde_json::Value;
10use spiral_contract::error::{ErrorEnvelope, ServiceError};
11use spiral_contract::safelong::{SafeLong, SafeUnsignedLong};
12use spiral_contract::strict::{DeserializeStrict, Strict};
13use uuid::Uuid;
14
15/// AttemptLease contract value.
16#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
17pub struct AttemptLease {
18    /// Contract field attemptId.
19    #[serde(rename = "attemptId")]
20    pub attempt_id: Uuid,
21    /// Contract field leaseExpiresAtMicros.
22    #[serde(rename = "leaseExpiresAtMicros")]
23    pub lease_expires_at_micros: SafeLong,
24    /// Contract field stopReason.
25    #[serde(rename = "stopReason")]
26    #[serde(default, skip_serializing_if = "Option::is_none")]
27    pub stop_reason: Option<TaskStopReason>,
28    /// Contract field taskId.
29    #[serde(rename = "taskId")]
30    pub task_id: Uuid,
31}
32impl<'de> DeserializeStrict<'de> for AttemptLease {
33    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
34        #[derive(Deserialize)]
35        #[serde(deny_unknown_fields)]
36        struct __Wire {
37            #[serde(rename = "attemptId")]
38            attempt_id: Strict<Uuid>,
39            #[serde(rename = "leaseExpiresAtMicros")]
40            lease_expires_at_micros: Strict<SafeLong>,
41            #[serde(rename = "stopReason")]
42            #[serde(default)]
43            stop_reason: Strict<Option<TaskStopReason>>,
44            #[serde(rename = "taskId")]
45            task_id: Strict<Uuid>,
46        }
47        let wire = __Wire::deserialize(deserializer)?;
48        Ok(Self {
49            attempt_id: wire.attempt_id.0,
50            lease_expires_at_micros: wire.lease_expires_at_micros.0,
51            stop_reason: wire.stop_reason.0,
52            task_id: wire.task_id.0,
53        })
54    }
55}
56
57/// AttemptStatus contract value.
58#[derive(Clone, Debug, PartialEq, Eq)]
59pub enum AttemptStatus {
60    /// A known contract value.
61    Running,
62    /// A known contract value.
63    Succeeded,
64    /// A known contract value.
65    Failed,
66    /// A known contract value.
67    Cancelled,
68    /// A value introduced by a newer server.
69    Unknown(String),
70}
71impl Serialize for AttemptStatus {
72    fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
73        serializer.serialize_str(match self {
74            Self::Running => "running",
75            Self::Succeeded => "succeeded",
76            Self::Failed => "failed",
77            Self::Cancelled => "cancelled",
78            Self::Unknown(value) => value,
79        })
80    }
81}
82impl<'de> Deserialize<'de> for AttemptStatus {
83    fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
84        Ok(match String::deserialize(deserializer)?.as_str() {
85            "running" => Self::Running,
86            "succeeded" => Self::Succeeded,
87            "failed" => Self::Failed,
88            "cancelled" => Self::Cancelled,
89            value => Self::Unknown(value.to_owned()),
90        })
91    }
92}
93impl<'de> DeserializeStrict<'de> for AttemptStatus {
94    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
95        #[derive(Deserialize)]
96        enum __Known {
97            #[serde(rename = "running")]
98            Running,
99            #[serde(rename = "succeeded")]
100            Succeeded,
101            #[serde(rename = "failed")]
102            Failed,
103            #[serde(rename = "cancelled")]
104            Cancelled,
105        }
106        Ok(match __Known::deserialize(deserializer)? {
107            __Known::Running => Self::Running,
108            __Known::Succeeded => Self::Succeeded,
109            __Known::Failed => Self::Failed,
110            __Known::Cancelled => Self::Cancelled,
111        })
112    }
113}
114
115/// Caller contract value.
116#[derive(Clone, Debug, PartialEq, Eq)]
117pub enum Caller {
118    /// A known union arm.
119    Application(CallerApplication),
120    /// A known union arm.
121    Installation(CallerInstallation),
122    /// A known union arm.
123    Resource(CallerResource),
124    /// A known union arm.
125    Service(CallerService),
126    /// A known union arm.
127    User(CallerUser),
128    /// A known union arm.
129    Workload(CallerWorkload),
130    /// An unknown discriminator and its complete wire object.
131    Unknown { tag: String, value: Value },
132}
133impl Serialize for Caller {
134    fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
135        match self {
136            Self::Application(value) => {
137                let mut object = serde_json::Map::new();
138                object.insert("type".into(), Value::String("application".into()));
139                object.insert(
140                    "application".into(),
141                    serde_json::to_value(value).map_err(serde::ser::Error::custom)?,
142                );
143                Value::Object(object).serialize(serializer)
144            }
145            Self::Installation(value) => {
146                let mut object = serde_json::Map::new();
147                object.insert("type".into(), Value::String("installation".into()));
148                object.insert(
149                    "installation".into(),
150                    serde_json::to_value(value).map_err(serde::ser::Error::custom)?,
151                );
152                Value::Object(object).serialize(serializer)
153            }
154            Self::Resource(value) => {
155                let mut object = serde_json::Map::new();
156                object.insert("type".into(), Value::String("resource".into()));
157                object.insert(
158                    "resource".into(),
159                    serde_json::to_value(value).map_err(serde::ser::Error::custom)?,
160                );
161                Value::Object(object).serialize(serializer)
162            }
163            Self::Service(value) => {
164                let mut object = serde_json::Map::new();
165                object.insert("type".into(), Value::String("service".into()));
166                object.insert(
167                    "service".into(),
168                    serde_json::to_value(value).map_err(serde::ser::Error::custom)?,
169                );
170                Value::Object(object).serialize(serializer)
171            }
172            Self::User(value) => {
173                let mut object = serde_json::Map::new();
174                object.insert("type".into(), Value::String("user".into()));
175                object.insert(
176                    "user".into(),
177                    serde_json::to_value(value).map_err(serde::ser::Error::custom)?,
178                );
179                Value::Object(object).serialize(serializer)
180            }
181            Self::Workload(value) => {
182                let mut object = serde_json::Map::new();
183                object.insert("type".into(), Value::String("workload".into()));
184                object.insert(
185                    "workload".into(),
186                    serde_json::to_value(value).map_err(serde::ser::Error::custom)?,
187                );
188                Value::Object(object).serialize(serializer)
189            }
190            Self::Unknown { tag, value } => {
191                if value.get("type").and_then(Value::as_str) != Some(tag.as_str()) {
192                    return Err(serde::ser::Error::custom(
193                        "unknown union discriminator mismatch",
194                    ));
195                }
196                value.serialize(serializer)
197            }
198        }
199    }
200}
201impl<'de> Deserialize<'de> for Caller {
202    fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
203        let value = Value::deserialize(deserializer)?;
204        let tag = value
205            .get("type")
206            .and_then(Value::as_str)
207            .ok_or_else(|| serde::de::Error::custom("union requires type"))?;
208        match tag {
209            "application" => Ok(Self::Application(
210                serde_json::from_value(
211                    value
212                        .get("application")
213                        .cloned()
214                        .ok_or_else(|| serde::de::Error::custom("union requires matching arm"))?,
215                )
216                .map_err(serde::de::Error::custom)?,
217            )),
218            "installation" => Ok(Self::Installation(
219                serde_json::from_value(
220                    value
221                        .get("installation")
222                        .cloned()
223                        .ok_or_else(|| serde::de::Error::custom("union requires matching arm"))?,
224                )
225                .map_err(serde::de::Error::custom)?,
226            )),
227            "resource" => Ok(Self::Resource(
228                serde_json::from_value(
229                    value
230                        .get("resource")
231                        .cloned()
232                        .ok_or_else(|| serde::de::Error::custom("union requires matching arm"))?,
233                )
234                .map_err(serde::de::Error::custom)?,
235            )),
236            "service" => Ok(Self::Service(
237                serde_json::from_value(
238                    value
239                        .get("service")
240                        .cloned()
241                        .ok_or_else(|| serde::de::Error::custom("union requires matching arm"))?,
242                )
243                .map_err(serde::de::Error::custom)?,
244            )),
245            "user" => Ok(Self::User(
246                serde_json::from_value(
247                    value
248                        .get("user")
249                        .cloned()
250                        .ok_or_else(|| serde::de::Error::custom("union requires matching arm"))?,
251                )
252                .map_err(serde::de::Error::custom)?,
253            )),
254            "workload" => Ok(Self::Workload(
255                serde_json::from_value(
256                    value
257                        .get("workload")
258                        .cloned()
259                        .ok_or_else(|| serde::de::Error::custom("union requires matching arm"))?,
260                )
261                .map_err(serde::de::Error::custom)?,
262            )),
263            tag => Ok(Self::Unknown {
264                tag: tag.to_owned(),
265                value,
266            }),
267        }
268    }
269}
270impl<'de> DeserializeStrict<'de> for Caller {
271    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
272        #[derive(Deserialize)]
273        enum __Tag0 {
274            #[serde(rename = "application")]
275            Value,
276        }
277        #[derive(Deserialize)]
278        #[serde(deny_unknown_fields)]
279        struct __Arm0 {
280            #[serde(rename = "type")]
281            _tag: __Tag0,
282            #[serde(rename = "application")]
283            value: Strict<CallerApplication>,
284        }
285        #[derive(Deserialize)]
286        enum __Tag1 {
287            #[serde(rename = "installation")]
288            Value,
289        }
290        #[derive(Deserialize)]
291        #[serde(deny_unknown_fields)]
292        struct __Arm1 {
293            #[serde(rename = "type")]
294            _tag: __Tag1,
295            #[serde(rename = "installation")]
296            value: Strict<CallerInstallation>,
297        }
298        #[derive(Deserialize)]
299        enum __Tag2 {
300            #[serde(rename = "resource")]
301            Value,
302        }
303        #[derive(Deserialize)]
304        #[serde(deny_unknown_fields)]
305        struct __Arm2 {
306            #[serde(rename = "type")]
307            _tag: __Tag2,
308            #[serde(rename = "resource")]
309            value: Strict<CallerResource>,
310        }
311        #[derive(Deserialize)]
312        enum __Tag3 {
313            #[serde(rename = "service")]
314            Value,
315        }
316        #[derive(Deserialize)]
317        #[serde(deny_unknown_fields)]
318        struct __Arm3 {
319            #[serde(rename = "type")]
320            _tag: __Tag3,
321            #[serde(rename = "service")]
322            value: Strict<CallerService>,
323        }
324        #[derive(Deserialize)]
325        enum __Tag4 {
326            #[serde(rename = "user")]
327            Value,
328        }
329        #[derive(Deserialize)]
330        #[serde(deny_unknown_fields)]
331        struct __Arm4 {
332            #[serde(rename = "type")]
333            _tag: __Tag4,
334            #[serde(rename = "user")]
335            value: Strict<CallerUser>,
336        }
337        #[derive(Deserialize)]
338        enum __Tag5 {
339            #[serde(rename = "workload")]
340            Value,
341        }
342        #[derive(Deserialize)]
343        #[serde(deny_unknown_fields)]
344        struct __Arm5 {
345            #[serde(rename = "type")]
346            _tag: __Tag5,
347            #[serde(rename = "workload")]
348            value: Strict<CallerWorkload>,
349        }
350        #[derive(Deserialize)]
351        #[serde(untagged)]
352        enum __Known {
353            Application(Box<__Arm0>),
354            Installation(Box<__Arm1>),
355            Resource(Box<__Arm2>),
356            Service(Box<__Arm3>),
357            User(Box<__Arm4>),
358            Workload(Box<__Arm5>),
359        }
360        Ok(match __Known::deserialize(deserializer)? {
361            __Known::Application(arm) => Self::Application(arm.value.0),
362            __Known::Installation(arm) => Self::Installation(arm.value.0),
363            __Known::Resource(arm) => Self::Resource(arm.value.0),
364            __Known::Service(arm) => Self::Service(arm.value.0),
365            __Known::User(arm) => Self::User(arm.value.0),
366            __Known::Workload(arm) => Self::Workload(arm.value.0),
367        })
368    }
369}
370
371/// CallerApplication contract value.
372#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
373pub struct CallerApplication {
374    /// Contract field applicationId.
375    #[serde(rename = "applicationId")]
376    pub application_id: String,
377}
378impl<'de> DeserializeStrict<'de> for CallerApplication {
379    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
380        #[derive(Deserialize)]
381        #[serde(deny_unknown_fields)]
382        struct __Wire {
383            #[serde(rename = "applicationId")]
384            application_id: Strict<String>,
385        }
386        let wire = __Wire::deserialize(deserializer)?;
387        Ok(Self {
388            application_id: wire.application_id.0,
389        })
390    }
391}
392
393/// CallerInstallation contract value.
394#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
395pub struct CallerInstallation {
396    /// Contract field installationId.
397    #[serde(rename = "installationId")]
398    pub installation_id: String,
399}
400impl<'de> DeserializeStrict<'de> for CallerInstallation {
401    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
402        #[derive(Deserialize)]
403        #[serde(deny_unknown_fields)]
404        struct __Wire {
405            #[serde(rename = "installationId")]
406            installation_id: Strict<String>,
407        }
408        let wire = __Wire::deserialize(deserializer)?;
409        Ok(Self {
410            installation_id: wire.installation_id.0,
411        })
412    }
413}
414
415/// CallerResource contract value.
416#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
417pub struct CallerResource {
418    /// Contract field spid.
419    #[serde(rename = "spid")]
420    pub spid: String,
421}
422impl<'de> DeserializeStrict<'de> for CallerResource {
423    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
424        #[derive(Deserialize)]
425        #[serde(deny_unknown_fields)]
426        struct __Wire {
427            #[serde(rename = "spid")]
428            spid: Strict<String>,
429        }
430        let wire = __Wire::deserialize(deserializer)?;
431        Ok(Self { spid: wire.spid.0 })
432    }
433}
434
435/// CallerService contract value.
436#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
437pub struct CallerService {
438    /// Contract field serviceId.
439    #[serde(rename = "serviceId")]
440    pub service_id: String,
441}
442impl<'de> DeserializeStrict<'de> for CallerService {
443    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
444        #[derive(Deserialize)]
445        #[serde(deny_unknown_fields)]
446        struct __Wire {
447            #[serde(rename = "serviceId")]
448            service_id: Strict<String>,
449        }
450        let wire = __Wire::deserialize(deserializer)?;
451        Ok(Self {
452            service_id: wire.service_id.0,
453        })
454    }
455}
456
457/// CallerUser contract value.
458#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
459pub struct CallerUser {
460    /// Contract field orgId.
461    #[serde(rename = "orgId")]
462    pub org_id: String,
463    /// Contract field userId.
464    #[serde(rename = "userId")]
465    pub user_id: String,
466}
467impl<'de> DeserializeStrict<'de> for CallerUser {
468    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
469        #[derive(Deserialize)]
470        #[serde(deny_unknown_fields)]
471        struct __Wire {
472            #[serde(rename = "orgId")]
473            org_id: Strict<String>,
474            #[serde(rename = "userId")]
475            user_id: Strict<String>,
476        }
477        let wire = __Wire::deserialize(deserializer)?;
478        Ok(Self {
479            org_id: wire.org_id.0,
480            user_id: wire.user_id.0,
481        })
482    }
483}
484
485/// CallerWorkload contract value.
486#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
487pub struct CallerWorkload {
488    /// Contract field workloadId.
489    #[serde(rename = "workloadId")]
490    pub workload_id: String,
491}
492impl<'de> DeserializeStrict<'de> for CallerWorkload {
493    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
494        #[derive(Deserialize)]
495        #[serde(deny_unknown_fields)]
496        struct __Wire {
497            #[serde(rename = "workloadId")]
498            workload_id: Strict<String>,
499        }
500        let wire = __Wire::deserialize(deserializer)?;
501        Ok(Self {
502            workload_id: wire.workload_id.0,
503        })
504    }
505}
506
507/// ColumnGroupCompactionCommit contract value.
508#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
509pub struct ColumnGroupCompactionCommit {
510    /// Contract field columnGroup.
511    #[serde(rename = "columnGroup")]
512    pub column_group: String,
513    /// Contract field committedAtMicros.
514    #[serde(rename = "committedAtMicros")]
515    pub committed_at_micros: SafeUnsignedLong,
516}
517impl<'de> DeserializeStrict<'de> for ColumnGroupCompactionCommit {
518    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
519        #[derive(Deserialize)]
520        #[serde(deny_unknown_fields)]
521        struct __Wire {
522            #[serde(rename = "columnGroup")]
523            column_group: Strict<String>,
524            #[serde(rename = "committedAtMicros")]
525            committed_at_micros: Strict<SafeUnsignedLong>,
526        }
527        let wire = __Wire::deserialize(deserializer)?;
528        Ok(Self {
529            column_group: wire.column_group.0,
530            committed_at_micros: wire.committed_at_micros.0,
531        })
532    }
533}
534
535/// ColumnGroupCompactionProgress contract value.
536#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
537pub struct ColumnGroupCompactionProgress {
538    /// Contract field columnGroup.
539    #[serde(rename = "columnGroup")]
540    pub column_group: String,
541    /// Contract field groupCount.
542    #[serde(rename = "groupCount")]
543    pub group_count: SafeUnsignedLong,
544    /// Contract field groupIndex.
545    #[serde(rename = "groupIndex")]
546    pub group_index: SafeUnsignedLong,
547    /// Contract field step.
548    #[serde(rename = "step")]
549    #[serde(default, skip_serializing_if = "Option::is_none")]
550    pub step: Option<ColumnGroupCompactionStep>,
551}
552impl<'de> DeserializeStrict<'de> for ColumnGroupCompactionProgress {
553    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
554        #[derive(Deserialize)]
555        #[serde(deny_unknown_fields)]
556        struct __Wire {
557            #[serde(rename = "columnGroup")]
558            column_group: Strict<String>,
559            #[serde(rename = "groupCount")]
560            group_count: Strict<SafeUnsignedLong>,
561            #[serde(rename = "groupIndex")]
562            group_index: Strict<SafeUnsignedLong>,
563            #[serde(rename = "step")]
564            #[serde(default)]
565            step: Strict<Option<ColumnGroupCompactionStep>>,
566        }
567        let wire = __Wire::deserialize(deserializer)?;
568        Ok(Self {
569            column_group: wire.column_group.0,
570            group_count: wire.group_count.0,
571            group_index: wire.group_index.0,
572            step: wire.step.0,
573        })
574    }
575}
576
577/// ColumnGroupCompactionStep contract value.
578#[derive(Clone, Debug, PartialEq, Eq)]
579pub enum ColumnGroupCompactionStep {
580    /// A known contract value.
581    Split,
582    /// A known contract value.
583    SizeBased,
584    /// A known contract value.
585    Overlaps,
586    /// A known contract value.
587    Committing,
588    /// A known contract value.
589    Committed,
590    /// A value introduced by a newer server.
591    Unknown(String),
592}
593impl Serialize for ColumnGroupCompactionStep {
594    fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
595        serializer.serialize_str(match self {
596            Self::Split => "split",
597            Self::SizeBased => "size_based",
598            Self::Overlaps => "overlaps",
599            Self::Committing => "committing",
600            Self::Committed => "committed",
601            Self::Unknown(value) => value,
602        })
603    }
604}
605impl<'de> Deserialize<'de> for ColumnGroupCompactionStep {
606    fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
607        Ok(match String::deserialize(deserializer)?.as_str() {
608            "split" => Self::Split,
609            "size_based" => Self::SizeBased,
610            "overlaps" => Self::Overlaps,
611            "committing" => Self::Committing,
612            "committed" => Self::Committed,
613            value => Self::Unknown(value.to_owned()),
614        })
615    }
616}
617impl<'de> DeserializeStrict<'de> for ColumnGroupCompactionStep {
618    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
619        #[derive(Deserialize)]
620        enum __Known {
621            #[serde(rename = "split")]
622            Split,
623            #[serde(rename = "size_based")]
624            SizeBased,
625            #[serde(rename = "overlaps")]
626            Overlaps,
627            #[serde(rename = "committing")]
628            Committing,
629            #[serde(rename = "committed")]
630            Committed,
631        }
632        Ok(match __Known::deserialize(deserializer)? {
633            __Known::Split => Self::Split,
634            __Known::SizeBased => Self::SizeBased,
635            __Known::Overlaps => Self::Overlaps,
636            __Known::Committing => Self::Committing,
637            __Known::Committed => Self::Committed,
638        })
639    }
640}
641
642/// ComputeClass contract value.
643#[derive(Clone, Debug, PartialEq, Eq)]
644pub enum ComputeClass {
645    /// A known union arm.
646    Cpu(ComputeClassCpu),
647    /// A known union arm.
648    Gpu(ComputeClassGpu),
649    /// An unknown discriminator and its complete wire object.
650    Unknown { tag: String, value: Value },
651}
652impl Serialize for ComputeClass {
653    fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
654        match self {
655            Self::Cpu(value) => {
656                let mut object = serde_json::Map::new();
657                object.insert("type".into(), Value::String("cpu".into()));
658                object.insert(
659                    "cpu".into(),
660                    serde_json::to_value(value).map_err(serde::ser::Error::custom)?,
661                );
662                Value::Object(object).serialize(serializer)
663            }
664            Self::Gpu(value) => {
665                let mut object = serde_json::Map::new();
666                object.insert("type".into(), Value::String("gpu".into()));
667                object.insert(
668                    "gpu".into(),
669                    serde_json::to_value(value).map_err(serde::ser::Error::custom)?,
670                );
671                Value::Object(object).serialize(serializer)
672            }
673            Self::Unknown { tag, value } => {
674                if value.get("type").and_then(Value::as_str) != Some(tag.as_str()) {
675                    return Err(serde::ser::Error::custom(
676                        "unknown union discriminator mismatch",
677                    ));
678                }
679                value.serialize(serializer)
680            }
681        }
682    }
683}
684impl<'de> Deserialize<'de> for ComputeClass {
685    fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
686        let value = Value::deserialize(deserializer)?;
687        let tag = value
688            .get("type")
689            .and_then(Value::as_str)
690            .ok_or_else(|| serde::de::Error::custom("union requires type"))?;
691        match tag {
692            "cpu" => Ok(Self::Cpu(
693                serde_json::from_value(
694                    value
695                        .get("cpu")
696                        .cloned()
697                        .ok_or_else(|| serde::de::Error::custom("union requires matching arm"))?,
698                )
699                .map_err(serde::de::Error::custom)?,
700            )),
701            "gpu" => Ok(Self::Gpu(
702                serde_json::from_value(
703                    value
704                        .get("gpu")
705                        .cloned()
706                        .ok_or_else(|| serde::de::Error::custom("union requires matching arm"))?,
707                )
708                .map_err(serde::de::Error::custom)?,
709            )),
710            tag => Ok(Self::Unknown {
711                tag: tag.to_owned(),
712                value,
713            }),
714        }
715    }
716}
717impl<'de> DeserializeStrict<'de> for ComputeClass {
718    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
719        #[derive(Deserialize)]
720        enum __Tag0 {
721            #[serde(rename = "cpu")]
722            Value,
723        }
724        #[derive(Deserialize)]
725        #[serde(deny_unknown_fields)]
726        struct __Arm0 {
727            #[serde(rename = "type")]
728            _tag: __Tag0,
729            #[serde(rename = "cpu")]
730            value: Strict<ComputeClassCpu>,
731        }
732        #[derive(Deserialize)]
733        enum __Tag1 {
734            #[serde(rename = "gpu")]
735            Value,
736        }
737        #[derive(Deserialize)]
738        #[serde(deny_unknown_fields)]
739        struct __Arm1 {
740            #[serde(rename = "type")]
741            _tag: __Tag1,
742            #[serde(rename = "gpu")]
743            value: Strict<ComputeClassGpu>,
744        }
745        #[derive(Deserialize)]
746        #[serde(untagged)]
747        enum __Known {
748            Cpu(Box<__Arm0>),
749            Gpu(Box<__Arm1>),
750        }
751        Ok(match __Known::deserialize(deserializer)? {
752            __Known::Cpu(arm) => Self::Cpu(arm.value.0),
753            __Known::Gpu(arm) => Self::Gpu(arm.value.0),
754        })
755    }
756}
757
758/// ComputeClassCpu contract value.
759#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
760pub struct ComputeClassCpu {}
761impl<'de> DeserializeStrict<'de> for ComputeClassCpu {
762    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
763        #[derive(Deserialize)]
764        #[serde(deny_unknown_fields)]
765        struct __Wire {}
766        __Wire::deserialize(deserializer)?;
767        Ok(Self {})
768    }
769}
770
771/// ComputeClassGpu contract value.
772#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
773pub struct ComputeClassGpu {
774    /// Contract field count.
775    #[serde(rename = "count")]
776    #[serde(default, skip_serializing_if = "Option::is_none")]
777    pub count: Option<u32>,
778    /// Contract field memoryBytes.
779    #[serde(rename = "memoryBytes")]
780    #[serde(default, skip_serializing_if = "Option::is_none")]
781    pub memory_bytes: Option<SafeUnsignedLong>,
782    /// Contract field runtime.
783    #[serde(rename = "runtime")]
784    pub runtime: GpuRuntime,
785}
786impl<'de> DeserializeStrict<'de> for ComputeClassGpu {
787    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
788        #[derive(Deserialize)]
789        #[serde(deny_unknown_fields)]
790        struct __Wire {
791            #[serde(rename = "count")]
792            #[serde(default)]
793            count: Strict<Option<u32>>,
794            #[serde(rename = "memoryBytes")]
795            #[serde(default)]
796            memory_bytes: Strict<Option<SafeUnsignedLong>>,
797            #[serde(rename = "runtime")]
798            runtime: Strict<GpuRuntime>,
799        }
800        let wire = __Wire::deserialize(deserializer)?;
801        Ok(Self {
802            count: wire.count.0,
803            memory_bytes: wire.memory_bytes.0,
804            runtime: wire.runtime.0,
805        })
806    }
807}
808
809/// CreateTaskRequest contract value.
810#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
811pub struct CreateTaskRequest {
812    /// Contract field idempotencyKey.
813    #[serde(rename = "idempotencyKey")]
814    pub idempotency_key: String,
815    /// Contract field input.
816    #[serde(rename = "input")]
817    pub input: Value,
818    /// Contract field options.
819    #[serde(rename = "options")]
820    #[serde(default, skip_serializing_if = "Option::is_none")]
821    pub options: Option<TaskOptions>,
822    /// Contract field parentTaskId.
823    #[serde(rename = "parentTaskId")]
824    #[serde(default, skip_serializing_if = "Option::is_none")]
825    pub parent_task_id: Option<Uuid>,
826    /// Contract field taskSpecId.
827    #[serde(rename = "taskSpecId")]
828    pub task_spec_id: TaskSpecId,
829}
830impl<'de> DeserializeStrict<'de> for CreateTaskRequest {
831    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
832        #[derive(Deserialize)]
833        #[serde(deny_unknown_fields)]
834        struct __Wire {
835            #[serde(rename = "idempotencyKey")]
836            idempotency_key: Strict<String>,
837            #[serde(rename = "input")]
838            input: Strict<Value>,
839            #[serde(rename = "options")]
840            #[serde(default)]
841            options: Strict<Option<TaskOptions>>,
842            #[serde(rename = "parentTaskId")]
843            #[serde(default)]
844            parent_task_id: Strict<Option<Uuid>>,
845            #[serde(rename = "taskSpecId")]
846            task_spec_id: Strict<TaskSpecId>,
847        }
848        let wire = __Wire::deserialize(deserializer)?;
849        Ok(Self {
850            idempotency_key: wire.idempotency_key.0,
851            input: wire.input.0,
852            options: wire.options.0,
853            parent_task_id: wire.parent_task_id.0,
854            task_spec_id: wire.task_spec_id.0,
855        })
856    }
857}
858
859/// CreateTaskResponse contract value.
860#[derive(Clone, Debug, PartialEq, Eq)]
861pub enum CreateTaskResponse {
862    /// A known union arm.
863    Accepted(Box<CreateTaskResponseAccepted>),
864    /// A known union arm.
865    Skipped(CreateTaskResponseSkipped),
866    /// An unknown discriminator and its complete wire object.
867    Unknown { tag: String, value: Value },
868}
869impl Serialize for CreateTaskResponse {
870    fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
871        match self {
872            Self::Accepted(value) => {
873                let mut object = serde_json::Map::new();
874                object.insert("type".into(), Value::String("accepted".into()));
875                object.insert(
876                    "accepted".into(),
877                    serde_json::to_value(value).map_err(serde::ser::Error::custom)?,
878                );
879                Value::Object(object).serialize(serializer)
880            }
881            Self::Skipped(value) => {
882                let mut object = serde_json::Map::new();
883                object.insert("type".into(), Value::String("skipped".into()));
884                object.insert(
885                    "skipped".into(),
886                    serde_json::to_value(value).map_err(serde::ser::Error::custom)?,
887                );
888                Value::Object(object).serialize(serializer)
889            }
890            Self::Unknown { tag, value } => {
891                if value.get("type").and_then(Value::as_str) != Some(tag.as_str()) {
892                    return Err(serde::ser::Error::custom(
893                        "unknown union discriminator mismatch",
894                    ));
895                }
896                value.serialize(serializer)
897            }
898        }
899    }
900}
901impl<'de> Deserialize<'de> for CreateTaskResponse {
902    fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
903        let value = Value::deserialize(deserializer)?;
904        let tag = value
905            .get("type")
906            .and_then(Value::as_str)
907            .ok_or_else(|| serde::de::Error::custom("union requires type"))?;
908        match tag {
909            "accepted" => Ok(Self::Accepted(
910                serde_json::from_value(
911                    value
912                        .get("accepted")
913                        .cloned()
914                        .ok_or_else(|| serde::de::Error::custom("union requires matching arm"))?,
915                )
916                .map_err(serde::de::Error::custom)?,
917            )),
918            "skipped" => Ok(Self::Skipped(
919                serde_json::from_value(
920                    value
921                        .get("skipped")
922                        .cloned()
923                        .ok_or_else(|| serde::de::Error::custom("union requires matching arm"))?,
924                )
925                .map_err(serde::de::Error::custom)?,
926            )),
927            tag => Ok(Self::Unknown {
928                tag: tag.to_owned(),
929                value,
930            }),
931        }
932    }
933}
934impl<'de> DeserializeStrict<'de> for CreateTaskResponse {
935    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
936        #[derive(Deserialize)]
937        enum __Tag0 {
938            #[serde(rename = "accepted")]
939            Value,
940        }
941        #[derive(Deserialize)]
942        #[serde(deny_unknown_fields)]
943        struct __Arm0 {
944            #[serde(rename = "type")]
945            _tag: __Tag0,
946            #[serde(rename = "accepted")]
947            value: Strict<CreateTaskResponseAccepted>,
948        }
949        #[derive(Deserialize)]
950        enum __Tag1 {
951            #[serde(rename = "skipped")]
952            Value,
953        }
954        #[derive(Deserialize)]
955        #[serde(deny_unknown_fields)]
956        struct __Arm1 {
957            #[serde(rename = "type")]
958            _tag: __Tag1,
959            #[serde(rename = "skipped")]
960            value: Strict<CreateTaskResponseSkipped>,
961        }
962        #[derive(Deserialize)]
963        #[serde(untagged)]
964        enum __Known {
965            Accepted(Box<__Arm0>),
966            Skipped(Box<__Arm1>),
967        }
968        Ok(match __Known::deserialize(deserializer)? {
969            __Known::Accepted(arm) => Self::Accepted(Box::new(arm.value.0)),
970            __Known::Skipped(arm) => Self::Skipped(arm.value.0),
971        })
972    }
973}
974
975/// CreateTaskResponseAccepted contract value.
976#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
977pub struct CreateTaskResponseAccepted {
978    /// Contract field task.
979    #[serde(rename = "task")]
980    pub task: Task,
981}
982impl<'de> DeserializeStrict<'de> for CreateTaskResponseAccepted {
983    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
984        #[derive(Deserialize)]
985        #[serde(deny_unknown_fields)]
986        struct __Wire {
987            #[serde(rename = "task")]
988            task: Strict<Task>,
989        }
990        let wire = __Wire::deserialize(deserializer)?;
991        Ok(Self { task: wire.task.0 })
992    }
993}
994
995/// CreateTaskResponseSkipped contract value.
996#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
997pub struct CreateTaskResponseSkipped {}
998impl<'de> DeserializeStrict<'de> for CreateTaskResponseSkipped {
999    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1000        #[derive(Deserialize)]
1001        #[serde(deny_unknown_fields)]
1002        struct __Wire {}
1003        __Wire::deserialize(deserializer)?;
1004        Ok(Self {})
1005    }
1006}
1007
1008/// CreateWorkerPoolRequest contract value.
1009#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
1010pub struct CreateWorkerPoolRequest {
1011    /// Contract field capabilities.
1012    #[serde(rename = "capabilities")]
1013    pub capabilities: WorkerCapabilities,
1014    /// Contract field maxWorkers.
1015    #[serde(rename = "maxWorkers")]
1016    #[serde(default, skip_serializing_if = "Option::is_none")]
1017    pub max_workers: Option<u32>,
1018    /// Contract field name.
1019    #[serde(rename = "name")]
1020    pub name: String,
1021}
1022impl<'de> DeserializeStrict<'de> for CreateWorkerPoolRequest {
1023    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1024        #[derive(Deserialize)]
1025        #[serde(deny_unknown_fields)]
1026        struct __Wire {
1027            #[serde(rename = "capabilities")]
1028            capabilities: Strict<WorkerCapabilities>,
1029            #[serde(rename = "maxWorkers")]
1030            #[serde(default)]
1031            max_workers: Strict<Option<u32>>,
1032            #[serde(rename = "name")]
1033            name: Strict<String>,
1034        }
1035        let wire = __Wire::deserialize(deserializer)?;
1036        Ok(Self {
1037            capabilities: wire.capabilities.0,
1038            max_workers: wire.max_workers.0,
1039            name: wire.name.0,
1040        })
1041    }
1042}
1043
1044/// DeletionApplicationProgress contract value.
1045#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
1046pub struct DeletionApplicationProgress {
1047    /// Contract field checked.
1048    #[serde(rename = "checked")]
1049    pub checked: SafeUnsignedLong,
1050    /// Contract field columnGroup.
1051    #[serde(rename = "columnGroup")]
1052    pub column_group: String,
1053    /// Contract field groupCount.
1054    #[serde(rename = "groupCount")]
1055    pub group_count: SafeUnsignedLong,
1056    /// Contract field groupIndex.
1057    #[serde(rename = "groupIndex")]
1058    pub group_index: SafeUnsignedLong,
1059    /// Contract field rewritten.
1060    #[serde(rename = "rewritten")]
1061    pub rewritten: SafeUnsignedLong,
1062    /// Contract field skipped.
1063    #[serde(rename = "skipped")]
1064    pub skipped: SafeUnsignedLong,
1065    /// Contract field total.
1066    #[serde(rename = "total")]
1067    #[serde(default, skip_serializing_if = "Option::is_none")]
1068    pub total: Option<SafeUnsignedLong>,
1069}
1070impl<'de> DeserializeStrict<'de> for DeletionApplicationProgress {
1071    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1072        #[derive(Deserialize)]
1073        #[serde(deny_unknown_fields)]
1074        struct __Wire {
1075            #[serde(rename = "checked")]
1076            checked: Strict<SafeUnsignedLong>,
1077            #[serde(rename = "columnGroup")]
1078            column_group: Strict<String>,
1079            #[serde(rename = "groupCount")]
1080            group_count: Strict<SafeUnsignedLong>,
1081            #[serde(rename = "groupIndex")]
1082            group_index: Strict<SafeUnsignedLong>,
1083            #[serde(rename = "rewritten")]
1084            rewritten: Strict<SafeUnsignedLong>,
1085            #[serde(rename = "skipped")]
1086            skipped: Strict<SafeUnsignedLong>,
1087            #[serde(rename = "total")]
1088            #[serde(default)]
1089            total: Strict<Option<SafeUnsignedLong>>,
1090        }
1091        let wire = __Wire::deserialize(deserializer)?;
1092        Ok(Self {
1093            checked: wire.checked.0,
1094            column_group: wire.column_group.0,
1095            group_count: wire.group_count.0,
1096            group_index: wire.group_index.0,
1097            rewritten: wire.rewritten.0,
1098            skipped: wire.skipped.0,
1099            total: wire.total.0,
1100        })
1101    }
1102}
1103
1104/// DrainWorkerResponse contract value.
1105#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
1106pub struct DrainWorkerResponse {
1107    /// Contract field workerSession.
1108    #[serde(rename = "workerSession")]
1109    pub worker_session: WorkerSession,
1110}
1111impl<'de> DeserializeStrict<'de> for DrainWorkerResponse {
1112    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1113        #[derive(Deserialize)]
1114        #[serde(deny_unknown_fields)]
1115        struct __Wire {
1116            #[serde(rename = "workerSession")]
1117            worker_session: Strict<WorkerSession>,
1118        }
1119        let wire = __Wire::deserialize(deserializer)?;
1120        Ok(Self {
1121            worker_session: wire.worker_session.0,
1122        })
1123    }
1124}
1125
1126/// One child of an Enrichment refresh, writing the values of its assigned source files. Its parent
1127/// is the refresh.
1128#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
1129pub struct EnrichmentComputeDefinition {
1130    /// Contract field enrichmentResourceId.
1131    #[serde(rename = "enrichmentResourceId")]
1132    pub enrichment_resource_id: Uuid,
1133    /// Contract field fragmentIds.
1134    #[serde(rename = "fragmentIds")]
1135    pub fragment_ids: Vec<Uuid>,
1136    /// Contract field readTarget.
1137    #[serde(rename = "readTarget")]
1138    pub read_target: TaskReadTarget,
1139}
1140impl<'de> DeserializeStrict<'de> for EnrichmentComputeDefinition {
1141    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1142        #[derive(Deserialize)]
1143        #[serde(deny_unknown_fields)]
1144        struct __Wire {
1145            #[serde(rename = "enrichmentResourceId")]
1146            enrichment_resource_id: Strict<Uuid>,
1147            #[serde(rename = "fragmentIds")]
1148            fragment_ids: Strict<Vec<Uuid>>,
1149            #[serde(rename = "readTarget")]
1150            read_target: Strict<TaskReadTarget>,
1151        }
1152        let wire = __Wire::deserialize(deserializer)?;
1153        Ok(Self {
1154            enrichment_resource_id: wire.enrichment_resource_id.0,
1155            fragment_ids: wire.fragment_ids.0,
1156            read_target: wire.read_target.0,
1157        })
1158    }
1159}
1160
1161/// Refresh one Enrichment against its source Table's version at an exact Project commit, computing
1162/// only the rows whose inputs changed since the version its values are current for, and publish one
1163/// Enrichment version.
1164#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
1165pub struct EnrichmentRefreshDefinition {
1166    /// Contract field enrichmentResourceId.
1167    #[serde(rename = "enrichmentResourceId")]
1168    pub enrichment_resource_id: Uuid,
1169    /// Contract field readTarget.
1170    #[serde(rename = "readTarget")]
1171    pub read_target: TaskReadTarget,
1172}
1173impl<'de> DeserializeStrict<'de> for EnrichmentRefreshDefinition {
1174    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1175        #[derive(Deserialize)]
1176        #[serde(deny_unknown_fields)]
1177        struct __Wire {
1178            #[serde(rename = "enrichmentResourceId")]
1179            enrichment_resource_id: Strict<Uuid>,
1180            #[serde(rename = "readTarget")]
1181            read_target: Strict<TaskReadTarget>,
1182        }
1183        let wire = __Wire::deserialize(deserializer)?;
1184        Ok(Self {
1185            enrichment_resource_id: wire.enrichment_resource_id.0,
1186            read_target: wire.read_target.0,
1187        })
1188    }
1189}
1190
1191/// FinishAttemptOutcome contract value.
1192#[derive(Clone, Debug, PartialEq, Eq)]
1193pub enum FinishAttemptOutcome {
1194    /// A known union arm.
1195    Cancelled(FinishAttemptOutcomeCancelled),
1196    /// A known union arm.
1197    Failed(FinishAttemptOutcomeFailed),
1198    /// A known union arm.
1199    Succeeded(FinishAttemptOutcomeSucceeded),
1200    /// An unknown discriminator and its complete wire object.
1201    Unknown { tag: String, value: Value },
1202}
1203impl Serialize for FinishAttemptOutcome {
1204    fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
1205        match self {
1206            Self::Cancelled(value) => {
1207                let mut object = serde_json::Map::new();
1208                object.insert("type".into(), Value::String("cancelled".into()));
1209                object.insert(
1210                    "cancelled".into(),
1211                    serde_json::to_value(value).map_err(serde::ser::Error::custom)?,
1212                );
1213                Value::Object(object).serialize(serializer)
1214            }
1215            Self::Failed(value) => {
1216                let mut object = serde_json::Map::new();
1217                object.insert("type".into(), Value::String("failed".into()));
1218                object.insert(
1219                    "failed".into(),
1220                    serde_json::to_value(value).map_err(serde::ser::Error::custom)?,
1221                );
1222                Value::Object(object).serialize(serializer)
1223            }
1224            Self::Succeeded(value) => {
1225                let mut object = serde_json::Map::new();
1226                object.insert("type".into(), Value::String("succeeded".into()));
1227                object.insert(
1228                    "succeeded".into(),
1229                    serde_json::to_value(value).map_err(serde::ser::Error::custom)?,
1230                );
1231                Value::Object(object).serialize(serializer)
1232            }
1233            Self::Unknown { tag, value } => {
1234                if value.get("type").and_then(Value::as_str) != Some(tag.as_str()) {
1235                    return Err(serde::ser::Error::custom(
1236                        "unknown union discriminator mismatch",
1237                    ));
1238                }
1239                value.serialize(serializer)
1240            }
1241        }
1242    }
1243}
1244impl<'de> Deserialize<'de> for FinishAttemptOutcome {
1245    fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1246        let value = Value::deserialize(deserializer)?;
1247        let tag = value
1248            .get("type")
1249            .and_then(Value::as_str)
1250            .ok_or_else(|| serde::de::Error::custom("union requires type"))?;
1251        match tag {
1252            "cancelled" => Ok(Self::Cancelled(
1253                serde_json::from_value(
1254                    value
1255                        .get("cancelled")
1256                        .cloned()
1257                        .ok_or_else(|| serde::de::Error::custom("union requires matching arm"))?,
1258                )
1259                .map_err(serde::de::Error::custom)?,
1260            )),
1261            "failed" => Ok(Self::Failed(
1262                serde_json::from_value(
1263                    value
1264                        .get("failed")
1265                        .cloned()
1266                        .ok_or_else(|| serde::de::Error::custom("union requires matching arm"))?,
1267                )
1268                .map_err(serde::de::Error::custom)?,
1269            )),
1270            "succeeded" => Ok(Self::Succeeded(
1271                serde_json::from_value(
1272                    value
1273                        .get("succeeded")
1274                        .cloned()
1275                        .ok_or_else(|| serde::de::Error::custom("union requires matching arm"))?,
1276                )
1277                .map_err(serde::de::Error::custom)?,
1278            )),
1279            tag => Ok(Self::Unknown {
1280                tag: tag.to_owned(),
1281                value,
1282            }),
1283        }
1284    }
1285}
1286impl<'de> DeserializeStrict<'de> for FinishAttemptOutcome {
1287    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1288        #[derive(Deserialize)]
1289        enum __Tag0 {
1290            #[serde(rename = "cancelled")]
1291            Value,
1292        }
1293        #[derive(Deserialize)]
1294        #[serde(deny_unknown_fields)]
1295        struct __Arm0 {
1296            #[serde(rename = "type")]
1297            _tag: __Tag0,
1298            #[serde(rename = "cancelled")]
1299            value: Strict<FinishAttemptOutcomeCancelled>,
1300        }
1301        #[derive(Deserialize)]
1302        enum __Tag1 {
1303            #[serde(rename = "failed")]
1304            Value,
1305        }
1306        #[derive(Deserialize)]
1307        #[serde(deny_unknown_fields)]
1308        struct __Arm1 {
1309            #[serde(rename = "type")]
1310            _tag: __Tag1,
1311            #[serde(rename = "failed")]
1312            value: Strict<FinishAttemptOutcomeFailed>,
1313        }
1314        #[derive(Deserialize)]
1315        enum __Tag2 {
1316            #[serde(rename = "succeeded")]
1317            Value,
1318        }
1319        #[derive(Deserialize)]
1320        #[serde(deny_unknown_fields)]
1321        struct __Arm2 {
1322            #[serde(rename = "type")]
1323            _tag: __Tag2,
1324            #[serde(rename = "succeeded")]
1325            value: Strict<FinishAttemptOutcomeSucceeded>,
1326        }
1327        #[derive(Deserialize)]
1328        #[serde(untagged)]
1329        enum __Known {
1330            Cancelled(Box<__Arm0>),
1331            Failed(Box<__Arm1>),
1332            Succeeded(Box<__Arm2>),
1333        }
1334        Ok(match __Known::deserialize(deserializer)? {
1335            __Known::Cancelled(arm) => Self::Cancelled(arm.value.0),
1336            __Known::Failed(arm) => Self::Failed(arm.value.0),
1337            __Known::Succeeded(arm) => Self::Succeeded(arm.value.0),
1338        })
1339    }
1340}
1341
1342/// FinishAttemptOutcomeCancelled contract value.
1343#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
1344pub struct FinishAttemptOutcomeCancelled {}
1345impl<'de> DeserializeStrict<'de> for FinishAttemptOutcomeCancelled {
1346    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1347        #[derive(Deserialize)]
1348        #[serde(deny_unknown_fields)]
1349        struct __Wire {}
1350        __Wire::deserialize(deserializer)?;
1351        Ok(Self {})
1352    }
1353}
1354
1355/// FinishAttemptOutcomeFailed contract value.
1356#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
1357pub struct FinishAttemptOutcomeFailed {
1358    /// Contract field failure.
1359    #[serde(rename = "failure")]
1360    pub failure: TaskFailure,
1361}
1362impl<'de> DeserializeStrict<'de> for FinishAttemptOutcomeFailed {
1363    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1364        #[derive(Deserialize)]
1365        #[serde(deny_unknown_fields)]
1366        struct __Wire {
1367            #[serde(rename = "failure")]
1368            failure: Strict<TaskFailure>,
1369        }
1370        let wire = __Wire::deserialize(deserializer)?;
1371        Ok(Self {
1372            failure: wire.failure.0,
1373        })
1374    }
1375}
1376
1377/// FinishAttemptOutcomeSucceeded contract value.
1378#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
1379pub struct FinishAttemptOutcomeSucceeded {
1380    /// Contract field result.
1381    #[serde(rename = "result")]
1382    pub result: Value,
1383}
1384impl<'de> DeserializeStrict<'de> for FinishAttemptOutcomeSucceeded {
1385    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1386        #[derive(Deserialize)]
1387        #[serde(deny_unknown_fields)]
1388        struct __Wire {
1389            #[serde(rename = "result")]
1390            result: Strict<Value>,
1391        }
1392        let wire = __Wire::deserialize(deserializer)?;
1393        Ok(Self {
1394            result: wire.result.0,
1395        })
1396    }
1397}
1398
1399/// FinishAttemptRequest contract value.
1400#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
1401pub struct FinishAttemptRequest {
1402    /// Contract field outcome.
1403    #[serde(rename = "outcome")]
1404    pub outcome: FinishAttemptOutcome,
1405}
1406impl<'de> DeserializeStrict<'de> for FinishAttemptRequest {
1407    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1408        #[derive(Deserialize)]
1409        #[serde(deny_unknown_fields)]
1410        struct __Wire {
1411            #[serde(rename = "outcome")]
1412            outcome: Strict<FinishAttemptOutcome>,
1413        }
1414        let wire = __Wire::deserialize(deserializer)?;
1415        Ok(Self {
1416            outcome: wire.outcome.0,
1417        })
1418    }
1419}
1420
1421/// FinishAttemptResponse contract value.
1422#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
1423pub struct FinishAttemptResponse {
1424    /// Contract field attempt.
1425    #[serde(rename = "attempt")]
1426    pub attempt: TaskAttempt,
1427    /// Contract field task.
1428    #[serde(rename = "task")]
1429    pub task: Task,
1430}
1431impl<'de> DeserializeStrict<'de> for FinishAttemptResponse {
1432    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1433        #[derive(Deserialize)]
1434        #[serde(deny_unknown_fields)]
1435        struct __Wire {
1436            #[serde(rename = "attempt")]
1437            attempt: Strict<TaskAttempt>,
1438            #[serde(rename = "task")]
1439            task: Strict<Task>,
1440        }
1441        let wire = __Wire::deserialize(deserializer)?;
1442        Ok(Self {
1443            attempt: wire.attempt.0,
1444            task: wire.task.0,
1445        })
1446    }
1447}
1448
1449/// GpuRuntime contract value.
1450#[derive(Clone, Debug, PartialEq, Eq)]
1451pub enum GpuRuntime {
1452    /// A known contract value.
1453    Cuda,
1454    /// A value introduced by a newer server.
1455    Unknown(String),
1456}
1457impl Serialize for GpuRuntime {
1458    fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
1459        serializer.serialize_str(match self {
1460            Self::Cuda => "cuda",
1461            Self::Unknown(value) => value,
1462        })
1463    }
1464}
1465impl<'de> Deserialize<'de> for GpuRuntime {
1466    fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1467        Ok(match String::deserialize(deserializer)?.as_str() {
1468            "cuda" => Self::Cuda,
1469            value => Self::Unknown(value.to_owned()),
1470        })
1471    }
1472}
1473impl<'de> DeserializeStrict<'de> for GpuRuntime {
1474    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1475        #[derive(Deserialize)]
1476        enum __Known {
1477            #[serde(rename = "cuda")]
1478            Cuda,
1479        }
1480        Ok(match __Known::deserialize(deserializer)? {
1481            __Known::Cuda => Self::Cuda,
1482        })
1483    }
1484}
1485
1486/// HeartbeatWorkerRequest contract value.
1487#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
1488pub struct HeartbeatWorkerRequest {
1489    /// Contract field capabilities.
1490    #[serde(rename = "capabilities")]
1491    pub capabilities: WorkerCapabilities,
1492    /// Contract field currentAttemptId.
1493    #[serde(rename = "currentAttemptId")]
1494    #[serde(default, skip_serializing_if = "Option::is_none")]
1495    pub current_attempt_id: Option<Uuid>,
1496    /// Contract field metrics.
1497    #[serde(rename = "metrics")]
1498    #[serde(default, skip_serializing_if = "Option::is_none")]
1499    pub metrics: Option<Value>,
1500    /// Contract field progress.
1501    #[serde(rename = "progress")]
1502    #[serde(default, skip_serializing_if = "Option::is_none")]
1503    pub progress: Option<TaskProgress>,
1504    /// Contract field resourceUsage.
1505    #[serde(rename = "resourceUsage")]
1506    #[serde(default, skip_serializing_if = "Option::is_none")]
1507    pub resource_usage: Option<ResourceUsage>,
1508}
1509impl<'de> DeserializeStrict<'de> for HeartbeatWorkerRequest {
1510    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1511        #[derive(Deserialize)]
1512        #[serde(deny_unknown_fields)]
1513        struct __Wire {
1514            #[serde(rename = "capabilities")]
1515            capabilities: Strict<WorkerCapabilities>,
1516            #[serde(rename = "currentAttemptId")]
1517            #[serde(default)]
1518            current_attempt_id: Strict<Option<Uuid>>,
1519            #[serde(rename = "metrics")]
1520            #[serde(default)]
1521            metrics: Strict<Option<Value>>,
1522            #[serde(rename = "progress")]
1523            #[serde(default)]
1524            progress: Strict<Option<TaskProgress>>,
1525            #[serde(rename = "resourceUsage")]
1526            #[serde(default)]
1527            resource_usage: Strict<Option<ResourceUsage>>,
1528        }
1529        let wire = __Wire::deserialize(deserializer)?;
1530        Ok(Self {
1531            capabilities: wire.capabilities.0,
1532            current_attempt_id: wire.current_attempt_id.0,
1533            metrics: wire.metrics.0,
1534            progress: wire.progress.0,
1535            resource_usage: wire.resource_usage.0,
1536        })
1537    }
1538}
1539
1540/// HeartbeatWorkerResponse contract value.
1541#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
1542pub struct HeartbeatWorkerResponse {
1543    /// Contract field lease.
1544    #[serde(rename = "lease")]
1545    #[serde(default, skip_serializing_if = "Option::is_none")]
1546    pub lease: Option<AttemptLease>,
1547    /// Contract field workerSession.
1548    #[serde(rename = "workerSession")]
1549    pub worker_session: WorkerSession,
1550}
1551impl<'de> DeserializeStrict<'de> for HeartbeatWorkerResponse {
1552    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1553        #[derive(Deserialize)]
1554        #[serde(deny_unknown_fields)]
1555        struct __Wire {
1556            #[serde(rename = "lease")]
1557            #[serde(default)]
1558            lease: Strict<Option<AttemptLease>>,
1559            #[serde(rename = "workerSession")]
1560            worker_session: Strict<WorkerSession>,
1561        }
1562        let wire = __Wire::deserialize(deserializer)?;
1563        Ok(Self {
1564            lease: wire.lease.0,
1565            worker_session: wire.worker_session.0,
1566        })
1567    }
1568}
1569
1570/// InvocationPage contract value.
1571#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
1572pub struct InvocationPage {
1573    /// Contract field items.
1574    #[serde(rename = "items")]
1575    pub items: Vec<TriggerInvocation>,
1576    /// Contract field nextPageToken.
1577    #[serde(rename = "nextPageToken")]
1578    #[serde(default, skip_serializing_if = "Option::is_none")]
1579    pub next_page_token: Option<String>,
1580}
1581impl<'de> DeserializeStrict<'de> for InvocationPage {
1582    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1583        #[derive(Deserialize)]
1584        #[serde(deny_unknown_fields)]
1585        struct __Wire {
1586            #[serde(rename = "items")]
1587            items: Strict<Vec<TriggerInvocation>>,
1588            #[serde(rename = "nextPageToken")]
1589            #[serde(default)]
1590            next_page_token: Strict<Option<String>>,
1591        }
1592        let wire = __Wire::deserialize(deserializer)?;
1593        Ok(Self {
1594            items: wire.items.0,
1595            next_page_token: wire.next_page_token.0,
1596        })
1597    }
1598}
1599
1600/// InvocationPageRequest contract value.
1601#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
1602pub struct InvocationPageRequest {
1603    /// Contract field pageToken.
1604    #[serde(rename = "pageToken")]
1605    #[serde(default, skip_serializing_if = "Option::is_none")]
1606    pub page_token: Option<String>,
1607}
1608impl<'de> DeserializeStrict<'de> for InvocationPageRequest {
1609    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1610        #[derive(Deserialize)]
1611        #[serde(deny_unknown_fields)]
1612        struct __Wire {
1613            #[serde(rename = "pageToken")]
1614            #[serde(default)]
1615            page_token: Strict<Option<String>>,
1616        }
1617        let wire = __Wire::deserialize(deserializer)?;
1618        Ok(Self {
1619            page_token: wire.page_token.0,
1620        })
1621    }
1622}
1623
1624/// InvocationStatus contract value.
1625#[derive(Clone, Debug, PartialEq, Eq)]
1626pub enum InvocationStatus {
1627    /// A known contract value.
1628    Accepted,
1629    /// A known contract value.
1630    Skipped,
1631    /// A value introduced by a newer server.
1632    Unknown(String),
1633}
1634impl Serialize for InvocationStatus {
1635    fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
1636        serializer.serialize_str(match self {
1637            Self::Accepted => "accepted",
1638            Self::Skipped => "skipped",
1639            Self::Unknown(value) => value,
1640        })
1641    }
1642}
1643impl<'de> Deserialize<'de> for InvocationStatus {
1644    fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1645        Ok(match String::deserialize(deserializer)?.as_str() {
1646            "accepted" => Self::Accepted,
1647            "skipped" => Self::Skipped,
1648            value => Self::Unknown(value.to_owned()),
1649        })
1650    }
1651}
1652impl<'de> DeserializeStrict<'de> for InvocationStatus {
1653    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1654        #[derive(Deserialize)]
1655        enum __Known {
1656            #[serde(rename = "accepted")]
1657            Accepted,
1658            #[serde(rename = "skipped")]
1659            Skipped,
1660        }
1661        Ok(match __Known::deserialize(deserializer)? {
1662            __Known::Accepted => Self::Accepted,
1663            __Known::Skipped => Self::Skipped,
1664        })
1665    }
1666}
1667
1668/// Planning parameters that a coordinator pins, so that every worker plans the same way.
1669#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
1670pub struct LegacyCompactionParameters {
1671    /// Contract field maxScopeFragments.
1672    #[serde(rename = "maxScopeFragments")]
1673    pub max_scope_fragments: SafeUnsignedLong,
1674    /// Contract field memoryBudgetBytes.
1675    #[serde(rename = "memoryBudgetBytes")]
1676    pub memory_budget_bytes: SafeUnsignedLong,
1677    /// Contract field sizeThresholdBytes.
1678    #[serde(rename = "sizeThresholdBytes")]
1679    pub size_threshold_bytes: SafeUnsignedLong,
1680}
1681impl<'de> DeserializeStrict<'de> for LegacyCompactionParameters {
1682    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1683        #[derive(Deserialize)]
1684        #[serde(deny_unknown_fields)]
1685        struct __Wire {
1686            #[serde(rename = "maxScopeFragments")]
1687            max_scope_fragments: Strict<SafeUnsignedLong>,
1688            #[serde(rename = "memoryBudgetBytes")]
1689            memory_budget_bytes: Strict<SafeUnsignedLong>,
1690            #[serde(rename = "sizeThresholdBytes")]
1691            size_threshold_bytes: Strict<SafeUnsignedLong>,
1692        }
1693        let wire = __Wire::deserialize(deserializer)?;
1694        Ok(Self {
1695            max_scope_fragments: wire.max_scope_fragments.0,
1696            memory_budget_bytes: wire.memory_budget_bytes.0,
1697            size_threshold_bytes: wire.size_threshold_bytes.0,
1698        })
1699    }
1700}
1701
1702/// LegacyCompactionStrategy contract value.
1703#[derive(Clone, Debug, PartialEq, Eq)]
1704pub enum LegacyCompactionStrategy {
1705    /// A known contract value.
1706    SizeBased,
1707    /// A known contract value.
1708    Overlaps,
1709    /// A value introduced by a newer server.
1710    Unknown(String),
1711}
1712impl Serialize for LegacyCompactionStrategy {
1713    fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
1714        serializer.serialize_str(match self {
1715            Self::SizeBased => "size_based",
1716            Self::Overlaps => "overlaps",
1717            Self::Unknown(value) => value,
1718        })
1719    }
1720}
1721impl<'de> Deserialize<'de> for LegacyCompactionStrategy {
1722    fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1723        Ok(match String::deserialize(deserializer)?.as_str() {
1724            "size_based" => Self::SizeBased,
1725            "overlaps" => Self::Overlaps,
1726            value => Self::Unknown(value.to_owned()),
1727        })
1728    }
1729}
1730impl<'de> DeserializeStrict<'de> for LegacyCompactionStrategy {
1731    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1732        #[derive(Deserialize)]
1733        enum __Known {
1734            #[serde(rename = "size_based")]
1735            SizeBased,
1736            #[serde(rename = "overlaps")]
1737            Overlaps,
1738        }
1739        Ok(match __Known::deserialize(deserializer)? {
1740            __Known::SizeBased => Self::SizeBased,
1741            __Known::Overlaps => Self::Overlaps,
1742        })
1743    }
1744}
1745
1746/// One child of a legacy table maintenance Task. It compacts one column group at the coordinator's
1747/// snapshot and returns the operations for the coordinator to commit.
1748#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
1749pub struct LegacyTableCompactionWorkerDefinition {
1750    /// Contract field asofMicros.
1751    #[serde(rename = "asofMicros")]
1752    pub asof_micros: SafeUnsignedLong,
1753    /// Contract field columnGroup.
1754    #[serde(rename = "columnGroup")]
1755    pub column_group: Vec<String>,
1756    /// Contract field coordinatorTaskId.
1757    #[serde(rename = "coordinatorTaskId")]
1758    pub coordinator_task_id: Uuid,
1759    /// Contract field parameters.
1760    #[serde(rename = "parameters")]
1761    pub parameters: LegacyCompactionParameters,
1762    /// Contract field runId.
1763    #[serde(rename = "runId")]
1764    pub run_id: String,
1765    /// Contract field strategies.
1766    #[serde(rename = "strategies")]
1767    pub strategies: Vec<LegacyCompactionStrategy>,
1768    /// Contract field tableId.
1769    #[serde(rename = "tableId")]
1770    pub table_id: String,
1771}
1772impl<'de> DeserializeStrict<'de> for LegacyTableCompactionWorkerDefinition {
1773    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1774        #[derive(Deserialize)]
1775        #[serde(deny_unknown_fields)]
1776        struct __Wire {
1777            #[serde(rename = "asofMicros")]
1778            asof_micros: Strict<SafeUnsignedLong>,
1779            #[serde(rename = "columnGroup")]
1780            column_group: Strict<Vec<String>>,
1781            #[serde(rename = "coordinatorTaskId")]
1782            coordinator_task_id: Strict<Uuid>,
1783            #[serde(rename = "parameters")]
1784            parameters: Strict<LegacyCompactionParameters>,
1785            #[serde(rename = "runId")]
1786            run_id: Strict<String>,
1787            #[serde(rename = "strategies")]
1788            strategies: Strict<Vec<LegacyCompactionStrategy>>,
1789            #[serde(rename = "tableId")]
1790            table_id: Strict<String>,
1791        }
1792        let wire = __Wire::deserialize(deserializer)?;
1793        Ok(Self {
1794            asof_micros: wire.asof_micros.0,
1795            column_group: wire.column_group.0,
1796            coordinator_task_id: wire.coordinator_task_id.0,
1797            parameters: wire.parameters.0,
1798            run_id: wire.run_id.0,
1799            strategies: wire.strategies.0,
1800            table_id: wire.table_id.0,
1801        })
1802    }
1803}
1804
1805/// One legacy keyed table, and whether to strip manifest metadata it no longer needs.
1806#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
1807pub struct LegacyTableDefinition {
1808    /// Contract field strip.
1809    #[serde(rename = "strip")]
1810    #[serde(default, skip_serializing_if = "Option::is_none")]
1811    pub strip: Option<bool>,
1812    /// Contract field tableId.
1813    #[serde(rename = "tableId")]
1814    pub table_id: String,
1815}
1816impl<'de> DeserializeStrict<'de> for LegacyTableDefinition {
1817    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1818        #[derive(Deserialize)]
1819        #[serde(deny_unknown_fields)]
1820        struct __Wire {
1821            #[serde(rename = "strip")]
1822            #[serde(default)]
1823            strip: Strict<Option<bool>>,
1824            #[serde(rename = "tableId")]
1825            table_id: Strict<String>,
1826        }
1827        let wire = __Wire::deserialize(deserializer)?;
1828        Ok(Self {
1829            strip: wire.strip.0,
1830            table_id: wire.table_id.0,
1831        })
1832    }
1833}
1834
1835/// One legacy keyed table to flush and compact, whether to strip manifest metadata it no longer
1836/// needs, and whether to compact its column groups in parallel child Tasks that this Task commits
1837/// as one transaction.
1838#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
1839pub struct LegacyTableMaintenanceDefinition {
1840    /// Contract field fanOut.
1841    #[serde(rename = "fanOut")]
1842    #[serde(default, skip_serializing_if = "Option::is_none")]
1843    pub fan_out: Option<bool>,
1844    /// Contract field strip.
1845    #[serde(rename = "strip")]
1846    #[serde(default, skip_serializing_if = "Option::is_none")]
1847    pub strip: Option<bool>,
1848    /// Contract field tableId.
1849    #[serde(rename = "tableId")]
1850    pub table_id: String,
1851}
1852impl<'de> DeserializeStrict<'de> for LegacyTableMaintenanceDefinition {
1853    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1854        #[derive(Deserialize)]
1855        #[serde(deny_unknown_fields)]
1856        struct __Wire {
1857            #[serde(rename = "fanOut")]
1858            #[serde(default)]
1859            fan_out: Strict<Option<bool>>,
1860            #[serde(rename = "strip")]
1861            #[serde(default)]
1862            strip: Strict<Option<bool>>,
1863            #[serde(rename = "tableId")]
1864            table_id: Strict<String>,
1865        }
1866        let wire = __Wire::deserialize(deserializer)?;
1867        Ok(Self {
1868            fan_out: wire.fan_out.0,
1869            strip: wire.strip.0,
1870            table_id: wire.table_id.0,
1871        })
1872    }
1873}
1874
1875/// ListTaskSpecsResponse contract value.
1876#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
1877pub struct ListTaskSpecsResponse {
1878    /// Contract field taskSpecs.
1879    #[serde(rename = "taskSpecs")]
1880    pub task_specs: Vec<TaskSpecDefaults>,
1881}
1882impl<'de> DeserializeStrict<'de> for ListTaskSpecsResponse {
1883    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1884        #[derive(Deserialize)]
1885        #[serde(deny_unknown_fields)]
1886        struct __Wire {
1887            #[serde(rename = "taskSpecs")]
1888            task_specs: Strict<Vec<TaskSpecDefaults>>,
1889        }
1890        let wire = __Wire::deserialize(deserializer)?;
1891        Ok(Self {
1892            task_specs: wire.task_specs.0,
1893        })
1894    }
1895}
1896
1897/// ListTasksRequest contract value.
1898#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
1899pub struct ListTasksRequest {
1900    /// Contract field legacyTableId.
1901    #[serde(rename = "legacyTableId")]
1902    #[serde(default, skip_serializing_if = "Option::is_none")]
1903    pub legacy_table_id: Option<String>,
1904    /// Contract field origin.
1905    #[serde(rename = "origin")]
1906    #[serde(default, skip_serializing_if = "Option::is_none")]
1907    pub origin: Option<TaskOrigin>,
1908    /// Contract field pageSize.
1909    #[serde(rename = "pageSize")]
1910    #[serde(default, skip_serializing_if = "Option::is_none")]
1911    pub page_size: Option<u32>,
1912    /// Contract field pageToken.
1913    #[serde(rename = "pageToken")]
1914    #[serde(default, skip_serializing_if = "Option::is_none")]
1915    pub page_token: Option<String>,
1916    /// Contract field parentTaskId.
1917    #[serde(rename = "parentTaskId")]
1918    #[serde(default, skip_serializing_if = "Option::is_none")]
1919    pub parent_task_id: Option<Uuid>,
1920    /// Contract field query.
1921    #[serde(rename = "query")]
1922    #[serde(default, skip_serializing_if = "Option::is_none")]
1923    pub query: Option<String>,
1924    /// Contract field resourceId.
1925    #[serde(rename = "resourceId")]
1926    #[serde(default, skip_serializing_if = "Option::is_none")]
1927    pub resource_id: Option<Uuid>,
1928    /// Contract field resourceRole.
1929    #[serde(rename = "resourceRole")]
1930    #[serde(default, skip_serializing_if = "Option::is_none")]
1931    pub resource_role: Option<TaskResourceRole>,
1932    /// Contract field status.
1933    #[serde(rename = "status")]
1934    #[serde(default, skip_serializing_if = "Option::is_none")]
1935    pub status: Option<TaskStatus>,
1936    /// Contract field taskSpecName.
1937    #[serde(rename = "taskSpecName")]
1938    #[serde(default, skip_serializing_if = "Option::is_none")]
1939    pub task_spec_name: Option<String>,
1940    /// Contract field workerPoolId.
1941    #[serde(rename = "workerPoolId")]
1942    #[serde(default, skip_serializing_if = "Option::is_none")]
1943    pub worker_pool_id: Option<Uuid>,
1944    /// Contract field workerSessionId.
1945    #[serde(rename = "workerSessionId")]
1946    #[serde(default, skip_serializing_if = "Option::is_none")]
1947    pub worker_session_id: Option<Uuid>,
1948}
1949impl<'de> DeserializeStrict<'de> for ListTasksRequest {
1950    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1951        #[derive(Deserialize)]
1952        #[serde(deny_unknown_fields)]
1953        struct __Wire {
1954            #[serde(rename = "legacyTableId")]
1955            #[serde(default)]
1956            legacy_table_id: Strict<Option<String>>,
1957            #[serde(rename = "origin")]
1958            #[serde(default)]
1959            origin: Strict<Option<TaskOrigin>>,
1960            #[serde(rename = "pageSize")]
1961            #[serde(default)]
1962            page_size: Strict<Option<u32>>,
1963            #[serde(rename = "pageToken")]
1964            #[serde(default)]
1965            page_token: Strict<Option<String>>,
1966            #[serde(rename = "parentTaskId")]
1967            #[serde(default)]
1968            parent_task_id: Strict<Option<Uuid>>,
1969            #[serde(rename = "query")]
1970            #[serde(default)]
1971            query: Strict<Option<String>>,
1972            #[serde(rename = "resourceId")]
1973            #[serde(default)]
1974            resource_id: Strict<Option<Uuid>>,
1975            #[serde(rename = "resourceRole")]
1976            #[serde(default)]
1977            resource_role: Strict<Option<TaskResourceRole>>,
1978            #[serde(rename = "status")]
1979            #[serde(default)]
1980            status: Strict<Option<TaskStatus>>,
1981            #[serde(rename = "taskSpecName")]
1982            #[serde(default)]
1983            task_spec_name: Strict<Option<String>>,
1984            #[serde(rename = "workerPoolId")]
1985            #[serde(default)]
1986            worker_pool_id: Strict<Option<Uuid>>,
1987            #[serde(rename = "workerSessionId")]
1988            #[serde(default)]
1989            worker_session_id: Strict<Option<Uuid>>,
1990        }
1991        let wire = __Wire::deserialize(deserializer)?;
1992        Ok(Self {
1993            legacy_table_id: wire.legacy_table_id.0,
1994            origin: wire.origin.0,
1995            page_size: wire.page_size.0,
1996            page_token: wire.page_token.0,
1997            parent_task_id: wire.parent_task_id.0,
1998            query: wire.query.0,
1999            resource_id: wire.resource_id.0,
2000            resource_role: wire.resource_role.0,
2001            status: wire.status.0,
2002            task_spec_name: wire.task_spec_name.0,
2003            worker_pool_id: wire.worker_pool_id.0,
2004            worker_session_id: wire.worker_session_id.0,
2005        })
2006    }
2007}
2008
2009/// ListTasksResponse contract value.
2010#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
2011pub struct ListTasksResponse {
2012    /// Contract field nextPageToken.
2013    #[serde(rename = "nextPageToken")]
2014    #[serde(default, skip_serializing_if = "Option::is_none")]
2015    pub next_page_token: Option<String>,
2016    /// Contract field targetResources.
2017    #[serde(rename = "targetResources")]
2018    pub target_resources: BTreeMap<String, Vec<TaskResourceReference>>,
2019    /// Contract field tasks.
2020    #[serde(rename = "tasks")]
2021    pub tasks: Vec<Task>,
2022}
2023impl<'de> DeserializeStrict<'de> for ListTasksResponse {
2024    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
2025        #[derive(Deserialize)]
2026        #[serde(deny_unknown_fields)]
2027        struct __Wire {
2028            #[serde(rename = "nextPageToken")]
2029            #[serde(default)]
2030            next_page_token: Strict<Option<String>>,
2031            #[serde(rename = "targetResources")]
2032            target_resources: Strict<BTreeMap<String, Vec<TaskResourceReference>>>,
2033            #[serde(rename = "tasks")]
2034            tasks: Strict<Vec<Task>>,
2035        }
2036        let wire = __Wire::deserialize(deserializer)?;
2037        Ok(Self {
2038            next_page_token: wire.next_page_token.0,
2039            target_resources: wire.target_resources.0,
2040            tasks: wire.tasks.0,
2041        })
2042    }
2043}
2044
2045/// ListWorkerAttemptsRequest contract value.
2046#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
2047pub struct ListWorkerAttemptsRequest {
2048    /// Contract field pageSize.
2049    #[serde(rename = "pageSize")]
2050    #[serde(default, skip_serializing_if = "Option::is_none")]
2051    pub page_size: Option<u32>,
2052    /// Contract field pageToken.
2053    #[serde(rename = "pageToken")]
2054    #[serde(default, skip_serializing_if = "Option::is_none")]
2055    pub page_token: Option<String>,
2056}
2057impl<'de> DeserializeStrict<'de> for ListWorkerAttemptsRequest {
2058    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
2059        #[derive(Deserialize)]
2060        #[serde(deny_unknown_fields)]
2061        struct __Wire {
2062            #[serde(rename = "pageSize")]
2063            #[serde(default)]
2064            page_size: Strict<Option<u32>>,
2065            #[serde(rename = "pageToken")]
2066            #[serde(default)]
2067            page_token: Strict<Option<String>>,
2068        }
2069        let wire = __Wire::deserialize(deserializer)?;
2070        Ok(Self {
2071            page_size: wire.page_size.0,
2072            page_token: wire.page_token.0,
2073        })
2074    }
2075}
2076
2077/// ListWorkerAttemptsResponse contract value.
2078#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
2079pub struct ListWorkerAttemptsResponse {
2080    /// Contract field attempts.
2081    #[serde(rename = "attempts")]
2082    pub attempts: Vec<WorkerAttempt>,
2083    /// Contract field nextPageToken.
2084    #[serde(rename = "nextPageToken")]
2085    #[serde(default, skip_serializing_if = "Option::is_none")]
2086    pub next_page_token: Option<String>,
2087}
2088impl<'de> DeserializeStrict<'de> for ListWorkerAttemptsResponse {
2089    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
2090        #[derive(Deserialize)]
2091        #[serde(deny_unknown_fields)]
2092        struct __Wire {
2093            #[serde(rename = "attempts")]
2094            attempts: Strict<Vec<WorkerAttempt>>,
2095            #[serde(rename = "nextPageToken")]
2096            #[serde(default)]
2097            next_page_token: Strict<Option<String>>,
2098        }
2099        let wire = __Wire::deserialize(deserializer)?;
2100        Ok(Self {
2101            attempts: wire.attempts.0,
2102            next_page_token: wire.next_page_token.0,
2103        })
2104    }
2105}
2106
2107/// ListWorkerPoolsRequest contract value.
2108#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
2109pub struct ListWorkerPoolsRequest {
2110    /// Contract field pageSize.
2111    #[serde(rename = "pageSize")]
2112    #[serde(default, skip_serializing_if = "Option::is_none")]
2113    pub page_size: Option<u32>,
2114    /// Contract field pageToken.
2115    #[serde(rename = "pageToken")]
2116    #[serde(default, skip_serializing_if = "Option::is_none")]
2117    pub page_token: Option<String>,
2118    /// Contract field workerPoolId.
2119    #[serde(rename = "workerPoolId")]
2120    #[serde(default, skip_serializing_if = "Option::is_none")]
2121    pub worker_pool_id: Option<Uuid>,
2122}
2123impl<'de> DeserializeStrict<'de> for ListWorkerPoolsRequest {
2124    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
2125        #[derive(Deserialize)]
2126        #[serde(deny_unknown_fields)]
2127        struct __Wire {
2128            #[serde(rename = "pageSize")]
2129            #[serde(default)]
2130            page_size: Strict<Option<u32>>,
2131            #[serde(rename = "pageToken")]
2132            #[serde(default)]
2133            page_token: Strict<Option<String>>,
2134            #[serde(rename = "workerPoolId")]
2135            #[serde(default)]
2136            worker_pool_id: Strict<Option<Uuid>>,
2137        }
2138        let wire = __Wire::deserialize(deserializer)?;
2139        Ok(Self {
2140            page_size: wire.page_size.0,
2141            page_token: wire.page_token.0,
2142            worker_pool_id: wire.worker_pool_id.0,
2143        })
2144    }
2145}
2146
2147/// ListWorkerPoolsResponse contract value.
2148#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
2149pub struct ListWorkerPoolsResponse {
2150    /// Contract field nextPageToken.
2151    #[serde(rename = "nextPageToken")]
2152    #[serde(default, skip_serializing_if = "Option::is_none")]
2153    pub next_page_token: Option<String>,
2154    /// Contract field stats.
2155    #[serde(rename = "stats")]
2156    pub stats: Vec<WorkerPoolStats>,
2157    /// Contract field workerPools.
2158    #[serde(rename = "workerPools")]
2159    pub worker_pools: Vec<WorkerPool>,
2160}
2161impl<'de> DeserializeStrict<'de> for ListWorkerPoolsResponse {
2162    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
2163        #[derive(Deserialize)]
2164        #[serde(deny_unknown_fields)]
2165        struct __Wire {
2166            #[serde(rename = "nextPageToken")]
2167            #[serde(default)]
2168            next_page_token: Strict<Option<String>>,
2169            #[serde(rename = "stats")]
2170            stats: Strict<Vec<WorkerPoolStats>>,
2171            #[serde(rename = "workerPools")]
2172            worker_pools: Strict<Vec<WorkerPool>>,
2173        }
2174        let wire = __Wire::deserialize(deserializer)?;
2175        Ok(Self {
2176            next_page_token: wire.next_page_token.0,
2177            stats: wire.stats.0,
2178            worker_pools: wire.worker_pools.0,
2179        })
2180    }
2181}
2182
2183/// ListWorkerSessionsRequest contract value.
2184#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
2185pub struct ListWorkerSessionsRequest {
2186    /// Contract field pageSize.
2187    #[serde(rename = "pageSize")]
2188    #[serde(default, skip_serializing_if = "Option::is_none")]
2189    pub page_size: Option<u32>,
2190    /// Contract field pageToken.
2191    #[serde(rename = "pageToken")]
2192    #[serde(default, skip_serializing_if = "Option::is_none")]
2193    pub page_token: Option<String>,
2194    /// Contract field status.
2195    #[serde(rename = "status")]
2196    #[serde(default, skip_serializing_if = "Option::is_none")]
2197    pub status: Option<WorkerSessionStatus>,
2198    /// Contract field workerPoolId.
2199    #[serde(rename = "workerPoolId")]
2200    #[serde(default, skip_serializing_if = "Option::is_none")]
2201    pub worker_pool_id: Option<Uuid>,
2202}
2203impl<'de> DeserializeStrict<'de> for ListWorkerSessionsRequest {
2204    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
2205        #[derive(Deserialize)]
2206        #[serde(deny_unknown_fields)]
2207        struct __Wire {
2208            #[serde(rename = "pageSize")]
2209            #[serde(default)]
2210            page_size: Strict<Option<u32>>,
2211            #[serde(rename = "pageToken")]
2212            #[serde(default)]
2213            page_token: Strict<Option<String>>,
2214            #[serde(rename = "status")]
2215            #[serde(default)]
2216            status: Strict<Option<WorkerSessionStatus>>,
2217            #[serde(rename = "workerPoolId")]
2218            #[serde(default)]
2219            worker_pool_id: Strict<Option<Uuid>>,
2220        }
2221        let wire = __Wire::deserialize(deserializer)?;
2222        Ok(Self {
2223            page_size: wire.page_size.0,
2224            page_token: wire.page_token.0,
2225            status: wire.status.0,
2226            worker_pool_id: wire.worker_pool_id.0,
2227        })
2228    }
2229}
2230
2231/// ListWorkerSessionsResponse contract value.
2232#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
2233pub struct ListWorkerSessionsResponse {
2234    /// Contract field nextPageToken.
2235    #[serde(rename = "nextPageToken")]
2236    #[serde(default, skip_serializing_if = "Option::is_none")]
2237    pub next_page_token: Option<String>,
2238    /// Contract field workerSessions.
2239    #[serde(rename = "workerSessions")]
2240    pub worker_sessions: Vec<WorkerSession>,
2241}
2242impl<'de> DeserializeStrict<'de> for ListWorkerSessionsResponse {
2243    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
2244        #[derive(Deserialize)]
2245        #[serde(deny_unknown_fields)]
2246        struct __Wire {
2247            #[serde(rename = "nextPageToken")]
2248            #[serde(default)]
2249            next_page_token: Strict<Option<String>>,
2250            #[serde(rename = "workerSessions")]
2251            worker_sessions: Strict<Vec<WorkerSession>>,
2252        }
2253        let wire = __Wire::deserialize(deserializer)?;
2254        Ok(Self {
2255            next_page_token: wire.next_page_token.0,
2256            worker_sessions: wire.worker_sessions.0,
2257        })
2258    }
2259}
2260
2261/// List a Location's root, reconcile its inventory by path, and publish the inventory and a refresh
2262/// Location version in one commit. The read target must be latestOnBranch.
2263#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
2264pub struct LocationRefreshDefinition {
2265    /// Contract field locationResourceId.
2266    #[serde(rename = "locationResourceId")]
2267    pub location_resource_id: Uuid,
2268    /// Contract field readTarget.
2269    #[serde(rename = "readTarget")]
2270    pub read_target: TaskReadTarget,
2271}
2272impl<'de> DeserializeStrict<'de> for LocationRefreshDefinition {
2273    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
2274        #[derive(Deserialize)]
2275        #[serde(deny_unknown_fields)]
2276        struct __Wire {
2277            #[serde(rename = "locationResourceId")]
2278            location_resource_id: Strict<Uuid>,
2279            #[serde(rename = "readTarget")]
2280            read_target: Strict<TaskReadTarget>,
2281        }
2282        let wire = __Wire::deserialize(deserializer)?;
2283        Ok(Self {
2284            location_resource_id: wire.location_resource_id.0,
2285            read_target: wire.read_target.0,
2286        })
2287    }
2288}
2289
2290/// MaintenanceTaskProgress contract value.
2291#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
2292pub struct MaintenanceTaskProgress {
2293    /// Contract field compaction.
2294    #[serde(rename = "compaction")]
2295    #[serde(default, skip_serializing_if = "Option::is_none")]
2296    pub compaction: Option<ColumnGroupCompactionProgress>,
2297    /// Contract field completed.
2298    #[serde(rename = "completed")]
2299    pub completed: SafeUnsignedLong,
2300    /// Contract field deletionApplication.
2301    #[serde(rename = "deletionApplication")]
2302    #[serde(default, skip_serializing_if = "Option::is_none")]
2303    pub deletion_application: Option<DeletionApplicationProgress>,
2304    /// Contract field lastCompactionCommit.
2305    #[serde(rename = "lastCompactionCommit")]
2306    #[serde(default, skip_serializing_if = "Option::is_none")]
2307    pub last_compaction_commit: Option<ColumnGroupCompactionCommit>,
2308    /// Contract field pass.
2309    #[serde(rename = "pass")]
2310    pub pass: u32,
2311    /// Contract field stage.
2312    #[serde(rename = "stage")]
2313    pub stage: MaintenanceTaskStage,
2314    /// Contract field total.
2315    #[serde(rename = "total")]
2316    #[serde(default, skip_serializing_if = "Option::is_none")]
2317    pub total: Option<SafeUnsignedLong>,
2318}
2319impl<'de> DeserializeStrict<'de> for MaintenanceTaskProgress {
2320    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
2321        #[derive(Deserialize)]
2322        #[serde(deny_unknown_fields)]
2323        struct __Wire {
2324            #[serde(rename = "compaction")]
2325            #[serde(default)]
2326            compaction: Strict<Option<ColumnGroupCompactionProgress>>,
2327            #[serde(rename = "completed")]
2328            completed: Strict<SafeUnsignedLong>,
2329            #[serde(rename = "deletionApplication")]
2330            #[serde(default)]
2331            deletion_application: Strict<Option<DeletionApplicationProgress>>,
2332            #[serde(rename = "lastCompactionCommit")]
2333            #[serde(default)]
2334            last_compaction_commit: Strict<Option<ColumnGroupCompactionCommit>>,
2335            #[serde(rename = "pass")]
2336            pass: Strict<u32>,
2337            #[serde(rename = "stage")]
2338            stage: Strict<MaintenanceTaskStage>,
2339            #[serde(rename = "total")]
2340            #[serde(default)]
2341            total: Strict<Option<SafeUnsignedLong>>,
2342        }
2343        let wire = __Wire::deserialize(deserializer)?;
2344        Ok(Self {
2345            compaction: wire.compaction.0,
2346            completed: wire.completed.0,
2347            deletion_application: wire.deletion_application.0,
2348            last_compaction_commit: wire.last_compaction_commit.0,
2349            pass: wire.pass.0,
2350            stage: wire.stage.0,
2351            total: wire.total.0,
2352        })
2353    }
2354}
2355
2356/// MaintenanceTaskStage contract value.
2357#[derive(Clone, Debug, PartialEq, Eq)]
2358pub enum MaintenanceTaskStage {
2359    /// A known contract value.
2360    ReadingSnapshot,
2361    /// A known contract value.
2362    FlushingWal,
2363    /// A known contract value.
2364    Planning,
2365    /// A known contract value.
2366    PreparingCompaction,
2367    /// A known contract value.
2368    Compacting,
2369    /// A known contract value.
2370    CompactingKeySpaces,
2371    /// A value introduced by a newer server.
2372    Unknown(String),
2373}
2374impl Serialize for MaintenanceTaskStage {
2375    fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
2376        serializer.serialize_str(match self {
2377            Self::ReadingSnapshot => "reading_snapshot",
2378            Self::FlushingWal => "flushing_wal",
2379            Self::Planning => "planning",
2380            Self::PreparingCompaction => "preparing_compaction",
2381            Self::Compacting => "compacting",
2382            Self::CompactingKeySpaces => "compacting_key_spaces",
2383            Self::Unknown(value) => value,
2384        })
2385    }
2386}
2387impl<'de> Deserialize<'de> for MaintenanceTaskStage {
2388    fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
2389        Ok(match String::deserialize(deserializer)?.as_str() {
2390            "reading_snapshot" => Self::ReadingSnapshot,
2391            "flushing_wal" => Self::FlushingWal,
2392            "planning" => Self::Planning,
2393            "preparing_compaction" => Self::PreparingCompaction,
2394            "compacting" => Self::Compacting,
2395            "compacting_key_spaces" => Self::CompactingKeySpaces,
2396            value => Self::Unknown(value.to_owned()),
2397        })
2398    }
2399}
2400impl<'de> DeserializeStrict<'de> for MaintenanceTaskStage {
2401    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
2402        #[derive(Deserialize)]
2403        enum __Known {
2404            #[serde(rename = "reading_snapshot")]
2405            ReadingSnapshot,
2406            #[serde(rename = "flushing_wal")]
2407            FlushingWal,
2408            #[serde(rename = "planning")]
2409            Planning,
2410            #[serde(rename = "preparing_compaction")]
2411            PreparingCompaction,
2412            #[serde(rename = "compacting")]
2413            Compacting,
2414            #[serde(rename = "compacting_key_spaces")]
2415            CompactingKeySpaces,
2416        }
2417        Ok(match __Known::deserialize(deserializer)? {
2418            __Known::ReadingSnapshot => Self::ReadingSnapshot,
2419            __Known::FlushingWal => Self::FlushingWal,
2420            __Known::Planning => Self::Planning,
2421            __Known::PreparingCompaction => Self::PreparingCompaction,
2422            __Known::Compacting => Self::Compacting,
2423            __Known::CompactingKeySpaces => Self::CompactingKeySpaces,
2424        })
2425    }
2426}
2427
2428/// PollTaskResponse contract value.
2429#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
2430pub struct PollTaskResponse {
2431    /// Contract field task.
2432    #[serde(rename = "task")]
2433    #[serde(default, skip_serializing_if = "Option::is_none")]
2434    pub task: Option<WorkerTask>,
2435}
2436impl<'de> DeserializeStrict<'de> for PollTaskResponse {
2437    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
2438        #[derive(Deserialize)]
2439        #[serde(deny_unknown_fields)]
2440        struct __Wire {
2441            #[serde(rename = "task")]
2442            #[serde(default)]
2443            task: Strict<Option<WorkerTask>>,
2444        }
2445        let wire = __Wire::deserialize(deserializer)?;
2446        Ok(Self { task: wire.task.0 })
2447    }
2448}
2449
2450/// PublishedVersion contract value.
2451#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
2452pub struct PublishedVersion {
2453    /// Contract field resourceId.
2454    #[serde(rename = "resourceId")]
2455    pub resource_id: Uuid,
2456    /// Contract field versionId.
2457    #[serde(rename = "versionId")]
2458    pub version_id: Uuid,
2459}
2460impl<'de> DeserializeStrict<'de> for PublishedVersion {
2461    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
2462        #[derive(Deserialize)]
2463        #[serde(deny_unknown_fields)]
2464        struct __Wire {
2465            #[serde(rename = "resourceId")]
2466            resource_id: Strict<Uuid>,
2467            #[serde(rename = "versionId")]
2468            version_id: Strict<Uuid>,
2469        }
2470        let wire = __Wire::deserialize(deserializer)?;
2471        Ok(Self {
2472            resource_id: wire.resource_id.0,
2473            version_id: wire.version_id.0,
2474        })
2475    }
2476}
2477
2478/// RegisterWorkerRequest contract value.
2479#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
2480pub struct RegisterWorkerRequest {
2481    /// Contract field capabilities.
2482    #[serde(rename = "capabilities")]
2483    pub capabilities: WorkerCapabilities,
2484    /// Contract field processInstanceId.
2485    #[serde(rename = "processInstanceId")]
2486    pub process_instance_id: Uuid,
2487    /// Contract field projectId.
2488    #[serde(rename = "projectId")]
2489    pub project_id: String,
2490    /// Contract field releaseVersion.
2491    #[serde(rename = "releaseVersion")]
2492    pub release_version: String,
2493    /// Contract field tags.
2494    #[serde(rename = "tags")]
2495    #[serde(default, skip_serializing_if = "Option::is_none")]
2496    pub tags: Option<WorkerSessionTags>,
2497    /// Contract field workerPoolId.
2498    #[serde(rename = "workerPoolId")]
2499    #[serde(default, skip_serializing_if = "Option::is_none")]
2500    pub worker_pool_id: Option<Uuid>,
2501}
2502impl<'de> DeserializeStrict<'de> for RegisterWorkerRequest {
2503    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
2504        #[derive(Deserialize)]
2505        #[serde(deny_unknown_fields)]
2506        struct __Wire {
2507            #[serde(rename = "capabilities")]
2508            capabilities: Strict<WorkerCapabilities>,
2509            #[serde(rename = "processInstanceId")]
2510            process_instance_id: Strict<Uuid>,
2511            #[serde(rename = "projectId")]
2512            project_id: Strict<String>,
2513            #[serde(rename = "releaseVersion")]
2514            release_version: Strict<String>,
2515            #[serde(rename = "tags")]
2516            #[serde(default)]
2517            tags: Strict<Option<WorkerSessionTags>>,
2518            #[serde(rename = "workerPoolId")]
2519            #[serde(default)]
2520            worker_pool_id: Strict<Option<Uuid>>,
2521        }
2522        let wire = __Wire::deserialize(deserializer)?;
2523        Ok(Self {
2524            capabilities: wire.capabilities.0,
2525            process_instance_id: wire.process_instance_id.0,
2526            project_id: wire.project_id.0,
2527            release_version: wire.release_version.0,
2528            tags: wire.tags.0,
2529            worker_pool_id: wire.worker_pool_id.0,
2530        })
2531    }
2532}
2533
2534/// RegisterWorkerResponse contract value.
2535#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
2536pub struct RegisterWorkerResponse {
2537    /// Contract field workerSession.
2538    #[serde(rename = "workerSession")]
2539    pub worker_session: WorkerSession,
2540}
2541impl<'de> DeserializeStrict<'de> for RegisterWorkerResponse {
2542    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
2543        #[derive(Deserialize)]
2544        #[serde(deny_unknown_fields)]
2545        struct __Wire {
2546            #[serde(rename = "workerSession")]
2547            worker_session: Strict<WorkerSession>,
2548        }
2549        let wire = __Wire::deserialize(deserializer)?;
2550        Ok(Self {
2551            worker_session: wire.worker_session.0,
2552        })
2553    }
2554}
2555
2556/// ResourceEventType contract value.
2557#[derive(Clone, Debug, PartialEq, Eq)]
2558pub enum ResourceEventType {
2559    /// A known contract value.
2560    ResourceUpdated,
2561    /// A value introduced by a newer server.
2562    Unknown(String),
2563}
2564impl Serialize for ResourceEventType {
2565    fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
2566        serializer.serialize_str(match self {
2567            Self::ResourceUpdated => "resource_updated",
2568            Self::Unknown(value) => value,
2569        })
2570    }
2571}
2572impl<'de> Deserialize<'de> for ResourceEventType {
2573    fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
2574        Ok(match String::deserialize(deserializer)?.as_str() {
2575            "resource_updated" => Self::ResourceUpdated,
2576            value => Self::Unknown(value.to_owned()),
2577        })
2578    }
2579}
2580impl<'de> DeserializeStrict<'de> for ResourceEventType {
2581    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
2582        #[derive(Deserialize)]
2583        enum __Known {
2584            #[serde(rename = "resource_updated")]
2585            ResourceUpdated,
2586        }
2587        Ok(match __Known::deserialize(deserializer)? {
2588            __Known::ResourceUpdated => Self::ResourceUpdated,
2589        })
2590    }
2591}
2592
2593/// ResourceProfile contract value.
2594#[derive(Clone, Debug, PartialEq, Eq)]
2595pub enum ResourceProfile {
2596    /// A known contract value.
2597    Cpu1,
2598    /// A known contract value.
2599    Cpu2,
2600    /// A known contract value.
2601    Cpu4,
2602    /// A known contract value.
2603    Cpu8,
2604    /// A known contract value.
2605    Cpu16,
2606    /// A value introduced by a newer server.
2607    Unknown(String),
2608}
2609impl Serialize for ResourceProfile {
2610    fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
2611        serializer.serialize_str(match self {
2612            Self::Cpu1 => "cpu_1",
2613            Self::Cpu2 => "cpu_2",
2614            Self::Cpu4 => "cpu_4",
2615            Self::Cpu8 => "cpu_8",
2616            Self::Cpu16 => "cpu_16",
2617            Self::Unknown(value) => value,
2618        })
2619    }
2620}
2621impl<'de> Deserialize<'de> for ResourceProfile {
2622    fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
2623        Ok(match String::deserialize(deserializer)?.as_str() {
2624            "cpu_1" => Self::Cpu1,
2625            "cpu_2" => Self::Cpu2,
2626            "cpu_4" => Self::Cpu4,
2627            "cpu_8" => Self::Cpu8,
2628            "cpu_16" => Self::Cpu16,
2629            value => Self::Unknown(value.to_owned()),
2630        })
2631    }
2632}
2633impl<'de> DeserializeStrict<'de> for ResourceProfile {
2634    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
2635        #[derive(Deserialize)]
2636        enum __Known {
2637            #[serde(rename = "cpu_1")]
2638            Cpu1,
2639            #[serde(rename = "cpu_2")]
2640            Cpu2,
2641            #[serde(rename = "cpu_4")]
2642            Cpu4,
2643            #[serde(rename = "cpu_8")]
2644            Cpu8,
2645            #[serde(rename = "cpu_16")]
2646            Cpu16,
2647        }
2648        Ok(match __Known::deserialize(deserializer)? {
2649            __Known::Cpu1 => Self::Cpu1,
2650            __Known::Cpu2 => Self::Cpu2,
2651            __Known::Cpu4 => Self::Cpu4,
2652            __Known::Cpu8 => Self::Cpu8,
2653            __Known::Cpu16 => Self::Cpu16,
2654        })
2655    }
2656}
2657
2658/// ResourceProfileDetails contract value.
2659#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
2660pub struct ResourceProfileDetails {
2661    /// Contract field cpu.
2662    #[serde(rename = "cpu")]
2663    pub cpu: u32,
2664    /// Contract field id.
2665    #[serde(rename = "id")]
2666    pub id: ResourceProfile,
2667    /// Contract field memoryGib.
2668    #[serde(rename = "memoryGib")]
2669    pub memory_gib: SafeUnsignedLong,
2670}
2671impl<'de> DeserializeStrict<'de> for ResourceProfileDetails {
2672    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
2673        #[derive(Deserialize)]
2674        #[serde(deny_unknown_fields)]
2675        struct __Wire {
2676            #[serde(rename = "cpu")]
2677            cpu: Strict<u32>,
2678            #[serde(rename = "id")]
2679            id: Strict<ResourceProfile>,
2680            #[serde(rename = "memoryGib")]
2681            memory_gib: Strict<SafeUnsignedLong>,
2682        }
2683        let wire = __Wire::deserialize(deserializer)?;
2684        Ok(Self {
2685            cpu: wire.cpu.0,
2686            id: wire.id.0,
2687            memory_gib: wire.memory_gib.0,
2688        })
2689    }
2690}
2691
2692/// ResourceUsage contract value.
2693#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
2694pub struct ResourceUsage {
2695    /// Contract field cpuLimitMillicores.
2696    #[serde(rename = "cpuLimitMillicores")]
2697    #[serde(default, skip_serializing_if = "Option::is_none")]
2698    pub cpu_limit_millicores: Option<SafeUnsignedLong>,
2699    /// Contract field cpuTimeMicros.
2700    #[serde(rename = "cpuTimeMicros")]
2701    #[serde(default, skip_serializing_if = "Option::is_none")]
2702    pub cpu_time_micros: Option<SafeUnsignedLong>,
2703    /// Contract field durationMicros.
2704    #[serde(rename = "durationMicros")]
2705    pub duration_micros: SafeUnsignedLong,
2706    /// Contract field memoryBytes.
2707    #[serde(rename = "memoryBytes")]
2708    #[serde(default, skip_serializing_if = "Option::is_none")]
2709    pub memory_bytes: Option<SafeUnsignedLong>,
2710    /// Contract field memoryLimitBytes.
2711    #[serde(rename = "memoryLimitBytes")]
2712    #[serde(default, skip_serializing_if = "Option::is_none")]
2713    pub memory_limit_bytes: Option<SafeUnsignedLong>,
2714    /// Contract field observedAtMicros.
2715    #[serde(rename = "observedAtMicros")]
2716    pub observed_at_micros: SafeLong,
2717    /// Contract field peakMemoryBytes.
2718    #[serde(rename = "peakMemoryBytes")]
2719    #[serde(default, skip_serializing_if = "Option::is_none")]
2720    pub peak_memory_bytes: Option<SafeUnsignedLong>,
2721    /// Contract field sequence.
2722    #[serde(rename = "sequence")]
2723    pub sequence: SafeUnsignedLong,
2724    /// Contract field source.
2725    #[serde(rename = "source")]
2726    pub source: ResourceUsageSource,
2727}
2728impl<'de> DeserializeStrict<'de> for ResourceUsage {
2729    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
2730        #[derive(Deserialize)]
2731        #[serde(deny_unknown_fields)]
2732        struct __Wire {
2733            #[serde(rename = "cpuLimitMillicores")]
2734            #[serde(default)]
2735            cpu_limit_millicores: Strict<Option<SafeUnsignedLong>>,
2736            #[serde(rename = "cpuTimeMicros")]
2737            #[serde(default)]
2738            cpu_time_micros: Strict<Option<SafeUnsignedLong>>,
2739            #[serde(rename = "durationMicros")]
2740            duration_micros: Strict<SafeUnsignedLong>,
2741            #[serde(rename = "memoryBytes")]
2742            #[serde(default)]
2743            memory_bytes: Strict<Option<SafeUnsignedLong>>,
2744            #[serde(rename = "memoryLimitBytes")]
2745            #[serde(default)]
2746            memory_limit_bytes: Strict<Option<SafeUnsignedLong>>,
2747            #[serde(rename = "observedAtMicros")]
2748            observed_at_micros: Strict<SafeLong>,
2749            #[serde(rename = "peakMemoryBytes")]
2750            #[serde(default)]
2751            peak_memory_bytes: Strict<Option<SafeUnsignedLong>>,
2752            #[serde(rename = "sequence")]
2753            sequence: Strict<SafeUnsignedLong>,
2754            #[serde(rename = "source")]
2755            source: Strict<ResourceUsageSource>,
2756        }
2757        let wire = __Wire::deserialize(deserializer)?;
2758        Ok(Self {
2759            cpu_limit_millicores: wire.cpu_limit_millicores.0,
2760            cpu_time_micros: wire.cpu_time_micros.0,
2761            duration_micros: wire.duration_micros.0,
2762            memory_bytes: wire.memory_bytes.0,
2763            memory_limit_bytes: wire.memory_limit_bytes.0,
2764            observed_at_micros: wire.observed_at_micros.0,
2765            peak_memory_bytes: wire.peak_memory_bytes.0,
2766            sequence: wire.sequence.0,
2767            source: wire.source.0,
2768        })
2769    }
2770}
2771
2772/// ResourceUsageHistory contract value.
2773#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
2774pub struct ResourceUsageHistory {
2775    /// Contract field attempts.
2776    #[serde(rename = "attempts")]
2777    pub attempts: Vec<WorkerAttempt>,
2778    /// Contract field fromMicros.
2779    #[serde(rename = "fromMicros")]
2780    pub from_micros: SafeLong,
2781    /// Contract field points.
2782    #[serde(rename = "points")]
2783    pub points: Vec<ResourceUsageSummary>,
2784    /// Contract field resolutionMicros.
2785    #[serde(rename = "resolutionMicros")]
2786    pub resolution_micros: SafeLong,
2787    /// Contract field toMicros.
2788    #[serde(rename = "toMicros")]
2789    pub to_micros: SafeLong,
2790}
2791impl<'de> DeserializeStrict<'de> for ResourceUsageHistory {
2792    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
2793        #[derive(Deserialize)]
2794        #[serde(deny_unknown_fields)]
2795        struct __Wire {
2796            #[serde(rename = "attempts")]
2797            attempts: Strict<Vec<WorkerAttempt>>,
2798            #[serde(rename = "fromMicros")]
2799            from_micros: Strict<SafeLong>,
2800            #[serde(rename = "points")]
2801            points: Strict<Vec<ResourceUsageSummary>>,
2802            #[serde(rename = "resolutionMicros")]
2803            resolution_micros: Strict<SafeLong>,
2804            #[serde(rename = "toMicros")]
2805            to_micros: Strict<SafeLong>,
2806        }
2807        let wire = __Wire::deserialize(deserializer)?;
2808        Ok(Self {
2809            attempts: wire.attempts.0,
2810            from_micros: wire.from_micros.0,
2811            points: wire.points.0,
2812            resolution_micros: wire.resolution_micros.0,
2813            to_micros: wire.to_micros.0,
2814        })
2815    }
2816}
2817
2818/// ResourceUsageRequest contract value.
2819#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
2820pub struct ResourceUsageRequest {
2821    /// Contract field attemptId.
2822    #[serde(rename = "attemptId")]
2823    #[serde(default, skip_serializing_if = "Option::is_none")]
2824    pub attempt_id: Option<Uuid>,
2825}
2826impl<'de> DeserializeStrict<'de> for ResourceUsageRequest {
2827    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
2828        #[derive(Deserialize)]
2829        #[serde(deny_unknown_fields)]
2830        struct __Wire {
2831            #[serde(rename = "attemptId")]
2832            #[serde(default)]
2833            attempt_id: Strict<Option<Uuid>>,
2834        }
2835        let wire = __Wire::deserialize(deserializer)?;
2836        Ok(Self {
2837            attempt_id: wire.attempt_id.0,
2838        })
2839    }
2840}
2841
2842/// ResourceUsageSource contract value.
2843#[derive(Clone, Debug, PartialEq, Eq)]
2844pub enum ResourceUsageSource {
2845    /// A known contract value.
2846    Cgroup,
2847    /// A known contract value.
2848    ProcessTree,
2849    /// A value introduced by a newer server.
2850    Unknown(String),
2851}
2852impl Serialize for ResourceUsageSource {
2853    fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
2854        serializer.serialize_str(match self {
2855            Self::Cgroup => "cgroup",
2856            Self::ProcessTree => "process_tree",
2857            Self::Unknown(value) => value,
2858        })
2859    }
2860}
2861impl<'de> Deserialize<'de> for ResourceUsageSource {
2862    fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
2863        Ok(match String::deserialize(deserializer)?.as_str() {
2864            "cgroup" => Self::Cgroup,
2865            "process_tree" => Self::ProcessTree,
2866            value => Self::Unknown(value.to_owned()),
2867        })
2868    }
2869}
2870impl<'de> DeserializeStrict<'de> for ResourceUsageSource {
2871    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
2872        #[derive(Deserialize)]
2873        enum __Known {
2874            #[serde(rename = "cgroup")]
2875            Cgroup,
2876            #[serde(rename = "process_tree")]
2877            ProcessTree,
2878        }
2879        Ok(match __Known::deserialize(deserializer)? {
2880            __Known::Cgroup => Self::Cgroup,
2881            __Known::ProcessTree => Self::ProcessTree,
2882        })
2883    }
2884}
2885
2886/// ResourceUsageSummary contract value.
2887#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
2888pub struct ResourceUsageSummary {
2889    /// Contract field cpuObservedMicros.
2890    #[serde(rename = "cpuObservedMicros")]
2891    pub cpu_observed_micros: SafeUnsignedLong,
2892    /// Contract field cpuTimeMicros.
2893    #[serde(rename = "cpuTimeMicros")]
2894    pub cpu_time_micros: SafeUnsignedLong,
2895    /// Contract field latest.
2896    #[serde(rename = "latest")]
2897    pub latest: ResourceUsage,
2898    /// Contract field peakMemoryBytes.
2899    #[serde(rename = "peakMemoryBytes")]
2900    #[serde(default, skip_serializing_if = "Option::is_none")]
2901    pub peak_memory_bytes: Option<SafeUnsignedLong>,
2902    /// Contract field receivedAtMicros.
2903    #[serde(rename = "receivedAtMicros")]
2904    pub received_at_micros: SafeLong,
2905}
2906impl<'de> DeserializeStrict<'de> for ResourceUsageSummary {
2907    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
2908        #[derive(Deserialize)]
2909        #[serde(deny_unknown_fields)]
2910        struct __Wire {
2911            #[serde(rename = "cpuObservedMicros")]
2912            cpu_observed_micros: Strict<SafeUnsignedLong>,
2913            #[serde(rename = "cpuTimeMicros")]
2914            cpu_time_micros: Strict<SafeUnsignedLong>,
2915            #[serde(rename = "latest")]
2916            latest: Strict<ResourceUsage>,
2917            #[serde(rename = "peakMemoryBytes")]
2918            #[serde(default)]
2919            peak_memory_bytes: Strict<Option<SafeUnsignedLong>>,
2920            #[serde(rename = "receivedAtMicros")]
2921            received_at_micros: Strict<SafeLong>,
2922        }
2923        let wire = __Wire::deserialize(deserializer)?;
2924        Ok(Self {
2925            cpu_observed_micros: wire.cpu_observed_micros.0,
2926            cpu_time_micros: wire.cpu_time_micros.0,
2927            latest: wire.latest.0,
2928            peak_memory_bytes: wire.peak_memory_bytes.0,
2929            received_at_micros: wire.received_at_micros.0,
2930        })
2931    }
2932}
2933
2934/// RunTriggerRequest contract value.
2935#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
2936pub struct RunTriggerRequest {
2937    /// Contract field requestId.
2938    #[serde(rename = "requestId")]
2939    pub request_id: Uuid,
2940}
2941impl<'de> DeserializeStrict<'de> for RunTriggerRequest {
2942    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
2943        #[derive(Deserialize)]
2944        #[serde(deny_unknown_fields)]
2945        struct __Wire {
2946            #[serde(rename = "requestId")]
2947            request_id: Strict<Uuid>,
2948        }
2949        let wire = __Wire::deserialize(deserializer)?;
2950        Ok(Self {
2951            request_id: wire.request_id.0,
2952        })
2953    }
2954}
2955
2956/// SubmitTaskRequest contract value.
2957#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
2958pub struct SubmitTaskRequest {
2959    /// Contract field claim.
2960    #[serde(rename = "claim")]
2961    #[serde(default, skip_serializing_if = "Option::is_none")]
2962    pub claim: Option<TaskClaim>,
2963    /// Contract field definition.
2964    #[serde(rename = "definition")]
2965    pub definition: TaskDefinition,
2966    /// Contract field idempotencyKey.
2967    #[serde(rename = "idempotencyKey")]
2968    pub idempotency_key: String,
2969    /// Contract field options.
2970    #[serde(rename = "options")]
2971    #[serde(default, skip_serializing_if = "Option::is_none")]
2972    pub options: Option<TaskOptions>,
2973    /// Contract field parentTaskId.
2974    #[serde(rename = "parentTaskId")]
2975    #[serde(default, skip_serializing_if = "Option::is_none")]
2976    pub parent_task_id: Option<Uuid>,
2977}
2978impl<'de> DeserializeStrict<'de> for SubmitTaskRequest {
2979    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
2980        #[derive(Deserialize)]
2981        #[serde(deny_unknown_fields)]
2982        struct __Wire {
2983            #[serde(rename = "claim")]
2984            #[serde(default)]
2985            claim: Strict<Option<TaskClaim>>,
2986            #[serde(rename = "definition")]
2987            definition: Strict<TaskDefinition>,
2988            #[serde(rename = "idempotencyKey")]
2989            idempotency_key: Strict<String>,
2990            #[serde(rename = "options")]
2991            #[serde(default)]
2992            options: Strict<Option<TaskOptions>>,
2993            #[serde(rename = "parentTaskId")]
2994            #[serde(default)]
2995            parent_task_id: Strict<Option<Uuid>>,
2996        }
2997        let wire = __Wire::deserialize(deserializer)?;
2998        Ok(Self {
2999            claim: wire.claim.0,
3000            definition: wire.definition.0,
3001            idempotency_key: wire.idempotency_key.0,
3002            options: wire.options.0,
3003            parent_task_id: wire.parent_task_id.0,
3004        })
3005    }
3006}
3007
3008/// Compact and recluster the latest state of one Table branch, publishing each step as a new Table
3009/// version. The read target must be latestOnBranch.
3010#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
3011pub struct TableMaintenanceDefinition {
3012    /// Contract field readTarget.
3013    #[serde(rename = "readTarget")]
3014    pub read_target: TaskReadTarget,
3015    /// Contract field tableResourceId.
3016    #[serde(rename = "tableResourceId")]
3017    pub table_resource_id: Uuid,
3018}
3019impl<'de> DeserializeStrict<'de> for TableMaintenanceDefinition {
3020    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
3021        #[derive(Deserialize)]
3022        #[serde(deny_unknown_fields)]
3023        struct __Wire {
3024            #[serde(rename = "readTarget")]
3025            read_target: Strict<TaskReadTarget>,
3026            #[serde(rename = "tableResourceId")]
3027            table_resource_id: Strict<Uuid>,
3028        }
3029        let wire = __Wire::deserialize(deserializer)?;
3030        Ok(Self {
3031            read_target: wire.read_target.0,
3032            table_resource_id: wire.table_resource_id.0,
3033        })
3034    }
3035}
3036
3037/// One durable Task. claim is absent only from servers that predate it.
3038#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
3039pub struct Task {
3040    /// Contract field attemptCount.
3041    #[serde(rename = "attemptCount")]
3042    pub attempt_count: u32,
3043    /// Contract field availableAtMicros.
3044    #[serde(rename = "availableAtMicros")]
3045    pub available_at_micros: SafeLong,
3046    /// Contract field buffered.
3047    #[serde(rename = "buffered")]
3048    pub buffered: bool,
3049    /// Contract field cancellationReason.
3050    #[serde(rename = "cancellationReason")]
3051    #[serde(default, skip_serializing_if = "Option::is_none")]
3052    pub cancellation_reason: Option<TaskCancellationReason>,
3053    /// Contract field cancelledBy.
3054    #[serde(rename = "cancelledBy")]
3055    #[serde(default, skip_serializing_if = "Option::is_none")]
3056    pub cancelled_by: Option<Caller>,
3057    /// Contract field claim.
3058    #[serde(rename = "claim")]
3059    #[serde(default, skip_serializing_if = "Option::is_none")]
3060    pub claim: Option<TaskClaim>,
3061    /// Contract field createdAtMicros.
3062    #[serde(rename = "createdAtMicros")]
3063    pub created_at_micros: SafeLong,
3064    /// Contract field currentAttemptId.
3065    #[serde(rename = "currentAttemptId")]
3066    #[serde(default, skip_serializing_if = "Option::is_none")]
3067    pub current_attempt_id: Option<Uuid>,
3068    /// Contract field deadlineAtMicros.
3069    #[serde(rename = "deadlineAtMicros")]
3070    #[serde(default, skip_serializing_if = "Option::is_none")]
3071    pub deadline_at_micros: Option<SafeLong>,
3072    /// Contract field definition.
3073    #[serde(rename = "definition")]
3074    #[serde(default, skip_serializing_if = "Option::is_none")]
3075    pub definition: Option<TaskDefinition>,
3076    /// Contract field failure.
3077    #[serde(rename = "failure")]
3078    #[serde(default, skip_serializing_if = "Option::is_none")]
3079    pub failure: Option<TaskFailure>,
3080    /// Contract field latestWorker.
3081    #[serde(rename = "latestWorker")]
3082    #[serde(default, skip_serializing_if = "Option::is_none")]
3083    pub latest_worker: Option<TaskWorker>,
3084    /// Contract field legacyTableId.
3085    #[serde(rename = "legacyTableId")]
3086    #[serde(default, skip_serializing_if = "Option::is_none")]
3087    pub legacy_table_id: Option<String>,
3088    /// Contract field maxAttempts.
3089    #[serde(rename = "maxAttempts")]
3090    pub max_attempts: u32,
3091    /// Contract field maximumAttemptDurationMicros.
3092    #[serde(rename = "maximumAttemptDurationMicros")]
3093    #[serde(default, skip_serializing_if = "Option::is_none")]
3094    pub maximum_attempt_duration_micros: Option<SafeLong>,
3095    /// Contract field parentTaskId.
3096    #[serde(rename = "parentTaskId")]
3097    #[serde(default, skip_serializing_if = "Option::is_none")]
3098    pub parent_task_id: Option<Uuid>,
3099    /// Contract field pendingExpiresAtMicros.
3100    #[serde(rename = "pendingExpiresAtMicros")]
3101    pub pending_expires_at_micros: SafeLong,
3102    /// Contract field projectId.
3103    #[serde(rename = "projectId")]
3104    pub project_id: String,
3105    /// Contract field published.
3106    #[serde(rename = "published")]
3107    #[serde(default, skip_serializing_if = "Option::is_none")]
3108    pub published: Option<TaskResult>,
3109    /// Contract field requestedBy.
3110    #[serde(rename = "requestedBy")]
3111    pub requested_by: Caller,
3112    /// Contract field requirements.
3113    #[serde(rename = "requirements")]
3114    pub requirements: TaskRequirements,
3115    /// Contract field result.
3116    #[serde(rename = "result")]
3117    #[serde(default, skip_serializing_if = "Option::is_none")]
3118    pub result: Option<Value>,
3119    /// Contract field startedAtMicros.
3120    #[serde(rename = "startedAtMicros")]
3121    #[serde(default, skip_serializing_if = "Option::is_none")]
3122    pub started_at_micros: Option<SafeLong>,
3123    /// Contract field status.
3124    #[serde(rename = "status")]
3125    pub status: TaskStatus,
3126    /// Contract field stopDeadlineAtMicros.
3127    #[serde(rename = "stopDeadlineAtMicros")]
3128    #[serde(default, skip_serializing_if = "Option::is_none")]
3129    pub stop_deadline_at_micros: Option<SafeLong>,
3130    /// Contract field stopReason.
3131    #[serde(rename = "stopReason")]
3132    #[serde(default, skip_serializing_if = "Option::is_none")]
3133    pub stop_reason: Option<TaskStopReason>,
3134    /// Contract field stopRequestedAtMicros.
3135    #[serde(rename = "stopRequestedAtMicros")]
3136    #[serde(default, skip_serializing_if = "Option::is_none")]
3137    pub stop_requested_at_micros: Option<SafeLong>,
3138    /// Contract field taskId.
3139    #[serde(rename = "taskId")]
3140    pub task_id: Uuid,
3141    /// Contract field taskSpecId.
3142    #[serde(rename = "taskSpecId")]
3143    pub task_spec_id: TaskSpecId,
3144    /// Contract field terminalAtMicros.
3145    #[serde(rename = "terminalAtMicros")]
3146    #[serde(default, skip_serializing_if = "Option::is_none")]
3147    pub terminal_at_micros: Option<SafeLong>,
3148    /// Contract field updatedAtMicros.
3149    #[serde(rename = "updatedAtMicros")]
3150    pub updated_at_micros: SafeLong,
3151    /// Contract field workerPoolClaimExpiresAtMicros.
3152    #[serde(rename = "workerPoolClaimExpiresAtMicros")]
3153    #[serde(default, skip_serializing_if = "Option::is_none")]
3154    pub worker_pool_claim_expires_at_micros: Option<SafeLong>,
3155    /// Contract field workerPoolId.
3156    #[serde(rename = "workerPoolId")]
3157    #[serde(default, skip_serializing_if = "Option::is_none")]
3158    pub worker_pool_id: Option<Uuid>,
3159}
3160impl<'de> DeserializeStrict<'de> for Task {
3161    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
3162        #[derive(Deserialize)]
3163        #[serde(deny_unknown_fields)]
3164        struct __Wire {
3165            #[serde(rename = "attemptCount")]
3166            attempt_count: Strict<u32>,
3167            #[serde(rename = "availableAtMicros")]
3168            available_at_micros: Strict<SafeLong>,
3169            #[serde(rename = "buffered")]
3170            buffered: Strict<bool>,
3171            #[serde(rename = "cancellationReason")]
3172            #[serde(default)]
3173            cancellation_reason: Strict<Option<TaskCancellationReason>>,
3174            #[serde(rename = "cancelledBy")]
3175            #[serde(default)]
3176            cancelled_by: Strict<Option<Caller>>,
3177            #[serde(rename = "claim")]
3178            #[serde(default)]
3179            claim: Strict<Option<TaskClaim>>,
3180            #[serde(rename = "createdAtMicros")]
3181            created_at_micros: Strict<SafeLong>,
3182            #[serde(rename = "currentAttemptId")]
3183            #[serde(default)]
3184            current_attempt_id: Strict<Option<Uuid>>,
3185            #[serde(rename = "deadlineAtMicros")]
3186            #[serde(default)]
3187            deadline_at_micros: Strict<Option<SafeLong>>,
3188            #[serde(rename = "definition")]
3189            #[serde(default)]
3190            definition: Strict<Option<TaskDefinition>>,
3191            #[serde(rename = "failure")]
3192            #[serde(default)]
3193            failure: Strict<Option<TaskFailure>>,
3194            #[serde(rename = "latestWorker")]
3195            #[serde(default)]
3196            latest_worker: Strict<Option<TaskWorker>>,
3197            #[serde(rename = "legacyTableId")]
3198            #[serde(default)]
3199            legacy_table_id: Strict<Option<String>>,
3200            #[serde(rename = "maxAttempts")]
3201            max_attempts: Strict<u32>,
3202            #[serde(rename = "maximumAttemptDurationMicros")]
3203            #[serde(default)]
3204            maximum_attempt_duration_micros: Strict<Option<SafeLong>>,
3205            #[serde(rename = "parentTaskId")]
3206            #[serde(default)]
3207            parent_task_id: Strict<Option<Uuid>>,
3208            #[serde(rename = "pendingExpiresAtMicros")]
3209            pending_expires_at_micros: Strict<SafeLong>,
3210            #[serde(rename = "projectId")]
3211            project_id: Strict<String>,
3212            #[serde(rename = "published")]
3213            #[serde(default)]
3214            published: Strict<Option<TaskResult>>,
3215            #[serde(rename = "requestedBy")]
3216            requested_by: Strict<Caller>,
3217            #[serde(rename = "requirements")]
3218            requirements: Strict<TaskRequirements>,
3219            #[serde(rename = "result")]
3220            #[serde(default)]
3221            result: Strict<Option<Value>>,
3222            #[serde(rename = "startedAtMicros")]
3223            #[serde(default)]
3224            started_at_micros: Strict<Option<SafeLong>>,
3225            #[serde(rename = "status")]
3226            status: Strict<TaskStatus>,
3227            #[serde(rename = "stopDeadlineAtMicros")]
3228            #[serde(default)]
3229            stop_deadline_at_micros: Strict<Option<SafeLong>>,
3230            #[serde(rename = "stopReason")]
3231            #[serde(default)]
3232            stop_reason: Strict<Option<TaskStopReason>>,
3233            #[serde(rename = "stopRequestedAtMicros")]
3234            #[serde(default)]
3235            stop_requested_at_micros: Strict<Option<SafeLong>>,
3236            #[serde(rename = "taskId")]
3237            task_id: Strict<Uuid>,
3238            #[serde(rename = "taskSpecId")]
3239            task_spec_id: Strict<TaskSpecId>,
3240            #[serde(rename = "terminalAtMicros")]
3241            #[serde(default)]
3242            terminal_at_micros: Strict<Option<SafeLong>>,
3243            #[serde(rename = "updatedAtMicros")]
3244            updated_at_micros: Strict<SafeLong>,
3245            #[serde(rename = "workerPoolClaimExpiresAtMicros")]
3246            #[serde(default)]
3247            worker_pool_claim_expires_at_micros: Strict<Option<SafeLong>>,
3248            #[serde(rename = "workerPoolId")]
3249            #[serde(default)]
3250            worker_pool_id: Strict<Option<Uuid>>,
3251        }
3252        let wire = __Wire::deserialize(deserializer)?;
3253        Ok(Self {
3254            attempt_count: wire.attempt_count.0,
3255            available_at_micros: wire.available_at_micros.0,
3256            buffered: wire.buffered.0,
3257            cancellation_reason: wire.cancellation_reason.0,
3258            cancelled_by: wire.cancelled_by.0,
3259            claim: wire.claim.0,
3260            created_at_micros: wire.created_at_micros.0,
3261            current_attempt_id: wire.current_attempt_id.0,
3262            deadline_at_micros: wire.deadline_at_micros.0,
3263            definition: wire.definition.0,
3264            failure: wire.failure.0,
3265            latest_worker: wire.latest_worker.0,
3266            legacy_table_id: wire.legacy_table_id.0,
3267            max_attempts: wire.max_attempts.0,
3268            maximum_attempt_duration_micros: wire.maximum_attempt_duration_micros.0,
3269            parent_task_id: wire.parent_task_id.0,
3270            pending_expires_at_micros: wire.pending_expires_at_micros.0,
3271            project_id: wire.project_id.0,
3272            published: wire.published.0,
3273            requested_by: wire.requested_by.0,
3274            requirements: wire.requirements.0,
3275            result: wire.result.0,
3276            started_at_micros: wire.started_at_micros.0,
3277            status: wire.status.0,
3278            stop_deadline_at_micros: wire.stop_deadline_at_micros.0,
3279            stop_reason: wire.stop_reason.0,
3280            stop_requested_at_micros: wire.stop_requested_at_micros.0,
3281            task_id: wire.task_id.0,
3282            task_spec_id: wire.task_spec_id.0,
3283            terminal_at_micros: wire.terminal_at_micros.0,
3284            updated_at_micros: wire.updated_at_micros.0,
3285            worker_pool_claim_expires_at_micros: wire.worker_pool_claim_expires_at_micros.0,
3286            worker_pool_id: wire.worker_pool_id.0,
3287        })
3288    }
3289}
3290
3291/// TaskAttempt contract value.
3292#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
3293pub struct TaskAttempt {
3294    /// Contract field attemptDeadlineAtMicros.
3295    #[serde(rename = "attemptDeadlineAtMicros")]
3296    #[serde(default, skip_serializing_if = "Option::is_none")]
3297    pub attempt_deadline_at_micros: Option<SafeLong>,
3298    /// Contract field attemptId.
3299    #[serde(rename = "attemptId")]
3300    pub attempt_id: Uuid,
3301    /// Contract field failure.
3302    #[serde(rename = "failure")]
3303    #[serde(default, skip_serializing_if = "Option::is_none")]
3304    pub failure: Option<TaskFailure>,
3305    /// Contract field lastHeartbeatAtMicros.
3306    #[serde(rename = "lastHeartbeatAtMicros")]
3307    pub last_heartbeat_at_micros: SafeLong,
3308    /// Contract field leaseExpiresAtMicros.
3309    #[serde(rename = "leaseExpiresAtMicros")]
3310    pub lease_expires_at_micros: SafeLong,
3311    /// Contract field ordinal.
3312    #[serde(rename = "ordinal")]
3313    pub ordinal: u32,
3314    /// Contract field progress.
3315    #[serde(rename = "progress")]
3316    #[serde(default, skip_serializing_if = "Option::is_none")]
3317    pub progress: Option<TaskProgress>,
3318    /// Contract field resourceUsage.
3319    #[serde(rename = "resourceUsage")]
3320    #[serde(default, skip_serializing_if = "Option::is_none")]
3321    pub resource_usage: Option<ResourceUsageSummary>,
3322    /// Contract field startedAtMicros.
3323    #[serde(rename = "startedAtMicros")]
3324    pub started_at_micros: SafeLong,
3325    /// Contract field status.
3326    #[serde(rename = "status")]
3327    pub status: AttemptStatus,
3328    /// Contract field taskId.
3329    #[serde(rename = "taskId")]
3330    pub task_id: Uuid,
3331    /// Contract field terminalAtMicros.
3332    #[serde(rename = "terminalAtMicros")]
3333    #[serde(default, skip_serializing_if = "Option::is_none")]
3334    pub terminal_at_micros: Option<SafeLong>,
3335    /// Contract field workerSessionId.
3336    #[serde(rename = "workerSessionId")]
3337    pub worker_session_id: Uuid,
3338}
3339impl<'de> DeserializeStrict<'de> for TaskAttempt {
3340    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
3341        #[derive(Deserialize)]
3342        #[serde(deny_unknown_fields)]
3343        struct __Wire {
3344            #[serde(rename = "attemptDeadlineAtMicros")]
3345            #[serde(default)]
3346            attempt_deadline_at_micros: Strict<Option<SafeLong>>,
3347            #[serde(rename = "attemptId")]
3348            attempt_id: Strict<Uuid>,
3349            #[serde(rename = "failure")]
3350            #[serde(default)]
3351            failure: Strict<Option<TaskFailure>>,
3352            #[serde(rename = "lastHeartbeatAtMicros")]
3353            last_heartbeat_at_micros: Strict<SafeLong>,
3354            #[serde(rename = "leaseExpiresAtMicros")]
3355            lease_expires_at_micros: Strict<SafeLong>,
3356            #[serde(rename = "ordinal")]
3357            ordinal: Strict<u32>,
3358            #[serde(rename = "progress")]
3359            #[serde(default)]
3360            progress: Strict<Option<TaskProgress>>,
3361            #[serde(rename = "resourceUsage")]
3362            #[serde(default)]
3363            resource_usage: Strict<Option<ResourceUsageSummary>>,
3364            #[serde(rename = "startedAtMicros")]
3365            started_at_micros: Strict<SafeLong>,
3366            #[serde(rename = "status")]
3367            status: Strict<AttemptStatus>,
3368            #[serde(rename = "taskId")]
3369            task_id: Strict<Uuid>,
3370            #[serde(rename = "terminalAtMicros")]
3371            #[serde(default)]
3372            terminal_at_micros: Strict<Option<SafeLong>>,
3373            #[serde(rename = "workerSessionId")]
3374            worker_session_id: Strict<Uuid>,
3375        }
3376        let wire = __Wire::deserialize(deserializer)?;
3377        Ok(Self {
3378            attempt_deadline_at_micros: wire.attempt_deadline_at_micros.0,
3379            attempt_id: wire.attempt_id.0,
3380            failure: wire.failure.0,
3381            last_heartbeat_at_micros: wire.last_heartbeat_at_micros.0,
3382            lease_expires_at_micros: wire.lease_expires_at_micros.0,
3383            ordinal: wire.ordinal.0,
3384            progress: wire.progress.0,
3385            resource_usage: wire.resource_usage.0,
3386            started_at_micros: wire.started_at_micros.0,
3387            status: wire.status.0,
3388            task_id: wire.task_id.0,
3389            terminal_at_micros: wire.terminal_at_micros.0,
3390            worker_session_id: wire.worker_session_id.0,
3391        })
3392    }
3393}
3394
3395/// TaskCancellationReason contract value.
3396#[derive(Clone, Debug, PartialEq, Eq)]
3397pub enum TaskCancellationReason {
3398    /// A known contract value.
3399    OverlapSkipped,
3400    /// A known contract value.
3401    User,
3402    /// A known contract value.
3403    PendingTimeout,
3404    /// A known contract value.
3405    ParentCancelled,
3406    /// A known contract value.
3407    ParentFailed,
3408    /// A value introduced by a newer server.
3409    Unknown(String),
3410}
3411impl Serialize for TaskCancellationReason {
3412    fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
3413        serializer.serialize_str(match self {
3414            Self::OverlapSkipped => "overlap_skipped",
3415            Self::User => "user",
3416            Self::PendingTimeout => "pending_timeout",
3417            Self::ParentCancelled => "parent_cancelled",
3418            Self::ParentFailed => "parent_failed",
3419            Self::Unknown(value) => value,
3420        })
3421    }
3422}
3423impl<'de> Deserialize<'de> for TaskCancellationReason {
3424    fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
3425        Ok(match String::deserialize(deserializer)?.as_str() {
3426            "overlap_skipped" => Self::OverlapSkipped,
3427            "user" => Self::User,
3428            "pending_timeout" => Self::PendingTimeout,
3429            "parent_cancelled" => Self::ParentCancelled,
3430            "parent_failed" => Self::ParentFailed,
3431            value => Self::Unknown(value.to_owned()),
3432        })
3433    }
3434}
3435impl<'de> DeserializeStrict<'de> for TaskCancellationReason {
3436    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
3437        #[derive(Deserialize)]
3438        enum __Known {
3439            #[serde(rename = "overlap_skipped")]
3440            OverlapSkipped,
3441            #[serde(rename = "user")]
3442            User,
3443            #[serde(rename = "pending_timeout")]
3444            PendingTimeout,
3445            #[serde(rename = "parent_cancelled")]
3446            ParentCancelled,
3447            #[serde(rename = "parent_failed")]
3448            ParentFailed,
3449        }
3450        Ok(match __Known::deserialize(deserializer)? {
3451            __Known::OverlapSkipped => Self::OverlapSkipped,
3452            __Known::User => Self::User,
3453            __Known::PendingTimeout => Self::PendingTimeout,
3454            __Known::ParentCancelled => Self::ParentCancelled,
3455            __Known::ParentFailed => Self::ParentFailed,
3456        })
3457    }
3458}
3459
3460/// Who may claim a Task. pool, the default, lets WorkerPools and Workers claim it when their
3461/// capabilities meet its requirements. submitter reserves it for its submitter: only a Worker
3462/// session authenticated as the submitter, without a WorkerPool, claims it by ID, and only its
3463/// installed handlers are checked, since the submitter chose the machine. A submitter-claimed Task
3464/// that no Worker claims within five minutes of becoming claimable fails with not_claimed.
3465#[derive(Clone, Debug, PartialEq, Eq)]
3466pub enum TaskClaim {
3467    /// A known contract value.
3468    Pool,
3469    /// A known contract value.
3470    Submitter,
3471    /// A value introduced by a newer server.
3472    Unknown(String),
3473}
3474impl Serialize for TaskClaim {
3475    fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
3476        serializer.serialize_str(match self {
3477            Self::Pool => "pool",
3478            Self::Submitter => "submitter",
3479            Self::Unknown(value) => value,
3480        })
3481    }
3482}
3483impl<'de> Deserialize<'de> for TaskClaim {
3484    fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
3485        Ok(match String::deserialize(deserializer)?.as_str() {
3486            "pool" => Self::Pool,
3487            "submitter" => Self::Submitter,
3488            value => Self::Unknown(value.to_owned()),
3489        })
3490    }
3491}
3492impl<'de> DeserializeStrict<'de> for TaskClaim {
3493    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
3494        #[derive(Deserialize)]
3495        enum __Known {
3496            #[serde(rename = "pool")]
3497            Pool,
3498            #[serde(rename = "submitter")]
3499            Submitter,
3500        }
3501        Ok(match __Known::deserialize(deserializer)? {
3502            __Known::Pool => Self::Pool,
3503            __Known::Submitter => Self::Submitter,
3504        })
3505    }
3506}
3507
3508/// What one Task does. The arm names the kind of Task; each kind has one specification version,
3509/// which the Task's taskSpecId reports.
3510#[derive(Clone, Debug, PartialEq, Eq)]
3511pub enum TaskDefinition {
3512    /// A known union arm.
3513    EnrichmentCompute(EnrichmentComputeDefinition),
3514    /// A known union arm.
3515    EnrichmentRefresh(EnrichmentRefreshDefinition),
3516    /// A known union arm.
3517    LegacyTableCompactionWorker(LegacyTableCompactionWorkerDefinition),
3518    /// A known union arm.
3519    LegacyTableMaintenance(LegacyTableMaintenanceDefinition),
3520    /// A known union arm.
3521    LegacyWalFlush(LegacyTableDefinition),
3522    /// A known union arm.
3523    LocationRefresh(LocationRefreshDefinition),
3524    /// A known union arm.
3525    TableMaintenance(TableMaintenanceDefinition),
3526    /// A known union arm.
3527    VectorIndexRefresh(VectorIndexRefreshDefinition),
3528    /// An unknown discriminator and its complete wire object.
3529    Unknown { tag: String, value: Value },
3530}
3531impl Serialize for TaskDefinition {
3532    fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
3533        match self {
3534            Self::EnrichmentCompute(value) => {
3535                let mut object = serde_json::Map::new();
3536                object.insert("type".into(), Value::String("enrichmentCompute".into()));
3537                object.insert(
3538                    "enrichmentCompute".into(),
3539                    serde_json::to_value(value).map_err(serde::ser::Error::custom)?,
3540                );
3541                Value::Object(object).serialize(serializer)
3542            }
3543            Self::EnrichmentRefresh(value) => {
3544                let mut object = serde_json::Map::new();
3545                object.insert("type".into(), Value::String("enrichmentRefresh".into()));
3546                object.insert(
3547                    "enrichmentRefresh".into(),
3548                    serde_json::to_value(value).map_err(serde::ser::Error::custom)?,
3549                );
3550                Value::Object(object).serialize(serializer)
3551            }
3552            Self::LegacyTableCompactionWorker(value) => {
3553                let mut object = serde_json::Map::new();
3554                object.insert(
3555                    "type".into(),
3556                    Value::String("legacyTableCompactionWorker".into()),
3557                );
3558                object.insert(
3559                    "legacyTableCompactionWorker".into(),
3560                    serde_json::to_value(value).map_err(serde::ser::Error::custom)?,
3561                );
3562                Value::Object(object).serialize(serializer)
3563            }
3564            Self::LegacyTableMaintenance(value) => {
3565                let mut object = serde_json::Map::new();
3566                object.insert(
3567                    "type".into(),
3568                    Value::String("legacyTableMaintenance".into()),
3569                );
3570                object.insert(
3571                    "legacyTableMaintenance".into(),
3572                    serde_json::to_value(value).map_err(serde::ser::Error::custom)?,
3573                );
3574                Value::Object(object).serialize(serializer)
3575            }
3576            Self::LegacyWalFlush(value) => {
3577                let mut object = serde_json::Map::new();
3578                object.insert("type".into(), Value::String("legacyWalFlush".into()));
3579                object.insert(
3580                    "legacyWalFlush".into(),
3581                    serde_json::to_value(value).map_err(serde::ser::Error::custom)?,
3582                );
3583                Value::Object(object).serialize(serializer)
3584            }
3585            Self::LocationRefresh(value) => {
3586                let mut object = serde_json::Map::new();
3587                object.insert("type".into(), Value::String("locationRefresh".into()));
3588                object.insert(
3589                    "locationRefresh".into(),
3590                    serde_json::to_value(value).map_err(serde::ser::Error::custom)?,
3591                );
3592                Value::Object(object).serialize(serializer)
3593            }
3594            Self::TableMaintenance(value) => {
3595                let mut object = serde_json::Map::new();
3596                object.insert("type".into(), Value::String("tableMaintenance".into()));
3597                object.insert(
3598                    "tableMaintenance".into(),
3599                    serde_json::to_value(value).map_err(serde::ser::Error::custom)?,
3600                );
3601                Value::Object(object).serialize(serializer)
3602            }
3603            Self::VectorIndexRefresh(value) => {
3604                let mut object = serde_json::Map::new();
3605                object.insert("type".into(), Value::String("vectorIndexRefresh".into()));
3606                object.insert(
3607                    "vectorIndexRefresh".into(),
3608                    serde_json::to_value(value).map_err(serde::ser::Error::custom)?,
3609                );
3610                Value::Object(object).serialize(serializer)
3611            }
3612            Self::Unknown { tag, value } => {
3613                if value.get("type").and_then(Value::as_str) != Some(tag.as_str()) {
3614                    return Err(serde::ser::Error::custom(
3615                        "unknown union discriminator mismatch",
3616                    ));
3617                }
3618                value.serialize(serializer)
3619            }
3620        }
3621    }
3622}
3623impl<'de> Deserialize<'de> for TaskDefinition {
3624    fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
3625        let value = Value::deserialize(deserializer)?;
3626        let tag = value
3627            .get("type")
3628            .and_then(Value::as_str)
3629            .ok_or_else(|| serde::de::Error::custom("union requires type"))?;
3630        match tag {
3631            "enrichmentCompute" => Ok(Self::EnrichmentCompute(
3632                serde_json::from_value(
3633                    value
3634                        .get("enrichmentCompute")
3635                        .cloned()
3636                        .ok_or_else(|| serde::de::Error::custom("union requires matching arm"))?,
3637                )
3638                .map_err(serde::de::Error::custom)?,
3639            )),
3640            "enrichmentRefresh" => Ok(Self::EnrichmentRefresh(
3641                serde_json::from_value(
3642                    value
3643                        .get("enrichmentRefresh")
3644                        .cloned()
3645                        .ok_or_else(|| serde::de::Error::custom("union requires matching arm"))?,
3646                )
3647                .map_err(serde::de::Error::custom)?,
3648            )),
3649            "legacyTableCompactionWorker" => Ok(Self::LegacyTableCompactionWorker(
3650                serde_json::from_value(
3651                    value
3652                        .get("legacyTableCompactionWorker")
3653                        .cloned()
3654                        .ok_or_else(|| serde::de::Error::custom("union requires matching arm"))?,
3655                )
3656                .map_err(serde::de::Error::custom)?,
3657            )),
3658            "legacyTableMaintenance" => Ok(Self::LegacyTableMaintenance(
3659                serde_json::from_value(
3660                    value
3661                        .get("legacyTableMaintenance")
3662                        .cloned()
3663                        .ok_or_else(|| serde::de::Error::custom("union requires matching arm"))?,
3664                )
3665                .map_err(serde::de::Error::custom)?,
3666            )),
3667            "legacyWalFlush" => Ok(Self::LegacyWalFlush(
3668                serde_json::from_value(
3669                    value
3670                        .get("legacyWalFlush")
3671                        .cloned()
3672                        .ok_or_else(|| serde::de::Error::custom("union requires matching arm"))?,
3673                )
3674                .map_err(serde::de::Error::custom)?,
3675            )),
3676            "locationRefresh" => Ok(Self::LocationRefresh(
3677                serde_json::from_value(
3678                    value
3679                        .get("locationRefresh")
3680                        .cloned()
3681                        .ok_or_else(|| serde::de::Error::custom("union requires matching arm"))?,
3682                )
3683                .map_err(serde::de::Error::custom)?,
3684            )),
3685            "tableMaintenance" => Ok(Self::TableMaintenance(
3686                serde_json::from_value(
3687                    value
3688                        .get("tableMaintenance")
3689                        .cloned()
3690                        .ok_or_else(|| serde::de::Error::custom("union requires matching arm"))?,
3691                )
3692                .map_err(serde::de::Error::custom)?,
3693            )),
3694            "vectorIndexRefresh" => Ok(Self::VectorIndexRefresh(
3695                serde_json::from_value(
3696                    value
3697                        .get("vectorIndexRefresh")
3698                        .cloned()
3699                        .ok_or_else(|| serde::de::Error::custom("union requires matching arm"))?,
3700                )
3701                .map_err(serde::de::Error::custom)?,
3702            )),
3703            tag => Ok(Self::Unknown {
3704                tag: tag.to_owned(),
3705                value,
3706            }),
3707        }
3708    }
3709}
3710impl<'de> DeserializeStrict<'de> for TaskDefinition {
3711    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
3712        #[derive(Deserialize)]
3713        enum __Tag0 {
3714            #[serde(rename = "enrichmentCompute")]
3715            Value,
3716        }
3717        #[derive(Deserialize)]
3718        #[serde(deny_unknown_fields)]
3719        struct __Arm0 {
3720            #[serde(rename = "type")]
3721            _tag: __Tag0,
3722            #[serde(rename = "enrichmentCompute")]
3723            value: Strict<EnrichmentComputeDefinition>,
3724        }
3725        #[derive(Deserialize)]
3726        enum __Tag1 {
3727            #[serde(rename = "enrichmentRefresh")]
3728            Value,
3729        }
3730        #[derive(Deserialize)]
3731        #[serde(deny_unknown_fields)]
3732        struct __Arm1 {
3733            #[serde(rename = "type")]
3734            _tag: __Tag1,
3735            #[serde(rename = "enrichmentRefresh")]
3736            value: Strict<EnrichmentRefreshDefinition>,
3737        }
3738        #[derive(Deserialize)]
3739        enum __Tag2 {
3740            #[serde(rename = "legacyTableCompactionWorker")]
3741            Value,
3742        }
3743        #[derive(Deserialize)]
3744        #[serde(deny_unknown_fields)]
3745        struct __Arm2 {
3746            #[serde(rename = "type")]
3747            _tag: __Tag2,
3748            #[serde(rename = "legacyTableCompactionWorker")]
3749            value: Strict<LegacyTableCompactionWorkerDefinition>,
3750        }
3751        #[derive(Deserialize)]
3752        enum __Tag3 {
3753            #[serde(rename = "legacyTableMaintenance")]
3754            Value,
3755        }
3756        #[derive(Deserialize)]
3757        #[serde(deny_unknown_fields)]
3758        struct __Arm3 {
3759            #[serde(rename = "type")]
3760            _tag: __Tag3,
3761            #[serde(rename = "legacyTableMaintenance")]
3762            value: Strict<LegacyTableMaintenanceDefinition>,
3763        }
3764        #[derive(Deserialize)]
3765        enum __Tag4 {
3766            #[serde(rename = "legacyWalFlush")]
3767            Value,
3768        }
3769        #[derive(Deserialize)]
3770        #[serde(deny_unknown_fields)]
3771        struct __Arm4 {
3772            #[serde(rename = "type")]
3773            _tag: __Tag4,
3774            #[serde(rename = "legacyWalFlush")]
3775            value: Strict<LegacyTableDefinition>,
3776        }
3777        #[derive(Deserialize)]
3778        enum __Tag5 {
3779            #[serde(rename = "locationRefresh")]
3780            Value,
3781        }
3782        #[derive(Deserialize)]
3783        #[serde(deny_unknown_fields)]
3784        struct __Arm5 {
3785            #[serde(rename = "type")]
3786            _tag: __Tag5,
3787            #[serde(rename = "locationRefresh")]
3788            value: Strict<LocationRefreshDefinition>,
3789        }
3790        #[derive(Deserialize)]
3791        enum __Tag6 {
3792            #[serde(rename = "tableMaintenance")]
3793            Value,
3794        }
3795        #[derive(Deserialize)]
3796        #[serde(deny_unknown_fields)]
3797        struct __Arm6 {
3798            #[serde(rename = "type")]
3799            _tag: __Tag6,
3800            #[serde(rename = "tableMaintenance")]
3801            value: Strict<TableMaintenanceDefinition>,
3802        }
3803        #[derive(Deserialize)]
3804        enum __Tag7 {
3805            #[serde(rename = "vectorIndexRefresh")]
3806            Value,
3807        }
3808        #[derive(Deserialize)]
3809        #[serde(deny_unknown_fields)]
3810        struct __Arm7 {
3811            #[serde(rename = "type")]
3812            _tag: __Tag7,
3813            #[serde(rename = "vectorIndexRefresh")]
3814            value: Strict<VectorIndexRefreshDefinition>,
3815        }
3816        #[derive(Deserialize)]
3817        #[serde(untagged)]
3818        enum __Known {
3819            EnrichmentCompute(Box<__Arm0>),
3820            EnrichmentRefresh(Box<__Arm1>),
3821            LegacyTableCompactionWorker(Box<__Arm2>),
3822            LegacyTableMaintenance(Box<__Arm3>),
3823            LegacyWalFlush(Box<__Arm4>),
3824            LocationRefresh(Box<__Arm5>),
3825            TableMaintenance(Box<__Arm6>),
3826            VectorIndexRefresh(Box<__Arm7>),
3827        }
3828        Ok(match __Known::deserialize(deserializer)? {
3829            __Known::EnrichmentCompute(arm) => Self::EnrichmentCompute(arm.value.0),
3830            __Known::EnrichmentRefresh(arm) => Self::EnrichmentRefresh(arm.value.0),
3831            __Known::LegacyTableCompactionWorker(arm) => {
3832                Self::LegacyTableCompactionWorker(arm.value.0)
3833            }
3834            __Known::LegacyTableMaintenance(arm) => Self::LegacyTableMaintenance(arm.value.0),
3835            __Known::LegacyWalFlush(arm) => Self::LegacyWalFlush(arm.value.0),
3836            __Known::LocationRefresh(arm) => Self::LocationRefresh(arm.value.0),
3837            __Known::TableMaintenance(arm) => Self::TableMaintenance(arm.value.0),
3838            __Known::VectorIndexRefresh(arm) => Self::VectorIndexRefresh(arm.value.0),
3839        })
3840    }
3841}
3842
3843/// TaskDetails contract value.
3844#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
3845pub struct TaskDetails {
3846    /// Contract field attempts.
3847    #[serde(rename = "attempts")]
3848    pub attempts: Vec<TaskAttempt>,
3849    /// Contract field invocation.
3850    #[serde(rename = "invocation")]
3851    #[serde(default, skip_serializing_if = "Option::is_none")]
3852    pub invocation: Option<TriggerInvocation>,
3853    /// Contract field resources.
3854    #[serde(rename = "resources")]
3855    pub resources: Vec<TaskResourceReference>,
3856    /// Contract field task.
3857    #[serde(rename = "task")]
3858    pub task: Task,
3859}
3860impl<'de> DeserializeStrict<'de> for TaskDetails {
3861    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
3862        #[derive(Deserialize)]
3863        #[serde(deny_unknown_fields)]
3864        struct __Wire {
3865            #[serde(rename = "attempts")]
3866            attempts: Strict<Vec<TaskAttempt>>,
3867            #[serde(rename = "invocation")]
3868            #[serde(default)]
3869            invocation: Strict<Option<TriggerInvocation>>,
3870            #[serde(rename = "resources")]
3871            resources: Strict<Vec<TaskResourceReference>>,
3872            #[serde(rename = "task")]
3873            task: Strict<Task>,
3874        }
3875        let wire = __Wire::deserialize(deserializer)?;
3876        Ok(Self {
3877            attempts: wire.attempts.0,
3878            invocation: wire.invocation.0,
3879            resources: wire.resources.0,
3880            task: wire.task.0,
3881        })
3882    }
3883}
3884
3885/// TaskFailure contract value.
3886#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
3887pub struct TaskFailure {
3888    /// Contract field code.
3889    #[serde(rename = "code")]
3890    pub code: String,
3891    /// Contract field message.
3892    #[serde(rename = "message")]
3893    pub message: String,
3894    /// Contract field retryable.
3895    #[serde(rename = "retryable")]
3896    pub retryable: bool,
3897}
3898impl<'de> DeserializeStrict<'de> for TaskFailure {
3899    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
3900        #[derive(Deserialize)]
3901        #[serde(deny_unknown_fields)]
3902        struct __Wire {
3903            #[serde(rename = "code")]
3904            code: Strict<String>,
3905            #[serde(rename = "message")]
3906            message: Strict<String>,
3907            #[serde(rename = "retryable")]
3908            retryable: Strict<bool>,
3909        }
3910        let wire = __Wire::deserialize(deserializer)?;
3911        Ok(Self {
3912            code: wire.code.0,
3913            message: wire.message.0,
3914            retryable: wire.retryable.0,
3915        })
3916    }
3917}
3918
3919/// TaskOptions contract value.
3920#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
3921pub struct TaskOptions {
3922    /// Contract field deadlineAtMicros.
3923    #[serde(rename = "deadlineAtMicros")]
3924    #[serde(default, skip_serializing_if = "Option::is_none")]
3925    pub deadline_at_micros: Option<SafeLong>,
3926    /// Contract field maxAttempts.
3927    #[serde(rename = "maxAttempts")]
3928    #[serde(default, skip_serializing_if = "Option::is_none")]
3929    pub max_attempts: Option<u32>,
3930    /// Contract field resourceProfile.
3931    #[serde(rename = "resourceProfile")]
3932    #[serde(default, skip_serializing_if = "Option::is_none")]
3933    pub resource_profile: Option<ResourceProfile>,
3934}
3935impl<'de> DeserializeStrict<'de> for TaskOptions {
3936    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
3937        #[derive(Deserialize)]
3938        #[serde(deny_unknown_fields)]
3939        struct __Wire {
3940            #[serde(rename = "deadlineAtMicros")]
3941            #[serde(default)]
3942            deadline_at_micros: Strict<Option<SafeLong>>,
3943            #[serde(rename = "maxAttempts")]
3944            #[serde(default)]
3945            max_attempts: Strict<Option<u32>>,
3946            #[serde(rename = "resourceProfile")]
3947            #[serde(default)]
3948            resource_profile: Strict<Option<ResourceProfile>>,
3949        }
3950        let wire = __Wire::deserialize(deserializer)?;
3951        Ok(Self {
3952            deadline_at_micros: wire.deadline_at_micros.0,
3953            max_attempts: wire.max_attempts.0,
3954            resource_profile: wire.resource_profile.0,
3955        })
3956    }
3957}
3958
3959/// TaskOrigin contract value.
3960#[derive(Clone, Debug, PartialEq, Eq)]
3961pub enum TaskOrigin {
3962    /// A known contract value.
3963    Manual,
3964    /// A known contract value.
3965    Event,
3966    /// A known contract value.
3967    Schedule,
3968    /// A value introduced by a newer server.
3969    Unknown(String),
3970}
3971impl Serialize for TaskOrigin {
3972    fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
3973        serializer.serialize_str(match self {
3974            Self::Manual => "manual",
3975            Self::Event => "event",
3976            Self::Schedule => "schedule",
3977            Self::Unknown(value) => value,
3978        })
3979    }
3980}
3981impl<'de> Deserialize<'de> for TaskOrigin {
3982    fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
3983        Ok(match String::deserialize(deserializer)?.as_str() {
3984            "manual" => Self::Manual,
3985            "event" => Self::Event,
3986            "schedule" => Self::Schedule,
3987            value => Self::Unknown(value.to_owned()),
3988        })
3989    }
3990}
3991impl<'de> DeserializeStrict<'de> for TaskOrigin {
3992    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
3993        #[derive(Deserialize)]
3994        enum __Known {
3995            #[serde(rename = "manual")]
3996            Manual,
3997            #[serde(rename = "event")]
3998            Event,
3999            #[serde(rename = "schedule")]
4000            Schedule,
4001        }
4002        Ok(match __Known::deserialize(deserializer)? {
4003            __Known::Manual => Self::Manual,
4004            __Known::Event => Self::Event,
4005            __Known::Schedule => Self::Schedule,
4006        })
4007    }
4008}
4009
4010/// TaskOverlapPolicy contract value.
4011#[derive(Clone, Debug, PartialEq, Eq)]
4012pub enum TaskOverlapPolicy {
4013    /// A known contract value.
4014    AllowAll,
4015    /// A known contract value.
4016    BufferOne,
4017    /// A known contract value.
4018    BufferAll,
4019    /// A known contract value.
4020    RejectDuplicate,
4021    /// A value introduced by a newer server.
4022    Unknown(String),
4023}
4024impl Serialize for TaskOverlapPolicy {
4025    fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
4026        serializer.serialize_str(match self {
4027            Self::AllowAll => "allow_all",
4028            Self::BufferOne => "buffer_one",
4029            Self::BufferAll => "buffer_all",
4030            Self::RejectDuplicate => "reject_duplicate",
4031            Self::Unknown(value) => value,
4032        })
4033    }
4034}
4035impl<'de> Deserialize<'de> for TaskOverlapPolicy {
4036    fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
4037        Ok(match String::deserialize(deserializer)?.as_str() {
4038            "allow_all" => Self::AllowAll,
4039            "buffer_one" => Self::BufferOne,
4040            "buffer_all" => Self::BufferAll,
4041            "reject_duplicate" => Self::RejectDuplicate,
4042            value => Self::Unknown(value.to_owned()),
4043        })
4044    }
4045}
4046impl<'de> DeserializeStrict<'de> for TaskOverlapPolicy {
4047    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
4048        #[derive(Deserialize)]
4049        enum __Known {
4050            #[serde(rename = "allow_all")]
4051            AllowAll,
4052            #[serde(rename = "buffer_one")]
4053            BufferOne,
4054            #[serde(rename = "buffer_all")]
4055            BufferAll,
4056            #[serde(rename = "reject_duplicate")]
4057            RejectDuplicate,
4058        }
4059        Ok(match __Known::deserialize(deserializer)? {
4060            __Known::AllowAll => Self::AllowAll,
4061            __Known::BufferOne => Self::BufferOne,
4062            __Known::BufferAll => Self::BufferAll,
4063            __Known::RejectDuplicate => Self::RejectDuplicate,
4064        })
4065    }
4066}
4067
4068/// TaskProgress contract value.
4069#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
4070pub struct TaskProgress {
4071    /// Contract field maintenance.
4072    #[serde(rename = "maintenance")]
4073    #[serde(default, skip_serializing_if = "Option::is_none")]
4074    pub maintenance: Option<MaintenanceTaskProgress>,
4075    /// Contract field percentage.
4076    #[serde(rename = "percentage")]
4077    pub percentage: u32,
4078    /// Contract field phase.
4079    #[serde(rename = "phase")]
4080    pub phase: TaskProgressPhase,
4081    /// Contract field work.
4082    #[serde(rename = "work")]
4083    #[serde(default, skip_serializing_if = "Option::is_none")]
4084    pub work: Option<TaskWorkProgress>,
4085}
4086impl<'de> DeserializeStrict<'de> for TaskProgress {
4087    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
4088        #[derive(Deserialize)]
4089        #[serde(deny_unknown_fields)]
4090        struct __Wire {
4091            #[serde(rename = "maintenance")]
4092            #[serde(default)]
4093            maintenance: Strict<Option<MaintenanceTaskProgress>>,
4094            #[serde(rename = "percentage")]
4095            percentage: Strict<u32>,
4096            #[serde(rename = "phase")]
4097            phase: Strict<TaskProgressPhase>,
4098            #[serde(rename = "work")]
4099            #[serde(default)]
4100            work: Strict<Option<TaskWorkProgress>>,
4101        }
4102        let wire = __Wire::deserialize(deserializer)?;
4103        Ok(Self {
4104            maintenance: wire.maintenance.0,
4105            percentage: wire.percentage.0,
4106            phase: wire.phase.0,
4107            work: wire.work.0,
4108        })
4109    }
4110}
4111
4112/// TaskProgressPhase contract value.
4113#[derive(Clone, Debug, PartialEq, Eq)]
4114pub enum TaskProgressPhase {
4115    /// A known contract value.
4116    Preparing,
4117    /// A known contract value.
4118    Computing,
4119    /// A known contract value.
4120    Finalizing,
4121    /// A value introduced by a newer server.
4122    Unknown(String),
4123}
4124impl Serialize for TaskProgressPhase {
4125    fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
4126        serializer.serialize_str(match self {
4127            Self::Preparing => "preparing",
4128            Self::Computing => "computing",
4129            Self::Finalizing => "finalizing",
4130            Self::Unknown(value) => value,
4131        })
4132    }
4133}
4134impl<'de> Deserialize<'de> for TaskProgressPhase {
4135    fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
4136        Ok(match String::deserialize(deserializer)?.as_str() {
4137            "preparing" => Self::Preparing,
4138            "computing" => Self::Computing,
4139            "finalizing" => Self::Finalizing,
4140            value => Self::Unknown(value.to_owned()),
4141        })
4142    }
4143}
4144impl<'de> DeserializeStrict<'de> for TaskProgressPhase {
4145    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
4146        #[derive(Deserialize)]
4147        enum __Known {
4148            #[serde(rename = "preparing")]
4149            Preparing,
4150            #[serde(rename = "computing")]
4151            Computing,
4152            #[serde(rename = "finalizing")]
4153            Finalizing,
4154        }
4155        Ok(match __Known::deserialize(deserializer)? {
4156            __Known::Preparing => Self::Preparing,
4157            __Known::Computing => Self::Computing,
4158            __Known::Finalizing => Self::Finalizing,
4159        })
4160    }
4161}
4162
4163/// TaskReadTarget contract value.
4164#[derive(Clone, Debug, PartialEq, Eq)]
4165pub enum TaskReadTarget {
4166    /// A known union arm.
4167    CommitOnBranch(TaskReadTargetCommitOnBranch),
4168    /// A known union arm.
4169    LatestOnBranch(TaskReadTargetLatestOnBranch),
4170    /// An unknown discriminator and its complete wire object.
4171    Unknown { tag: String, value: Value },
4172}
4173impl Serialize for TaskReadTarget {
4174    fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
4175        match self {
4176            Self::CommitOnBranch(value) => {
4177                let mut object = serde_json::Map::new();
4178                object.insert("type".into(), Value::String("commitOnBranch".into()));
4179                object.insert(
4180                    "commitOnBranch".into(),
4181                    serde_json::to_value(value).map_err(serde::ser::Error::custom)?,
4182                );
4183                Value::Object(object).serialize(serializer)
4184            }
4185            Self::LatestOnBranch(value) => {
4186                let mut object = serde_json::Map::new();
4187                object.insert("type".into(), Value::String("latestOnBranch".into()));
4188                object.insert(
4189                    "latestOnBranch".into(),
4190                    serde_json::to_value(value).map_err(serde::ser::Error::custom)?,
4191                );
4192                Value::Object(object).serialize(serializer)
4193            }
4194            Self::Unknown { tag, value } => {
4195                if value.get("type").and_then(Value::as_str) != Some(tag.as_str()) {
4196                    return Err(serde::ser::Error::custom(
4197                        "unknown union discriminator mismatch",
4198                    ));
4199                }
4200                value.serialize(serializer)
4201            }
4202        }
4203    }
4204}
4205impl<'de> Deserialize<'de> for TaskReadTarget {
4206    fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
4207        let value = Value::deserialize(deserializer)?;
4208        let tag = value
4209            .get("type")
4210            .and_then(Value::as_str)
4211            .ok_or_else(|| serde::de::Error::custom("union requires type"))?;
4212        match tag {
4213            "commitOnBranch" => Ok(Self::CommitOnBranch(
4214                serde_json::from_value(
4215                    value
4216                        .get("commitOnBranch")
4217                        .cloned()
4218                        .ok_or_else(|| serde::de::Error::custom("union requires matching arm"))?,
4219                )
4220                .map_err(serde::de::Error::custom)?,
4221            )),
4222            "latestOnBranch" => Ok(Self::LatestOnBranch(
4223                serde_json::from_value(
4224                    value
4225                        .get("latestOnBranch")
4226                        .cloned()
4227                        .ok_or_else(|| serde::de::Error::custom("union requires matching arm"))?,
4228                )
4229                .map_err(serde::de::Error::custom)?,
4230            )),
4231            tag => Ok(Self::Unknown {
4232                tag: tag.to_owned(),
4233                value,
4234            }),
4235        }
4236    }
4237}
4238impl<'de> DeserializeStrict<'de> for TaskReadTarget {
4239    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
4240        #[derive(Deserialize)]
4241        enum __Tag0 {
4242            #[serde(rename = "commitOnBranch")]
4243            Value,
4244        }
4245        #[derive(Deserialize)]
4246        #[serde(deny_unknown_fields)]
4247        struct __Arm0 {
4248            #[serde(rename = "type")]
4249            _tag: __Tag0,
4250            #[serde(rename = "commitOnBranch")]
4251            value: Strict<TaskReadTargetCommitOnBranch>,
4252        }
4253        #[derive(Deserialize)]
4254        enum __Tag1 {
4255            #[serde(rename = "latestOnBranch")]
4256            Value,
4257        }
4258        #[derive(Deserialize)]
4259        #[serde(deny_unknown_fields)]
4260        struct __Arm1 {
4261            #[serde(rename = "type")]
4262            _tag: __Tag1,
4263            #[serde(rename = "latestOnBranch")]
4264            value: Strict<TaskReadTargetLatestOnBranch>,
4265        }
4266        #[derive(Deserialize)]
4267        #[serde(untagged)]
4268        enum __Known {
4269            CommitOnBranch(Box<__Arm0>),
4270            LatestOnBranch(Box<__Arm1>),
4271        }
4272        Ok(match __Known::deserialize(deserializer)? {
4273            __Known::CommitOnBranch(arm) => Self::CommitOnBranch(arm.value.0),
4274            __Known::LatestOnBranch(arm) => Self::LatestOnBranch(arm.value.0),
4275        })
4276    }
4277}
4278
4279/// TaskReadTargetCommitOnBranch contract value.
4280#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
4281pub struct TaskReadTargetCommitOnBranch {
4282    /// Contract field branchId.
4283    #[serde(rename = "branchId")]
4284    pub branch_id: Uuid,
4285    /// Contract field commitId.
4286    #[serde(rename = "commitId")]
4287    pub commit_id: Uuid,
4288}
4289impl<'de> DeserializeStrict<'de> for TaskReadTargetCommitOnBranch {
4290    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
4291        #[derive(Deserialize)]
4292        #[serde(deny_unknown_fields)]
4293        struct __Wire {
4294            #[serde(rename = "branchId")]
4295            branch_id: Strict<Uuid>,
4296            #[serde(rename = "commitId")]
4297            commit_id: Strict<Uuid>,
4298        }
4299        let wire = __Wire::deserialize(deserializer)?;
4300        Ok(Self {
4301            branch_id: wire.branch_id.0,
4302            commit_id: wire.commit_id.0,
4303        })
4304    }
4305}
4306
4307/// TaskReadTargetLatestOnBranch contract value.
4308#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
4309pub struct TaskReadTargetLatestOnBranch {
4310    /// Contract field branchId.
4311    #[serde(rename = "branchId")]
4312    pub branch_id: Uuid,
4313}
4314impl<'de> DeserializeStrict<'de> for TaskReadTargetLatestOnBranch {
4315    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
4316        #[derive(Deserialize)]
4317        #[serde(deny_unknown_fields)]
4318        struct __Wire {
4319            #[serde(rename = "branchId")]
4320            branch_id: Strict<Uuid>,
4321        }
4322        let wire = __Wire::deserialize(deserializer)?;
4323        Ok(Self {
4324            branch_id: wire.branch_id.0,
4325        })
4326    }
4327}
4328
4329/// TaskRequirements contract value.
4330#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
4331pub struct TaskRequirements {
4332    /// Contract field computeClass.
4333    #[serde(rename = "computeClass")]
4334    pub compute_class: ComputeClass,
4335    /// Contract field cpu.
4336    #[serde(rename = "cpu")]
4337    pub cpu: u32,
4338    /// Contract field memoryBytes.
4339    #[serde(rename = "memoryBytes")]
4340    pub memory_bytes: SafeUnsignedLong,
4341}
4342impl<'de> DeserializeStrict<'de> for TaskRequirements {
4343    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
4344        #[derive(Deserialize)]
4345        #[serde(deny_unknown_fields)]
4346        struct __Wire {
4347            #[serde(rename = "computeClass")]
4348            compute_class: Strict<ComputeClass>,
4349            #[serde(rename = "cpu")]
4350            cpu: Strict<u32>,
4351            #[serde(rename = "memoryBytes")]
4352            memory_bytes: Strict<SafeUnsignedLong>,
4353        }
4354        let wire = __Wire::deserialize(deserializer)?;
4355        Ok(Self {
4356            compute_class: wire.compute_class.0,
4357            cpu: wire.cpu.0,
4358            memory_bytes: wire.memory_bytes.0,
4359        })
4360    }
4361}
4362
4363/// TaskResourceReference contract value.
4364#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
4365pub struct TaskResourceReference {
4366    /// Contract field definitionVersionId.
4367    #[serde(rename = "definitionVersionId")]
4368    #[serde(default, skip_serializing_if = "Option::is_none")]
4369    pub definition_version_id: Option<Uuid>,
4370    /// Contract field readTarget.
4371    #[serde(rename = "readTarget")]
4372    pub read_target: TaskReadTarget,
4373    /// Contract field resourceId.
4374    #[serde(rename = "resourceId")]
4375    pub resource_id: Uuid,
4376    /// Contract field resourceVersionId.
4377    #[serde(rename = "resourceVersionId")]
4378    #[serde(default, skip_serializing_if = "Option::is_none")]
4379    pub resource_version_id: Option<Uuid>,
4380    /// Contract field role.
4381    #[serde(rename = "role")]
4382    pub role: TaskResourceRole,
4383}
4384impl<'de> DeserializeStrict<'de> for TaskResourceReference {
4385    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
4386        #[derive(Deserialize)]
4387        #[serde(deny_unknown_fields)]
4388        struct __Wire {
4389            #[serde(rename = "definitionVersionId")]
4390            #[serde(default)]
4391            definition_version_id: Strict<Option<Uuid>>,
4392            #[serde(rename = "readTarget")]
4393            read_target: Strict<TaskReadTarget>,
4394            #[serde(rename = "resourceId")]
4395            resource_id: Strict<Uuid>,
4396            #[serde(rename = "resourceVersionId")]
4397            #[serde(default)]
4398            resource_version_id: Strict<Option<Uuid>>,
4399            #[serde(rename = "role")]
4400            role: Strict<TaskResourceRole>,
4401        }
4402        let wire = __Wire::deserialize(deserializer)?;
4403        Ok(Self {
4404            definition_version_id: wire.definition_version_id.0,
4405            read_target: wire.read_target.0,
4406            resource_id: wire.resource_id.0,
4407            resource_version_id: wire.resource_version_id.0,
4408            role: wire.role.0,
4409        })
4410    }
4411}
4412
4413/// TaskResourceRole contract value.
4414#[derive(Clone, Debug, PartialEq, Eq)]
4415pub enum TaskResourceRole {
4416    /// A known contract value.
4417    Target,
4418    /// A known contract value.
4419    Source,
4420    /// A known contract value.
4421    Dependency,
4422    /// A known contract value.
4423    SourceLocation,
4424    /// A value introduced by a newer server.
4425    Unknown(String),
4426}
4427impl Serialize for TaskResourceRole {
4428    fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
4429        serializer.serialize_str(match self {
4430            Self::Target => "target",
4431            Self::Source => "source",
4432            Self::Dependency => "dependency",
4433            Self::SourceLocation => "source_location",
4434            Self::Unknown(value) => value,
4435        })
4436    }
4437}
4438impl<'de> Deserialize<'de> for TaskResourceRole {
4439    fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
4440        Ok(match String::deserialize(deserializer)?.as_str() {
4441            "target" => Self::Target,
4442            "source" => Self::Source,
4443            "dependency" => Self::Dependency,
4444            "source_location" => Self::SourceLocation,
4445            value => Self::Unknown(value.to_owned()),
4446        })
4447    }
4448}
4449impl<'de> DeserializeStrict<'de> for TaskResourceRole {
4450    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
4451        #[derive(Deserialize)]
4452        enum __Known {
4453            #[serde(rename = "target")]
4454            Target,
4455            #[serde(rename = "source")]
4456            Source,
4457            #[serde(rename = "dependency")]
4458            Dependency,
4459            #[serde(rename = "source_location")]
4460            SourceLocation,
4461        }
4462        Ok(match __Known::deserialize(deserializer)? {
4463            __Known::Target => Self::Target,
4464            __Known::Source => Self::Source,
4465            __Known::Dependency => Self::Dependency,
4466            __Known::SourceLocation => Self::SourceLocation,
4467        })
4468    }
4469}
4470
4471/// The resource versions a successful Task published, and the Project commit that published them
4472/// when it published any.
4473#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
4474pub struct TaskResult {
4475    /// Contract field commitId.
4476    #[serde(rename = "commitId")]
4477    #[serde(default, skip_serializing_if = "Option::is_none")]
4478    pub commit_id: Option<Uuid>,
4479    /// Contract field versions.
4480    #[serde(rename = "versions")]
4481    pub versions: Vec<PublishedVersion>,
4482}
4483impl<'de> DeserializeStrict<'de> for TaskResult {
4484    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
4485        #[derive(Deserialize)]
4486        #[serde(deny_unknown_fields)]
4487        struct __Wire {
4488            #[serde(rename = "commitId")]
4489            #[serde(default)]
4490            commit_id: Strict<Option<Uuid>>,
4491            #[serde(rename = "versions")]
4492            versions: Strict<Vec<PublishedVersion>>,
4493        }
4494        let wire = __Wire::deserialize(deserializer)?;
4495        Ok(Self {
4496            commit_id: wire.commit_id.0,
4497            versions: wire.versions.0,
4498        })
4499    }
4500}
4501
4502/// TaskSpecDefaults contract value.
4503#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
4504pub struct TaskSpecDefaults {
4505    /// Contract field allowedResourceProfiles.
4506    #[serde(rename = "allowedResourceProfiles")]
4507    pub allowed_resource_profiles: Vec<ResourceProfileDetails>,
4508    /// Contract field defaultResourceProfile.
4509    #[serde(rename = "defaultResourceProfile")]
4510    pub default_resource_profile: ResourceProfile,
4511    /// Contract field overlapPolicy.
4512    #[serde(rename = "overlapPolicy")]
4513    pub overlap_policy: TaskOverlapPolicy,
4514    /// Contract field taskSpecId.
4515    #[serde(rename = "taskSpecId")]
4516    pub task_spec_id: TaskSpecId,
4517}
4518impl<'de> DeserializeStrict<'de> for TaskSpecDefaults {
4519    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
4520        #[derive(Deserialize)]
4521        #[serde(deny_unknown_fields)]
4522        struct __Wire {
4523            #[serde(rename = "allowedResourceProfiles")]
4524            allowed_resource_profiles: Strict<Vec<ResourceProfileDetails>>,
4525            #[serde(rename = "defaultResourceProfile")]
4526            default_resource_profile: Strict<ResourceProfile>,
4527            #[serde(rename = "overlapPolicy")]
4528            overlap_policy: Strict<TaskOverlapPolicy>,
4529            #[serde(rename = "taskSpecId")]
4530            task_spec_id: Strict<TaskSpecId>,
4531        }
4532        let wire = __Wire::deserialize(deserializer)?;
4533        Ok(Self {
4534            allowed_resource_profiles: wire.allowed_resource_profiles.0,
4535            default_resource_profile: wire.default_resource_profile.0,
4536            overlap_policy: wire.overlap_policy.0,
4537            task_spec_id: wire.task_spec_id.0,
4538        })
4539    }
4540}
4541
4542/// TaskSpecId contract value.
4543#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
4544pub struct TaskSpecId {
4545    /// Contract field name.
4546    #[serde(rename = "name")]
4547    pub name: String,
4548    /// Contract field version.
4549    #[serde(rename = "version")]
4550    pub version: u32,
4551}
4552impl<'de> DeserializeStrict<'de> for TaskSpecId {
4553    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
4554        #[derive(Deserialize)]
4555        #[serde(deny_unknown_fields)]
4556        struct __Wire {
4557            #[serde(rename = "name")]
4558            name: Strict<String>,
4559            #[serde(rename = "version")]
4560            version: Strict<u32>,
4561        }
4562        let wire = __Wire::deserialize(deserializer)?;
4563        Ok(Self {
4564            name: wire.name.0,
4565            version: wire.version.0,
4566        })
4567    }
4568}
4569
4570/// TaskStats contract value.
4571#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
4572pub struct TaskStats {
4573    /// Contract field cancelledTaskCount.
4574    #[serde(rename = "cancelledTaskCount")]
4575    pub cancelled_task_count: SafeUnsignedLong,
4576    /// Contract field failedTaskCount.
4577    #[serde(rename = "failedTaskCount")]
4578    pub failed_task_count: SafeUnsignedLong,
4579    /// Contract field readyTaskCount.
4580    #[serde(rename = "readyTaskCount")]
4581    pub ready_task_count: SafeUnsignedLong,
4582    /// Contract field runningTaskCount.
4583    #[serde(rename = "runningTaskCount")]
4584    pub running_task_count: SafeUnsignedLong,
4585    /// Contract field succeededTaskCount.
4586    #[serde(rename = "succeededTaskCount")]
4587    pub succeeded_task_count: SafeUnsignedLong,
4588}
4589impl<'de> DeserializeStrict<'de> for TaskStats {
4590    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
4591        #[derive(Deserialize)]
4592        #[serde(deny_unknown_fields)]
4593        struct __Wire {
4594            #[serde(rename = "cancelledTaskCount")]
4595            cancelled_task_count: Strict<SafeUnsignedLong>,
4596            #[serde(rename = "failedTaskCount")]
4597            failed_task_count: Strict<SafeUnsignedLong>,
4598            #[serde(rename = "readyTaskCount")]
4599            ready_task_count: Strict<SafeUnsignedLong>,
4600            #[serde(rename = "runningTaskCount")]
4601            running_task_count: Strict<SafeUnsignedLong>,
4602            #[serde(rename = "succeededTaskCount")]
4603            succeeded_task_count: Strict<SafeUnsignedLong>,
4604        }
4605        let wire = __Wire::deserialize(deserializer)?;
4606        Ok(Self {
4607            cancelled_task_count: wire.cancelled_task_count.0,
4608            failed_task_count: wire.failed_task_count.0,
4609            ready_task_count: wire.ready_task_count.0,
4610            running_task_count: wire.running_task_count.0,
4611            succeeded_task_count: wire.succeeded_task_count.0,
4612        })
4613    }
4614}
4615
4616/// TaskStatsRequest contract value.
4617#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
4618pub struct TaskStatsRequest {
4619    /// Contract field workerPoolId.
4620    #[serde(rename = "workerPoolId")]
4621    #[serde(default, skip_serializing_if = "Option::is_none")]
4622    pub worker_pool_id: Option<Uuid>,
4623}
4624impl<'de> DeserializeStrict<'de> for TaskStatsRequest {
4625    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
4626        #[derive(Deserialize)]
4627        #[serde(deny_unknown_fields)]
4628        struct __Wire {
4629            #[serde(rename = "workerPoolId")]
4630            #[serde(default)]
4631            worker_pool_id: Strict<Option<Uuid>>,
4632        }
4633        let wire = __Wire::deserialize(deserializer)?;
4634        Ok(Self {
4635            worker_pool_id: wire.worker_pool_id.0,
4636        })
4637    }
4638}
4639
4640/// TaskStatus contract value.
4641#[derive(Clone, Debug, PartialEq, Eq)]
4642pub enum TaskStatus {
4643    /// A known contract value.
4644    Ready,
4645    /// A known contract value.
4646    Running,
4647    /// A known contract value.
4648    Succeeded,
4649    /// A known contract value.
4650    Failed,
4651    /// A known contract value.
4652    Cancelled,
4653    /// A value introduced by a newer server.
4654    Unknown(String),
4655}
4656impl Serialize for TaskStatus {
4657    fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
4658        serializer.serialize_str(match self {
4659            Self::Ready => "ready",
4660            Self::Running => "running",
4661            Self::Succeeded => "succeeded",
4662            Self::Failed => "failed",
4663            Self::Cancelled => "cancelled",
4664            Self::Unknown(value) => value,
4665        })
4666    }
4667}
4668impl<'de> Deserialize<'de> for TaskStatus {
4669    fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
4670        Ok(match String::deserialize(deserializer)?.as_str() {
4671            "ready" => Self::Ready,
4672            "running" => Self::Running,
4673            "succeeded" => Self::Succeeded,
4674            "failed" => Self::Failed,
4675            "cancelled" => Self::Cancelled,
4676            value => Self::Unknown(value.to_owned()),
4677        })
4678    }
4679}
4680impl<'de> DeserializeStrict<'de> for TaskStatus {
4681    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
4682        #[derive(Deserialize)]
4683        enum __Known {
4684            #[serde(rename = "ready")]
4685            Ready,
4686            #[serde(rename = "running")]
4687            Running,
4688            #[serde(rename = "succeeded")]
4689            Succeeded,
4690            #[serde(rename = "failed")]
4691            Failed,
4692            #[serde(rename = "cancelled")]
4693            Cancelled,
4694        }
4695        Ok(match __Known::deserialize(deserializer)? {
4696            __Known::Ready => Self::Ready,
4697            __Known::Running => Self::Running,
4698            __Known::Succeeded => Self::Succeeded,
4699            __Known::Failed => Self::Failed,
4700            __Known::Cancelled => Self::Cancelled,
4701        })
4702    }
4703}
4704
4705/// TaskStopReason contract value.
4706#[derive(Clone, Debug, PartialEq, Eq)]
4707pub enum TaskStopReason {
4708    /// A known contract value.
4709    User,
4710    /// A known contract value.
4711    OverallDeadline,
4712    /// A known contract value.
4713    ParentFailed,
4714    /// A known contract value.
4715    ParentCancelled,
4716    /// A value introduced by a newer server.
4717    Unknown(String),
4718}
4719impl Serialize for TaskStopReason {
4720    fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
4721        serializer.serialize_str(match self {
4722            Self::User => "user",
4723            Self::OverallDeadline => "overall_deadline",
4724            Self::ParentFailed => "parent_failed",
4725            Self::ParentCancelled => "parent_cancelled",
4726            Self::Unknown(value) => value,
4727        })
4728    }
4729}
4730impl<'de> Deserialize<'de> for TaskStopReason {
4731    fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
4732        Ok(match String::deserialize(deserializer)?.as_str() {
4733            "user" => Self::User,
4734            "overall_deadline" => Self::OverallDeadline,
4735            "parent_failed" => Self::ParentFailed,
4736            "parent_cancelled" => Self::ParentCancelled,
4737            value => Self::Unknown(value.to_owned()),
4738        })
4739    }
4740}
4741impl<'de> DeserializeStrict<'de> for TaskStopReason {
4742    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
4743        #[derive(Deserialize)]
4744        enum __Known {
4745            #[serde(rename = "user")]
4746            User,
4747            #[serde(rename = "overall_deadline")]
4748            OverallDeadline,
4749            #[serde(rename = "parent_failed")]
4750            ParentFailed,
4751            #[serde(rename = "parent_cancelled")]
4752            ParentCancelled,
4753        }
4754        Ok(match __Known::deserialize(deserializer)? {
4755            __Known::User => Self::User,
4756            __Known::OverallDeadline => Self::OverallDeadline,
4757            __Known::ParentFailed => Self::ParentFailed,
4758            __Known::ParentCancelled => Self::ParentCancelled,
4759        })
4760    }
4761}
4762
4763/// TaskTrigger contract value.
4764#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
4765pub struct TaskTrigger {
4766    /// Contract field checkpointSequence.
4767    #[serde(rename = "checkpointSequence")]
4768    #[serde(default, skip_serializing_if = "Option::is_none")]
4769    pub checkpoint_sequence: Option<SafeLong>,
4770    /// Contract field createdAtMicros.
4771    #[serde(rename = "createdAtMicros")]
4772    pub created_at_micros: SafeLong,
4773    /// Contract field createdBy.
4774    #[serde(rename = "createdBy")]
4775    pub created_by: Caller,
4776    /// Contract field definition.
4777    #[serde(rename = "definition")]
4778    pub definition: TriggerDefinition,
4779    /// Contract field error.
4780    #[serde(rename = "error")]
4781    #[serde(default, skip_serializing_if = "Option::is_none")]
4782    pub error: Option<String>,
4783    /// Contract field nextFireAtMicros.
4784    #[serde(rename = "nextFireAtMicros")]
4785    #[serde(default, skip_serializing_if = "Option::is_none")]
4786    pub next_fire_at_micros: Option<SafeLong>,
4787    /// Contract field projectId.
4788    #[serde(rename = "projectId")]
4789    pub project_id: String,
4790    /// Contract field resources.
4791    #[serde(rename = "resources")]
4792    pub resources: Vec<TaskResourceReference>,
4793    /// Contract field revision.
4794    #[serde(rename = "revision")]
4795    pub revision: SafeLong,
4796    /// Contract field triggerId.
4797    #[serde(rename = "triggerId")]
4798    pub trigger_id: Uuid,
4799}
4800impl<'de> DeserializeStrict<'de> for TaskTrigger {
4801    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
4802        #[derive(Deserialize)]
4803        #[serde(deny_unknown_fields)]
4804        struct __Wire {
4805            #[serde(rename = "checkpointSequence")]
4806            #[serde(default)]
4807            checkpoint_sequence: Strict<Option<SafeLong>>,
4808            #[serde(rename = "createdAtMicros")]
4809            created_at_micros: Strict<SafeLong>,
4810            #[serde(rename = "createdBy")]
4811            created_by: Strict<Caller>,
4812            #[serde(rename = "definition")]
4813            definition: Strict<TriggerDefinition>,
4814            #[serde(rename = "error")]
4815            #[serde(default)]
4816            error: Strict<Option<String>>,
4817            #[serde(rename = "nextFireAtMicros")]
4818            #[serde(default)]
4819            next_fire_at_micros: Strict<Option<SafeLong>>,
4820            #[serde(rename = "projectId")]
4821            project_id: Strict<String>,
4822            #[serde(rename = "resources")]
4823            resources: Strict<Vec<TaskResourceReference>>,
4824            #[serde(rename = "revision")]
4825            revision: Strict<SafeLong>,
4826            #[serde(rename = "triggerId")]
4827            trigger_id: Strict<Uuid>,
4828        }
4829        let wire = __Wire::deserialize(deserializer)?;
4830        Ok(Self {
4831            checkpoint_sequence: wire.checkpoint_sequence.0,
4832            created_at_micros: wire.created_at_micros.0,
4833            created_by: wire.created_by.0,
4834            definition: wire.definition.0,
4835            error: wire.error.0,
4836            next_fire_at_micros: wire.next_fire_at_micros.0,
4837            project_id: wire.project_id.0,
4838            resources: wire.resources.0,
4839            revision: wire.revision.0,
4840            trigger_id: wire.trigger_id.0,
4841        })
4842    }
4843}
4844
4845/// TaskWorkProgress contract value.
4846#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
4847pub struct TaskWorkProgress {
4848    /// Contract field completed.
4849    #[serde(rename = "completed")]
4850    pub completed: SafeUnsignedLong,
4851    /// Contract field stage.
4852    #[serde(rename = "stage")]
4853    pub stage: TaskWorkStage,
4854    /// Contract field total.
4855    #[serde(rename = "total")]
4856    #[serde(default, skip_serializing_if = "Option::is_none")]
4857    pub total: Option<SafeUnsignedLong>,
4858}
4859impl<'de> DeserializeStrict<'de> for TaskWorkProgress {
4860    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
4861        #[derive(Deserialize)]
4862        #[serde(deny_unknown_fields)]
4863        struct __Wire {
4864            #[serde(rename = "completed")]
4865            completed: Strict<SafeUnsignedLong>,
4866            #[serde(rename = "stage")]
4867            stage: Strict<TaskWorkStage>,
4868            #[serde(rename = "total")]
4869            #[serde(default)]
4870            total: Strict<Option<SafeUnsignedLong>>,
4871        }
4872        let wire = __Wire::deserialize(deserializer)?;
4873        Ok(Self {
4874            completed: wire.completed.0,
4875            stage: wire.stage.0,
4876            total: wire.total.0,
4877        })
4878    }
4879}
4880
4881/// TaskWorkStage contract value.
4882#[derive(Clone, Debug, PartialEq, Eq)]
4883pub enum TaskWorkStage {
4884    /// A known contract value.
4885    Preparing,
4886    /// A known contract value.
4887    RefreshingDataset,
4888    /// A known contract value.
4889    BuildingVectorIndex,
4890    /// A known contract value.
4891    ReadingTable,
4892    /// A known contract value.
4893    Compacting,
4894    /// A known contract value.
4895    DispatchingWorkers,
4896    /// A known contract value.
4897    WaitingForWorkers,
4898    /// A known contract value.
4899    EvaluatingEnrichment,
4900    /// A known contract value.
4901    WritingFragment,
4902    /// A known contract value.
4903    Publishing,
4904    /// A value introduced by a newer server.
4905    Unknown(String),
4906}
4907impl Serialize for TaskWorkStage {
4908    fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
4909        serializer.serialize_str(match self {
4910            Self::Preparing => "preparing",
4911            Self::RefreshingDataset => "refreshing_dataset",
4912            Self::BuildingVectorIndex => "building_vector_index",
4913            Self::ReadingTable => "reading_table",
4914            Self::Compacting => "compacting",
4915            Self::DispatchingWorkers => "dispatching_workers",
4916            Self::WaitingForWorkers => "waiting_for_workers",
4917            Self::EvaluatingEnrichment => "evaluating_enrichment",
4918            Self::WritingFragment => "writing_fragment",
4919            Self::Publishing => "publishing",
4920            Self::Unknown(value) => value,
4921        })
4922    }
4923}
4924impl<'de> Deserialize<'de> for TaskWorkStage {
4925    fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
4926        Ok(match String::deserialize(deserializer)?.as_str() {
4927            "preparing" => Self::Preparing,
4928            "refreshing_dataset" => Self::RefreshingDataset,
4929            "building_vector_index" => Self::BuildingVectorIndex,
4930            "reading_table" => Self::ReadingTable,
4931            "compacting" => Self::Compacting,
4932            "dispatching_workers" => Self::DispatchingWorkers,
4933            "waiting_for_workers" => Self::WaitingForWorkers,
4934            "evaluating_enrichment" => Self::EvaluatingEnrichment,
4935            "writing_fragment" => Self::WritingFragment,
4936            "publishing" => Self::Publishing,
4937            value => Self::Unknown(value.to_owned()),
4938        })
4939    }
4940}
4941impl<'de> DeserializeStrict<'de> for TaskWorkStage {
4942    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
4943        #[derive(Deserialize)]
4944        enum __Known {
4945            #[serde(rename = "preparing")]
4946            Preparing,
4947            #[serde(rename = "refreshing_dataset")]
4948            RefreshingDataset,
4949            #[serde(rename = "building_vector_index")]
4950            BuildingVectorIndex,
4951            #[serde(rename = "reading_table")]
4952            ReadingTable,
4953            #[serde(rename = "compacting")]
4954            Compacting,
4955            #[serde(rename = "dispatching_workers")]
4956            DispatchingWorkers,
4957            #[serde(rename = "waiting_for_workers")]
4958            WaitingForWorkers,
4959            #[serde(rename = "evaluating_enrichment")]
4960            EvaluatingEnrichment,
4961            #[serde(rename = "writing_fragment")]
4962            WritingFragment,
4963            #[serde(rename = "publishing")]
4964            Publishing,
4965        }
4966        Ok(match __Known::deserialize(deserializer)? {
4967            __Known::Preparing => Self::Preparing,
4968            __Known::RefreshingDataset => Self::RefreshingDataset,
4969            __Known::BuildingVectorIndex => Self::BuildingVectorIndex,
4970            __Known::ReadingTable => Self::ReadingTable,
4971            __Known::Compacting => Self::Compacting,
4972            __Known::DispatchingWorkers => Self::DispatchingWorkers,
4973            __Known::WaitingForWorkers => Self::WaitingForWorkers,
4974            __Known::EvaluatingEnrichment => Self::EvaluatingEnrichment,
4975            __Known::WritingFragment => Self::WritingFragment,
4976            __Known::Publishing => Self::Publishing,
4977        })
4978    }
4979}
4980
4981/// TaskWorker contract value.
4982#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
4983pub struct TaskWorker {
4984    /// Contract field managed.
4985    #[serde(rename = "managed")]
4986    pub managed: bool,
4987    /// Contract field workerPoolId.
4988    #[serde(rename = "workerPoolId")]
4989    #[serde(default, skip_serializing_if = "Option::is_none")]
4990    pub worker_pool_id: Option<Uuid>,
4991    /// Contract field workerSessionId.
4992    #[serde(rename = "workerSessionId")]
4993    pub worker_session_id: Uuid,
4994}
4995impl<'de> DeserializeStrict<'de> for TaskWorker {
4996    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
4997        #[derive(Deserialize)]
4998        #[serde(deny_unknown_fields)]
4999        struct __Wire {
5000            #[serde(rename = "managed")]
5001            managed: Strict<bool>,
5002            #[serde(rename = "workerPoolId")]
5003            #[serde(default)]
5004            worker_pool_id: Strict<Option<Uuid>>,
5005            #[serde(rename = "workerSessionId")]
5006            worker_session_id: Strict<Uuid>,
5007        }
5008        let wire = __Wire::deserialize(deserializer)?;
5009        Ok(Self {
5010            managed: wire.managed.0,
5011            worker_pool_id: wire.worker_pool_id.0,
5012            worker_session_id: wire.worker_session_id.0,
5013        })
5014    }
5015}
5016
5017/// TestTriggerRequest contract value.
5018#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
5019pub struct TestTriggerRequest {
5020    /// Contract field eventId.
5021    #[serde(rename = "eventId")]
5022    #[serde(default, skip_serializing_if = "Option::is_none")]
5023    pub event_id: Option<Uuid>,
5024}
5025impl<'de> DeserializeStrict<'de> for TestTriggerRequest {
5026    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
5027        #[derive(Deserialize)]
5028        #[serde(deny_unknown_fields)]
5029        struct __Wire {
5030            #[serde(rename = "eventId")]
5031            #[serde(default)]
5032            event_id: Strict<Option<Uuid>>,
5033        }
5034        let wire = __Wire::deserialize(deserializer)?;
5035        Ok(Self {
5036            event_id: wire.event_id.0,
5037        })
5038    }
5039}
5040
5041/// TestTriggerResponse contract value.
5042#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
5043pub struct TestTriggerResponse {
5044    /// Contract field eventId.
5045    #[serde(rename = "eventId")]
5046    pub event_id: Uuid,
5047    /// Contract field matches.
5048    #[serde(rename = "matches")]
5049    pub matches: bool,
5050}
5051impl<'de> DeserializeStrict<'de> for TestTriggerResponse {
5052    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
5053        #[derive(Deserialize)]
5054        #[serde(deny_unknown_fields)]
5055        struct __Wire {
5056            #[serde(rename = "eventId")]
5057            event_id: Strict<Uuid>,
5058            #[serde(rename = "matches")]
5059            matches: Strict<bool>,
5060        }
5061        let wire = __Wire::deserialize(deserializer)?;
5062        Ok(Self {
5063            event_id: wire.event_id.0,
5064            matches: wire.matches.0,
5065        })
5066    }
5067}
5068
5069/// TriggerAction contract value.
5070#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
5071pub struct TriggerAction {
5072    /// Contract field input.
5073    #[serde(rename = "input")]
5074    pub input: Value,
5075    /// Contract field options.
5076    #[serde(rename = "options")]
5077    #[serde(default, skip_serializing_if = "Option::is_none")]
5078    pub options: Option<TaskOptions>,
5079    /// Contract field taskSpecId.
5080    #[serde(rename = "taskSpecId")]
5081    pub task_spec_id: TaskSpecId,
5082}
5083impl<'de> DeserializeStrict<'de> for TriggerAction {
5084    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
5085        #[derive(Deserialize)]
5086        #[serde(deny_unknown_fields)]
5087        struct __Wire {
5088            #[serde(rename = "input")]
5089            input: Strict<Value>,
5090            #[serde(rename = "options")]
5091            #[serde(default)]
5092            options: Strict<Option<TaskOptions>>,
5093            #[serde(rename = "taskSpecId")]
5094            task_spec_id: Strict<TaskSpecId>,
5095        }
5096        let wire = __Wire::deserialize(deserializer)?;
5097        Ok(Self {
5098            input: wire.input.0,
5099            options: wire.options.0,
5100            task_spec_id: wire.task_spec_id.0,
5101        })
5102    }
5103}
5104
5105/// TriggerDefinition contract value.
5106#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
5107pub struct TriggerDefinition {
5108    /// Contract field action.
5109    #[serde(rename = "action")]
5110    pub action: TriggerAction,
5111    /// Contract field enabled.
5112    #[serde(rename = "enabled")]
5113    pub enabled: bool,
5114    /// Contract field name.
5115    #[serde(rename = "name")]
5116    pub name: String,
5117    /// Contract field source.
5118    #[serde(rename = "source")]
5119    pub source: TriggerSource,
5120}
5121impl<'de> DeserializeStrict<'de> for TriggerDefinition {
5122    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
5123        #[derive(Deserialize)]
5124        #[serde(deny_unknown_fields)]
5125        struct __Wire {
5126            #[serde(rename = "action")]
5127            action: Strict<TriggerAction>,
5128            #[serde(rename = "enabled")]
5129            enabled: Strict<bool>,
5130            #[serde(rename = "name")]
5131            name: Strict<String>,
5132            #[serde(rename = "source")]
5133            source: Strict<TriggerSource>,
5134        }
5135        let wire = __Wire::deserialize(deserializer)?;
5136        Ok(Self {
5137            action: wire.action.0,
5138            enabled: wire.enabled.0,
5139            name: wire.name.0,
5140            source: wire.source.0,
5141        })
5142    }
5143}
5144
5145/// TriggerInvocation contract value.
5146#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
5147pub struct TriggerInvocation {
5148    /// Contract field createdAtMicros.
5149    #[serde(rename = "createdAtMicros")]
5150    pub created_at_micros: SafeLong,
5151    /// Contract field invocationId.
5152    #[serde(rename = "invocationId")]
5153    pub invocation_id: Uuid,
5154    /// Contract field occurrence.
5155    #[serde(rename = "occurrence")]
5156    pub occurrence: TriggerOccurrence,
5157    /// Contract field status.
5158    #[serde(rename = "status")]
5159    pub status: InvocationStatus,
5160    /// Contract field taskId.
5161    #[serde(rename = "taskId")]
5162    #[serde(default, skip_serializing_if = "Option::is_none")]
5163    pub task_id: Option<Uuid>,
5164    /// Contract field triggerId.
5165    #[serde(rename = "triggerId")]
5166    pub trigger_id: Uuid,
5167    /// Contract field triggerRevision.
5168    #[serde(rename = "triggerRevision")]
5169    pub trigger_revision: SafeLong,
5170}
5171impl<'de> DeserializeStrict<'de> for TriggerInvocation {
5172    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
5173        #[derive(Deserialize)]
5174        #[serde(deny_unknown_fields)]
5175        struct __Wire {
5176            #[serde(rename = "createdAtMicros")]
5177            created_at_micros: Strict<SafeLong>,
5178            #[serde(rename = "invocationId")]
5179            invocation_id: Strict<Uuid>,
5180            #[serde(rename = "occurrence")]
5181            occurrence: Strict<TriggerOccurrence>,
5182            #[serde(rename = "status")]
5183            status: Strict<InvocationStatus>,
5184            #[serde(rename = "taskId")]
5185            #[serde(default)]
5186            task_id: Strict<Option<Uuid>>,
5187            #[serde(rename = "triggerId")]
5188            trigger_id: Strict<Uuid>,
5189            #[serde(rename = "triggerRevision")]
5190            trigger_revision: Strict<SafeLong>,
5191        }
5192        let wire = __Wire::deserialize(deserializer)?;
5193        Ok(Self {
5194            created_at_micros: wire.created_at_micros.0,
5195            invocation_id: wire.invocation_id.0,
5196            occurrence: wire.occurrence.0,
5197            status: wire.status.0,
5198            task_id: wire.task_id.0,
5199            trigger_id: wire.trigger_id.0,
5200            trigger_revision: wire.trigger_revision.0,
5201        })
5202    }
5203}
5204
5205/// TriggerOccurrence contract value.
5206#[derive(Clone, Debug, PartialEq, Eq)]
5207pub enum TriggerOccurrence {
5208    /// A known union arm.
5209    JournalEvent(TriggerOccurrenceJournalEvent),
5210    /// A known union arm.
5211    Manual(TriggerOccurrenceManual),
5212    /// A known union arm.
5213    Schedule(TriggerOccurrenceSchedule),
5214    /// An unknown discriminator and its complete wire object.
5215    Unknown { tag: String, value: Value },
5216}
5217impl Serialize for TriggerOccurrence {
5218    fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
5219        match self {
5220            Self::JournalEvent(value) => {
5221                let mut object = serde_json::Map::new();
5222                object.insert("type".into(), Value::String("journalEvent".into()));
5223                object.insert(
5224                    "journalEvent".into(),
5225                    serde_json::to_value(value).map_err(serde::ser::Error::custom)?,
5226                );
5227                Value::Object(object).serialize(serializer)
5228            }
5229            Self::Manual(value) => {
5230                let mut object = serde_json::Map::new();
5231                object.insert("type".into(), Value::String("manual".into()));
5232                object.insert(
5233                    "manual".into(),
5234                    serde_json::to_value(value).map_err(serde::ser::Error::custom)?,
5235                );
5236                Value::Object(object).serialize(serializer)
5237            }
5238            Self::Schedule(value) => {
5239                let mut object = serde_json::Map::new();
5240                object.insert("type".into(), Value::String("schedule".into()));
5241                object.insert(
5242                    "schedule".into(),
5243                    serde_json::to_value(value).map_err(serde::ser::Error::custom)?,
5244                );
5245                Value::Object(object).serialize(serializer)
5246            }
5247            Self::Unknown { tag, value } => {
5248                if value.get("type").and_then(Value::as_str) != Some(tag.as_str()) {
5249                    return Err(serde::ser::Error::custom(
5250                        "unknown union discriminator mismatch",
5251                    ));
5252                }
5253                value.serialize(serializer)
5254            }
5255        }
5256    }
5257}
5258impl<'de> Deserialize<'de> for TriggerOccurrence {
5259    fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
5260        let value = Value::deserialize(deserializer)?;
5261        let tag = value
5262            .get("type")
5263            .and_then(Value::as_str)
5264            .ok_or_else(|| serde::de::Error::custom("union requires type"))?;
5265        match tag {
5266            "journalEvent" => Ok(Self::JournalEvent(
5267                serde_json::from_value(
5268                    value
5269                        .get("journalEvent")
5270                        .cloned()
5271                        .ok_or_else(|| serde::de::Error::custom("union requires matching arm"))?,
5272                )
5273                .map_err(serde::de::Error::custom)?,
5274            )),
5275            "manual" => Ok(Self::Manual(
5276                serde_json::from_value(
5277                    value
5278                        .get("manual")
5279                        .cloned()
5280                        .ok_or_else(|| serde::de::Error::custom("union requires matching arm"))?,
5281                )
5282                .map_err(serde::de::Error::custom)?,
5283            )),
5284            "schedule" => Ok(Self::Schedule(
5285                serde_json::from_value(
5286                    value
5287                        .get("schedule")
5288                        .cloned()
5289                        .ok_or_else(|| serde::de::Error::custom("union requires matching arm"))?,
5290                )
5291                .map_err(serde::de::Error::custom)?,
5292            )),
5293            tag => Ok(Self::Unknown {
5294                tag: tag.to_owned(),
5295                value,
5296            }),
5297        }
5298    }
5299}
5300impl<'de> DeserializeStrict<'de> for TriggerOccurrence {
5301    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
5302        #[derive(Deserialize)]
5303        enum __Tag0 {
5304            #[serde(rename = "journalEvent")]
5305            Value,
5306        }
5307        #[derive(Deserialize)]
5308        #[serde(deny_unknown_fields)]
5309        struct __Arm0 {
5310            #[serde(rename = "type")]
5311            _tag: __Tag0,
5312            #[serde(rename = "journalEvent")]
5313            value: Strict<TriggerOccurrenceJournalEvent>,
5314        }
5315        #[derive(Deserialize)]
5316        enum __Tag1 {
5317            #[serde(rename = "manual")]
5318            Value,
5319        }
5320        #[derive(Deserialize)]
5321        #[serde(deny_unknown_fields)]
5322        struct __Arm1 {
5323            #[serde(rename = "type")]
5324            _tag: __Tag1,
5325            #[serde(rename = "manual")]
5326            value: Strict<TriggerOccurrenceManual>,
5327        }
5328        #[derive(Deserialize)]
5329        enum __Tag2 {
5330            #[serde(rename = "schedule")]
5331            Value,
5332        }
5333        #[derive(Deserialize)]
5334        #[serde(deny_unknown_fields)]
5335        struct __Arm2 {
5336            #[serde(rename = "type")]
5337            _tag: __Tag2,
5338            #[serde(rename = "schedule")]
5339            value: Strict<TriggerOccurrenceSchedule>,
5340        }
5341        #[derive(Deserialize)]
5342        #[serde(untagged)]
5343        enum __Known {
5344            JournalEvent(Box<__Arm0>),
5345            Manual(Box<__Arm1>),
5346            Schedule(Box<__Arm2>),
5347        }
5348        Ok(match __Known::deserialize(deserializer)? {
5349            __Known::JournalEvent(arm) => Self::JournalEvent(arm.value.0),
5350            __Known::Manual(arm) => Self::Manual(arm.value.0),
5351            __Known::Schedule(arm) => Self::Schedule(arm.value.0),
5352        })
5353    }
5354}
5355
5356/// TriggerOccurrenceJournalEvent contract value.
5357#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
5358pub struct TriggerOccurrenceJournalEvent {
5359    /// Contract field branchId.
5360    #[serde(rename = "branchId")]
5361    pub branch_id: Uuid,
5362    /// Contract field commitId.
5363    #[serde(rename = "commitId")]
5364    pub commit_id: Uuid,
5365    /// Contract field eventId.
5366    #[serde(rename = "eventId")]
5367    pub event_id: Uuid,
5368    /// Contract field resourceId.
5369    #[serde(rename = "resourceId")]
5370    pub resource_id: Uuid,
5371}
5372impl<'de> DeserializeStrict<'de> for TriggerOccurrenceJournalEvent {
5373    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
5374        #[derive(Deserialize)]
5375        #[serde(deny_unknown_fields)]
5376        struct __Wire {
5377            #[serde(rename = "branchId")]
5378            branch_id: Strict<Uuid>,
5379            #[serde(rename = "commitId")]
5380            commit_id: Strict<Uuid>,
5381            #[serde(rename = "eventId")]
5382            event_id: Strict<Uuid>,
5383            #[serde(rename = "resourceId")]
5384            resource_id: Strict<Uuid>,
5385        }
5386        let wire = __Wire::deserialize(deserializer)?;
5387        Ok(Self {
5388            branch_id: wire.branch_id.0,
5389            commit_id: wire.commit_id.0,
5390            event_id: wire.event_id.0,
5391            resource_id: wire.resource_id.0,
5392        })
5393    }
5394}
5395
5396/// TriggerOccurrenceManual contract value.
5397#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
5398pub struct TriggerOccurrenceManual {
5399    /// Contract field requestId.
5400    #[serde(rename = "requestId")]
5401    pub request_id: Uuid,
5402}
5403impl<'de> DeserializeStrict<'de> for TriggerOccurrenceManual {
5404    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
5405        #[derive(Deserialize)]
5406        #[serde(deny_unknown_fields)]
5407        struct __Wire {
5408            #[serde(rename = "requestId")]
5409            request_id: Strict<Uuid>,
5410        }
5411        let wire = __Wire::deserialize(deserializer)?;
5412        Ok(Self {
5413            request_id: wire.request_id.0,
5414        })
5415    }
5416}
5417
5418/// TriggerOccurrenceSchedule contract value.
5419#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
5420pub struct TriggerOccurrenceSchedule {
5421    /// Contract field scheduledAtMicros.
5422    #[serde(rename = "scheduledAtMicros")]
5423    pub scheduled_at_micros: SafeLong,
5424}
5425impl<'de> DeserializeStrict<'de> for TriggerOccurrenceSchedule {
5426    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
5427        #[derive(Deserialize)]
5428        #[serde(deny_unknown_fields)]
5429        struct __Wire {
5430            #[serde(rename = "scheduledAtMicros")]
5431            scheduled_at_micros: Strict<SafeLong>,
5432        }
5433        let wire = __Wire::deserialize(deserializer)?;
5434        Ok(Self {
5435            scheduled_at_micros: wire.scheduled_at_micros.0,
5436        })
5437    }
5438}
5439
5440/// TriggerPage contract value.
5441#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
5442pub struct TriggerPage {
5443    /// Contract field items.
5444    #[serde(rename = "items")]
5445    pub items: Vec<TaskTrigger>,
5446    /// Contract field nextPageToken.
5447    #[serde(rename = "nextPageToken")]
5448    #[serde(default, skip_serializing_if = "Option::is_none")]
5449    pub next_page_token: Option<String>,
5450}
5451impl<'de> DeserializeStrict<'de> for TriggerPage {
5452    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
5453        #[derive(Deserialize)]
5454        #[serde(deny_unknown_fields)]
5455        struct __Wire {
5456            #[serde(rename = "items")]
5457            items: Strict<Vec<TaskTrigger>>,
5458            #[serde(rename = "nextPageToken")]
5459            #[serde(default)]
5460            next_page_token: Strict<Option<String>>,
5461        }
5462        let wire = __Wire::deserialize(deserializer)?;
5463        Ok(Self {
5464            items: wire.items.0,
5465            next_page_token: wire.next_page_token.0,
5466        })
5467    }
5468}
5469
5470/// TriggerPageRequest contract value.
5471#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
5472pub struct TriggerPageRequest {
5473    /// Contract field legacyTableId.
5474    #[serde(rename = "legacyTableId")]
5475    #[serde(default, skip_serializing_if = "Option::is_none")]
5476    pub legacy_table_id: Option<String>,
5477    /// Contract field pageToken.
5478    #[serde(rename = "pageToken")]
5479    #[serde(default, skip_serializing_if = "Option::is_none")]
5480    pub page_token: Option<String>,
5481    /// Contract field resourceId.
5482    #[serde(rename = "resourceId")]
5483    #[serde(default, skip_serializing_if = "Option::is_none")]
5484    pub resource_id: Option<Uuid>,
5485}
5486impl<'de> DeserializeStrict<'de> for TriggerPageRequest {
5487    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
5488        #[derive(Deserialize)]
5489        #[serde(deny_unknown_fields)]
5490        struct __Wire {
5491            #[serde(rename = "legacyTableId")]
5492            #[serde(default)]
5493            legacy_table_id: Strict<Option<String>>,
5494            #[serde(rename = "pageToken")]
5495            #[serde(default)]
5496            page_token: Strict<Option<String>>,
5497            #[serde(rename = "resourceId")]
5498            #[serde(default)]
5499            resource_id: Strict<Option<Uuid>>,
5500        }
5501        let wire = __Wire::deserialize(deserializer)?;
5502        Ok(Self {
5503            legacy_table_id: wire.legacy_table_id.0,
5504            page_token: wire.page_token.0,
5505            resource_id: wire.resource_id.0,
5506        })
5507    }
5508}
5509
5510/// TriggerSource contract value.
5511#[derive(Clone, Debug, PartialEq, Eq)]
5512pub enum TriggerSource {
5513    /// A known union arm.
5514    Interval(TriggerSourceInterval),
5515    /// A known union arm.
5516    JournalEvent(TriggerSourceJournalEvent),
5517    /// An unknown discriminator and its complete wire object.
5518    Unknown { tag: String, value: Value },
5519}
5520impl Serialize for TriggerSource {
5521    fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
5522        match self {
5523            Self::Interval(value) => {
5524                let mut object = serde_json::Map::new();
5525                object.insert("type".into(), Value::String("interval".into()));
5526                object.insert(
5527                    "interval".into(),
5528                    serde_json::to_value(value).map_err(serde::ser::Error::custom)?,
5529                );
5530                Value::Object(object).serialize(serializer)
5531            }
5532            Self::JournalEvent(value) => {
5533                let mut object = serde_json::Map::new();
5534                object.insert("type".into(), Value::String("journalEvent".into()));
5535                object.insert(
5536                    "journalEvent".into(),
5537                    serde_json::to_value(value).map_err(serde::ser::Error::custom)?,
5538                );
5539                Value::Object(object).serialize(serializer)
5540            }
5541            Self::Unknown { tag, value } => {
5542                if value.get("type").and_then(Value::as_str) != Some(tag.as_str()) {
5543                    return Err(serde::ser::Error::custom(
5544                        "unknown union discriminator mismatch",
5545                    ));
5546                }
5547                value.serialize(serializer)
5548            }
5549        }
5550    }
5551}
5552impl<'de> Deserialize<'de> for TriggerSource {
5553    fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
5554        let value = Value::deserialize(deserializer)?;
5555        let tag = value
5556            .get("type")
5557            .and_then(Value::as_str)
5558            .ok_or_else(|| serde::de::Error::custom("union requires type"))?;
5559        match tag {
5560            "interval" => Ok(Self::Interval(
5561                serde_json::from_value(
5562                    value
5563                        .get("interval")
5564                        .cloned()
5565                        .ok_or_else(|| serde::de::Error::custom("union requires matching arm"))?,
5566                )
5567                .map_err(serde::de::Error::custom)?,
5568            )),
5569            "journalEvent" => Ok(Self::JournalEvent(
5570                serde_json::from_value(
5571                    value
5572                        .get("journalEvent")
5573                        .cloned()
5574                        .ok_or_else(|| serde::de::Error::custom("union requires matching arm"))?,
5575                )
5576                .map_err(serde::de::Error::custom)?,
5577            )),
5578            tag => Ok(Self::Unknown {
5579                tag: tag.to_owned(),
5580                value,
5581            }),
5582        }
5583    }
5584}
5585impl<'de> DeserializeStrict<'de> for TriggerSource {
5586    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
5587        #[derive(Deserialize)]
5588        enum __Tag0 {
5589            #[serde(rename = "interval")]
5590            Value,
5591        }
5592        #[derive(Deserialize)]
5593        #[serde(deny_unknown_fields)]
5594        struct __Arm0 {
5595            #[serde(rename = "type")]
5596            _tag: __Tag0,
5597            #[serde(rename = "interval")]
5598            value: Strict<TriggerSourceInterval>,
5599        }
5600        #[derive(Deserialize)]
5601        enum __Tag1 {
5602            #[serde(rename = "journalEvent")]
5603            Value,
5604        }
5605        #[derive(Deserialize)]
5606        #[serde(deny_unknown_fields)]
5607        struct __Arm1 {
5608            #[serde(rename = "type")]
5609            _tag: __Tag1,
5610            #[serde(rename = "journalEvent")]
5611            value: Strict<TriggerSourceJournalEvent>,
5612        }
5613        #[derive(Deserialize)]
5614        #[serde(untagged)]
5615        enum __Known {
5616            Interval(Box<__Arm0>),
5617            JournalEvent(Box<__Arm1>),
5618        }
5619        Ok(match __Known::deserialize(deserializer)? {
5620            __Known::Interval(arm) => Self::Interval(arm.value.0),
5621            __Known::JournalEvent(arm) => Self::JournalEvent(arm.value.0),
5622        })
5623    }
5624}
5625
5626/// TriggerSourceInterval contract value.
5627#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
5628pub struct TriggerSourceInterval {
5629    /// Contract field everySeconds.
5630    #[serde(rename = "everySeconds")]
5631    pub every_seconds: u32,
5632    /// Contract field startAtMicros.
5633    #[serde(rename = "startAtMicros")]
5634    #[serde(default, skip_serializing_if = "Option::is_none")]
5635    pub start_at_micros: Option<SafeLong>,
5636}
5637impl<'de> DeserializeStrict<'de> for TriggerSourceInterval {
5638    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
5639        #[derive(Deserialize)]
5640        #[serde(deny_unknown_fields)]
5641        struct __Wire {
5642            #[serde(rename = "everySeconds")]
5643            every_seconds: Strict<u32>,
5644            #[serde(rename = "startAtMicros")]
5645            #[serde(default)]
5646            start_at_micros: Strict<Option<SafeLong>>,
5647        }
5648        let wire = __Wire::deserialize(deserializer)?;
5649        Ok(Self {
5650            every_seconds: wire.every_seconds.0,
5651            start_at_micros: wire.start_at_micros.0,
5652        })
5653    }
5654}
5655
5656/// TriggerSourceJournalEvent contract value.
5657#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
5658pub struct TriggerSourceJournalEvent {
5659    /// Contract field branchId.
5660    #[serde(rename = "branchId")]
5661    pub branch_id: Uuid,
5662    /// Contract field eventType.
5663    #[serde(rename = "eventType")]
5664    pub event_type: ResourceEventType,
5665    /// Contract field resourceId.
5666    #[serde(rename = "resourceId")]
5667    pub resource_id: Uuid,
5668}
5669impl<'de> DeserializeStrict<'de> for TriggerSourceJournalEvent {
5670    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
5671        #[derive(Deserialize)]
5672        #[serde(deny_unknown_fields)]
5673        struct __Wire {
5674            #[serde(rename = "branchId")]
5675            branch_id: Strict<Uuid>,
5676            #[serde(rename = "eventType")]
5677            event_type: Strict<ResourceEventType>,
5678            #[serde(rename = "resourceId")]
5679            resource_id: Strict<Uuid>,
5680        }
5681        let wire = __Wire::deserialize(deserializer)?;
5682        Ok(Self {
5683            branch_id: wire.branch_id.0,
5684            event_type: wire.event_type.0,
5685            resource_id: wire.resource_id.0,
5686        })
5687    }
5688}
5689
5690/// UpdateTriggerRequest contract value.
5691#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
5692pub struct UpdateTriggerRequest {
5693    /// Contract field definition.
5694    #[serde(rename = "definition")]
5695    pub definition: TriggerDefinition,
5696    /// Contract field expectedRevision.
5697    #[serde(rename = "expectedRevision")]
5698    pub expected_revision: SafeLong,
5699}
5700impl<'de> DeserializeStrict<'de> for UpdateTriggerRequest {
5701    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
5702        #[derive(Deserialize)]
5703        #[serde(deny_unknown_fields)]
5704        struct __Wire {
5705            #[serde(rename = "definition")]
5706            definition: Strict<TriggerDefinition>,
5707            #[serde(rename = "expectedRevision")]
5708            expected_revision: Strict<SafeLong>,
5709        }
5710        let wire = __Wire::deserialize(deserializer)?;
5711        Ok(Self {
5712            definition: wire.definition.0,
5713            expected_revision: wire.expected_revision.0,
5714        })
5715    }
5716}
5717
5718/// VectorIndexBuildMode contract value.
5719#[derive(Clone, Debug, PartialEq, Eq)]
5720pub enum VectorIndexBuildMode {
5721    /// A known contract value.
5722    Auto,
5723    /// A known contract value.
5724    Full,
5725    /// A known contract value.
5726    Incremental,
5727    /// A value introduced by a newer server.
5728    Unknown(String),
5729}
5730impl Serialize for VectorIndexBuildMode {
5731    fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
5732        serializer.serialize_str(match self {
5733            Self::Auto => "auto",
5734            Self::Full => "full",
5735            Self::Incremental => "incremental",
5736            Self::Unknown(value) => value,
5737        })
5738    }
5739}
5740impl<'de> Deserialize<'de> for VectorIndexBuildMode {
5741    fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
5742        Ok(match String::deserialize(deserializer)?.as_str() {
5743            "auto" => Self::Auto,
5744            "full" => Self::Full,
5745            "incremental" => Self::Incremental,
5746            value => Self::Unknown(value.to_owned()),
5747        })
5748    }
5749}
5750impl<'de> DeserializeStrict<'de> for VectorIndexBuildMode {
5751    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
5752        #[derive(Deserialize)]
5753        enum __Known {
5754            #[serde(rename = "auto")]
5755            Auto,
5756            #[serde(rename = "full")]
5757            Full,
5758            #[serde(rename = "incremental")]
5759            Incremental,
5760        }
5761        Ok(match __Known::deserialize(deserializer)? {
5762            __Known::Auto => Self::Auto,
5763            __Known::Full => Self::Full,
5764            __Known::Incremental => Self::Incremental,
5765        })
5766    }
5767}
5768
5769/// Build an immutable successor of a Vector Index from its source Table. With latest, the pinned
5770/// versions are authorized at submission and the current state is resolved when the Task runs.
5771#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
5772pub struct VectorIndexRefreshDefinition {
5773    /// Contract field latest.
5774    #[serde(rename = "latest")]
5775    #[serde(default, skip_serializing_if = "Option::is_none")]
5776    pub latest: Option<bool>,
5777    /// Contract field mode.
5778    #[serde(rename = "mode")]
5779    pub mode: VectorIndexBuildMode,
5780    /// Contract field readTarget.
5781    #[serde(rename = "readTarget")]
5782    pub read_target: TaskReadTarget,
5783    /// Contract field sourceResourceId.
5784    #[serde(rename = "sourceResourceId")]
5785    pub source_resource_id: Uuid,
5786    /// Contract field vectorIndexId.
5787    #[serde(rename = "vectorIndexId")]
5788    pub vector_index_id: Uuid,
5789    /// Contract field vectorIndexResourceId.
5790    #[serde(rename = "vectorIndexResourceId")]
5791    pub vector_index_resource_id: Uuid,
5792}
5793impl<'de> DeserializeStrict<'de> for VectorIndexRefreshDefinition {
5794    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
5795        #[derive(Deserialize)]
5796        #[serde(deny_unknown_fields)]
5797        struct __Wire {
5798            #[serde(rename = "latest")]
5799            #[serde(default)]
5800            latest: Strict<Option<bool>>,
5801            #[serde(rename = "mode")]
5802            mode: Strict<VectorIndexBuildMode>,
5803            #[serde(rename = "readTarget")]
5804            read_target: Strict<TaskReadTarget>,
5805            #[serde(rename = "sourceResourceId")]
5806            source_resource_id: Strict<Uuid>,
5807            #[serde(rename = "vectorIndexId")]
5808            vector_index_id: Strict<Uuid>,
5809            #[serde(rename = "vectorIndexResourceId")]
5810            vector_index_resource_id: Strict<Uuid>,
5811        }
5812        let wire = __Wire::deserialize(deserializer)?;
5813        Ok(Self {
5814            latest: wire.latest.0,
5815            mode: wire.mode.0,
5816            read_target: wire.read_target.0,
5817            source_resource_id: wire.source_resource_id.0,
5818            vector_index_id: wire.vector_index_id.0,
5819            vector_index_resource_id: wire.vector_index_resource_id.0,
5820        })
5821    }
5822}
5823
5824/// WorkerAttempt contract value.
5825#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
5826pub struct WorkerAttempt {
5827    /// Contract field attemptId.
5828    #[serde(rename = "attemptId")]
5829    pub attempt_id: Uuid,
5830    /// Contract field ordinal.
5831    #[serde(rename = "ordinal")]
5832    pub ordinal: u32,
5833    /// Contract field requirements.
5834    #[serde(rename = "requirements")]
5835    pub requirements: TaskRequirements,
5836    /// Contract field startedAtMicros.
5837    #[serde(rename = "startedAtMicros")]
5838    pub started_at_micros: SafeLong,
5839    /// Contract field status.
5840    #[serde(rename = "status")]
5841    pub status: AttemptStatus,
5842    /// Contract field taskId.
5843    #[serde(rename = "taskId")]
5844    pub task_id: Uuid,
5845    /// Contract field taskSpecName.
5846    #[serde(rename = "taskSpecName")]
5847    pub task_spec_name: String,
5848    /// Contract field terminalAtMicros.
5849    #[serde(rename = "terminalAtMicros")]
5850    #[serde(default, skip_serializing_if = "Option::is_none")]
5851    pub terminal_at_micros: Option<SafeLong>,
5852}
5853impl<'de> DeserializeStrict<'de> for WorkerAttempt {
5854    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
5855        #[derive(Deserialize)]
5856        #[serde(deny_unknown_fields)]
5857        struct __Wire {
5858            #[serde(rename = "attemptId")]
5859            attempt_id: Strict<Uuid>,
5860            #[serde(rename = "ordinal")]
5861            ordinal: Strict<u32>,
5862            #[serde(rename = "requirements")]
5863            requirements: Strict<TaskRequirements>,
5864            #[serde(rename = "startedAtMicros")]
5865            started_at_micros: Strict<SafeLong>,
5866            #[serde(rename = "status")]
5867            status: Strict<AttemptStatus>,
5868            #[serde(rename = "taskId")]
5869            task_id: Strict<Uuid>,
5870            #[serde(rename = "taskSpecName")]
5871            task_spec_name: Strict<String>,
5872            #[serde(rename = "terminalAtMicros")]
5873            #[serde(default)]
5874            terminal_at_micros: Strict<Option<SafeLong>>,
5875        }
5876        let wire = __Wire::deserialize(deserializer)?;
5877        Ok(Self {
5878            attempt_id: wire.attempt_id.0,
5879            ordinal: wire.ordinal.0,
5880            requirements: wire.requirements.0,
5881            started_at_micros: wire.started_at_micros.0,
5882            status: wire.status.0,
5883            task_id: wire.task_id.0,
5884            task_spec_name: wire.task_spec_name.0,
5885            terminal_at_micros: wire.terminal_at_micros.0,
5886        })
5887    }
5888}
5889
5890/// WorkerCapabilities contract value.
5891#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
5892pub struct WorkerCapabilities {
5893    /// Contract field architecture.
5894    #[serde(rename = "architecture")]
5895    pub architecture: String,
5896    /// Contract field installedTaskSpecs.
5897    #[serde(rename = "installedTaskSpecs")]
5898    pub installed_task_specs: Vec<TaskSpecId>,
5899    /// Contract field operatingSystem.
5900    #[serde(rename = "operatingSystem")]
5901    pub operating_system: String,
5902    /// Contract field resources.
5903    #[serde(rename = "resources")]
5904    pub resources: WorkerResources,
5905}
5906impl<'de> DeserializeStrict<'de> for WorkerCapabilities {
5907    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
5908        #[derive(Deserialize)]
5909        #[serde(deny_unknown_fields)]
5910        struct __Wire {
5911            #[serde(rename = "architecture")]
5912            architecture: Strict<String>,
5913            #[serde(rename = "installedTaskSpecs")]
5914            installed_task_specs: Strict<Vec<TaskSpecId>>,
5915            #[serde(rename = "operatingSystem")]
5916            operating_system: Strict<String>,
5917            #[serde(rename = "resources")]
5918            resources: Strict<WorkerResources>,
5919        }
5920        let wire = __Wire::deserialize(deserializer)?;
5921        Ok(Self {
5922            architecture: wire.architecture.0,
5923            installed_task_specs: wire.installed_task_specs.0,
5924            operating_system: wire.operating_system.0,
5925            resources: wire.resources.0,
5926        })
5927    }
5928}
5929
5930/// WorkerGpuResources contract value.
5931#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
5932pub struct WorkerGpuResources {
5933    /// Contract field count.
5934    #[serde(rename = "count")]
5935    pub count: u32,
5936    /// Contract field memoryBytes.
5937    #[serde(rename = "memoryBytes")]
5938    pub memory_bytes: SafeUnsignedLong,
5939    /// Contract field runtime.
5940    #[serde(rename = "runtime")]
5941    pub runtime: GpuRuntime,
5942}
5943impl<'de> DeserializeStrict<'de> for WorkerGpuResources {
5944    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
5945        #[derive(Deserialize)]
5946        #[serde(deny_unknown_fields)]
5947        struct __Wire {
5948            #[serde(rename = "count")]
5949            count: Strict<u32>,
5950            #[serde(rename = "memoryBytes")]
5951            memory_bytes: Strict<SafeUnsignedLong>,
5952            #[serde(rename = "runtime")]
5953            runtime: Strict<GpuRuntime>,
5954        }
5955        let wire = __Wire::deserialize(deserializer)?;
5956        Ok(Self {
5957            count: wire.count.0,
5958            memory_bytes: wire.memory_bytes.0,
5959            runtime: wire.runtime.0,
5960        })
5961    }
5962}
5963
5964/// WorkerIdentity contract value.
5965#[derive(Clone, Debug, PartialEq, Eq)]
5966pub enum WorkerIdentity {
5967    /// A known union arm.
5968    User(WorkerIdentityUser),
5969    /// A known union arm.
5970    Workload(WorkerIdentityWorkload),
5971    /// An unknown discriminator and its complete wire object.
5972    Unknown { tag: String, value: Value },
5973}
5974impl Serialize for WorkerIdentity {
5975    fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
5976        match self {
5977            Self::User(value) => {
5978                let mut object = serde_json::Map::new();
5979                object.insert("type".into(), Value::String("user".into()));
5980                object.insert(
5981                    "user".into(),
5982                    serde_json::to_value(value).map_err(serde::ser::Error::custom)?,
5983                );
5984                Value::Object(object).serialize(serializer)
5985            }
5986            Self::Workload(value) => {
5987                let mut object = serde_json::Map::new();
5988                object.insert("type".into(), Value::String("workload".into()));
5989                object.insert(
5990                    "workload".into(),
5991                    serde_json::to_value(value).map_err(serde::ser::Error::custom)?,
5992                );
5993                Value::Object(object).serialize(serializer)
5994            }
5995            Self::Unknown { tag, value } => {
5996                if value.get("type").and_then(Value::as_str) != Some(tag.as_str()) {
5997                    return Err(serde::ser::Error::custom(
5998                        "unknown union discriminator mismatch",
5999                    ));
6000                }
6001                value.serialize(serializer)
6002            }
6003        }
6004    }
6005}
6006impl<'de> Deserialize<'de> for WorkerIdentity {
6007    fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
6008        let value = Value::deserialize(deserializer)?;
6009        let tag = value
6010            .get("type")
6011            .and_then(Value::as_str)
6012            .ok_or_else(|| serde::de::Error::custom("union requires type"))?;
6013        match tag {
6014            "user" => Ok(Self::User(
6015                serde_json::from_value(
6016                    value
6017                        .get("user")
6018                        .cloned()
6019                        .ok_or_else(|| serde::de::Error::custom("union requires matching arm"))?,
6020                )
6021                .map_err(serde::de::Error::custom)?,
6022            )),
6023            "workload" => Ok(Self::Workload(
6024                serde_json::from_value(
6025                    value
6026                        .get("workload")
6027                        .cloned()
6028                        .ok_or_else(|| serde::de::Error::custom("union requires matching arm"))?,
6029                )
6030                .map_err(serde::de::Error::custom)?,
6031            )),
6032            tag => Ok(Self::Unknown {
6033                tag: tag.to_owned(),
6034                value,
6035            }),
6036        }
6037    }
6038}
6039impl<'de> DeserializeStrict<'de> for WorkerIdentity {
6040    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
6041        #[derive(Deserialize)]
6042        enum __Tag0 {
6043            #[serde(rename = "user")]
6044            Value,
6045        }
6046        #[derive(Deserialize)]
6047        #[serde(deny_unknown_fields)]
6048        struct __Arm0 {
6049            #[serde(rename = "type")]
6050            _tag: __Tag0,
6051            #[serde(rename = "user")]
6052            value: Strict<WorkerIdentityUser>,
6053        }
6054        #[derive(Deserialize)]
6055        enum __Tag1 {
6056            #[serde(rename = "workload")]
6057            Value,
6058        }
6059        #[derive(Deserialize)]
6060        #[serde(deny_unknown_fields)]
6061        struct __Arm1 {
6062            #[serde(rename = "type")]
6063            _tag: __Tag1,
6064            #[serde(rename = "workload")]
6065            value: Strict<WorkerIdentityWorkload>,
6066        }
6067        #[derive(Deserialize)]
6068        #[serde(untagged)]
6069        enum __Known {
6070            User(Box<__Arm0>),
6071            Workload(Box<__Arm1>),
6072        }
6073        Ok(match __Known::deserialize(deserializer)? {
6074            __Known::User(arm) => Self::User(arm.value.0),
6075            __Known::Workload(arm) => Self::Workload(arm.value.0),
6076        })
6077    }
6078}
6079
6080/// WorkerIdentityUser contract value.
6081#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
6082pub struct WorkerIdentityUser {
6083    /// Contract field userId.
6084    #[serde(rename = "userId")]
6085    pub user_id: String,
6086}
6087impl<'de> DeserializeStrict<'de> for WorkerIdentityUser {
6088    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
6089        #[derive(Deserialize)]
6090        #[serde(deny_unknown_fields)]
6091        struct __Wire {
6092            #[serde(rename = "userId")]
6093            user_id: Strict<String>,
6094        }
6095        let wire = __Wire::deserialize(deserializer)?;
6096        Ok(Self {
6097            user_id: wire.user_id.0,
6098        })
6099    }
6100}
6101
6102/// WorkerIdentityWorkload contract value.
6103#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
6104pub struct WorkerIdentityWorkload {
6105    /// Contract field workloadId.
6106    #[serde(rename = "workloadId")]
6107    pub workload_id: String,
6108}
6109impl<'de> DeserializeStrict<'de> for WorkerIdentityWorkload {
6110    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
6111        #[derive(Deserialize)]
6112        #[serde(deny_unknown_fields)]
6113        struct __Wire {
6114            #[serde(rename = "workloadId")]
6115            workload_id: Strict<String>,
6116        }
6117        let wire = __Wire::deserialize(deserializer)?;
6118        Ok(Self {
6119            workload_id: wire.workload_id.0,
6120        })
6121    }
6122}
6123
6124/// WorkerPool contract value.
6125#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
6126pub struct WorkerPool {
6127    /// Contract field capabilities.
6128    #[serde(rename = "capabilities")]
6129    pub capabilities: WorkerCapabilities,
6130    /// Contract field createdAtMicros.
6131    #[serde(rename = "createdAtMicros")]
6132    pub created_at_micros: SafeLong,
6133    /// Contract field managedProfileId.
6134    #[serde(rename = "managedProfileId")]
6135    #[serde(default, skip_serializing_if = "Option::is_none")]
6136    pub managed_profile_id: Option<String>,
6137    /// Contract field managedProviderId.
6138    #[serde(rename = "managedProviderId")]
6139    #[serde(default, skip_serializing_if = "Option::is_none")]
6140    pub managed_provider_id: Option<String>,
6141    /// Contract field maxWorkers.
6142    #[serde(rename = "maxWorkers")]
6143    pub max_workers: u32,
6144    /// Contract field name.
6145    #[serde(rename = "name")]
6146    pub name: String,
6147    /// Contract field projectId.
6148    #[serde(rename = "projectId")]
6149    pub project_id: String,
6150    /// Contract field status.
6151    #[serde(rename = "status")]
6152    pub status: WorkerPoolStatus,
6153    /// Contract field updatedAtMicros.
6154    #[serde(rename = "updatedAtMicros")]
6155    pub updated_at_micros: SafeLong,
6156    /// Contract field workerPoolId.
6157    #[serde(rename = "workerPoolId")]
6158    pub worker_pool_id: Uuid,
6159}
6160impl<'de> DeserializeStrict<'de> for WorkerPool {
6161    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
6162        #[derive(Deserialize)]
6163        #[serde(deny_unknown_fields)]
6164        struct __Wire {
6165            #[serde(rename = "capabilities")]
6166            capabilities: Strict<WorkerCapabilities>,
6167            #[serde(rename = "createdAtMicros")]
6168            created_at_micros: Strict<SafeLong>,
6169            #[serde(rename = "managedProfileId")]
6170            #[serde(default)]
6171            managed_profile_id: Strict<Option<String>>,
6172            #[serde(rename = "managedProviderId")]
6173            #[serde(default)]
6174            managed_provider_id: Strict<Option<String>>,
6175            #[serde(rename = "maxWorkers")]
6176            max_workers: Strict<u32>,
6177            #[serde(rename = "name")]
6178            name: Strict<String>,
6179            #[serde(rename = "projectId")]
6180            project_id: Strict<String>,
6181            #[serde(rename = "status")]
6182            status: Strict<WorkerPoolStatus>,
6183            #[serde(rename = "updatedAtMicros")]
6184            updated_at_micros: Strict<SafeLong>,
6185            #[serde(rename = "workerPoolId")]
6186            worker_pool_id: Strict<Uuid>,
6187        }
6188        let wire = __Wire::deserialize(deserializer)?;
6189        Ok(Self {
6190            capabilities: wire.capabilities.0,
6191            created_at_micros: wire.created_at_micros.0,
6192            managed_profile_id: wire.managed_profile_id.0,
6193            managed_provider_id: wire.managed_provider_id.0,
6194            max_workers: wire.max_workers.0,
6195            name: wire.name.0,
6196            project_id: wire.project_id.0,
6197            status: wire.status.0,
6198            updated_at_micros: wire.updated_at_micros.0,
6199            worker_pool_id: wire.worker_pool_id.0,
6200        })
6201    }
6202}
6203
6204/// WorkerPoolDetails contract value.
6205#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
6206pub struct WorkerPoolDetails {
6207    /// Contract field stats.
6208    #[serde(rename = "stats")]
6209    pub stats: WorkerPoolStats,
6210    /// Contract field workerPool.
6211    #[serde(rename = "workerPool")]
6212    pub worker_pool: WorkerPool,
6213}
6214impl<'de> DeserializeStrict<'de> for WorkerPoolDetails {
6215    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
6216        #[derive(Deserialize)]
6217        #[serde(deny_unknown_fields)]
6218        struct __Wire {
6219            #[serde(rename = "stats")]
6220            stats: Strict<WorkerPoolStats>,
6221            #[serde(rename = "workerPool")]
6222            worker_pool: Strict<WorkerPool>,
6223        }
6224        let wire = __Wire::deserialize(deserializer)?;
6225        Ok(Self {
6226            stats: wire.stats.0,
6227            worker_pool: wire.worker_pool.0,
6228        })
6229    }
6230}
6231
6232/// WorkerPoolResponse contract value.
6233#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
6234pub struct WorkerPoolResponse {
6235    /// Contract field workerPool.
6236    #[serde(rename = "workerPool")]
6237    pub worker_pool: WorkerPool,
6238}
6239impl<'de> DeserializeStrict<'de> for WorkerPoolResponse {
6240    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
6241        #[derive(Deserialize)]
6242        #[serde(deny_unknown_fields)]
6243        struct __Wire {
6244            #[serde(rename = "workerPool")]
6245            worker_pool: Strict<WorkerPool>,
6246        }
6247        let wire = __Wire::deserialize(deserializer)?;
6248        Ok(Self {
6249            worker_pool: wire.worker_pool.0,
6250        })
6251    }
6252}
6253
6254/// WorkerPoolStats contract value.
6255#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
6256pub struct WorkerPoolStats {
6257    /// Contract field activeWorkerCount.
6258    #[serde(rename = "activeWorkerCount")]
6259    pub active_worker_count: SafeUnsignedLong,
6260    /// Contract field busyWorkerCount.
6261    #[serde(rename = "busyWorkerCount")]
6262    pub busy_worker_count: SafeUnsignedLong,
6263    /// Contract field claimedReadyTaskCount.
6264    #[serde(rename = "claimedReadyTaskCount")]
6265    pub claimed_ready_task_count: SafeUnsignedLong,
6266    /// Contract field oldestReadyTaskAvailableAtMicros.
6267    #[serde(rename = "oldestReadyTaskAvailableAtMicros")]
6268    #[serde(default, skip_serializing_if = "Option::is_none")]
6269    pub oldest_ready_task_available_at_micros: Option<SafeLong>,
6270    /// Contract field runningTaskCount.
6271    #[serde(rename = "runningTaskCount")]
6272    pub running_task_count: SafeUnsignedLong,
6273    /// Contract field workerPoolId.
6274    #[serde(rename = "workerPoolId")]
6275    pub worker_pool_id: Uuid,
6276}
6277impl<'de> DeserializeStrict<'de> for WorkerPoolStats {
6278    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
6279        #[derive(Deserialize)]
6280        #[serde(deny_unknown_fields)]
6281        struct __Wire {
6282            #[serde(rename = "activeWorkerCount")]
6283            active_worker_count: Strict<SafeUnsignedLong>,
6284            #[serde(rename = "busyWorkerCount")]
6285            busy_worker_count: Strict<SafeUnsignedLong>,
6286            #[serde(rename = "claimedReadyTaskCount")]
6287            claimed_ready_task_count: Strict<SafeUnsignedLong>,
6288            #[serde(rename = "oldestReadyTaskAvailableAtMicros")]
6289            #[serde(default)]
6290            oldest_ready_task_available_at_micros: Strict<Option<SafeLong>>,
6291            #[serde(rename = "runningTaskCount")]
6292            running_task_count: Strict<SafeUnsignedLong>,
6293            #[serde(rename = "workerPoolId")]
6294            worker_pool_id: Strict<Uuid>,
6295        }
6296        let wire = __Wire::deserialize(deserializer)?;
6297        Ok(Self {
6298            active_worker_count: wire.active_worker_count.0,
6299            busy_worker_count: wire.busy_worker_count.0,
6300            claimed_ready_task_count: wire.claimed_ready_task_count.0,
6301            oldest_ready_task_available_at_micros: wire.oldest_ready_task_available_at_micros.0,
6302            running_task_count: wire.running_task_count.0,
6303            worker_pool_id: wire.worker_pool_id.0,
6304        })
6305    }
6306}
6307
6308/// WorkerPoolStatus contract value.
6309#[derive(Clone, Debug, PartialEq, Eq)]
6310pub enum WorkerPoolStatus {
6311    /// A known contract value.
6312    Active,
6313    /// A known contract value.
6314    Paused,
6315    /// A known contract value.
6316    Retired,
6317    /// A value introduced by a newer server.
6318    Unknown(String),
6319}
6320impl Serialize for WorkerPoolStatus {
6321    fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
6322        serializer.serialize_str(match self {
6323            Self::Active => "active",
6324            Self::Paused => "paused",
6325            Self::Retired => "retired",
6326            Self::Unknown(value) => value,
6327        })
6328    }
6329}
6330impl<'de> Deserialize<'de> for WorkerPoolStatus {
6331    fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
6332        Ok(match String::deserialize(deserializer)?.as_str() {
6333            "active" => Self::Active,
6334            "paused" => Self::Paused,
6335            "retired" => Self::Retired,
6336            value => Self::Unknown(value.to_owned()),
6337        })
6338    }
6339}
6340impl<'de> DeserializeStrict<'de> for WorkerPoolStatus {
6341    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
6342        #[derive(Deserialize)]
6343        enum __Known {
6344            #[serde(rename = "active")]
6345            Active,
6346            #[serde(rename = "paused")]
6347            Paused,
6348            #[serde(rename = "retired")]
6349            Retired,
6350        }
6351        Ok(match __Known::deserialize(deserializer)? {
6352            __Known::Active => Self::Active,
6353            __Known::Paused => Self::Paused,
6354            __Known::Retired => Self::Retired,
6355        })
6356    }
6357}
6358
6359/// WorkerResources contract value.
6360#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
6361pub struct WorkerResources {
6362    /// Contract field cpuCount.
6363    #[serde(rename = "cpuCount")]
6364    pub cpu_count: u32,
6365    /// Contract field gpu.
6366    #[serde(rename = "gpu")]
6367    #[serde(default, skip_serializing_if = "Option::is_none")]
6368    pub gpu: Option<WorkerGpuResources>,
6369    /// Contract field memoryBytes.
6370    #[serde(rename = "memoryBytes")]
6371    pub memory_bytes: SafeUnsignedLong,
6372}
6373impl<'de> DeserializeStrict<'de> for WorkerResources {
6374    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
6375        #[derive(Deserialize)]
6376        #[serde(deny_unknown_fields)]
6377        struct __Wire {
6378            #[serde(rename = "cpuCount")]
6379            cpu_count: Strict<u32>,
6380            #[serde(rename = "gpu")]
6381            #[serde(default)]
6382            gpu: Strict<Option<WorkerGpuResources>>,
6383            #[serde(rename = "memoryBytes")]
6384            memory_bytes: Strict<SafeUnsignedLong>,
6385        }
6386        let wire = __Wire::deserialize(deserializer)?;
6387        Ok(Self {
6388            cpu_count: wire.cpu_count.0,
6389            gpu: wire.gpu.0,
6390            memory_bytes: wire.memory_bytes.0,
6391        })
6392    }
6393}
6394
6395/// WorkerSession contract value.
6396#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
6397pub struct WorkerSession {
6398    /// Contract field capabilities.
6399    #[serde(rename = "capabilities")]
6400    pub capabilities: WorkerCapabilities,
6401    /// Contract field createdAtMicros.
6402    #[serde(rename = "createdAtMicros")]
6403    pub created_at_micros: SafeLong,
6404    /// Contract field currentAttemptId.
6405    #[serde(rename = "currentAttemptId")]
6406    #[serde(default, skip_serializing_if = "Option::is_none")]
6407    pub current_attempt_id: Option<Uuid>,
6408    /// Contract field identity.
6409    #[serde(rename = "identity")]
6410    pub identity: WorkerIdentity,
6411    /// Contract field lastHeartbeatAtMicros.
6412    #[serde(rename = "lastHeartbeatAtMicros")]
6413    pub last_heartbeat_at_micros: SafeLong,
6414    /// Contract field processInstanceId.
6415    #[serde(rename = "processInstanceId")]
6416    pub process_instance_id: Uuid,
6417    /// Contract field projectId.
6418    #[serde(rename = "projectId")]
6419    pub project_id: String,
6420    /// Contract field releaseVersion.
6421    #[serde(rename = "releaseVersion")]
6422    pub release_version: String,
6423    /// Contract field resourceUsage.
6424    #[serde(rename = "resourceUsage")]
6425    #[serde(default, skip_serializing_if = "Option::is_none")]
6426    pub resource_usage: Option<ResourceUsageSummary>,
6427    /// Contract field status.
6428    #[serde(rename = "status")]
6429    pub status: WorkerSessionStatus,
6430    /// Contract field tags.
6431    #[serde(rename = "tags")]
6432    #[serde(default, skip_serializing_if = "Option::is_none")]
6433    pub tags: Option<WorkerSessionTags>,
6434    /// Contract field updatedAtMicros.
6435    #[serde(rename = "updatedAtMicros")]
6436    pub updated_at_micros: SafeLong,
6437    /// Contract field workerPoolId.
6438    #[serde(rename = "workerPoolId")]
6439    #[serde(default, skip_serializing_if = "Option::is_none")]
6440    pub worker_pool_id: Option<Uuid>,
6441    /// Contract field workerSessionId.
6442    #[serde(rename = "workerSessionId")]
6443    pub worker_session_id: Uuid,
6444}
6445impl<'de> DeserializeStrict<'de> for WorkerSession {
6446    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
6447        #[derive(Deserialize)]
6448        #[serde(deny_unknown_fields)]
6449        struct __Wire {
6450            #[serde(rename = "capabilities")]
6451            capabilities: Strict<WorkerCapabilities>,
6452            #[serde(rename = "createdAtMicros")]
6453            created_at_micros: Strict<SafeLong>,
6454            #[serde(rename = "currentAttemptId")]
6455            #[serde(default)]
6456            current_attempt_id: Strict<Option<Uuid>>,
6457            #[serde(rename = "identity")]
6458            identity: Strict<WorkerIdentity>,
6459            #[serde(rename = "lastHeartbeatAtMicros")]
6460            last_heartbeat_at_micros: Strict<SafeLong>,
6461            #[serde(rename = "processInstanceId")]
6462            process_instance_id: Strict<Uuid>,
6463            #[serde(rename = "projectId")]
6464            project_id: Strict<String>,
6465            #[serde(rename = "releaseVersion")]
6466            release_version: Strict<String>,
6467            #[serde(rename = "resourceUsage")]
6468            #[serde(default)]
6469            resource_usage: Strict<Option<ResourceUsageSummary>>,
6470            #[serde(rename = "status")]
6471            status: Strict<WorkerSessionStatus>,
6472            #[serde(rename = "tags")]
6473            #[serde(default)]
6474            tags: Strict<Option<WorkerSessionTags>>,
6475            #[serde(rename = "updatedAtMicros")]
6476            updated_at_micros: Strict<SafeLong>,
6477            #[serde(rename = "workerPoolId")]
6478            #[serde(default)]
6479            worker_pool_id: Strict<Option<Uuid>>,
6480            #[serde(rename = "workerSessionId")]
6481            worker_session_id: Strict<Uuid>,
6482        }
6483        let wire = __Wire::deserialize(deserializer)?;
6484        Ok(Self {
6485            capabilities: wire.capabilities.0,
6486            created_at_micros: wire.created_at_micros.0,
6487            current_attempt_id: wire.current_attempt_id.0,
6488            identity: wire.identity.0,
6489            last_heartbeat_at_micros: wire.last_heartbeat_at_micros.0,
6490            process_instance_id: wire.process_instance_id.0,
6491            project_id: wire.project_id.0,
6492            release_version: wire.release_version.0,
6493            resource_usage: wire.resource_usage.0,
6494            status: wire.status.0,
6495            tags: wire.tags.0,
6496            updated_at_micros: wire.updated_at_micros.0,
6497            worker_pool_id: wire.worker_pool_id.0,
6498            worker_session_id: wire.worker_session_id.0,
6499        })
6500    }
6501}
6502
6503/// WorkerSessionStatus contract value.
6504#[derive(Clone, Debug, PartialEq, Eq)]
6505pub enum WorkerSessionStatus {
6506    /// A known contract value.
6507    Active,
6508    /// A known contract value.
6509    Draining,
6510    /// A known contract value.
6511    Expired,
6512    /// A value introduced by a newer server.
6513    Unknown(String),
6514}
6515impl Serialize for WorkerSessionStatus {
6516    fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
6517        serializer.serialize_str(match self {
6518            Self::Active => "active",
6519            Self::Draining => "draining",
6520            Self::Expired => "expired",
6521            Self::Unknown(value) => value,
6522        })
6523    }
6524}
6525impl<'de> Deserialize<'de> for WorkerSessionStatus {
6526    fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
6527        Ok(match String::deserialize(deserializer)?.as_str() {
6528            "active" => Self::Active,
6529            "draining" => Self::Draining,
6530            "expired" => Self::Expired,
6531            value => Self::Unknown(value.to_owned()),
6532        })
6533    }
6534}
6535impl<'de> DeserializeStrict<'de> for WorkerSessionStatus {
6536    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
6537        #[derive(Deserialize)]
6538        enum __Known {
6539            #[serde(rename = "active")]
6540            Active,
6541            #[serde(rename = "draining")]
6542            Draining,
6543            #[serde(rename = "expired")]
6544            Expired,
6545        }
6546        Ok(match __Known::deserialize(deserializer)? {
6547            __Known::Active => Self::Active,
6548            __Known::Draining => Self::Draining,
6549            __Known::Expired => Self::Expired,
6550        })
6551    }
6552}
6553
6554/// WorkerSessionTags contract value.
6555#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
6556#[serde(transparent)]
6557pub struct WorkerSessionTags(pub BTreeMap<String, String>);
6558impl<'de> DeserializeStrict<'de> for WorkerSessionTags {
6559    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
6560        Ok(Self(
6561            Strict::<BTreeMap<String, String>>::deserialize(deserializer)?.0,
6562        ))
6563    }
6564}
6565
6566/// WorkerTask contract value.
6567#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
6568pub struct WorkerTask {
6569    /// Contract field attemptId.
6570    #[serde(rename = "attemptId")]
6571    pub attempt_id: Uuid,
6572    /// Contract field input.
6573    #[serde(rename = "input")]
6574    pub input: Value,
6575    /// Contract field leaseExpiresAtMicros.
6576    #[serde(rename = "leaseExpiresAtMicros")]
6577    pub lease_expires_at_micros: SafeLong,
6578    /// Contract field projectId.
6579    #[serde(rename = "projectId")]
6580    pub project_id: String,
6581    /// Contract field stopReason.
6582    #[serde(rename = "stopReason")]
6583    #[serde(default, skip_serializing_if = "Option::is_none")]
6584    pub stop_reason: Option<TaskStopReason>,
6585    /// Contract field taskId.
6586    #[serde(rename = "taskId")]
6587    pub task_id: Uuid,
6588    /// Contract field taskSpecId.
6589    #[serde(rename = "taskSpecId")]
6590    pub task_spec_id: TaskSpecId,
6591    /// Contract field traceContext.
6592    #[serde(rename = "traceContext")]
6593    pub trace_context: BTreeMap<String, String>,
6594}
6595impl<'de> DeserializeStrict<'de> for WorkerTask {
6596    fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
6597        #[derive(Deserialize)]
6598        #[serde(deny_unknown_fields)]
6599        struct __Wire {
6600            #[serde(rename = "attemptId")]
6601            attempt_id: Strict<Uuid>,
6602            #[serde(rename = "input")]
6603            input: Strict<Value>,
6604            #[serde(rename = "leaseExpiresAtMicros")]
6605            lease_expires_at_micros: Strict<SafeLong>,
6606            #[serde(rename = "projectId")]
6607            project_id: Strict<String>,
6608            #[serde(rename = "stopReason")]
6609            #[serde(default)]
6610            stop_reason: Strict<Option<TaskStopReason>>,
6611            #[serde(rename = "taskId")]
6612            task_id: Strict<Uuid>,
6613            #[serde(rename = "taskSpecId")]
6614            task_spec_id: Strict<TaskSpecId>,
6615            #[serde(rename = "traceContext")]
6616            trace_context: Strict<BTreeMap<String, String>>,
6617        }
6618        let wire = __Wire::deserialize(deserializer)?;
6619        Ok(Self {
6620            attempt_id: wire.attempt_id.0,
6621            input: wire.input.0,
6622            lease_expires_at_micros: wire.lease_expires_at_micros.0,
6623            project_id: wire.project_id.0,
6624            stop_reason: wire.stop_reason.0,
6625            task_id: wire.task_id.0,
6626            task_spec_id: wire.task_spec_id.0,
6627            trace_context: wire.trace_context.0,
6628        })
6629    }
6630}
6631
6632/// Typed errors declared by this service contract.
6633#[derive(Clone, Debug, PartialEq, Eq)]
6634pub enum TasksError {
6635    /// Tasks:Conflict.
6636    Conflict { reason: String },
6637    /// Tasks:InvalidArgument.
6638    InvalidArgument { reason: String },
6639    /// Tasks:LimitReached.
6640    LimitReached { reason: String },
6641    /// Tasks:NotFound.
6642    NotFound { resource: String },
6643    /// Tasks:NotImplemented.
6644    NotImplemented { reason: String },
6645}
6646impl TasksError {
6647    /// HTTP status for this declared error.
6648    pub fn status(&self) -> u16 {
6649        match self {
6650            Self::Conflict { .. } => 409,
6651            Self::InvalidArgument { .. } => 400,
6652            Self::LimitReached { .. } => 412,
6653            Self::NotFound { .. } => 404,
6654            Self::NotImplemented { .. } => 412,
6655        }
6656    }
6657    /// Serialize only contract-declared error parameters.
6658    pub fn envelope(&self, instance: String) -> ErrorEnvelope {
6659        match self {
6660            Self::Conflict { reason } => {
6661                let mut envelope = ErrorEnvelope::new("CONFLICT", "Tasks:Conflict", instance);
6662                envelope
6663                    .parameters
6664                    .insert("reason".into(), reason.to_string());
6665                envelope
6666            }
6667            Self::InvalidArgument { reason } => {
6668                let mut envelope =
6669                    ErrorEnvelope::new("INVALID_ARGUMENT", "Tasks:InvalidArgument", instance);
6670                envelope
6671                    .parameters
6672                    .insert("reason".into(), reason.to_string());
6673                envelope
6674            }
6675            Self::LimitReached { reason } => {
6676                let mut envelope =
6677                    ErrorEnvelope::new("FAILED_PRECONDITION", "Tasks:LimitReached", instance);
6678                envelope
6679                    .parameters
6680                    .insert("reason".into(), reason.to_string());
6681                envelope
6682            }
6683            Self::NotFound { resource } => {
6684                let mut envelope = ErrorEnvelope::new("NOT_FOUND", "Tasks:NotFound", instance);
6685                envelope
6686                    .parameters
6687                    .insert("resource".into(), resource.to_string());
6688                envelope
6689            }
6690            Self::NotImplemented { reason } => {
6691                let mut envelope =
6692                    ErrorEnvelope::new("FAILED_PRECONDITION", "Tasks:NotImplemented", instance);
6693                envelope
6694                    .parameters
6695                    .insert("reason".into(), reason.to_string());
6696                envelope
6697            }
6698        }
6699    }
6700    /// Decode a declared error and its typed error parameters.
6701    pub fn decode_envelope(envelope: &ErrorEnvelope) -> Option<Self> {
6702        if envelope.error_instance_id.len() != 36
6703            || Uuid::parse_str(&envelope.error_instance_id).is_err()
6704        {
6705            return None;
6706        }
6707        match envelope.error_name.as_str() {
6708            "Tasks:Conflict" => {
6709                if envelope.error_code != "CONFLICT" {
6710                    return None;
6711                }
6712                let reason = envelope.parameters.get("reason")?.clone();
6713                Some(Self::Conflict { reason })
6714            }
6715            "Tasks:InvalidArgument" => {
6716                if envelope.error_code != "INVALID_ARGUMENT" {
6717                    return None;
6718                }
6719                let reason = envelope.parameters.get("reason")?.clone();
6720                Some(Self::InvalidArgument { reason })
6721            }
6722            "Tasks:LimitReached" => {
6723                if envelope.error_code != "FAILED_PRECONDITION" {
6724                    return None;
6725                }
6726                let reason = envelope.parameters.get("reason")?.clone();
6727                Some(Self::LimitReached { reason })
6728            }
6729            "Tasks:NotFound" => {
6730                if envelope.error_code != "NOT_FOUND" {
6731                    return None;
6732                }
6733                let resource = envelope.parameters.get("resource")?.clone();
6734                Some(Self::NotFound { resource })
6735            }
6736            "Tasks:NotImplemented" => {
6737                if envelope.error_code != "FAILED_PRECONDITION" {
6738                    return None;
6739                }
6740                let reason = envelope.parameters.get("reason")?.clone();
6741                Some(Self::NotImplemented { reason })
6742            }
6743            _ => None,
6744        }
6745    }
6746}
6747impl Display for TasksError {
6748    fn fmt(&self, formatter: &mut Formatter<'_>) -> fmt::Result {
6749        match self {
6750            Self::Conflict { reason } => write!(formatter, "Tasks:Conflict (reason: {})", reason),
6751            Self::InvalidArgument { reason } => {
6752                write!(formatter, "Tasks:InvalidArgument (reason: {})", reason)
6753            }
6754            Self::LimitReached { reason } => {
6755                write!(formatter, "Tasks:LimitReached (reason: {})", reason)
6756            }
6757            Self::NotFound { resource } => {
6758                write!(formatter, "Tasks:NotFound (resource: {})", resource)
6759            }
6760            Self::NotImplemented { reason } => {
6761                write!(formatter, "Tasks:NotImplemented (reason: {})", reason)
6762            }
6763        }
6764    }
6765}
6766impl StdError for TasksError {}
6767impl ServiceError for TasksError {
6768    fn to_envelope(&self, instance: String) -> ErrorEnvelope {
6769        Self::envelope(self, instance)
6770    }
6771    fn from_envelope(envelope: &ErrorEnvelope) -> Option<Self> {
6772        Self::decode_envelope(envelope)
6773    }
6774}
6775#[automatically_derived]
6776impl Default for InvocationPageRequest {
6777    fn default() -> Self {
6778        Self { page_token: None }
6779    }
6780}
6781#[automatically_derived]
6782impl Default for ListTasksRequest {
6783    fn default() -> Self {
6784        Self {
6785            legacy_table_id: None,
6786            origin: None,
6787            page_size: None,
6788            page_token: None,
6789            parent_task_id: None,
6790            query: None,
6791            resource_id: None,
6792            resource_role: None,
6793            status: None,
6794            task_spec_name: None,
6795            worker_pool_id: None,
6796            worker_session_id: None,
6797        }
6798    }
6799}
6800#[automatically_derived]
6801impl Default for ListWorkerAttemptsRequest {
6802    fn default() -> Self {
6803        Self {
6804            page_size: None,
6805            page_token: None,
6806        }
6807    }
6808}
6809#[automatically_derived]
6810impl Default for ListWorkerPoolsRequest {
6811    fn default() -> Self {
6812        Self {
6813            page_size: None,
6814            page_token: None,
6815            worker_pool_id: None,
6816        }
6817    }
6818}
6819#[automatically_derived]
6820impl Default for ListWorkerSessionsRequest {
6821    fn default() -> Self {
6822        Self {
6823            page_size: None,
6824            page_token: None,
6825            status: None,
6826            worker_pool_id: None,
6827        }
6828    }
6829}
6830#[automatically_derived]
6831impl Default for ResourceUsageRequest {
6832    fn default() -> Self {
6833        Self { attempt_id: None }
6834    }
6835}
6836#[automatically_derived]
6837impl Default for TaskStatsRequest {
6838    fn default() -> Self {
6839        Self {
6840            worker_pool_id: None,
6841        }
6842    }
6843}
6844#[automatically_derived]
6845impl Default for TestTriggerRequest {
6846    fn default() -> Self {
6847        Self { event_id: None }
6848    }
6849}
6850#[automatically_derived]
6851impl Default for TriggerPageRequest {
6852    fn default() -> Self {
6853        Self {
6854            legacy_table_id: None,
6855            page_token: None,
6856            resource_id: None,
6857        }
6858    }
6859}